Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,6 @@ public void initClient() {
MinecraftClientEvents.STOP.register(ClientPlayNetworkingImpl::destroy);
ClientPlayNetworkingImpl.setUpPacketFactory(CustomPayloadPacket::new);
ClientPlayNetworkingImpl.registerListener(HandshakePayload.CHANNEL, HandshakePayload::new, (context, payload) -> {
// ensure the handshake is processed on the main thread,
// where the network handler is guaranteed to be set
context.ensureOnMainThread();

// send channel registration data as a response to receiving server channel registration data
ClientPlayNetworkingImpl.sendNoCheck(HandshakePayload.CHANNEL, HandshakePayload.client());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,6 @@ public void initClient() {
MinecraftClientEvents.STOP.register(ClientPlayNetworkingImpl::destroy);
ClientPlayNetworkingImpl.setUpPacketFactory(CustomPayloadPacket::new);
ClientPlayNetworkingImpl.registerListener(HandshakePayload.CHANNEL, HandshakePayload::new, (context, payload) -> {
// ensure the handshake is processed on the main thread,
// where the network handler is guaranteed to be set
context.ensureOnMainThread();

// send channel registration data as a response to receiving server channel registration data
ClientPlayNetworkingImpl.sendNoCheck(HandshakePayload.CHANNEL, HandshakePayload.client());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,6 @@ public void initClient() {
MinecraftClientEvents.STOP.register(ClientPlayNetworkingImpl::destroy);
ClientPlayNetworkingImpl.setUpPacketFactory(CustomPayloadPacket::new);
ClientPlayNetworkingImpl.registerListener(HandshakePayload.CHANNEL, HandshakePayload::new, (context, payload) -> {
// ensure the handshake is processed on the main thread,
// where the network handler is guaranteed to be set
context.ensureOnMainThread();

// send channel registration data as a response to receiving server channel registration data
ClientPlayNetworkingImpl.sendNoCheck(HandshakePayload.CHANNEL, HandshakePayload.client());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public final class ClientPlayNetworkingImpl {

private static final Logger LOGGER = LogManager.getLogger("OSL|Client Play Networking");

private static final ThreadLocal<ClientPlayNetworkHandler> currentHandler = new ThreadLocal<>();
private static PacketFactory packetFactory;
private static Minecraft minecraft;
private static Thread thread;
Expand Down Expand Up @@ -111,7 +112,7 @@ public static boolean handlePacket(Minecraft minecraft, ClientPlayNetworkHandler
ChannelListener listener = CHANNEL_LISTENERS.get(channel);

if (listener != null) {
ChannelListener.Context ctx = new ChannelListener.Context();
ChannelListener.Context ctx = new ChannelListener.Context(handler);
PacketBuffer data = p.osl$networking$getData();

try {
Expand All @@ -127,10 +128,13 @@ public static boolean handlePacket(Minecraft minecraft, ClientPlayNetworkHandler
}

private static void handlePayload(NamespacedIdentifier channel, ChannelListener listener, ChannelListener.Context ctx, PacketBuffer data) {
currentHandler.set(ctx.networkHandler());
try {
listener.handle(ctx, data);
} catch (IOException e) {
LOGGER.warn("error handling custom payload on channel \'" + channel + "\'", e);
} finally {
currentHandler.remove();
}
}

Expand Down Expand Up @@ -212,7 +216,15 @@ private static void sendPacket(NamespacedIdentifier channel, PacketBuffer data)
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);

if (settings != null && settings.isServerbound()) {
minecraft.getNetworkHandler().sendPacket(packetFactory.create(channel, data));
ClientPlayNetworkHandler handler = currentHandler.get();
if (handler == null) {
handler = minecraft.getNetworkHandler();
}
if (handler != null) {
handler.sendPacket(packetFactory.create(channel, data));
} else {
LOGGER.warn("dropping packet on channel '{}': no network handler available", channel);
}
}
}

Expand All @@ -223,14 +235,20 @@ private interface ChannelListener {

class Context implements ClientPacketListener.Context {

private final ClientPlayNetworkHandler handler;

Context(ClientPlayNetworkHandler handler) {
this.handler = handler;
}

@Override
public Minecraft minecraft() {
return minecraft;
}

@Override
public ClientPlayNetworkHandler networkHandler() {
return minecraft.getNetworkHandler();
return handler;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public final class ClientPlayNetworkingImpl {

private static final Logger LOGGER = LogManager.getLogger("OSL|Client Play Networking");

private static final ThreadLocal<ClientPlayNetworkHandler> currentHandler = new ThreadLocal<>();
private static PacketFactory packetFactory;
private static Minecraft minecraft;
private static Thread thread;
Expand Down Expand Up @@ -109,7 +110,7 @@ public static boolean handlePacket(Minecraft minecraft, ClientPlayNetworkHandler
ChannelListener listener = CHANNEL_LISTENERS.get(channel);

if (listener != null) {
ChannelListener.Context ctx = new ChannelListener.Context();
ChannelListener.Context ctx = new ChannelListener.Context(handler);
PacketBuffer data = p.osl$networking$getData();

try {
Expand All @@ -125,10 +126,13 @@ public static boolean handlePacket(Minecraft minecraft, ClientPlayNetworkHandler
}

private static void handlePayload(NamespacedIdentifier channel, ChannelListener listener, ChannelListener.Context ctx, PacketBuffer data) {
currentHandler.set(ctx.networkHandler());
try {
listener.handle(ctx, data);
} catch (IOException e) {
LOGGER.warn("error handling custom payload on channel \'" + channel + "\'", e);
} finally {
currentHandler.remove();
}
}

Expand Down Expand Up @@ -210,7 +214,15 @@ private static void sendPacket(NamespacedIdentifier channel, PacketBuffer data)
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);

if (settings != null && settings.isServerbound()) {
minecraft.getNetworkHandler().sendPacket(packetFactory.create(channel, data));
ClientPlayNetworkHandler handler = currentHandler.get();
if (handler == null) {
handler = minecraft.getNetworkHandler();
}
if (handler != null) {
handler.sendPacket(packetFactory.create(channel, data));
} else {
LOGGER.warn("dropping packet on channel '{}': no network handler available", channel);
}
}
}

Expand All @@ -221,14 +233,20 @@ private interface ChannelListener {

class Context implements ClientPacketListener.Context {

private final ClientPlayNetworkHandler handler;

Context(ClientPlayNetworkHandler handler) {
this.handler = handler;
}

@Override
public Minecraft minecraft() {
return minecraft;
}

@Override
public ClientPlayNetworkHandler networkHandler() {
return minecraft.getNetworkHandler();
return handler;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public final class ClientPlayNetworkingImpl {

private static final Logger LOGGER = LogManager.getLogger("OSL|Client Play Networking");

private static final ThreadLocal<ClientNetworkHandler> currentHandler = new ThreadLocal<>();
private static PacketFactory packetFactory;
private static Minecraft minecraft;
private static Thread thread;
Expand Down Expand Up @@ -110,7 +111,7 @@ public static boolean handlePacket(Minecraft minecraft, ClientNetworkHandler han
ChannelListener listener = CHANNEL_LISTENERS.get(channel);

if (listener != null) {
ChannelListener.Context ctx = new ChannelListener.Context();
ChannelListener.Context ctx = new ChannelListener.Context(handler);
byte[] data = p.osl$networking$getData();

try {
Expand All @@ -126,10 +127,13 @@ public static boolean handlePacket(Minecraft minecraft, ClientNetworkHandler han
}

private static void handlePayload(NamespacedIdentifier channel, ChannelListener listener, ChannelListener.Context ctx, byte[] data) {
currentHandler.set(ctx.networkHandler());
try {
listener.handle(ctx, data);
} catch (IOException e) {
LOGGER.warn("error handling custom payload on channel \'" + channel + "\'", e);
} finally {
currentHandler.remove();
}
}

Expand Down Expand Up @@ -216,7 +220,15 @@ private static void sendPacket(NamespacedIdentifier channel, byte[] data) {
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);

if (settings != null && settings.isServerbound()) {
networkHandler().sendPacket(packetFactory.create(channel, data));
ClientNetworkHandler handler = currentHandler.get();
if (handler == null) {
handler = networkHandler();
}
if (handler != null) {
handler.sendPacket(packetFactory.create(channel, data));
} else {
LOGGER.warn("dropping packet on channel '{}': no network handler available", channel);
}
}
}

Expand All @@ -227,14 +239,20 @@ private interface ChannelListener {

class Context implements ClientPacketListener.Context {

private final ClientNetworkHandler handler;

Context(ClientNetworkHandler handler) {
this.handler = handler;
}

@Override
public Minecraft minecraft() {
return minecraft;
}

@Override
public ClientNetworkHandler networkHandler() {
return ClientPlayNetworkingImpl.networkHandler();
return handler;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public final class ClientPlayNetworkingImpl {

private static final Logger LOGGER = LogManager.getLogger("OSL|Client Play Networking");

private static final ThreadLocal<ClientNetworkHandler> currentHandler = new ThreadLocal<>();
private static PacketFactory packetFactory;
private static Minecraft minecraft;
private static Thread thread;
Expand Down Expand Up @@ -109,7 +110,7 @@ public static boolean handlePacket(Minecraft minecraft, ClientNetworkHandler han
ChannelListener listener = CHANNEL_LISTENERS.get(channel);

if (listener != null) {
ChannelListener.Context ctx = new ChannelListener.Context();
ChannelListener.Context ctx = new ChannelListener.Context(handler);
byte[] data = p.osl$networking$getData();

try {
Expand All @@ -125,10 +126,13 @@ public static boolean handlePacket(Minecraft minecraft, ClientNetworkHandler han
}

private static void handlePayload(NamespacedIdentifier channel, ChannelListener listener, ChannelListener.Context ctx, byte[] data) {
currentHandler.set(ctx.networkHandler());
try {
listener.handle(ctx, data);
} catch (IOException e) {
LOGGER.warn("error handling custom payload on channel \'" + channel + "\'", e);
} finally {
currentHandler.remove();
}
}

Expand Down Expand Up @@ -210,7 +214,15 @@ private static void sendPacket(NamespacedIdentifier channel, byte[] data) {
ChannelSettings settings = ChannelRegistryImpl.getSettings(channel);

if (settings != null && settings.isServerbound()) {
minecraft.getNetworkHandler().sendPacket(packetFactory.create(channel, data));
ClientNetworkHandler handler = currentHandler.get();
if (handler == null) {
handler = minecraft.getNetworkHandler();
}
if (handler != null) {
handler.sendPacket(packetFactory.create(channel, data));
} else {
LOGGER.warn("dropping packet on channel '{}': no network handler available", channel);
}
}
}

Expand All @@ -221,14 +233,20 @@ private interface ChannelListener {

class Context implements ClientPacketListener.Context {

private final ClientNetworkHandler handler;

Context(ClientNetworkHandler handler) {
this.handler = handler;
}

@Override
public Minecraft minecraft() {
return minecraft;
}

@Override
public ClientNetworkHandler networkHandler() {
return minecraft.getNetworkHandler();
return handler;
}

@Override
Expand Down