Skip to content

Commit 6a1c277

Browse files
committed
Fix PCASyncer
Signed-off-by: Hendrix-Shen <[email protected]>
1 parent adf997b commit 6a1c277

13 files changed

+187
-147
lines changed

src/main/java/com/plusls/MasaGadget/api/network/packet/PCAPacket.java

-4
This file was deleted.

src/main/java/com/plusls/MasaGadget/impl/network/NoopCodec.java

-4
This file was deleted.

src/main/java/com/plusls/MasaGadget/util/PcaSyncProtocol.java

+93-21
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,18 @@ public class PcaSyncProtocol {
7272

7373
public static void init() {
7474
//#if MC > 12004
75+
//$$ PayloadTypeRegistry.playC2S().register(ServerboundCancelSyncBlockEntityPacket.TYPE, ServerboundCancelSyncBlockEntityPacket.CODEC);
76+
//$$ PayloadTypeRegistry.playC2S().register(ServerboundCancelSyncEntityPacket.TYPE, ServerboundCancelSyncEntityPacket.CODEC);
77+
//$$ PayloadTypeRegistry.playC2S().register(ServerboundSyncBlockEntityPacket.TYPE, ServerboundSyncBlockEntityPacket.CODEC);
78+
//$$ PayloadTypeRegistry.playC2S().register(ServerboundSyncEntityPacket.TYPE, ServerboundSyncEntityPacket.CODEC);
7579
//$$ PayloadTypeRegistry.playS2C().register(ClientboundDisablePcaSyncProtocolPacket.TYPE, ClientboundDisablePcaSyncProtocolPacket.CODEC);
7680
//$$ PayloadTypeRegistry.playS2C().register(ClientboundEnablePcaSyncProtocolPacket.TYPE, ClientboundEnablePcaSyncProtocolPacket.CODEC);
7781
//$$ PayloadTypeRegistry.playS2C().register(ClientboundUpdateBlockEntityPacket.TYPE, ClientboundUpdateBlockEntityPacket.CODEC);
7882
//$$ PayloadTypeRegistry.playS2C().register(ClientboundUpdateEntityPacket.TYPE, ClientboundUpdateEntityPacket.CODEC);
79-
//$$ ClientPlayNetworking.registerGlobalReceiver(ClientboundDisablePcaSyncProtocolPacket.TYPE, ClientboundDisablePcaSyncProtocolPacket::handle);
80-
//$$ ClientPlayNetworking.registerGlobalReceiver(ClientboundEnablePcaSyncProtocolPacket.TYPE, ClientboundEnablePcaSyncProtocolPacket::handle);
81-
//$$ ClientPlayNetworking.registerGlobalReceiver(ClientboundUpdateBlockEntityPacket.TYPE, ClientboundUpdateBlockEntityPacket::handle);
82-
//$$ ClientPlayNetworking.registerGlobalReceiver(ClientboundUpdateEntityPacket.TYPE, ClientboundUpdateEntityPacket::handle);
83+
//$$ ClientPlayNetworking.registerGlobalReceiver(ClientboundDisablePcaSyncProtocolPacket.TYPE, PcaSyncProtocol::disablePcaSyncProtocolHandler);
84+
//$$ ClientPlayNetworking.registerGlobalReceiver(ClientboundEnablePcaSyncProtocolPacket.TYPE, PcaSyncProtocol::enablePcaSyncProtocolHandler);
85+
//$$ ClientPlayNetworking.registerGlobalReceiver(ClientboundUpdateBlockEntityPacket.TYPE, PcaSyncProtocol::updateBlockEntityHandler);
86+
//$$ ClientPlayNetworking.registerGlobalReceiver(ClientboundUpdateEntityPacket.TYPE, PcaSyncProtocol::updateEntityHandler);
8387
//#else
8488
ClientPlayNetworking.registerGlobalReceiver(ENABLE_PCA_SYNC_PROTOCOL, PcaSyncProtocol::enablePcaSyncProtocolHandler);
8589
ClientPlayNetworking.registerGlobalReceiver(DISABLE_PCA_SYNC_PROTOCOL, PcaSyncProtocol::disablePcaSyncProtocolHandler);
@@ -94,25 +98,55 @@ private static void onDisconnect() {
9498
enable = false;
9599
}
96100

97-
public static void enablePcaSyncProtocolHandler(Minecraft client, ClientPacketListener handler,
98-
FriendlyByteBuf buf, PacketSender responseSender) {
99-
if (!client.hasSingleplayerServer()) {
101+
private static void enablePcaSyncProtocolHandler(
102+
//#if MC > 12004
103+
//$$ ClientboundEnablePcaSyncProtocolPacket packet,
104+
//$$ ClientPlayNetworking.Context context
105+
//#else
106+
Minecraft client,
107+
ClientPacketListener handler,
108+
FriendlyByteBuf buf,
109+
PacketSender responseSender
110+
//#endif
111+
) {
112+
if (!Minecraft.getInstance().hasSingleplayerServer()) {
100113
SharedConstants.getLogger().info("pcaSyncProtocol enable.");
101114
enable = true;
102115
}
103116
}
104117

105-
public static void disablePcaSyncProtocolHandler(Minecraft client, ClientPacketListener handler,
106-
FriendlyByteBuf buf, PacketSender responseSender) {
107-
if (!client.hasSingleplayerServer()) {
118+
public static void disablePcaSyncProtocolHandler(
119+
//#if MC > 12004
120+
//$$ ClientboundDisablePcaSyncProtocolPacket packet,
121+
//$$ ClientPlayNetworking.Context context
122+
//#else
123+
Minecraft client,
124+
ClientPacketListener handler,
125+
FriendlyByteBuf buf,
126+
PacketSender responseSender
127+
//#endif
128+
) {
129+
if (!Minecraft.getInstance().hasSingleplayerServer()) {
108130
SharedConstants.getLogger().info("pcaSyncProtocol disable.");
109131
enable = false;
110132
}
111133
}
112134

113135
// 反序列化实体数据
114-
public static void updateEntityHandler(Minecraft client, ClientPacketListener handler,
115-
FriendlyByteBuf buf, PacketSender responseSender) {
136+
public static void updateEntityHandler(
137+
//#if MC > 12004
138+
//$$ ClientboundUpdateEntityPacket packet,
139+
//$$ ClientPlayNetworking.Context context
140+
//#else
141+
Minecraft client,
142+
ClientPacketListener handler,
143+
FriendlyByteBuf buf,
144+
PacketSender responseSender
145+
//#endif
146+
) {
147+
//#if MC > 12004
148+
//$$ Minecraft client = context.client();
149+
//#endif
116150
LocalPlayer player = client.player;
117151

118152
if (player == null) {
@@ -123,12 +157,23 @@ public static void updateEntityHandler(Minecraft client, ClientPacketListener ha
123157
LevelCompat levelCompat = playerCompat.getLevel();
124158
Level level = levelCompat.get();
125159

126-
if (!levelCompat.getDimensionLocation().equals(buf.readResourceLocation())) {
160+
if (!levelCompat.getDimensionLocation().equals(
161+
//#if MC > 12004
162+
//$$ packet.dimension()
163+
//#else
164+
buf.readResourceLocation()
165+
//#endif
166+
)) {
127167
return;
128168
}
129169

170+
//#if MC > 12004
171+
//$$ int entityId = packet.entityId();
172+
//$$ CompoundTag tag = packet.tag();
173+
//#else
130174
int entityId = buf.readInt();
131175
CompoundTag tag = NetworkUtil.readNbt(buf);
176+
//#endif
132177
Entity entity = level.getEntity(entityId);
133178

134179
if (entity != null) {
@@ -166,7 +211,7 @@ public static void updateEntityHandler(Minecraft client, ClientPacketListener ha
166211
//$$ if (tag.contains("Offers")) {
167212
//$$ MerchantOffers.CODEC
168213
//$$ .parse(client.level.registryAccess().createSerializationContext(NbtOps.INSTANCE),
169-
//$$ tag.getCompound("Offers").get("Offers"))
214+
//$$ tag.get("Offers"))
170215
//$$ .resultOrPartial(Util.prefix("Failed to load offers: ", MagicLib.getLogger()::warn))
171216
//$$ .ifPresent(merchantOffers -> ((AccessorAbstractVillager) entity).setOffers(merchantOffers));
172217
//$$ }
@@ -209,8 +254,20 @@ public static void updateEntityHandler(Minecraft client, ClientPacketListener ha
209254
}
210255

211256
// 反序列化 blockEntity 数据
212-
public static void updateBlockEntityHandler(Minecraft client, ClientPacketListener handler,
213-
FriendlyByteBuf buf, PacketSender responseSender) {
257+
public static void updateBlockEntityHandler(
258+
//#if MC > 12004
259+
//$$ ClientboundUpdateBlockEntityPacket packet,
260+
//$$ ClientPlayNetworking.Context context
261+
//#else
262+
Minecraft client,
263+
ClientPacketListener handler,
264+
FriendlyByteBuf buf,
265+
PacketSender responseSender
266+
//#endif
267+
) {
268+
//#if MC > 12004
269+
//$$ Minecraft client = context.client();
270+
//#endif
214271
LocalPlayer player = client.player;
215272

216273
if (player == null) {
@@ -220,12 +277,23 @@ public static void updateBlockEntityHandler(Minecraft client, ClientPacketListen
220277
LevelCompat levelCompat = PlayerCompat.of(player).getLevel();
221278
Level level = levelCompat.get();
222279

223-
if (!levelCompat.getDimensionLocation().equals(buf.readResourceLocation())) {
280+
if (!levelCompat.getDimensionLocation().equals(
281+
//#if MC > 12004
282+
//$$ packet.dimension()
283+
//#else
284+
buf.readResourceLocation()
285+
//#endif
286+
)) {
224287
return;
225288
}
226289

290+
//#if MC > 12004
291+
//$$ BlockPos pos = packet.blockPos();
292+
//$$ CompoundTag tag = packet.tag();
293+
//#else
227294
BlockPos pos = buf.readBlockPos();
228295
CompoundTag tag = buf.readNbt();
296+
//#endif
229297
BlockEntity blockEntity = level.getBlockEntity(pos);
230298

231299
if (Configs.saveInventoryToSchematicInServer.getBooleanValue() && pos.equals(PcaSyncUtil.lastUpdatePos)) {
@@ -252,11 +320,13 @@ public static void syncBlockEntity(BlockPos pos) {
252320
SharedConstants.getLogger().debug("syncBlockEntity: {}", pos);
253321
lastBlockPos = pos;
254322
lastEntityId = -1;
323+
//#if MC < 12005
255324
FriendlyByteBuf buf = new FriendlyByteBuf(Unpooled.buffer());
256325
buf.writeBlockPos(pos);
326+
//#endif
257327
ClientPlayNetworking.send(
258328
//#if MC > 12004
259-
//$$ new ServerboundSyncBlockEntityPacket(buf)
329+
//$$ new ServerboundSyncBlockEntityPacket(pos)
260330
//#else
261331
SYNC_BLOCK_ENTITY,
262332
buf
@@ -272,11 +342,13 @@ public static void syncEntity(int entityId) {
272342
SharedConstants.getLogger().debug("syncEntity: {}", entityId);
273343
lastEntityId = entityId;
274344
lastBlockPos = null;
345+
//#if MC < 12005
275346
FriendlyByteBuf buf = new FriendlyByteBuf(Unpooled.buffer());
276347
buf.writeInt(entityId);
348+
//#endif
277349
ClientPlayNetworking.send(
278350
//#if MC > 12004
279-
//$$ new ServerboundSyncEntityPacket(buf)
351+
//$$ new ServerboundSyncEntityPacket(entityId)
280352
//#else
281353
SYNC_ENTITY,
282354
buf
@@ -294,7 +366,7 @@ public static void cancelSyncBlockEntity() {
294366
FriendlyByteBuf buf = new FriendlyByteBuf(Unpooled.buffer());
295367
ClientPlayNetworking.send(
296368
//#if MC > 12004
297-
//$$ new ServerboundCancelSyncBlockEntityPacket(buf)
369+
//$$ new ServerboundCancelSyncBlockEntityPacket()
298370
//#else
299371
CANCEL_SYNC_REQUEST_BLOCK_ENTITY,
300372
buf
@@ -312,7 +384,7 @@ public static void cancelSyncEntity() {
312384
FriendlyByteBuf buf = new FriendlyByteBuf(Unpooled.buffer());
313385
ClientPlayNetworking.send(
314386
//#if MC > 12004
315-
//$$ new ServerboundCancelSyncEntityPacket(buf)
387+
//$$ new ServerboundCancelSyncEntityPacket()
316388
//#else
317389
CANCEL_SYNC_ENTITY,
318390
buf

versions/1.20.6-fabric/src/main/java/com/plusls/MasaGadget/api/network/packet/PCAPacket.java

-12
This file was deleted.

versions/1.20.6-fabric/src/main/java/com/plusls/MasaGadget/impl/network/NoopCodec.java

-24
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,24 @@
11
package com.plusls.MasaGadget.impl.network.packet;
22

3-
import com.plusls.MasaGadget.api.network.packet.PCAPacket;
4-
import com.plusls.MasaGadget.impl.network.NoopCodec;
53
import com.plusls.MasaGadget.util.PcaSyncProtocol;
6-
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
74
import net.minecraft.network.FriendlyByteBuf;
85
import net.minecraft.network.codec.StreamCodec;
96
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
107
import org.jetbrains.annotations.NotNull;
118

12-
import java.util.function.Function;
13-
14-
public class ClientboundDisablePcaSyncProtocolPacket extends PCAPacket {
15-
public static final Type<PCAPacket> TYPE = new Type<>(PcaSyncProtocol.DISABLE_PCA_SYNC_PROTOCOL);
16-
public static final StreamCodec<FriendlyByteBuf, PCAPacket> CODEC = NoopCodec.create(ClientboundDisablePcaSyncProtocolPacket.transform());
9+
public record ClientboundDisablePcaSyncProtocolPacket() implements CustomPacketPayload {
10+
public static final Type<ClientboundDisablePcaSyncProtocolPacket> TYPE = new Type<>(PcaSyncProtocol.DISABLE_PCA_SYNC_PROTOCOL);
11+
public static final StreamCodec<FriendlyByteBuf, ClientboundDisablePcaSyncProtocolPacket> CODEC = CustomPacketPayload.codec(ClientboundDisablePcaSyncProtocolPacket::write, ClientboundDisablePcaSyncProtocolPacket::new);
1712

1813
public ClientboundDisablePcaSyncProtocolPacket(FriendlyByteBuf byteBuf) {
19-
super(byteBuf);
20-
}
21-
22-
public static void handle(PCAPacket packet, ClientPlayNetworking.Context context) {
23-
PcaSyncProtocol.disablePcaSyncProtocolHandler(context.client(), context.client().getConnection(), packet.getByteBuf(), context.responseSender());
24-
}
25-
26-
private static Function<FriendlyByteBuf, PCAPacket> transform() {
27-
return ClientboundDisablePcaSyncProtocolPacket::new;
14+
this();
2815
}
2916

3017
@Override
3118
public @NotNull Type<? extends CustomPacketPayload> type() {
3219
return ClientboundDisablePcaSyncProtocolPacket.TYPE;
3320
}
21+
22+
private void write(FriendlyByteBuf byteBuf) {
23+
}
3424
}
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,24 @@
11
package com.plusls.MasaGadget.impl.network.packet;
22

3-
import com.plusls.MasaGadget.api.network.packet.PCAPacket;
4-
import com.plusls.MasaGadget.impl.network.NoopCodec;
53
import com.plusls.MasaGadget.util.PcaSyncProtocol;
6-
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
74
import net.minecraft.network.FriendlyByteBuf;
85
import net.minecraft.network.codec.StreamCodec;
96
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
107
import org.jetbrains.annotations.NotNull;
118

12-
import java.util.function.Function;
13-
14-
public class ClientboundEnablePcaSyncProtocolPacket extends PCAPacket {
15-
public static final Type<PCAPacket> TYPE = new Type<>(PcaSyncProtocol.ENABLE_PCA_SYNC_PROTOCOL);
16-
public static final StreamCodec<FriendlyByteBuf, PCAPacket> CODEC = NoopCodec.create(ClientboundEnablePcaSyncProtocolPacket.transform());
9+
public record ClientboundEnablePcaSyncProtocolPacket() implements CustomPacketPayload {
10+
public static final Type<ClientboundEnablePcaSyncProtocolPacket> TYPE = new Type<>(PcaSyncProtocol.ENABLE_PCA_SYNC_PROTOCOL);
11+
public static final StreamCodec<FriendlyByteBuf, ClientboundEnablePcaSyncProtocolPacket> CODEC = CustomPacketPayload.codec(ClientboundEnablePcaSyncProtocolPacket::write, ClientboundEnablePcaSyncProtocolPacket::new);
1712

1813
public ClientboundEnablePcaSyncProtocolPacket(FriendlyByteBuf byteBuf) {
19-
super(byteBuf);
20-
}
21-
22-
public static void handle(PCAPacket packet, ClientPlayNetworking.Context context) {
23-
PcaSyncProtocol.enablePcaSyncProtocolHandler(context.client(), context.client().getConnection(), packet.getByteBuf(), context.responseSender());
24-
}
25-
26-
private static Function<FriendlyByteBuf, PCAPacket> transform() {
27-
return ClientboundEnablePcaSyncProtocolPacket::new;
14+
this();
2815
}
2916

3017
@Override
3118
public @NotNull Type<? extends CustomPacketPayload> type() {
3219
return ClientboundEnablePcaSyncProtocolPacket.TYPE;
3320
}
21+
22+
private void write(FriendlyByteBuf byteBuf) {
23+
}
3424
}
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,31 @@
11
package com.plusls.MasaGadget.impl.network.packet;
22

3-
import com.plusls.MasaGadget.api.network.packet.PCAPacket;
4-
import com.plusls.MasaGadget.impl.network.NoopCodec;
53
import com.plusls.MasaGadget.util.PcaSyncProtocol;
6-
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
4+
import net.minecraft.core.BlockPos;
5+
import net.minecraft.nbt.CompoundTag;
76
import net.minecraft.network.FriendlyByteBuf;
87
import net.minecraft.network.codec.StreamCodec;
98
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
9+
import net.minecraft.resources.ResourceLocation;
1010
import org.jetbrains.annotations.NotNull;
11+
import top.hendrixshen.magiclib.util.minecraft.NetworkUtil;
1112

12-
import java.util.function.Function;
13+
public record ClientboundUpdateBlockEntityPacket(ResourceLocation dimension, BlockPos blockPos, CompoundTag tag) implements CustomPacketPayload {
14+
public static final Type<ClientboundUpdateBlockEntityPacket> TYPE = new Type<>(PcaSyncProtocol.UPDATE_BLOCK_ENTITY);
15+
public static final StreamCodec<FriendlyByteBuf, ClientboundUpdateBlockEntityPacket> CODEC = CustomPacketPayload.codec(ClientboundUpdateBlockEntityPacket::write, ClientboundUpdateBlockEntityPacket::new);
1316

14-
public class ClientboundUpdateBlockEntityPacket extends PCAPacket {
15-
public static final Type<PCAPacket> TYPE = new Type<>(PcaSyncProtocol.UPDATE_BLOCK_ENTITY);
16-
public static final StreamCodec<FriendlyByteBuf, PCAPacket> CODEC = NoopCodec.create(ClientboundUpdateBlockEntityPacket.transform());
17-
18-
public ClientboundUpdateBlockEntityPacket(FriendlyByteBuf byteBuf) {
19-
super(byteBuf);
20-
}
21-
22-
public static void handle(PCAPacket packet, ClientPlayNetworking.Context context) {
23-
PcaSyncProtocol.updateBlockEntityHandler(context.client(), context.client().getConnection(), packet.getByteBuf(), context.responseSender());
24-
}
25-
26-
private static Function<FriendlyByteBuf, PCAPacket> transform() {
27-
return ClientboundUpdateBlockEntityPacket::new;
17+
public ClientboundUpdateBlockEntityPacket(@NotNull FriendlyByteBuf byteBuf) {
18+
this(byteBuf.readResourceLocation(), byteBuf.readBlockPos(), NetworkUtil.readNbt(byteBuf));
2819
}
2920

3021
@Override
3122
public @NotNull Type<? extends CustomPacketPayload> type() {
3223
return ClientboundUpdateBlockEntityPacket.TYPE;
3324
}
25+
26+
private void write(@NotNull FriendlyByteBuf byteBuf) {
27+
byteBuf.writeResourceLocation(this.dimension);
28+
byteBuf.writeBlockPos(this.blockPos);
29+
byteBuf.writeNbt(this.tag);
30+
}
3431
}

0 commit comments

Comments
 (0)