Send channels in one pass

This commit is contained in:
IzzelAliz 2021-03-19 12:33:40 +08:00
parent 2e3ff1e97f
commit c05e80d6ff
2 changed files with 9 additions and 5 deletions

View File

@ -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;

View File

@ -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<ResourceLocation> resourceLocations) {
Bukkit.getMessenger().getIncomingChannels().stream().map(ResourceLocation::new).forEach(resourceLocations::add);
}
}