Skip to content

Commit 7758711

Browse files
committed
more sync fixes
1 parent 71d5b31 commit 7758711

File tree

8 files changed

+40
-9
lines changed

8 files changed

+40
-9
lines changed

src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderFluidLinkCover.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ public EnderFluidLinkCover(CoverDefinition definition, ICoverable coverHolder, D
4747
super(definition, coverHolder, attachedSide);
4848
this.mBLeftToTransferLastSecond = TRANSFER_RATE * 20;
4949
filterHandler = FilterHandlers.fluid(this);
50-
if (!isRemote()) visualTank = VirtualEnderRegistry.getInstance()
51-
.getOrCreateEntry(getOwner(), EntryTypes.ENDER_FLUID, getChannelName());
50+
if (!isRemote()) setEntry(VirtualEnderRegistry.getInstance()
51+
.getOrCreateEntry(getOwner(), EntryTypes.ENDER_FLUID, getChannelName()));
5252
}
5353

5454
@Override

src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderItemLinkCover.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@ public EnderItemLinkCover(CoverDefinition definition, ICoverable coverHolder, Di
4545
super(definition, coverHolder, attachedSide);
4646
itemsLeftToTransferLastSecond = TRANSFER_RATE * 20;
4747
filterHandler = FilterHandlers.item(this);
48-
if (!isRemote()) storage = VirtualEnderRegistry.getInstance().getOrCreateEntry(getOwner(),
49-
EntryTypes.ENDER_ITEM, getChannelName());
48+
if (!isRemote()) setEntry(VirtualEnderRegistry.getInstance().getOrCreateEntry(getOwner(), EntryTypes.ENDER_ITEM, getChannelName()));
5049
}
5150

5251
@Override
@@ -67,6 +66,7 @@ protected VirtualItemStorage getEntry() {
6766
@Override
6867
protected void setEntry(VirtualEntry entry) {
6968
storage = (VirtualItemStorage) entry;
69+
getSyncDataHolder().markClientSyncFieldDirty("storage");
7070
}
7171

7272
@Override

src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderRedstoneLinkCover.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ protected void setEntry(VirtualEntry entry) {
5858
if (storage != null) storage.removeMember(uuid);
5959
storage = (VirtualRedstone) entry;
6060
storage.addMember(uuid);
61+
getSyncDataHolder().markClientSyncFieldDirty("storage");
6162
}
6263

6364
@Override

src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.gregtechceu.gtceu.common.data.GTSoundEntries;
2626
import com.gregtechceu.gtceu.common.network.GTNetwork;
2727
import com.gregtechceu.gtceu.common.network.packets.prospecting.SPacketProspectBedrockFluid;
28+
import com.gregtechceu.gtceu.syncsystem.ManagedSyncBlockEntity;
2829
import com.gregtechceu.gtceu.utils.FormattingUtil;
2930
import com.gregtechceu.gtceu.utils.GTUtil;
3031

@@ -71,8 +72,8 @@ public enum DisplayMode {
7172
SHOW_MACHINE_INFO("behavior.portable_scanner.mode.show_machine_info"),
7273
SHOW_ELECTRICAL_INFO("behavior.portable_scanner.mode.show_electrical_info"),
7374
SHOW_RECIPE_INFO("behavior.portable_scanner.mode.show_recipe_info"),
74-
SHOW_ENVIRONMENTAL_INFO("behavior.portable_scanner.mode.show_environmental_info");
75-
75+
SHOW_ENVIRONMENTAL_INFO("behavior.portable_scanner.mode.show_environmental_info"),
76+
SHOW_SYNC_INFO("behavior.portable_scanner.mode.show_sync_info");
7677
private final String langKey;
7778

7879
DisplayMode(String langKey) {
@@ -449,6 +450,15 @@ else if (machine instanceof IDataInfoProvider)
449450
}
450451
}
451452

453+
if ((mode == DisplayMode.SHOW_ALL || mode == DisplayMode.SHOW_SYNC_INFO) && tileEntity instanceof ManagedSyncBlockEntity syncBlockEntity) {
454+
list.add(Component.translatable("behavior.portable_scanner.divider"));
455+
list.add(Component.literal("Save data"));
456+
list.add(Component.literal(syncBlockEntity.getSyncDataHolder().serializeNBT(false).toString()));
457+
list.add(Component.translatable("behavior.portable_scanner.divider"));
458+
list.add(Component.literal("Update packet"));
459+
list.add(Component.literal(syncBlockEntity.getSyncDataHolder().serializeNBT(true, true).toString()));
460+
}
461+
452462
return energyCost;
453463
}
454464

src/main/java/com/gregtechceu/gtceu/syncsystem/IValueTransformer.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.gregtechceu.gtceu.syncsystem;
22

3+
import net.minecraft.nbt.CompoundTag;
34
import net.minecraft.nbt.Tag;
45

56
import org.jetbrains.annotations.Nullable;
@@ -10,6 +11,17 @@
1011
*/
1112
public interface IValueTransformer<T> {
1213

14+
static Tag stripLdlibWrapper(Tag t) {
15+
if (!(t instanceof CompoundTag tag)) return t;
16+
if (tag.contains("p") && tag.contains("t")) {
17+
return tag.getCompound("p");
18+
}
19+
if (tag.contains("t", Tag.TAG_COMPOUND)) {
20+
return tag.getCompound("t").getCompound("p");
21+
}
22+
return tag;
23+
}
24+
1325
default boolean mustProvideObject() {
1426
return false;
1527
}

src/main/java/com/gregtechceu/gtceu/syncsystem/data_transformers/CoverBehaviorTransformer.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import net.minecraft.nbt.Tag;
1313
import net.minecraft.resources.ResourceLocation;
1414

15+
import net.minecraft.world.item.ItemStack;
1516
import org.jetbrains.annotations.Nullable;
1617

1718
import java.util.Objects;
@@ -90,6 +91,12 @@ public CoverBehavior deserialize(CompoundTag tag, ICoverable holder, @Nullable C
9091
}
9192

9293
Objects.requireNonNull(holder.getCoverAtSide(side)).getSyncDataHolder().deserializeNBT(tag.getCompound("data"), isSync);
94+
95+
if (!isSync && holder.getCoverAtSide(side).getAttachItem() == ItemStack.EMPTY) {
96+
GTCEu.LOGGER.error("Invalid cover save state, this should never happen unless loading corrupted data.");
97+
holder.setCoverAtSide(null, side);
98+
}
99+
93100
return holder.getCoverAtSide(side);
94101
}
95102
}

src/main/java/com/gregtechceu/gtceu/syncsystem/data_transformers/collections/ListTransformer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public Tag serializeNBT(List<T> value, ISyncManaged holder) {
2929
@Override
3030
public List<T> deserializeNBT(Tag tag, ISyncManaged holder, List<T> current) {
3131
if (!(tag instanceof ListTag listTag) || elementTransformer == null) return List.of();
32-
return listTag.stream().map((t) -> elementTransformer.deserializeNBT(t, null, null)).toList();
32+
33+
return listTag.stream().map((t) -> elementTransformer.deserializeNBT(IValueTransformer.stripLdlibWrapper(t), null, null)).toList();
3334
}
3435
}

src/main/java/com/gregtechceu/gtceu/syncsystem/data_transformers/collections/ObjectArrayTransformer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ public T[] deserializeNBT(Tag tag, ISyncManaged holder, T[] currentVal) {
4040

4141
for (int i = 0; i < listTag.size(); i++) {
4242
if (elementTransformer.mustProvideObject())
43-
elementTransformer.deserializeNBT(listTag.get(i), null, currentVal[i]);
44-
else currentVal[i] = elementTransformer.deserializeNBT(listTag.get(i), null, null);
43+
elementTransformer.deserializeNBT(IValueTransformer.stripLdlibWrapper(listTag.get(i)), null, currentVal[i]);
44+
else currentVal[i] = elementTransformer.deserializeNBT(IValueTransformer.stripLdlibWrapper(listTag.get(i)), null, null);
4545
}
4646
return currentVal;
4747
}

0 commit comments

Comments
 (0)