Skip to content

Commit c5e457a

Browse files
authored
add extra check for transformers (#4855)
1 parent 5860e59 commit c5e457a

1 file changed

Lines changed: 17 additions & 9 deletions

File tree

src/main/java/com/gregtechceu/gtceu/api/sync_system/FieldSyncHandler.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.gregtechceu.gtceu.GTCEu;
44
import com.gregtechceu.gtceu.api.sync_system.data_transformers.ValueTransformer;
5+
import com.gregtechceu.gtceu.api.sync_system.data_transformers.ValueTransformers;
56

67
import net.minecraft.nbt.CompoundTag;
78
import net.minecraft.nbt.Tag;
@@ -26,15 +27,19 @@ public static Tag serializeField(Object holder, FieldSyncData field,
2627
return nullCompound;
2728
}
2829

29-
try {
30-
if (field.transformer != null) {
31-
return ((ValueTransformer<Object>) field.transformer).serializeNBT(currentValue,
32-
new ValueTransformer.TransformerContext<>(holder, field.type, currentValue, field.fieldName,
33-
writeClientFields, fullSync));
34-
} else {
30+
if (field.transformer == null) {
31+
field.setTransformer(ValueTransformers.get(field.type.getRawType()));
32+
if (field.transformer == null) {
3533
GTCEu.LOGGER.error("Sync: Failed to serialize field {} in class {}: Missing value transformer for {}",
3634
field.fieldName, holder.getClass().getName(), field.type);
35+
return new CompoundTag();
3736
}
37+
}
38+
39+
try {
40+
return ((ValueTransformer<Object>) field.transformer).serializeNBT(currentValue,
41+
new ValueTransformer.TransformerContext<>(holder, field.type, currentValue, field.fieldName,
42+
writeClientFields, fullSync));
3843

3944
} catch (Exception e) {
4045
GTCEu.LOGGER.error("Sync: Failed to serialize field {}", field.fieldName, e);
@@ -55,9 +60,12 @@ public static void deserializeField(Object holder, FieldSyncData field,
5560
}
5661

5762
if (field.transformer == null) {
58-
GTCEu.LOGGER.error("Sync: Failed to deserialize field {} in class {}: Missing value transformer for {}",
59-
field.fieldName, holder.getClass().getName(), field.type);
60-
return;
63+
field.setTransformer(ValueTransformers.get(field.type.getRawType()));
64+
if (field.transformer == null) {
65+
GTCEu.LOGGER.error("Sync: Failed to deserialize field {} in class {}: Missing value transformer for {}",
66+
field.fieldName, holder.getClass().getName(), field.type);
67+
return;
68+
}
6169
}
6270

6371
try {

0 commit comments

Comments
 (0)