Skip to content
This repository was archived by the owner on Jun 3, 2024. It is now read-only.

Commit eef59b6

Browse files
committed
Hotfix: Make patchwork-networking-messages work on the server
1 parent 7f41577 commit eef59b6

File tree

5 files changed

+44
-36
lines changed

5 files changed

+44
-36
lines changed

patchwork-networking-messages/src/main/java/net/patchworkmc/impl/networking/PatchworkPlayNetworkingMessages.java

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -37,36 +37,20 @@
3737
import net.minecraft.util.PacketByteBuf;
3838

3939
import net.fabricmc.api.ModInitializer;
40-
import net.fabricmc.fabric.api.network.ClientSidePacketRegistry;
4140
import net.fabricmc.fabric.api.network.ServerSidePacketRegistry;
4241

4342
public class PatchworkPlayNetworkingMessages implements ModInitializer, MessageFactory {
44-
private static final Logger LOGGER = LogManager.getLogger("patchwork-networking");
45-
private static final Identifier IDENTIFIER = new Identifier("fml", "play");
46-
private static final NetworkChannelVersion VERSION = new NetworkChannelVersion("FML2", version -> true, version -> true);
47-
private static final short SPAWN_ENTITY = 0;
48-
private static final short OPEN_CONTAINER = 1;
43+
public static final Logger LOGGER = LogManager.getLogger("patchwork-networking");
44+
public static final Identifier IDENTIFIER = new Identifier("fml", "play");
45+
public static final NetworkChannelVersion VERSION = new NetworkChannelVersion("FML2", version -> true, version -> true);
46+
public static final short SPAWN_ENTITY = 0;
47+
public static final short OPEN_CONTAINER = 1;
4948

5049
@Override
5150
public void onInitialize() {
5251
PatchworkNetworking.getVersionManager().createChannel(IDENTIFIER, VERSION);
5352
PatchworkNetworking.setFactory(this);
5453

55-
// TODO: Move to client initializer
56-
ClientSidePacketRegistry.INSTANCE.register(IDENTIFIER, (context, buf) -> {
57-
int id = buf.readUnsignedByte();
58-
59-
if (id == SPAWN_ENTITY) {
60-
FMLPlayMessages.SpawnEntity spawn = FMLPlayMessages.SpawnEntity.decode(buf);
61-
FMLPlayMessages.SpawnEntity.handle(spawn, context);
62-
} else if (id == OPEN_CONTAINER) {
63-
FMLPlayMessages.OpenContainer open = FMLPlayMessages.OpenContainer.decode(buf);
64-
FMLPlayMessages.OpenContainer.handle(open, context);
65-
} else {
66-
LOGGER.warn("Received an unknown fml:play message with an id of {} and a payload of {} bytes", id, buf.readableBytes());
67-
}
68-
});
69-
7054
ServerSidePacketRegistry.INSTANCE.register(IDENTIFIER, (context, buf) -> {
7155
LOGGER.warn("Received an fml:play on the server, this should not happen! Kicking the offending client.");
7256

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package net.patchworkmc.impl.networking;
2+
3+
import net.minecraftforge.fml.network.FMLPlayMessages;
4+
5+
import net.fabricmc.api.ClientModInitializer;
6+
import net.fabricmc.fabric.api.network.ClientSidePacketRegistry;
7+
8+
public class PatchworkPlayNetworkingMessagesClient implements ClientModInitializer {
9+
@Override
10+
public void onInitializeClient() {
11+
// TODO: Move to client initializer
12+
ClientSidePacketRegistry.INSTANCE.register(PatchworkPlayNetworkingMessages.IDENTIFIER, (context, buf) -> {
13+
int id = buf.readUnsignedByte();
14+
15+
if (id == PatchworkPlayNetworkingMessages.SPAWN_ENTITY) {
16+
FMLPlayMessages.SpawnEntity spawn = FMLPlayMessages.SpawnEntity.decode(buf);
17+
FMLPlayMessages.SpawnEntity.handle(spawn, context);
18+
} else if (id == PatchworkPlayNetworkingMessages.OPEN_CONTAINER) {
19+
FMLPlayMessages.OpenContainer open = FMLPlayMessages.OpenContainer.decode(buf);
20+
FMLPlayMessages.OpenContainer.handle(open, context);
21+
} else {
22+
PatchworkPlayNetworkingMessages.LOGGER.warn("Received an unknown fml:play message with an id of {} and a payload of {} bytes", id, buf.readableBytes());
23+
}
24+
});
25+
}
26+
}

patchwork-networking-messages/src/main/java/net/patchworkmc/mixin/networking/MixinServerPlayerEntity.java

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,29 +20,23 @@
2020
package net.patchworkmc.mixin.networking;
2121

2222
import org.spongepowered.asm.mixin.Mixin;
23-
import org.spongepowered.asm.mixin.gen.Accessor;
24-
import org.spongepowered.asm.mixin.gen.Invoker;
23+
import org.spongepowered.asm.mixin.Shadow;
2524

2625
import net.minecraft.server.network.ServerPlayerEntity;
2726

2827
import net.patchworkmc.impl.networking.ContainerSyncAccess;
2928

3029
@Mixin(ServerPlayerEntity.class)
31-
public class MixinServerPlayerEntity implements ContainerSyncAccess {
32-
@Accessor
33-
private int getContainerSyncId() {
34-
throw new AssertionError("Mixin not applied");
35-
}
36-
37-
@Invoker
38-
private void invokeIncrementContainerSyncId() {
39-
throw new AssertionError("Mixin not applied");
40-
}
30+
public abstract class MixinServerPlayerEntity implements ContainerSyncAccess {
31+
@Shadow
32+
private int containerSyncId;
33+
@Shadow
34+
protected abstract void incrementContainerSyncId();
4135

4236
@Override
4337
public int patchwork$getNewContainerSyncId() {
44-
invokeIncrementContainerSyncId();
38+
incrementContainerSyncId();
4539

46-
return getContainerSyncId();
40+
return containerSyncId;
4741
}
4842
}

patchwork-networking-messages/src/main/resources/fabric.mod.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
"entrypoints": {
2020
"main": [
2121
"net.patchworkmc.impl.networking.PatchworkPlayNetworkingMessages"
22+
],
23+
"client": [
24+
"net.patchworkmc.impl.networking.PatchworkPlayNetworkingMessagesClient"
2225
]
2326
},
2427
"mixins": [

patchwork-networking-messages/src/main/resources/patchwork-networking-messages.mixins.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"compatibilityLevel": "JAVA_8",
55
"mixins": [
66
"MixinEntityType",
7-
"MixinEntityTypeBuilder"
7+
"MixinEntityTypeBuilder",
8+
"MixinServerPlayerEntity"
89
],
910
"injectors": {
1011
"defaultRequire": 1

0 commit comments

Comments
 (0)