Skip to content

Commit f4f6632

Browse files
committed
fixed some networking problems
1 parent 78e66b0 commit f4f6632

File tree

8 files changed

+42
-41
lines changed

8 files changed

+42
-41
lines changed

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ dependencies {
106106
// exclude group: "net.minecraftforge", module: "forge"
107107
//}
108108

109-
implementation "mcjty.theoneprobe:theoneprobe:${top_version}"
109+
compileOnly "mcjty.theoneprobe:theoneprobe:${top_version}"
110110

111111
implementation "curse.maven:jade-324717:${jade_curse_id}"
112112

src/main/java/me/desht/modularrouters/container/BulkItemFilterMenu.java

+5
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,11 @@ public BulkItemFilterMenu(int windowId, Inventory invPlayer, MFLocator loc) {
6161
}
6262

6363
public void clearSlots() {
64+
handler.setAutoSave(false);
6465
for (int i = 0; i < handler.getSlots(); i++) {
6566
handler.setStackInSlot(i, ItemStack.EMPTY);
6667
}
68+
handler.setAutoSave(true);
6769
handler.save();
6870

6971
if (getRouter() != null && !getRouter().getLevel().isClientSide) {
@@ -86,12 +88,15 @@ public int mergeInventory(IItemHandler srcInv, Filter.Flags flags, boolean clear
8688
}
8789

8890
int slot = 0;
91+
handler.setAutoSave(false);
8992
for (ItemStack stack : stacks.sortedList()) {
9093
handler.setStackInSlot(slot++, stack);
9194
}
9295
while (slot < handler.getSlots()) {
9396
handler.setStackInSlot(slot++, ItemStack.EMPTY);
9497
}
98+
99+
handler.setAutoSave(true);
95100
handler.save();
96101

97102
if (getRouter() != null && !getRouter().getLevel().isClientSide) {

src/main/java/me/desht/modularrouters/container/handler/BaseModuleHandler.java

+10-3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public abstract class BaseModuleHandler extends GhostItemHandler {
1616
private final ItemStack holderStack;
1717
protected final ModularRouterBlockEntity router;
1818
private final String tagName;
19+
private boolean autoSave = true;
1920

2021
public BaseModuleHandler(ItemStack holderStack, ModularRouterBlockEntity router, int size, String tagName) {
2122
super(size);
@@ -26,6 +27,10 @@ public BaseModuleHandler(ItemStack holderStack, ModularRouterBlockEntity router,
2627
deserializeNBT(ModuleHelper.validateNBT(holderStack).getCompound(tagName));
2728
}
2829

30+
public void setAutoSave(boolean autoSave) {
31+
this.autoSave = autoSave;
32+
}
33+
2934
/**
3035
* Get the itemstack which holds this filter. Could be a module, could be a bulk item filter...
3136
*
@@ -37,10 +42,12 @@ public ItemStack getHolderStack() {
3742

3843
@Override
3944
protected void onContentsChanged(int slot) {
40-
save();
45+
if (autoSave) {
46+
save();
4147

42-
if (router != null) {
43-
router.recompileNeeded(ModularRouterBlockEntity.COMPILE_MODULES);
48+
if (router != null) {
49+
router.recompileNeeded(ModularRouterBlockEntity.COMPILE_MODULES);
50+
}
4451
}
4552
}
4653

src/main/java/me/desht/modularrouters/network/ClientPayloadHandler.java

+5-11
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,22 @@
1313
import net.minecraft.world.phys.Vec3;
1414
import net.neoforged.neoforge.network.handling.PlayPayloadContext;
1515

16-
public enum ClientPayloadHandler {
17-
INSTANCE;
18-
19-
public static ClientPayloadHandler getInstance() {
20-
return INSTANCE;
21-
}
22-
23-
public void handleData(GuiSyncMessage message, PlayPayloadContext context) {
16+
public class ClientPayloadHandler {
17+
public static void handleData(GuiSyncMessage message, PlayPayloadContext context) {
2418
context.workHandler().submitAsync(() -> {
2519
if (Minecraft.getInstance().screen instanceof IResyncableGui syncable) {
2620
syncable.resync(message.newStack());
2721
}
2822
});
2923
}
3024

31-
public void handleData(ItemBeamMessage message, PlayPayloadContext context) {
25+
public static void handleData(ItemBeamMessage message, PlayPayloadContext context) {
3226
context.workHandler().submitAsync(() ->
3327
Minecraft.getInstance().level.getBlockEntity(message.pos(), ModBlockEntities.MODULAR_ROUTER.get())
3428
.ifPresent(te -> message.beams().forEach(te::addItemBeam)));
3529
}
3630

37-
public void handleData(PushEntityMessage message, PlayPayloadContext context) {
31+
public static void handleData(PushEntityMessage message, PlayPayloadContext context) {
3832
context.workHandler().submitAsync(() -> {
3933
Entity entity = Minecraft.getInstance().level.getEntity(message.entityId());
4034
if (entity != null) {
@@ -47,7 +41,7 @@ public void handleData(PushEntityMessage message, PlayPayloadContext context) {
4741
});
4842
}
4943

50-
public void handleData(RouterUpgradesSyncMessage message, PlayPayloadContext context) {
44+
public static void handleData(RouterUpgradesSyncMessage message, PlayPayloadContext context) {
5145
context.workHandler().submitAsync(() -> {
5246
Level level = Minecraft.getInstance().level;
5347
if (level != null && level.isLoaded(message.pos())) {

src/main/java/me/desht/modularrouters/network/NetworkHandler.java

+11-10
Original file line numberDiff line numberDiff line change
@@ -14,34 +14,35 @@
1414
public class NetworkHandler {
1515
private static final String NETWORK_VERSION = "1.0";
1616

17+
@SuppressWarnings("Convert2MethodRef")
1718
@SubscribeEvent
1819
public static void register(final RegisterPayloadHandlerEvent event) {
1920
final IPayloadRegistrar registrar = event.registrar(ModularRouters.MODID)
2021
.versioned(NETWORK_VERSION);
2122

2223
// clientbound
2324
registrar.play(GuiSyncMessage.ID, GuiSyncMessage::new, handler -> handler
24-
.client(ClientPayloadHandler.getInstance()::handleData));
25+
.client((message, context) -> ClientPayloadHandler.handleData(message, context)));
2526
registrar.play(ItemBeamMessage.ID, ItemBeamMessage::fromNetwork, handler -> handler
26-
.client(ClientPayloadHandler.getInstance()::handleData));
27+
.client((message, context) -> ClientPayloadHandler.handleData(message, context)));
2728
registrar.play(PushEntityMessage.ID, PushEntityMessage::new, handler -> handler
28-
.client(ClientPayloadHandler.getInstance()::handleData));
29+
.client((message, context) -> ClientPayloadHandler.handleData(message, context)));
2930
registrar.play(RouterUpgradesSyncMessage.ID, RouterUpgradesSyncMessage::new, handler -> handler
30-
.client(ClientPayloadHandler.getInstance()::handleData));
31+
.client((message, context) -> ClientPayloadHandler.handleData(message, context)));
3132

3233
// serverbound
3334
registrar.play(FilterSettingsMessage.ID, FilterSettingsMessage::new, handler -> handler
34-
.server(ServerPayloadHandler.getInstance()::handleData));
35+
.server((message, context) -> ServerPayloadHandler.handleData(message, context)));
3536
registrar.play(ModuleFilterMessage.ID, ModuleFilterMessage::new, handler -> handler
36-
.server(ServerPayloadHandler.getInstance()::handleData));
37+
.server((message, context) -> ServerPayloadHandler.handleData(message, context)));
3738
registrar.play(ModuleSettingsMessage.ID, ModuleSettingsMessage::new, handler -> handler
38-
.server(ServerPayloadHandler.getInstance()::handleData));
39+
.server((message, context) -> ServerPayloadHandler.handleData(message, context)));
3940
registrar.play(OpenGuiMessage.ID, OpenGuiMessage::new, handler -> handler
40-
.server(ServerPayloadHandler.getInstance()::handleData));
41+
.server((message, context) -> ServerPayloadHandler.handleData(message, context)));
4142
registrar.play(SyncUpgradeSettingsMessage.ID, SyncUpgradeSettingsMessage::new, handler -> handler
42-
.server(ServerPayloadHandler.getInstance()::handleData));
43+
.server((message, context) -> ServerPayloadHandler.handleData(message, context)));
4344
registrar.play(ValidateModuleMessage.ID, ValidateModuleMessage::new, handler -> handler
44-
.server(ServerPayloadHandler.getInstance()::handleData));
45+
.server((message, context) -> ServerPayloadHandler.handleData(message, context)));
4546

4647
// bidirectional
4748
registrar.play(RouterSettingsMessage.ID, RouterSettingsMessage::new, handler -> handler

src/main/java/me/desht/modularrouters/network/ServerPayloadHandler.java

+7-13
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,8 @@
2222

2323
import java.util.Objects;
2424

25-
public enum ServerPayloadHandler {
26-
INSTANCE;
27-
28-
public static ServerPayloadHandler getInstance() {
29-
return INSTANCE;
30-
}
31-
32-
public void handleData(FilterSettingsMessage message, PlayPayloadContext context) {
25+
public class ServerPayloadHandler {
26+
public static void handleData(FilterSettingsMessage message, PlayPayloadContext context) {
3327
context.player().ifPresent(player -> context.workHandler().submitAsync(() -> {
3428
MFLocator locator = message.locator();
3529
ItemStack moduleStack = locator.getModuleStack(player);
@@ -60,7 +54,7 @@ public void handleData(FilterSettingsMessage message, PlayPayloadContext context
6054
}));
6155
}
6256

63-
public void handleData(ModuleFilterMessage message, PlayPayloadContext context) {
57+
public static void handleData(ModuleFilterMessage message, PlayPayloadContext context) {
6458
context.player().ifPresent(player -> context.workHandler().submitAsync(() -> {
6559
AbstractContainerMenu c = player.containerMenu;
6660
int slot = message.slot();
@@ -74,7 +68,7 @@ private static boolean isValidContainer(AbstractContainerMenu c) {
7468
return c instanceof ModuleMenu || c instanceof BulkItemFilterMenu;
7569
}
7670

77-
public void handleData(ModuleSettingsMessage message, PlayPayloadContext context) {
71+
public static void handleData(ModuleSettingsMessage message, PlayPayloadContext context) {
7872
context.player().ifPresent(player -> context.workHandler().submitAsync(() -> {
7973
MFLocator locator = message.locator();
8074
CompoundTag payload = message.payload();
@@ -95,7 +89,7 @@ public void handleData(ModuleSettingsMessage message, PlayPayloadContext context
9589
}));
9690
}
9791

98-
public void handleData(OpenGuiMessage message, PlayPayloadContext context) {
92+
public static void handleData(OpenGuiMessage message, PlayPayloadContext context) {
9993
context.player().ifPresent(player -> context.workHandler().submitAsync(() -> {
10094
MFLocator locator = message.locator();
10195
switch (message.op()) {
@@ -121,7 +115,7 @@ public void handleData(OpenGuiMessage message, PlayPayloadContext context) {
121115
}));
122116
}
123117

124-
public void handleData(SyncUpgradeSettingsMessage message, PlayPayloadContext context) {
118+
public static void handleData(SyncUpgradeSettingsMessage message, PlayPayloadContext context) {
125119
context.player().ifPresent(player -> context.workHandler().submitAsync(() -> {
126120
ItemStack held = player.getItemInHand(message.hand());
127121
if (held.getItem() instanceof SyncUpgrade) {
@@ -130,7 +124,7 @@ public void handleData(SyncUpgradeSettingsMessage message, PlayPayloadContext co
130124
}));
131125
}
132126

133-
public void handleData(ValidateModuleMessage message, PlayPayloadContext context) {
127+
public static void handleData(ValidateModuleMessage message, PlayPayloadContext context) {
134128
context.player().ifPresent(player -> context.workHandler().submitAsync(() -> {
135129
ItemStack stack = player.getItemInHand(message.hand());
136130
if (stack.getItem() instanceof ModuleItem moduleItem && player instanceof ServerPlayer sp) {

src/main/java/me/desht/modularrouters/network/messages/RouterSettingsMessage.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ public RouterSettingsMessage(FriendlyByteBuf buffer) {
2929

3030
@Override
3131
public void write(FriendlyByteBuf buffer) {
32-
buffer.writeBlockPos(pos);
33-
buffer.writeByte(redstoneBehaviour.ordinal());
3432
buffer.writeBoolean(ecoMode);
33+
buffer.writeByte(redstoneBehaviour.ordinal());
3534
buffer.writeEnum(energyDirection);
35+
buffer.writeBlockPos(pos);
3636
}
3737

3838
@Override

src/main/java/me/desht/modularrouters/util/SetofItemStack.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public static SetofItemStack fromItemHandler(IItemHandler handler, Flags filterF
4646
for (int i = 0; i < handler.getSlots(); i++) {
4747
ItemStack stack = handler.getStackInSlot(i);
4848
if (!stack.isEmpty()) {
49-
itemStacks.add(stack);
49+
itemStacks.add(stack.copy());
5050
}
5151
}
5252
return new SetofItemStack(itemStacks, filterFlags);

0 commit comments

Comments
 (0)