Fix ClientPlayNetworking.Contexnt.player() being null ()

* Fix ClientPlayNetworking.Contexnt.player() being null

* Minor cleanup
This commit is contained in:
modmuss 2024-02-18 13:18:07 +00:00 committed by GitHub
parent a9531dc707
commit 793274c90b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 38 additions and 3 deletions
fabric-networking-api-v1/src
client/java/net/fabricmc/fabric/impl/networking/client
main/java/net/fabricmc/fabric/impl/networking/server
testmod/java/net/fabricmc/fabric/test/networking/play
testmodClient/java/net/fabricmc/fabric/test/networking/client/play

View file

@ -17,6 +17,7 @@
package net.fabricmc.fabric.impl.networking.client;
import java.util.List;
import java.util.Objects;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientConfigurationNetworkHandler;
@ -98,5 +99,8 @@ public final class ClientConfigurationNetworkAddon extends ClientCommonNetworkAd
}
private record ContextImpl(PacketSender responseSender) implements ClientConfigurationNetworking.Context {
private ContextImpl {
Objects.requireNonNull(responseSender, "responseSender");
}
}
}

View file

@ -17,6 +17,7 @@
package net.fabricmc.fabric.impl.networking.client;
import java.util.List;
import java.util.Objects;
import com.mojang.logging.LogUtils;
import org.slf4j.Logger;
@ -42,7 +43,7 @@ public final class ClientPlayNetworkAddon extends ClientCommonNetworkAddon<Clien
public ClientPlayNetworkAddon(ClientPlayNetworkHandler handler, MinecraftClient client) {
super(ClientNetworkingImpl.PLAY, handler.getConnection(), "ClientPlayNetworkAddon for " + handler.getProfile().getName(), handler, client);
this.context = new ContextImpl(client, client.player, this);
this.context = new ContextImpl(client, this);
// Must register pending channels via lateinit
this.registerPendingChannels((ChannelInfoHolder) this.connection, NetworkPhase.PLAY);
@ -94,6 +95,15 @@ public final class ClientPlayNetworkAddon extends ClientCommonNetworkAddon<Clien
ClientPlayConnectionEvents.DISCONNECT.invoker().onPlayDisconnect(this.handler, this.client);
}
private record ContextImpl(MinecraftClient client, ClientPlayerEntity player, PacketSender responseSender) implements ClientPlayNetworking.Context {
private record ContextImpl(MinecraftClient client, PacketSender responseSender) implements ClientPlayNetworking.Context {
private ContextImpl {
Objects.requireNonNull(client, "client");
Objects.requireNonNull(responseSender, "responseSender");
}
@Override
public ClientPlayerEntity player() {
return Objects.requireNonNull(client.player, "player");
}
}
}

View file

@ -18,6 +18,7 @@ package net.fabricmc.fabric.impl.networking.server;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import net.minecraft.network.NetworkPhase;
import net.minecraft.network.PacketCallbacks;
@ -180,5 +181,9 @@ public final class ServerConfigurationNetworkAddon extends AbstractChanneledNetw
}
private record ContextImpl(ServerConfigurationNetworkHandler networkHandler, PacketSender responseSender) implements ServerConfigurationNetworking.Context {
private ContextImpl {
Objects.requireNonNull(networkHandler, "networkHandler");
Objects.requireNonNull(responseSender, "responseSender");
}
}
}

View file

@ -18,6 +18,7 @@ package net.fabricmc.fabric.impl.networking.server;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import net.minecraft.network.ClientConnection;
import net.minecraft.network.NetworkPhase;
@ -129,5 +130,9 @@ public final class ServerPlayNetworkAddon extends AbstractChanneledNetworkAddon<
}
private record ContextImpl(ServerPlayerEntity player, PacketSender responseSender) implements ServerPlayNetworking.Context {
private ContextImpl {
Objects.requireNonNull(player, "player");
Objects.requireNonNull(responseSender, "responseSender");
}
}
}

View file

@ -43,6 +43,7 @@ import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.fabricmc.fabric.test.networking.NetworkingTestmods;
import net.fabricmc.loader.api.FabricLoader;
@ -106,6 +107,8 @@ public final class NetworkingPlayPacketTest implements ModInitializer {
NetworkingPlayPacketTest.registerCommand(dispatcher);
});
ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> sender.sendPacket(new OverlayPacket(Text.literal("Fabric API"))));
ServerTickEvents.START_SERVER_TICK.register(server -> {
if (!spamUnknownPackets) {
return;

View file

@ -16,6 +16,8 @@
package net.fabricmc.fabric.test.networking.client.play;
import java.util.Objects;
import com.mojang.brigadier.Command;
import net.minecraft.network.PacketByteBuf;
@ -38,7 +40,13 @@ public final class NetworkingPlayPacketClientTest implements ClientModInitialize
// Register the payload only on the client.
PayloadTypeRegistry.playC2S().register(UnknownPayload.ID, UnknownPayload.CODEC);
ClientPlayConnectionEvents.INIT.register((handler, client) -> ClientPlayNetworking.registerReceiver(NetworkingPlayPacketTest.OverlayPacket.ID, (payload, context) -> context.client().inGameHud.setOverlayMessage(payload.message(), true)));
ClientPlayConnectionEvents.INIT.register((handler, client) -> ClientPlayNetworking.registerReceiver(NetworkingPlayPacketTest.OverlayPacket.ID, (payload, context) -> {
Objects.requireNonNull(context);
Objects.requireNonNull(context.client());
Objects.requireNonNull(context.player());
context.client().inGameHud.setOverlayMessage(payload.message(), true);
}));
ClientCommandRegistrationCallback.EVENT.register((dispatcher, dedicated) -> dispatcher.register(
ClientCommandManager.literal("clientnetworktestcommand")