Skip to content

Commit 4b04dcc

Browse files
committed
add channel registry and channel settings
1 parent f4d32ec commit 4b04dcc

File tree

18 files changed

+315
-75
lines changed

18 files changed

+315
-75
lines changed

libraries/networking/networking-mc13w41a-mc18w30b/src/main/java/net/ornithemc/osl/networking/impl/HandshakePayload.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66

77
import net.ornithemc.osl.core.api.util.NamespacedIdentifier;
88
import net.ornithemc.osl.networking.api.ChannelIdentifiers;
9+
import net.ornithemc.osl.networking.api.ChannelRegistry;
910
import net.ornithemc.osl.networking.api.PacketBuffer;
1011
import net.ornithemc.osl.networking.api.PacketPayload;
1112
import net.ornithemc.osl.networking.impl.client.ClientPlayNetworkingImpl;
1213
import net.ornithemc.osl.networking.impl.server.ServerPlayNetworkingImpl;
1314

1415
public class HandshakePayload implements PacketPayload {
1516

16-
public static final NamespacedIdentifier CHANNEL = Constants.OSL_HANDSHAKE_CHANNEL;
17+
public static final NamespacedIdentifier CHANNEL = ChannelRegistry.register(Constants.OSL_HANDSHAKE_CHANNEL);
1718

1819
public byte protocol;
1920
public Set<NamespacedIdentifier> channels;

libraries/networking/networking-mc13w41a-mc18w30b/src/main/java/net/ornithemc/osl/networking/impl/client/ClientPlayNetworkingImpl.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import net.ornithemc.osl.networking.api.PacketBuffers;
1919
import net.ornithemc.osl.networking.api.PacketPayload;
2020
import net.ornithemc.osl.networking.api.client.ClientPacketListener;
21+
import net.ornithemc.osl.networking.impl.ChannelRegistryImpl;
22+
import net.ornithemc.osl.networking.impl.ChannelSettings;
2123
import net.ornithemc.osl.networking.impl.NotOnMainThreadException;
2224
import net.ornithemc.osl.networking.impl.PacketFactory;
2325
import net.ornithemc.osl.networking.impl.access.CustomPayloadPacketAccess;
@@ -64,7 +66,7 @@ public static void destroy(Minecraft minecraft) {
6466
public static final Map<NamespacedIdentifier, ChannelListener> CHANNEL_LISTENERS = new LinkedHashMap<>();
6567

6668
public static <T extends PacketPayload> void registerListener(NamespacedIdentifier channel, Supplier<T> initializer, ClientPacketListener.Payload<T> listener) {
67-
registerListenerImpl(channel, (context, buffer) -> {
69+
registerListenerInternal(channel, (context, buffer) -> {
6870
T payload = initializer.get();
6971
payload.read(buffer);
7072

@@ -73,17 +75,23 @@ public static <T extends PacketPayload> void registerListener(NamespacedIdentifi
7375
}
7476

7577
public static void registerListener(NamespacedIdentifier channel, ClientPacketListener.Buffer listener) {
76-
registerListenerImpl(channel, listener::handle);
78+
registerListenerInternal(channel, listener::handle);
7779
}
7880

7981
public static void registerListener(NamespacedIdentifier channel, ClientPacketListener.Bytes listener) {
80-
registerListenerImpl(channel, (context, buffer) -> listener.handle(context, buffer.readByteArray()));
82+
registerListenerInternal(channel, (context, buffer) -> listener.handle(context, buffer.readByteArray()));
8183
}
8284

83-
private static void registerListenerImpl(NamespacedIdentifier channel, ChannelListener listener) {
85+
private static void registerListenerInternal(NamespacedIdentifier channel, ChannelListener listener) {
86+
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);
87+
88+
if (settings == null || !settings.isClientbound()) {
89+
throw new IllegalArgumentException("channel \'" + channel + "\' is not client-bound - did you register it with the wrong settings?");
90+
}
91+
8492
CHANNEL_LISTENERS.compute(channel, (key, value) -> {
8593
if (value != null) {
86-
throw new IllegalStateException("there is already a listener on channel \'" + channel + "\'");
94+
throw new IllegalArgumentException("there is already a listener on channel \'" + channel + "\'");
8795
}
8896

8997
return listener;
@@ -201,7 +209,11 @@ private static void sendInternal(NamespacedIdentifier channel, byte[] bytes) {
201209
}
202210

203211
private static void sendPacket(NamespacedIdentifier channel, PacketBuffer data) {
204-
minecraft.getNetworkHandler().sendPacket(packetFactory.create(channel, data));
212+
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);
213+
214+
if (settings != null && settings.isServerbound()) {
215+
minecraft.getNetworkHandler().sendPacket(packetFactory.create(channel, data));
216+
}
205217
}
206218

207219
@FunctionalInterface

libraries/networking/networking-mc13w41a-mc18w30b/src/main/java/net/ornithemc/osl/networking/impl/server/ServerPlayNetworkingImpl.java

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import net.ornithemc.osl.networking.api.PacketBuffers;
2323
import net.ornithemc.osl.networking.api.PacketPayload;
2424
import net.ornithemc.osl.networking.api.server.ServerPacketListener;
25+
import net.ornithemc.osl.networking.impl.ChannelRegistryImpl;
26+
import net.ornithemc.osl.networking.impl.ChannelSettings;
2527
import net.ornithemc.osl.networking.impl.NotOnMainThreadException;
2628
import net.ornithemc.osl.networking.impl.PacketFactory;
2729
import net.ornithemc.osl.networking.impl.access.CustomPayloadPacketAccess;
@@ -69,7 +71,7 @@ public static void destroy(MinecraftServer server) {
6971
public static final Map<NamespacedIdentifier, ChannelListener> CHANNEL_LISTENERS = new LinkedHashMap<>();
7072

7173
public static <T extends PacketPayload> void registerListener(NamespacedIdentifier channel, Supplier<T> initializer, ServerPacketListener.Payload<T> listener) {
72-
registerListenerImpl(channel, (context, buffer) -> {
74+
registerListenerInternal(channel, (context, buffer) -> {
7375
T payload = initializer.get();
7476
payload.read(buffer);
7577

@@ -78,17 +80,23 @@ public static <T extends PacketPayload> void registerListener(NamespacedIdentifi
7880
}
7981

8082
public static void registerListener(NamespacedIdentifier channel, ServerPacketListener.Buffer listener) {
81-
registerListenerImpl(channel, listener::handle);
83+
registerListenerInternal(channel, listener::handle);
8284
}
8385

8486
public static void registerListener(NamespacedIdentifier channel, ServerPacketListener.Bytes listener) {
85-
registerListenerImpl(channel, (context, buffer) -> listener.handle(context, buffer.readByteArray()));
87+
registerListenerInternal(channel, (context, buffer) -> listener.handle(context, buffer.readByteArray()));
8688
}
8789

88-
private static void registerListenerImpl(NamespacedIdentifier channel, ChannelListener listener) {
90+
private static void registerListenerInternal(NamespacedIdentifier channel, ChannelListener listener) {
91+
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);
92+
93+
if (settings == null || !settings.isServerbound()) {
94+
throw new IllegalArgumentException("channel \'" + channel + "\' is not server-bound - did you register it with the wrong settings?");
95+
}
96+
8997
CHANNEL_LISTENERS.compute(channel, (key, value) -> {
9098
if (value != null) {
91-
throw new IllegalStateException("there is already a listener on channel \'" + channel + "\'");
99+
throw new IllegalArgumentException("there is already a listener on channel \'" + channel + "\'");
92100
}
93101

94102
return listener;
@@ -346,14 +354,22 @@ private static Iterable<ServerPlayerEntity> collectPlayers(Iterable<ServerPlayer
346354
}
347355

348356
private static void sendPacket(ServerPlayerEntity player, NamespacedIdentifier channel, PacketBuffer data) {
349-
player.networkHandler.sendPacket(packetFactory.create(channel, data));
357+
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);
358+
359+
if (settings != null && settings.isClientbound()) {
360+
player.networkHandler.sendPacket(packetFactory.create(channel, data));
361+
}
350362
}
351363

352364
private static void sendPacket(Iterable<ServerPlayerEntity> players, NamespacedIdentifier channel, PacketBuffer data) {
353-
Packet<?> packet = packetFactory.create(channel, data);
365+
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);
366+
367+
if (settings != null && settings.isClientbound()) {
368+
Packet<?> packet = packetFactory.create(channel, data);
354369

355-
for (ServerPlayerEntity player : players) {
356-
player.networkHandler.sendPacket(packet);
370+
for (ServerPlayerEntity player : players) {
371+
player.networkHandler.sendPacket(packet);
372+
}
357373
}
358374
}
359375

libraries/networking/networking-mc18w31a-mc1.14.4/src/main/java/net/ornithemc/osl/networking/impl/HandshakePayload.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66

77
import net.ornithemc.osl.core.api.util.NamespacedIdentifier;
88
import net.ornithemc.osl.networking.api.ChannelIdentifiers;
9+
import net.ornithemc.osl.networking.api.ChannelRegistry;
910
import net.ornithemc.osl.networking.api.PacketBuffer;
1011
import net.ornithemc.osl.networking.api.PacketPayload;
1112
import net.ornithemc.osl.networking.impl.client.ClientPlayNetworkingImpl;
1213
import net.ornithemc.osl.networking.impl.server.ServerPlayNetworkingImpl;
1314

1415
public class HandshakePayload implements PacketPayload {
1516

16-
public static final NamespacedIdentifier CHANNEL = Constants.OSL_HANDSHAKE_CHANNEL;
17+
public static final NamespacedIdentifier CHANNEL = ChannelRegistry.register(Constants.OSL_HANDSHAKE_CHANNEL);
1718

1819
public byte protocol;
1920
public Set<NamespacedIdentifier> channels;

libraries/networking/networking-mc18w31a-mc1.14.4/src/main/java/net/ornithemc/osl/networking/impl/client/ClientPlayNetworkingImpl.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import net.ornithemc.osl.networking.api.PacketBuffers;
1919
import net.ornithemc.osl.networking.api.PacketPayload;
2020
import net.ornithemc.osl.networking.api.client.ClientPacketListener;
21+
import net.ornithemc.osl.networking.impl.ChannelRegistryImpl;
22+
import net.ornithemc.osl.networking.impl.ChannelSettings;
2123
import net.ornithemc.osl.networking.impl.NotOnMainThreadException;
2224
import net.ornithemc.osl.networking.impl.PacketFactory;
2325
import net.ornithemc.osl.networking.impl.access.CustomPayloadPacketAccess;
@@ -64,7 +66,7 @@ public static void destroy(Minecraft minecraft) {
6466
public static final Map<NamespacedIdentifier, ChannelListener> CHANNEL_LISTENERS = new LinkedHashMap<>();
6567

6668
public static <T extends PacketPayload> void registerListener(NamespacedIdentifier channel, Supplier<T> initializer, ClientPacketListener.Payload<T> listener) {
67-
registerListenerImpl(channel, (context, buffer) -> {
69+
registerListenerInternal(channel, (context, buffer) -> {
6870
T payload = initializer.get();
6971
payload.read(buffer);
7072

@@ -73,17 +75,23 @@ public static <T extends PacketPayload> void registerListener(NamespacedIdentifi
7375
}
7476

7577
public static void registerListener(NamespacedIdentifier channel, ClientPacketListener.Buffer listener) {
76-
registerListenerImpl(channel, listener::handle);
78+
registerListenerInternal(channel, listener::handle);
7779
}
7880

7981
public static void registerListener(NamespacedIdentifier channel, ClientPacketListener.Bytes listener) {
80-
registerListenerImpl(channel, (context, buffer) -> listener.handle(context, buffer.readByteArray()));
82+
registerListenerInternal(channel, (context, buffer) -> listener.handle(context, buffer.readByteArray()));
8183
}
8284

83-
private static void registerListenerImpl(NamespacedIdentifier channel, ChannelListener listener) {
85+
private static void registerListenerInternal(NamespacedIdentifier channel, ChannelListener listener) {
86+
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);
87+
88+
if (settings == null || !settings.isClientbound()) {
89+
throw new IllegalArgumentException("channel \'" + channel + "\' is not client-bound - did you register it with the wrong settings?");
90+
}
91+
8492
CHANNEL_LISTENERS.compute(channel, (key, value) -> {
8593
if (value != null) {
86-
throw new IllegalStateException("there is already a listener on channel \'" + channel + "\'");
94+
throw new IllegalArgumentException("there is already a listener on channel \'" + channel + "\'");
8795
}
8896

8997
return listener;
@@ -199,7 +207,11 @@ private static void sendInternal(NamespacedIdentifier channel, byte[] bytes) {
199207
}
200208

201209
private static void sendPacket(NamespacedIdentifier channel, PacketBuffer data) {
202-
minecraft.getNetworkHandler().sendPacket(packetFactory.create(channel, data));
210+
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);
211+
212+
if (settings != null && settings.isServerbound()) {
213+
minecraft.getNetworkHandler().sendPacket(packetFactory.create(channel, data));
214+
}
203215
}
204216

205217
@FunctionalInterface

libraries/networking/networking-mc18w31a-mc1.14.4/src/main/java/net/ornithemc/osl/networking/impl/server/ServerPlayNetworkingImpl.java

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import net.ornithemc.osl.networking.api.PacketBuffers;
2424
import net.ornithemc.osl.networking.api.PacketPayload;
2525
import net.ornithemc.osl.networking.api.server.ServerPacketListener;
26+
import net.ornithemc.osl.networking.impl.ChannelRegistryImpl;
27+
import net.ornithemc.osl.networking.impl.ChannelSettings;
2628
import net.ornithemc.osl.networking.impl.NotOnMainThreadException;
2729
import net.ornithemc.osl.networking.impl.PacketFactory;
2830
import net.ornithemc.osl.networking.impl.access.CustomPayloadPacketAccess;
@@ -69,7 +71,7 @@ public static void destroy(MinecraftServer server) {
6971
public static final Map<NamespacedIdentifier, ChannelListener> CHANNEL_LISTENERS = new LinkedHashMap<>();
7072

7173
public static <T extends PacketPayload> void registerListener(NamespacedIdentifier channel, Supplier<T> initializer, ServerPacketListener.Payload<T> listener) {
72-
registerListenerImpl(channel, (context, buffer) -> {
74+
registerListenerInternal(channel, (context, buffer) -> {
7375
T payload = initializer.get();
7476
payload.read(buffer);
7577

@@ -78,17 +80,23 @@ public static <T extends PacketPayload> void registerListener(NamespacedIdentifi
7880
}
7981

8082
public static void registerListener(NamespacedIdentifier channel, ServerPacketListener.Buffer listener) {
81-
registerListenerImpl(channel, listener::handle);
83+
registerListenerInternal(channel, listener::handle);
8284
}
8385

8486
public static void registerListener(NamespacedIdentifier channel, ServerPacketListener.Bytes listener) {
85-
registerListenerImpl(channel, (context, buffer) -> listener.handle(context, buffer.readByteArray()));
87+
registerListenerInternal(channel, (context, buffer) -> listener.handle(context, buffer.readByteArray()));
8688
}
8789

88-
private static void registerListenerImpl(NamespacedIdentifier channel, ChannelListener listener) {
90+
private static void registerListenerInternal(NamespacedIdentifier channel, ChannelListener listener) {
91+
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);
92+
93+
if (settings == null || !settings.isServerbound()) {
94+
throw new IllegalArgumentException("channel \'" + channel + "\' is not server-bound - did you register it with the wrong settings?");
95+
}
96+
8997
CHANNEL_LISTENERS.compute(channel, (key, value) -> {
9098
if (value != null) {
91-
throw new IllegalStateException("there is already a listener on channel \'" + channel + "\'");
99+
throw new IllegalArgumentException("there is already a listener on channel \'" + channel + "\'");
92100
}
93101

94102
return listener;
@@ -344,14 +352,22 @@ private static Iterable<ServerPlayerEntity> collectPlayers(Iterable<ServerPlayer
344352
}
345353

346354
private static void sendPacket(ServerPlayerEntity player, NamespacedIdentifier channel, PacketBuffer data) {
347-
player.networkHandler.sendPacket(packetFactory.create(channel, data));
355+
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);
356+
357+
if (settings != null && settings.isClientbound()) {
358+
player.networkHandler.sendPacket(packetFactory.create(channel, data));
359+
}
348360
}
349361

350362
private static void sendPacket(Iterable<ServerPlayerEntity> players, NamespacedIdentifier channel, PacketBuffer data) {
351-
Packet<?> packet = packetFactory.create(channel, data);
363+
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);
364+
365+
if (settings != null && settings.isClientbound()) {
366+
Packet<?> packet = packetFactory.create(channel, data);
352367

353-
for (ServerPlayerEntity player : players) {
354-
player.networkHandler.sendPacket(packet);
368+
for (ServerPlayerEntity player : players) {
369+
player.networkHandler.sendPacket(packet);
370+
}
355371
}
356372
}
357373

libraries/networking/networking-mca1.0.16-mca1.2.6/src/main/java/net/ornithemc/osl/networking/impl/HandshakePayload.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@
66

77
import net.ornithemc.osl.core.api.util.NamespacedIdentifier;
88
import net.ornithemc.osl.networking.api.ChannelIdentifiers;
9+
import net.ornithemc.osl.networking.api.ChannelRegistry;
910
import net.ornithemc.osl.networking.api.PacketBuffer;
1011
import net.ornithemc.osl.networking.api.PacketPayload;
1112
import net.ornithemc.osl.networking.impl.client.ClientPlayNetworkingImpl;
1213

1314
public class HandshakePayload implements PacketPayload {
1415

15-
public static final NamespacedIdentifier CHANNEL = Constants.OSL_HANDSHAKE_CHANNEL;
16+
public static final NamespacedIdentifier CHANNEL = ChannelRegistry.register(Constants.OSL_HANDSHAKE_CHANNEL);
1617

1718
public byte protocol;
1819
public Set<NamespacedIdentifier> channels;

libraries/networking/networking-mca1.0.16-mca1.2.6/src/main/java/net/ornithemc/osl/networking/impl/client/ClientPlayNetworkingImpl.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import net.ornithemc.osl.networking.api.PacketBuffers;
1919
import net.ornithemc.osl.networking.api.PacketPayload;
2020
import net.ornithemc.osl.networking.api.client.ClientPacketListener;
21+
import net.ornithemc.osl.networking.impl.ChannelRegistryImpl;
22+
import net.ornithemc.osl.networking.impl.ChannelSettings;
2123
import net.ornithemc.osl.networking.impl.NotOnMainThreadException;
2224
import net.ornithemc.osl.networking.impl.PacketFactory;
2325
import net.ornithemc.osl.networking.impl.access.CustomPayloadPacketAccess;
@@ -65,7 +67,7 @@ public static void destroy(Minecraft minecraft) {
6567
public static final Map<NamespacedIdentifier, ChannelListener> CHANNEL_LISTENERS = new LinkedHashMap<>();
6668

6769
public static <T extends PacketPayload> void registerListener(NamespacedIdentifier channel, Supplier<T> initializer, ClientPacketListener.Payload<T> listener) {
68-
registerListenerImpl(channel, (context, bytes) -> {
70+
registerListenerInternal(channel, (context, bytes) -> {
6971
T payload = initializer.get();
7072
payload.read(PacketBuffers.wrap(bytes));
7173

@@ -74,17 +76,23 @@ public static <T extends PacketPayload> void registerListener(NamespacedIdentifi
7476
}
7577

7678
public static void registerListener(NamespacedIdentifier channel, ClientPacketListener.Buffer listener) {
77-
registerListenerImpl(channel, (context, bytes) -> listener.handle(context, PacketBuffers.wrap(bytes)));
79+
registerListenerInternal(channel, (context, bytes) -> listener.handle(context, PacketBuffers.wrap(bytes)));
7880
}
7981

8082
public static void registerListener(NamespacedIdentifier channel, ClientPacketListener.Bytes listener) {
81-
registerListenerImpl(channel, listener::handle);
83+
registerListenerInternal(channel, listener::handle);
8284
}
8385

84-
private static void registerListenerImpl(NamespacedIdentifier channel, ChannelListener listener) {
86+
private static void registerListenerInternal(NamespacedIdentifier channel, ChannelListener listener) {
87+
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);
88+
89+
if (settings == null || !settings.isClientbound()) {
90+
throw new IllegalArgumentException("channel \'" + channel + "\' is not client-bound - did you register it with the wrong settings?");
91+
}
92+
8593
CHANNEL_LISTENERS.compute(channel, (key, value) -> {
8694
if (value != null) {
87-
throw new IllegalStateException("there is already a listener on channel \'" + channel + "\'");
95+
throw new IllegalArgumentException("there is already a listener on channel \'" + channel + "\'");
8896
}
8997

9098
return listener;
@@ -205,7 +213,11 @@ private static void sendInternal(NamespacedIdentifier channel, byte[] bytes) {
205213
}
206214

207215
private static void sendPacket(NamespacedIdentifier channel, byte[] data) {
208-
networkHandler().sendPacket(packetFactory.create(channel, data));
216+
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);
217+
218+
if (settings != null && settings.isServerbound()) {
219+
networkHandler().sendPacket(packetFactory.create(channel, data));
220+
}
209221
}
210222

211223
@FunctionalInterface

libraries/networking/networking-mcb1.0-mc13w39b/src/main/java/net/ornithemc/osl/networking/impl/HandshakePayload.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66

77
import net.ornithemc.osl.core.api.util.NamespacedIdentifier;
88
import net.ornithemc.osl.networking.api.ChannelIdentifiers;
9+
import net.ornithemc.osl.networking.api.ChannelRegistry;
910
import net.ornithemc.osl.networking.api.PacketBuffer;
1011
import net.ornithemc.osl.networking.api.PacketPayload;
1112
import net.ornithemc.osl.networking.impl.client.ClientPlayNetworkingImpl;
1213
import net.ornithemc.osl.networking.impl.server.ServerPlayNetworkingImpl;
1314

1415
public class HandshakePayload implements PacketPayload {
1516

16-
public static final NamespacedIdentifier CHANNEL = Constants.OSL_HANDSHAKE_CHANNEL;
17+
public static final NamespacedIdentifier CHANNEL = ChannelRegistry.register(Constants.OSL_HANDSHAKE_CHANNEL);
1718

1819
public byte protocol;
1920
public Set<NamespacedIdentifier> channels;

0 commit comments

Comments
 (0)