Skip to content

Commit 16d3ed3

Browse files
committed
Forge networking
1 parent b1f23d8 commit 16d3ed3

File tree

2 files changed

+23
-15
lines changed

2 files changed

+23
-15
lines changed

doc/changelog.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ <h1>Common Networking ${version} for Minecraft ${mcversion}</h1>
1010

1111
<p>New in ${version}</p>
1212
<ul>
13-
<li>Added: New registration method that takes type and stream codec, other registration is deprecated, please use the new one!</li>
13+
<li>Fixed: Forge networking.</li>
1414
</ul>

forge/src/main/java/commonnetwork/networking/ForgeNetworkHandler.java

+22-14
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66
import commonnetwork.networking.data.PacketContext;
77
import commonnetwork.networking.data.Side;
88
import commonnetwork.networking.exceptions.RegistrationException;
9+
import io.netty.buffer.Unpooled;
910
import net.minecraft.client.Minecraft;
1011
import net.minecraft.network.Connection;
12+
import net.minecraft.network.FriendlyByteBuf;
13+
import net.minecraft.network.RegistryFriendlyByteBuf;
1114
import net.minecraft.server.level.ServerPlayer;
1215
import net.minecraftforge.event.network.CustomPayloadEvent;
13-
import net.minecraftforge.network.Channel;
1416
import net.minecraftforge.network.ChannelBuilder;
1517
import net.minecraftforge.network.EventNetworkChannel;
1618

@@ -21,7 +23,8 @@
2123

2224
public class ForgeNetworkHandler extends PacketRegistrationHandler
2325
{
24-
private final Map<Class<?>, EventNetworkChannel> CHANNELS = new HashMap<>();
26+
// private final Map<Class<?>, EventNetworkChannel> CHANNELS = new HashMap<>();
27+
private final Map<Class<?>, Message<?>> CHANNELS = new HashMap<>();
2528

2629
public ForgeNetworkHandler(Side side)
2730
{
@@ -37,20 +40,23 @@ protected <T> void registerPacket(PacketContainer<T> container)
3740
CommonPacketWrapper<T> msg = container.getCodec().decode(event.getPayload());
3841
buildHandler(container.handler()).accept(msg.packet(), event.getSource());
3942
});
40-
CHANNELS.put(container.classType(), channel);
43+
CHANNELS.put(container.classType(), new Message<>(channel, container));
4144
}
4245
}
4346

4447
public <T> void sendToServer(T packet, boolean ignoreCheck)
4548
{
4649

47-
Channel<T> channel = (Channel<T>) CHANNELS.get(packet.getClass());
48-
if (channel != null)
50+
var message = (Message<T>) CHANNELS.get(packet.getClass());
51+
if (message != null)
4952
{
53+
var channel = message.channel();
5054
Connection connection = Minecraft.getInstance().getConnection().getConnection();
5155
if (ignoreCheck || channel.isRemotePresent(connection))
5256
{
53-
channel.send(packet, connection);
57+
FriendlyByteBuf buf = new RegistryFriendlyByteBuf(Unpooled.buffer(), Minecraft.getInstance().player.registryAccess());
58+
message.container.codec().encode(buf, packet);
59+
channel.send(buf, connection);
5460
}
5561
}
5662
else
@@ -63,14 +69,16 @@ public <T> void sendToServer(T packet, boolean ignoreCheck)
6369
public <T> void sendToClient(T packet, ServerPlayer player, boolean ignoreCheck)
6470
{
6571

66-
Channel<T> channel = (Channel<T>) CHANNELS.get(packet.getClass());
67-
68-
Connection connection = player.connection.getConnection();
69-
if (channel != null)
72+
var message = (Message<T>) CHANNELS.get(packet.getClass());
73+
if (message != null)
7074
{
75+
var channel = message.channel();
76+
Connection connection = player.connection.getConnection();
7177
if (ignoreCheck || channel.isRemotePresent(connection))
7278
{
73-
channel.send(packet, connection);
79+
FriendlyByteBuf buf = new RegistryFriendlyByteBuf(Unpooled.buffer(), player.server.registryAccess());
80+
message.container.codec().encode(buf, packet);
81+
channel.send(buf, connection);
7482
}
7583

7684
}
@@ -100,7 +108,7 @@ private <T> BiConsumer<T, CustomPayloadEvent.Context> buildHandler(Consumer<Pack
100108
};
101109
}
102110

103-
// public record Message<T>(EventNetworkChannel channel, BiConsumer<T, ? extends FriendlyByteBuf> encoder)
104-
// {
105-
// }
111+
public record Message<T>(EventNetworkChannel channel, PacketContainer<T> container)
112+
{
113+
}
106114
}

0 commit comments

Comments
 (0)