From 69a9b0c4b9a2a24cc923800fa9a79d3e7ea1b5f7 Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Thu, 29 Apr 2021 11:04:19 +0800 Subject: [PATCH] Set channel size limit to 1024 (#247) Because we can run atm6 and it has lots of mods --- .../common/mixin/bukkit/CraftEntityMixin.java | 2 ++ .../common/mixin/bukkit/CraftPlayerMixin.java | 32 +++++++++++++++++++ .../resources/mixins.arclight.bukkit.json | 1 + 3 files changed, 35 insertions(+) create mode 100644 arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftPlayerMixin.java diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftEntityMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftEntityMixin.java index acb2cbcf..811baef3 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftEntityMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftEntityMixin.java @@ -35,6 +35,7 @@ import org.bukkit.craftbukkit.v.entity.CraftGolem; import org.bukkit.craftbukkit.v.entity.CraftTameableAnimal; import org.bukkit.entity.EntityType; import org.jetbrains.annotations.NotNull; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -48,6 +49,7 @@ import java.util.Objects; public abstract class CraftEntityMixin implements org.bukkit.entity.Entity { @Shadow protected Entity entity; + @Shadow @Final protected CraftServer server; private EntityType arclight$type; diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftPlayerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftPlayerMixin.java new file mode 100644 index 00000000..7b88a49b --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftPlayerMixin.java @@ -0,0 +1,32 @@ +package io.izzel.arclight.common.mixin.bukkit; + +import com.google.common.base.Preconditions; +import org.bukkit.craftbukkit.v.entity.CraftPlayer; +import org.bukkit.event.player.PlayerRegisterChannelEvent; +import org.bukkit.plugin.messaging.StandardMessenger; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; + +import java.util.Set; + +@Mixin(value = CraftPlayer.class, remap = false) +public abstract class CraftPlayerMixin extends CraftEntityMixin { + + @Shadow @Final private Set channels; + + /** + * @author IzzelAliz + * @reason + */ + @Overwrite + @SuppressWarnings("deprecation") + public void addChannel(String channel) { + Preconditions.checkState(this.channels.size() < 1024, "Cannot register channel '%s'. Too many channels registered!", channel); + channel = StandardMessenger.validateAndCorrectChannel(channel); + if (this.channels.add(channel)) { + this.server.getPluginManager().callEvent(new PlayerRegisterChannelEvent((CraftPlayer) (Object) this, channel)); + } + } +} diff --git a/arclight-common/src/main/resources/mixins.arclight.bukkit.json b/arclight-common/src/main/resources/mixins.arclight.bukkit.json index 648f2453..c4e161fc 100644 --- a/arclight-common/src/main/resources/mixins.arclight.bukkit.json +++ b/arclight-common/src/main/resources/mixins.arclight.bukkit.json @@ -27,6 +27,7 @@ "CraftLegacyUtilMixin", "CraftMagicNumbersMixin", "CraftMetaItemMixin", + "CraftPlayerMixin", "CraftServerMixin", "CraftVillagerMixin", "CraftWorldMixin",