From 8169a1a344fb0a84b4624d2002e923efae6a2f92 Mon Sep 17 00:00:00 2001 From: Micle Date: Thu, 3 Nov 2022 18:54:23 +0000 Subject: [PATCH] Refactored the network package. --- .../totemofreviving/item/totem/TotemItem.java | 14 ++-- .../totemofreviving/network/Network.java | 83 ------------------- .../network/NetworkManager.java | 44 ++++++++++ .../{ => client}/ChangeTargetPacket.java | 7 +- .../{ => client}/ChargeTotemPacket.java | 5 +- .../{ => client}/ReviveTargetPacket.java | 7 +- .../micle/totemofreviving/proxy/Proxy.java | 4 +- 7 files changed, 61 insertions(+), 103 deletions(-) delete mode 100644 src/main/java/dev/micle/totemofreviving/network/Network.java create mode 100644 src/main/java/dev/micle/totemofreviving/network/NetworkManager.java rename src/main/java/dev/micle/totemofreviving/network/{ => client}/ChangeTargetPacket.java (90%) rename src/main/java/dev/micle/totemofreviving/network/{ => client}/ChargeTotemPacket.java (92%) rename src/main/java/dev/micle/totemofreviving/network/{ => client}/ReviveTargetPacket.java (92%) diff --git a/src/main/java/dev/micle/totemofreviving/item/totem/TotemItem.java b/src/main/java/dev/micle/totemofreviving/item/totem/TotemItem.java index 1553174..fbd32e3 100644 --- a/src/main/java/dev/micle/totemofreviving/item/totem/TotemItem.java +++ b/src/main/java/dev/micle/totemofreviving/item/totem/TotemItem.java @@ -2,10 +2,10 @@ package dev.micle.totemofreviving.item.totem; import dev.micle.totemofreviving.TotemOfReviving; import dev.micle.totemofreviving.setup.Config; -import dev.micle.totemofreviving.network.ChangeTargetPacket; -import dev.micle.totemofreviving.network.ChargeTotemPacket; -import dev.micle.totemofreviving.network.Network; -import dev.micle.totemofreviving.network.ReviveTargetPacket; +import dev.micle.totemofreviving.network.client.ChangeTargetPacket; +import dev.micle.totemofreviving.network.client.ChargeTotemPacket; +import dev.micle.totemofreviving.network.NetworkManager; +import dev.micle.totemofreviving.network.client.ReviveTargetPacket; import dev.micle.totemofreviving.setup.ModKeyMappings; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; @@ -214,12 +214,12 @@ public abstract class TotemItem extends Item { ItemStack chargeItem = (hand.equals(InteractionHand.MAIN_HAND)) ? player.getOffhandItem() : player.getMainHandItem(); if (player.isCrouching()) { - Network.channel.sendToServer(new ChangeTargetPacket(hand)); + NetworkManager.getChannel().sendToServer(new ChangeTargetPacket(hand)); } else { if (isCharge(chargeItem)) { - Network.channel.sendToServer(new ChargeTotemPacket(hand)); + NetworkManager.getChannel().sendToServer(new ChargeTotemPacket(hand)); } else { - Network.channel.sendToServer(new ReviveTargetPacket(hand)); + NetworkManager.getChannel().sendToServer(new ReviveTargetPacket(hand)); } } return super.use(world, player, hand); diff --git a/src/main/java/dev/micle/totemofreviving/network/Network.java b/src/main/java/dev/micle/totemofreviving/network/Network.java deleted file mode 100644 index 63d3a5a..0000000 --- a/src/main/java/dev/micle/totemofreviving/network/Network.java +++ /dev/null @@ -1,83 +0,0 @@ -package dev.micle.totemofreviving.network; - -import dev.micle.totemofreviving.TotemOfReviving; -import dev.micle.totemofreviving.util.MismatchedVersionException; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraftforge.network.NetworkRegistry; -import net.minecraftforge.network.simple.SimpleChannel; - -import java.util.Objects; -import java.util.regex.Pattern; - -public class Network { - public static final String VERSION = TotemOfReviving.MOD_ID + "-net-1"; - private static final Pattern NET_VERSION_PATTERN = Pattern.compile(TotemOfReviving.MOD_ID + "-net-\\d+$"); - private static final Pattern MOD_VERSION_PATTERN = Pattern.compile("Forge-\\d+\\.\\d+\\.\\d+-\\d+\\.\\d+\\.\\d+$"); - - public static SimpleChannel channel; - - public static void init() { - channel = NetworkRegistry.ChannelBuilder.named(TotemOfReviving.createResourceLocation("network")) - .clientAcceptedVersions(s -> Objects.equals(s, VERSION)) - .serverAcceptedVersions(s -> Objects.equals(s, VERSION)) - .networkProtocolVersion(() -> VERSION) - .simpleChannel(); - - int id = 0; - channel.messageBuilder(ChangeTargetPacket.class, id++) - .encoder(ChangeTargetPacket::encode) - .decoder(ChangeTargetPacket::decode) - .consumer(ChangeTargetPacket::handle) - .add(); - channel.messageBuilder(ChargeTotemPacket.class, id++) - .encoder(ChargeTotemPacket::encode) - .decoder(ChargeTotemPacket::decode) - .consumer(ChargeTotemPacket::handle) - .add(); - channel.messageBuilder(ReviveTargetPacket.class, id++) - .encoder(ReviveTargetPacket::encode) - .decoder(ReviveTargetPacket::decode) - .consumer(ReviveTargetPacket::handle) - .add(); - } - - public static void writeVersionInfo(FriendlyByteBuf buffer, boolean senderIsServer) { - buffer.writeBoolean(senderIsServer); - buffer.writeUtf(VERSION); - buffer.writeUtf(TotemOfReviving.getVersion()); - } - - public static void checkVersion(FriendlyByteBuf buffer) { - boolean senderIsServer = buffer.readBoolean(); - String serverNetVersion = (senderIsServer) ? readNetVersion(buffer) : VERSION; - String serverModVersion = (senderIsServer) ? readModVersion(buffer) : TotemOfReviving.getVersion(); - String clientNetVersion = (senderIsServer) ? VERSION : readNetVersion(buffer); - String clientModVersion = (senderIsServer) ? TotemOfReviving.getVersion() : readModVersion(buffer); - - if (!serverNetVersion.equals(clientNetVersion)) { - throw new MismatchedVersionException( - String.format("The server and client are running different versions of [Micle's Totem of Reviving]. " + - "Try updating this mod on either the client and or the server. " + - "Client version is %s (%s). Server version is %s (%s)", - clientModVersion, clientNetVersion, - serverModVersion, serverNetVersion) - ); - } - } - - public static String readNetVersion(FriendlyByteBuf buffer) { - String netVersion = buffer.readUtf(); - if (!NET_VERSION_PATTERN.matcher(netVersion).matches()) { - return "UNKNOWN (" + netVersion + ")"; - } - return netVersion; - } - - public static String readModVersion(FriendlyByteBuf buffer) { - String modVersion = buffer.readUtf(); - if (!modVersion.equals("NONE") && !MOD_VERSION_PATTERN.matcher(modVersion).matches()) { - return "UNKNOWN (" + modVersion + ")"; - } - return modVersion; - } -} diff --git a/src/main/java/dev/micle/totemofreviving/network/NetworkManager.java b/src/main/java/dev/micle/totemofreviving/network/NetworkManager.java new file mode 100644 index 0000000..6fab324 --- /dev/null +++ b/src/main/java/dev/micle/totemofreviving/network/NetworkManager.java @@ -0,0 +1,44 @@ +package dev.micle.totemofreviving.network; + +import dev.micle.totemofreviving.TotemOfReviving; +import dev.micle.totemofreviving.network.client.ChangeTargetPacket; +import dev.micle.totemofreviving.network.client.ChargeTotemPacket; +import dev.micle.totemofreviving.network.client.ReviveTargetPacket; +import net.minecraftforge.network.NetworkRegistry; +import net.minecraftforge.network.simple.SimpleChannel; + +public class NetworkManager { + // Initialize variables + private static SimpleChannel channel; + + public static void init() { + // Create channel + channel = NetworkRegistry.ChannelBuilder.named(TotemOfReviving.createResourceLocation("network")) + .clientAcceptedVersions(v -> v.equals(TotemOfReviving.getVersion())) + .serverAcceptedVersions(v -> v.equals(TotemOfReviving.getVersion())) + .networkProtocolVersion(TotemOfReviving::getVersion) + .simpleChannel(); + + // Register packets + int id = 0; + channel.messageBuilder(ChangeTargetPacket.class, id++) + .encoder(ChangeTargetPacket::encode) + .decoder(ChangeTargetPacket::decode) + .consumer(ChangeTargetPacket::handle) + .add(); + channel.messageBuilder(ChargeTotemPacket.class, id++) + .encoder(ChargeTotemPacket::encode) + .decoder(ChargeTotemPacket::decode) + .consumer(ChargeTotemPacket::handle) + .add(); + channel.messageBuilder(ReviveTargetPacket.class, id++) + .encoder(ReviveTargetPacket::encode) + .decoder(ReviveTargetPacket::decode) + .consumer(ReviveTargetPacket::handle) + .add(); + } + + public static SimpleChannel getChannel() { + return channel; + } +} diff --git a/src/main/java/dev/micle/totemofreviving/network/ChangeTargetPacket.java b/src/main/java/dev/micle/totemofreviving/network/client/ChangeTargetPacket.java similarity index 90% rename from src/main/java/dev/micle/totemofreviving/network/ChangeTargetPacket.java rename to src/main/java/dev/micle/totemofreviving/network/client/ChangeTargetPacket.java index 594e759..cf26a6d 100644 --- a/src/main/java/dev/micle/totemofreviving/network/ChangeTargetPacket.java +++ b/src/main/java/dev/micle/totemofreviving/network/client/ChangeTargetPacket.java @@ -1,7 +1,8 @@ -package dev.micle.totemofreviving.network; +package dev.micle.totemofreviving.network.client; import dev.micle.totemofreviving.TotemOfReviving; import dev.micle.totemofreviving.item.totem.TotemItem; +import dev.micle.totemofreviving.network.NetworkManager; import net.minecraft.ChatFormatting; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.TextComponent; @@ -21,12 +22,10 @@ public class ChangeTargetPacket { } public static void encode(final ChangeTargetPacket packet, final FriendlyByteBuf buffer) { - Network.writeVersionInfo(buffer, false); buffer.writeEnum(packet.hand); } public static ChangeTargetPacket decode(final FriendlyByteBuf buffer) { - Network.checkVersion(buffer); return new ChangeTargetPacket(buffer.readEnum(InteractionHand.class)); } @@ -37,7 +36,7 @@ public class ChangeTargetPacket { if (sender == null) { return; } ItemStack totemStack = sender.getItemInHand(packet.hand); - PlayerList playerList = TotemOfReviving.PROXY.getServer().getPlayerList(); + PlayerList playerList = TotemOfReviving.getProxy().getServer().getPlayerList(); int targetIndex = TotemItem.getTargetIndex(totemStack) + 1; if (targetIndex > playerList.getPlayerCount()-1) { targetIndex = 0; } diff --git a/src/main/java/dev/micle/totemofreviving/network/ChargeTotemPacket.java b/src/main/java/dev/micle/totemofreviving/network/client/ChargeTotemPacket.java similarity index 92% rename from src/main/java/dev/micle/totemofreviving/network/ChargeTotemPacket.java rename to src/main/java/dev/micle/totemofreviving/network/client/ChargeTotemPacket.java index 3952809..3879f2f 100644 --- a/src/main/java/dev/micle/totemofreviving/network/ChargeTotemPacket.java +++ b/src/main/java/dev/micle/totemofreviving/network/client/ChargeTotemPacket.java @@ -1,6 +1,7 @@ -package dev.micle.totemofreviving.network; +package dev.micle.totemofreviving.network.client; import dev.micle.totemofreviving.item.totem.TotemItem; +import dev.micle.totemofreviving.network.NetworkManager; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; @@ -17,12 +18,10 @@ public class ChargeTotemPacket { } public static void encode(final ChargeTotemPacket packet, final FriendlyByteBuf buffer) { - Network.writeVersionInfo(buffer, false); buffer.writeEnum(packet.hand); } public static ChargeTotemPacket decode(final FriendlyByteBuf buffer) { - Network.checkVersion(buffer); return new ChargeTotemPacket(buffer.readEnum(InteractionHand.class)); } diff --git a/src/main/java/dev/micle/totemofreviving/network/ReviveTargetPacket.java b/src/main/java/dev/micle/totemofreviving/network/client/ReviveTargetPacket.java similarity index 92% rename from src/main/java/dev/micle/totemofreviving/network/ReviveTargetPacket.java rename to src/main/java/dev/micle/totemofreviving/network/client/ReviveTargetPacket.java index ff81573..da69a3c 100644 --- a/src/main/java/dev/micle/totemofreviving/network/ReviveTargetPacket.java +++ b/src/main/java/dev/micle/totemofreviving/network/client/ReviveTargetPacket.java @@ -1,7 +1,8 @@ -package dev.micle.totemofreviving.network; +package dev.micle.totemofreviving.network.client; import dev.micle.totemofreviving.TotemOfReviving; import dev.micle.totemofreviving.item.totem.TotemItem; +import dev.micle.totemofreviving.network.NetworkManager; import net.minecraft.ChatFormatting; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.TextComponent; @@ -20,12 +21,10 @@ public class ReviveTargetPacket { } public static void encode(final ReviveTargetPacket packet, final FriendlyByteBuf buffer) { - Network.writeVersionInfo(buffer, false); buffer.writeEnum(packet.hand); } public static ReviveTargetPacket decode(final FriendlyByteBuf buffer) { - Network.checkVersion(buffer); return new ReviveTargetPacket(buffer.readEnum(InteractionHand.class)); } @@ -39,7 +38,7 @@ public class ReviveTargetPacket { ServerPlayer target; try { - target = TotemOfReviving.PROXY.getServer().getPlayerList().getPlayer(TotemItem.getTargetUUID(totemStack)); + target = TotemOfReviving.getProxy().getServer().getPlayerList().getPlayer(TotemItem.getTargetUUID(totemStack)); if (target == null) { throw new NullPointerException("Target is null!"); } } catch (NullPointerException exception) { sender.sendMessage(new TextComponent(ChatFormatting.WHITE + "Unable to find player!"), sender.getUUID()); diff --git a/src/main/java/dev/micle/totemofreviving/proxy/Proxy.java b/src/main/java/dev/micle/totemofreviving/proxy/Proxy.java index 2cc69b9..2c4cb9d 100644 --- a/src/main/java/dev/micle/totemofreviving/proxy/Proxy.java +++ b/src/main/java/dev/micle/totemofreviving/proxy/Proxy.java @@ -2,7 +2,7 @@ package dev.micle.totemofreviving.proxy; import dev.micle.totemofreviving.setup.Config; import dev.micle.totemofreviving.data.DataGenerators; -import dev.micle.totemofreviving.network.Network; +import dev.micle.totemofreviving.network.NetworkManager; import dev.micle.totemofreviving.setup.Registration; import net.minecraft.client.Minecraft; import net.minecraft.server.MinecraftServer; @@ -27,7 +27,7 @@ public class Proxy implements IProxy { // Initialize setup Registration.register(); Config.init(); - Network.init(); + NetworkManager.init(); // Register mod event bus listeners IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();