diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/management/PlayerListMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/management/PlayerListMixin.java index b81cd4e4..b33fdbfd 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/management/PlayerListMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/management/PlayerListMixin.java @@ -136,11 +136,6 @@ public abstract class PlayerListMixin implements PlayerListBridge { cserver = ArclightServer.createOrLoad((DedicatedServer) minecraftServer, (PlayerList) (Object) this); } - @Inject(method = "initializeConnectionToPlayer", at = @At(value = "INVOKE", remap = false, target = "Lnet/minecraftforge/fml/network/NetworkHooks;sendMCRegistryPackets(Lnet/minecraft/network/NetworkManager;Ljava/lang/String;)V")) - private void arclight$sendChannel(NetworkManager netManager, ServerPlayerEntity playerIn, CallbackInfo ci) { - ((ServerPlayerEntityBridge) playerIn).bridge$getBukkitEntity().sendSupportedChannels(); - } - @Redirect(method = "initializeConnectionToPlayer", at = @At(value = "FIELD", target = "Lnet/minecraft/server/management/PlayerList;viewDistance:I")) private int arclight$spigotViewDistance(PlayerList playerList, NetworkManager netManager, ServerPlayerEntity playerIn) { return ((WorldBridge) playerIn.getServerWorld()).bridge$spigotConfig().viewDistance; diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/forge/NetworkHooksMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/forge/NetworkHooksMixin.java index 879e0d82..0973ecfe 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/forge/NetworkHooksMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/forge/NetworkHooksMixin.java @@ -6,8 +6,11 @@ import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.container.Container; import net.minecraft.inventory.container.INamedContainerProvider; +import net.minecraft.network.NetworkManager; import net.minecraft.network.PacketBuffer; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.network.NetworkHooks; +import org.bukkit.Bukkit; import org.bukkit.craftbukkit.v.event.CraftEventFactory; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -15,6 +18,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.LocalCapture; +import java.util.Set; import java.util.function.Consumer; @Mixin(NetworkHooks.class) @@ -35,4 +39,9 @@ public class NetworkHooksMixin { ci.cancel(); } } + + @Inject(method = "sendMCRegistryPackets", remap = false, locals = LocalCapture.CAPTURE_FAILHARD, at = @At(value = "INVOKE", target = "Lnet/minecraftforge/fml/network/FMLMCRegisterPacketHandler;addChannels(Ljava/util/Set;Lnet/minecraft/network/NetworkManager;)V")) + private static void arclight$withBukkitChannels(NetworkManager manager, String direction, CallbackInfo ci, Set resourceLocations) { + Bukkit.getMessenger().getIncomingChannels().stream().map(ResourceLocation::new).forEach(resourceLocations::add); + } }