From c72b83c8d6dd4086d2baf98878ef2ad754eab30e Mon Sep 17 00:00:00 2001 From: hypherionmc Date: Wed, 1 May 2024 13:29:01 +0200 Subject: [PATCH] [CLEANUP] YEET old networking system --- .../core/network/CraterNetworkHandler.java | 34 ---- .../craterlib/core/network/CraterPacket.java | 25 --- .../core/network/PacketDirection.java | 10 -- .../network/FabricNetworkHandler.java | 87 ----------- .../network/FabricNetworkHelper.java | 33 ---- .../impl/FabricClientNetworkHelper.java | 24 --- .../impl/FabricServerNetworkHelper.java | 30 ---- .../network/ForgeNetworkHandler.java | 145 ------------------ .../network/NeoForgeNetworkHandler.java | 35 ----- 9 files changed, 423 deletions(-) delete mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterNetworkHandler.java delete mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterPacket.java delete mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/network/PacketDirection.java delete mode 100644 Fabric/src/main/java/com/hypherionmc/craterlib/network/FabricNetworkHandler.java delete mode 100644 Fabric/src/main/java/com/hypherionmc/craterlib/network/FabricNetworkHelper.java delete mode 100644 Fabric/src/main/java/com/hypherionmc/craterlib/network/impl/FabricClientNetworkHelper.java delete mode 100644 Fabric/src/main/java/com/hypherionmc/craterlib/network/impl/FabricServerNetworkHelper.java delete mode 100644 Forge/src/main/java/com/hypherionmc/craterlib/network/ForgeNetworkHandler.java delete mode 100644 NeoForge/src/main/java/com/hypherionmc/craterlib/network/NeoForgeNetworkHandler.java diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterNetworkHandler.java b/Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterNetworkHandler.java deleted file mode 100644 index 564cfc0..0000000 --- a/Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterNetworkHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.hypherionmc.craterlib.core.network; - -import com.hypherionmc.craterlib.core.platform.ClientPlatform; -import com.hypherionmc.craterlib.core.platform.CommonPlatform; -import net.minecraft.network.protocol.Packet; -import net.minecraft.server.level.ServerPlayer; - -import java.util.function.Supplier; - -/** - * @author HypherionSA - */ -@Deprecated(forRemoval = true) -public interface CraterNetworkHandler { - - > void registerPacket(Class clazz, Supplier supplier, PacketDirection packetDirection); - - Packet toServerBound(CraterPacket packet); - - Packet toClientBound(CraterPacket packet); - - default void sendToServer(CraterPacket packet) { - ClientPlatform.INSTANCE.getClientConnection().send(this.toServerBound(packet)); - } - - default void sendTo(CraterPacket packet, ServerPlayer player) { - player.connection.send(this.toClientBound(packet)); - } - - default void sendToAll(CraterPacket packet) { - CommonPlatform.INSTANCE.getMCServer().toMojang().getPlayerList().broadcastAll(this.toClientBound(packet)); - } - -} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterPacket.java b/Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterPacket.java deleted file mode 100644 index 7b4c584..0000000 --- a/Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterPacket.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.hypherionmc.craterlib.core.network; - -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.world.entity.player.Player; - -/** - * @author HypherionSA - */ -@Deprecated(forRemoval = true) -public interface CraterPacket> { - - void write(final FriendlyByteBuf buf); - - void read(final FriendlyByteBuf buf); - - default void handle(Player player, Object minecraft) { - this.createHandler().handle((T) this, player, minecraft); - } - - PacketHandler createHandler(); - - abstract class PacketHandler> { - public abstract void handle(T packet, Player player, Object minecraft); - } -} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/network/PacketDirection.java b/Common/src/main/java/com/hypherionmc/craterlib/core/network/PacketDirection.java deleted file mode 100644 index cf70170..0000000 --- a/Common/src/main/java/com/hypherionmc/craterlib/core/network/PacketDirection.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.hypherionmc.craterlib.core.network; - -/** - * @author HypherionSA - */ -@Deprecated(forRemoval = true) -public enum PacketDirection { - TO_SERVER, - TO_CLIENT -} diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/network/FabricNetworkHandler.java b/Fabric/src/main/java/com/hypherionmc/craterlib/network/FabricNetworkHandler.java deleted file mode 100644 index 02029bf..0000000 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/network/FabricNetworkHandler.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.hypherionmc.craterlib.network; - -import com.google.common.collect.Maps; -import com.hypherionmc.craterlib.core.network.CraterNetworkHandler; -import com.hypherionmc.craterlib.core.network.CraterPacket; -import com.hypherionmc.craterlib.core.network.PacketDirection; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; -import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.Util; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.protocol.Packet; -import net.minecraft.resources.ResourceLocation; - -import java.util.Map; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.function.BiFunction; -import java.util.function.Function; -import java.util.function.Supplier; - -/** - * @author HypherionSA - * @date 24/09/2022 - */ -@Deprecated(forRemoval = true) -public class FabricNetworkHandler implements CraterNetworkHandler { - - private static final Map NETWORK_HANDLERS = Maps.newConcurrentMap(); - private final Map>, PacketData> packets = Maps.newIdentityHashMap(); - - private final String modid; - private final AtomicInteger packetID = new AtomicInteger(); - - private FabricNetworkHandler(String modid) { - this.modid = modid; - } - - public synchronized static CraterNetworkHandler of(String modId) { - return NETWORK_HANDLERS.computeIfAbsent(modId, FabricNetworkHandler::new); - } - - @Override - public > void registerPacket(Class clazz, Supplier supplier, PacketDirection packetDirection) { - ResourceLocation channelName = this.nextId(); - this.packets.put(clazz, new PacketData(clazz, channelName, packetDirection)); - - final Function> decoder = buf -> Util.make(supplier.get(), message -> message.read(buf)); - - switch (packetDirection) { - case TO_CLIENT -> - FabricNetworkHelper.getForDist(FabricLoader.getInstance().getEnvironmentType()).registerClientReceiver(channelName, decoder); - case TO_SERVER -> - FabricNetworkHelper.getForDist(FabricLoader.getInstance().getEnvironmentType()).registerServerReceiver(channelName, decoder); - } - } - - private ResourceLocation nextId() { - return new ResourceLocation(this.modid, "play/" + this.packetID.getAndIncrement()); - } - - @Override - public Packet toServerBound(CraterPacket packet) { - if (this.packets.get(packet.getClass()).direction() != PacketDirection.TO_SERVER) - throw new IllegalStateException("Attempted sending message to wrong side, expected %s, was %s".formatted(PacketDirection.TO_SERVER, PacketDirection.TO_CLIENT)); - return this.toPacket(ClientPlayNetworking::createC2SPacket, packet); - } - - @Override - public Packet toClientBound(CraterPacket packet) { - if (this.packets.get(packet.getClass()).direction() != PacketDirection.TO_CLIENT) - throw new IllegalStateException("Attempted sending message to wrong side, expected %s, was %s".formatted(PacketDirection.TO_CLIENT, PacketDirection.TO_SERVER)); - return this.toPacket(ServerPlayNetworking::createS2CPacket, packet); - } - - private Packet toPacket(BiFunction> packetFactory, CraterPacket message) { - ResourceLocation identifier = this.packets.get(message.getClass()).identifier(); - FriendlyByteBuf byteBuf = PacketByteBufs.create(); - message.write(byteBuf); - return packetFactory.apply(identifier, byteBuf); - } - - private record PacketData(Class> clazz, ResourceLocation identifier, - PacketDirection direction) { - - } -} diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/network/FabricNetworkHelper.java b/Fabric/src/main/java/com/hypherionmc/craterlib/network/FabricNetworkHelper.java deleted file mode 100644 index 0bc4d62..0000000 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/network/FabricNetworkHelper.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.hypherionmc.craterlib.network; - -import com.hypherionmc.craterlib.core.network.CraterPacket; -import com.hypherionmc.craterlib.network.impl.FabricClientNetworkHelper; -import com.hypherionmc.craterlib.network.impl.FabricServerNetworkHelper; -import net.fabricmc.api.EnvType; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.NotNull; - -import java.util.function.Function; - -@Deprecated(forRemoval = true) -public interface FabricNetworkHelper { - - public static FabricNetworkHelper getForDist(EnvType dist) { - switch (dist) { - case CLIENT -> { - return new FabricClientNetworkHelper(); - } - case SERVER -> { - return new FabricServerNetworkHelper(); - } - } - return null; - } - - /* FABRIC ONLY */ - void registerClientReceiver(@NotNull ResourceLocation channelName, @NotNull Function> factory); - - void registerServerReceiver(ResourceLocation channelName, Function> factory); - -} diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/network/impl/FabricClientNetworkHelper.java b/Fabric/src/main/java/com/hypherionmc/craterlib/network/impl/FabricClientNetworkHelper.java deleted file mode 100644 index 800dde7..0000000 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/network/impl/FabricClientNetworkHelper.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.hypherionmc.craterlib.network.impl; - -import com.hypherionmc.craterlib.core.network.CraterPacket; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; -import net.fabricmc.fabric.api.networking.v1.PacketSender; -import net.minecraft.client.Minecraft; -import net.minecraft.client.multiplayer.ClientPacketListener; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.NotNull; - -import java.util.function.Function; - -@Deprecated(forRemoval = true) -public class FabricClientNetworkHelper extends FabricServerNetworkHelper { - - @Override - public void registerClientReceiver(@NotNull ResourceLocation channelName, @NotNull Function> factory) { - ClientPlayNetworking.registerGlobalReceiver(channelName, (Minecraft client, ClientPacketListener handler, FriendlyByteBuf buf, PacketSender responseSender) -> { - CraterPacket packet = factory.apply(buf); - client.execute(() -> packet.handle(client.player, client)); - }); - } -} diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/network/impl/FabricServerNetworkHelper.java b/Fabric/src/main/java/com/hypherionmc/craterlib/network/impl/FabricServerNetworkHelper.java deleted file mode 100644 index b6c9547..0000000 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/network/impl/FabricServerNetworkHelper.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.hypherionmc.craterlib.network.impl; - -import com.hypherionmc.craterlib.core.network.CraterPacket; -import com.hypherionmc.craterlib.network.FabricNetworkHelper; -import net.fabricmc.fabric.api.networking.v1.PacketSender; -import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.server.network.ServerGamePacketListenerImpl; -import org.jetbrains.annotations.NotNull; - -import java.util.function.Function; - -@Deprecated(forRemoval = true) -public class FabricServerNetworkHelper implements FabricNetworkHelper { - @Override - public void registerClientReceiver(@NotNull ResourceLocation channelName, @NotNull Function> factory) { - - } - - @Override - public void registerServerReceiver(ResourceLocation channelName, Function> factory) { - ServerPlayNetworking.registerGlobalReceiver(channelName, (MinecraftServer server, ServerPlayer player, ServerGamePacketListenerImpl handler, FriendlyByteBuf buf, PacketSender responseSender) -> { - CraterPacket packet = factory.apply(buf); - server.execute(() -> packet.handle(player, server)); - }); - } -} diff --git a/Forge/src/main/java/com/hypherionmc/craterlib/network/ForgeNetworkHandler.java b/Forge/src/main/java/com/hypherionmc/craterlib/network/ForgeNetworkHandler.java deleted file mode 100644 index 93ebe89..0000000 --- a/Forge/src/main/java/com/hypherionmc/craterlib/network/ForgeNetworkHandler.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.hypherionmc.craterlib.network; - -import com.google.common.collect.Maps; -import com.hypherionmc.craterlib.core.network.CraterNetworkHandler; -import com.hypherionmc.craterlib.core.network.CraterPacket; -import com.hypherionmc.craterlib.core.network.PacketDirection; -import com.hypherionmc.craterlib.core.platform.ClientPlatform; -import io.netty.buffer.Unpooled; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.protocol.Packet; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.player.Player; -import net.minecraftforge.common.util.LogicalSidedProvider; -import net.minecraftforge.event.network.CustomPayloadEvent; -import net.minecraftforge.fml.LogicalSide; -import net.minecraftforge.network.ChannelBuilder; -import net.minecraftforge.network.NetworkDirection; -import net.minecraftforge.network.SimpleChannel; - -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.function.BiConsumer; -import java.util.function.Function; -import java.util.function.Supplier; - -/** - * @author HypherionSA - * Partly inspired by and based on ... - */ -@Deprecated(forRemoval = true) -public class ForgeNetworkHandler implements CraterNetworkHandler { - - private static final Map NETWORK_HANDLERS = Maps.newConcurrentMap(); - - private final SimpleChannel channel; - - private final boolean clientRequired; - - private final boolean serverRequired; - - private final AtomicInteger packetID = new AtomicInteger(); - - private HashMap, Integer> packetMap = new LinkedHashMap<>(); - - private ForgeNetworkHandler(SimpleChannel channel, boolean clientRequired, boolean serverRequired) { - this.channel = channel; - this.clientRequired = clientRequired; - this.serverRequired = serverRequired; - } - - public synchronized static CraterNetworkHandler of(String modId, boolean clientRequired, boolean serverRequired) { - ForgeNetworkHandler handler = NETWORK_HANDLERS.computeIfAbsent(modId, modId1 -> new ForgeNetworkHandler(buildSimpleChannel(modId1, clientRequired, serverRequired), clientRequired, serverRequired)); - if (handler.clientRequired != clientRequired) - throw new IllegalArgumentException("client channel settings mismatch, expected %s, but was %s".formatted(handler.clientRequired, clientRequired)); - if (handler.serverRequired != serverRequired) - throw new IllegalArgumentException("server channel settings mismatch, expected %s, but was %s".formatted(handler.serverRequired, serverRequired)); - return handler; - } - - private static SimpleChannel buildSimpleChannel(String modId, boolean clientAcceptsVanillaOrMissing, boolean serverAcceptsVanillaOrMissing) { - ChannelBuilder builder = ChannelBuilder.named(new ResourceLocation(modId, "crater_network")); - - if (clientAcceptsVanillaOrMissing) { - builder = builder.optionalClient(); - } - - if (serverAcceptsVanillaOrMissing) { - builder = builder.optionalServer(); - } - - return builder.simpleChannel(); - } - - @Override - public > void registerPacket(Class clazz, Supplier supplier, PacketDirection packetDirection) { - BiConsumer encoder = CraterPacket::write; - Function decoder = buf -> { - T packet = supplier.get(); - packet.read(buf); - return packet; - }; - - BiConsumer handler = (packet, sup) -> { - LogicalSide expectedSide = getSideFromDirection(packetDirection); - LogicalSide currentSide = sup.getDirection().getReceptionSide(); - - if (expectedSide != currentSide) { - throw new IllegalStateException(String.format("Received message on wrong side, expected %s, was %s", expectedSide, currentSide)); - } - - sup.enqueueWork(() -> { - Player player; - if (packetDirection == PacketDirection.TO_CLIENT) { - player = ClientPlatform.INSTANCE.getClientPlayer().toMojangServerPlayer(); - } else { - player = sup.getSender(); - } - packet.handle(player, LogicalSidedProvider.WORKQUEUE.get(expectedSide)); - }); - sup.setPacketHandled(true); - }; - - int id = packetID.getAndIncrement(); - packetMap.put(clazz, id); - - this.channel - .messageBuilder((Class) clazz, id) - .encoder(encoder) - .decoder(decoder) - .consumerNetworkThread(handler) - .add(); - } - - @Override - public Packet toServerBound(CraterPacket packet) { - return NetworkDirection.PLAY_TO_SERVER.buildPacket(toBuffer(packet), channel.getName()).getThis(); - //return this.channel.toVanillaPacket(packet, NetworkDirection.PLAY_TO_SERVER); - } - - @Override - public Packet toClientBound(CraterPacket packet) { - return NetworkDirection.PLAY_TO_CLIENT.buildPacket(toBuffer(packet), channel.getName()).getThis(); - //return this.channel.toVanillaPacket(packet, NetworkDirection.PLAY_TO_CLIENT); - } - - @Override - public void sendToServer(CraterPacket packet) { - CraterNetworkHandler.super.sendToServer(packet); - } - - private LogicalSide getSideFromDirection(PacketDirection direction) { - return direction == PacketDirection.TO_CLIENT ? LogicalSide.CLIENT : LogicalSide.SERVER; - } - - protected FriendlyByteBuf toBuffer(CraterPacket message) { - var msg = packetMap.get(message.getClass()); - - var ret = new FriendlyByteBuf(Unpooled.buffer()); - ret.writeVarInt(msg); - message.write(ret); - return ret; - } -} diff --git a/NeoForge/src/main/java/com/hypherionmc/craterlib/network/NeoForgeNetworkHandler.java b/NeoForge/src/main/java/com/hypherionmc/craterlib/network/NeoForgeNetworkHandler.java deleted file mode 100644 index 66e4eb0..0000000 --- a/NeoForge/src/main/java/com/hypherionmc/craterlib/network/NeoForgeNetworkHandler.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.hypherionmc.craterlib.network; - -import com.hypherionmc.craterlib.core.network.CraterNetworkHandler; -import com.hypherionmc.craterlib.core.network.CraterPacket; -import com.hypherionmc.craterlib.core.network.PacketDirection; -import net.minecraft.network.protocol.Packet; - -import java.util.function.Supplier; - -/** - * @author HypherionSA - * Partly inspired by and based on ... - */ -@Deprecated(forRemoval = true) -public class NeoForgeNetworkHandler implements CraterNetworkHandler { - - - public NeoForgeNetworkHandler(String modid, boolean requiredClient, boolean requiredServer) { - } - - @Override - public > void registerPacket(Class clazz, Supplier supplier, PacketDirection packetDirection) { - - } - - @Override - public Packet toServerBound(CraterPacket packet) { - return null; - } - - @Override - public Packet toClientBound(CraterPacket packet) { - return null; - } -}