From 2d1a9791f66f91ff2aa7bad2707a67e6018a7ec6 Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 11 Feb 2021 19:10:57 +0100 Subject: [PATCH] Remove collisions from packet ids --- .../architectury/networking/NetworkChannel.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/common/src/main/java/me/shedaniel/architectury/networking/NetworkChannel.java b/common/src/main/java/me/shedaniel/architectury/networking/NetworkChannel.java index 101db7ff..249fab01 100644 --- a/common/src/main/java/me/shedaniel/architectury/networking/NetworkChannel.java +++ b/common/src/main/java/me/shedaniel/architectury/networking/NetworkChannel.java @@ -34,9 +34,11 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import org.jetbrains.annotations.ApiStatus; +import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.UUID; import java.util.function.BiConsumer; import java.util.function.Function; import java.util.function.Supplier; @@ -69,16 +71,16 @@ public final class NetworkChannel { } public void register(Class type, BiConsumer encoder, Function decoder, BiConsumer> messageConsumer) { - String s = StringUtils.leftPad(String.valueOf(hashCodeString(type.toString())), 10, '0'); - if (s.length() > 10) s = s.substring(0, 10); - MessageInfo info = new MessageInfo<>(new ResourceLocation(id + "_" + s), encoder, decoder, messageConsumer); + // TODO: this is pretty wasteful; add a way to specify custom or numeric ids + String s = UUID.nameUUIDFromBytes(type.getName().getBytes(StandardCharsets.UTF_8)).toString().replace("-", ""); + MessageInfo info = new MessageInfo<>(new ResourceLocation(id + "/" + s), encoder, decoder, messageConsumer); encoders.put(type, info); NetworkManager.NetworkReceiver receiver = (buf, context) -> { info.messageConsumer.accept(info.decoder.apply(buf), () -> context); }; - NetworkManager.registerReceiver(NetworkManager.clientToServer(), info.packetId, receiver); + NetworkManager.registerReceiver(NetworkManager.c2s(), info.packetId, receiver); if (Platform.getEnvironment() == Env.CLIENT) { - NetworkManager.registerReceiver(NetworkManager.serverToClient(), info.packetId, receiver); + NetworkManager.registerReceiver(NetworkManager.s2c(), info.packetId, receiver); } }