mirror of
https://github.com/FabricMC/fabric.git
synced 2025-04-21 03:10:54 -04:00
Fix ClientPlayNetworking.Contexnt.player() being null (#3603)
* Fix ClientPlayNetworking.Contexnt.player() being null * Minor cleanup
This commit is contained in:
parent
a9531dc707
commit
793274c90b
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
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue