1010import org .jetbrains .annotations .NotNull ;
1111
1212import java .lang .invoke .MethodHandle ;
13+ import java .lang .invoke .WrongMethodTypeException ;
1314import java .util .*;
1415
1516/**
@@ -70,7 +71,7 @@ public CompoundTag serializeNBT(boolean writeClientFields, boolean fullSync) {
7071 Object result = field .nbtSaveModifiers [0 ].invoke (holder , new CompoundTag (), writeClientFields );
7172 tag .put (field .nbtSaveKey , (CompoundTag ) result );
7273 } catch (Throwable e ) {
73- GTCEu .LOGGER .error ("Error while invoking nbtSaveModifier for field {}" , field .fieldName );
74+ GTCEu .LOGGER .error ("Sync: Error while invoking nbtSaveModifier for field {}" , field .fieldName );
7475 GTCEu .LOGGER .error (e .getMessage ());
7576 return new CompoundTag ();
7677 }
@@ -83,7 +84,7 @@ public CompoundTag serializeNBT(boolean writeClientFields, boolean fullSync) {
8384 try {
8485 nbtValue = (Tag ) modifier .invoke (holder , nbtValue , writeClientFields );
8586 } catch (Throwable e ) {
86- GTCEu .LOGGER .error ("Error while invoking nbtSaveModifier for field {}" , field .fieldName );
87+ GTCEu .LOGGER .error ("Sync: Error while invoking nbtSaveModifier for field {}" , field .fieldName );
8788 GTCEu .LOGGER .error (e .getMessage ());
8889 return new CompoundTag ();
8990 }
@@ -106,7 +107,7 @@ public void deserializeNBT(CompoundTag tag, boolean readingClientFields) {
106107 try {
107108 field .nbtLoadModifiers [0 ].invoke (holder , tag , readingClientFields );
108109 } catch (Throwable e ) {
109- GTCEu .LOGGER .error ("Error while invoking nbtLoadModifier for field {}" , field .fieldName );
110+ GTCEu .LOGGER .error ("Sync: Error while invoking nbtLoadModifier for field {}" , field .fieldName );
110111 GTCEu .LOGGER .error (e .getMessage ());
111112 return ;
112113 }
@@ -120,7 +121,7 @@ public void deserializeNBT(CompoundTag tag, boolean readingClientFields) {
120121 try {
121122 modifier .invoke (holder , savedValue , readingClientFields );
122123 } catch (Throwable e ) {
123- GTCEu .LOGGER .error ("Error while invoking nbtLoadModifier for field {}" , field .fieldName );
124+ GTCEu .LOGGER .error ("Sync: Error while invoking nbtLoadModifier for field {}" , field .fieldName );
124125 GTCEu .LOGGER .error (e .getMessage ());
125126 return ;
126127 }
@@ -129,9 +130,12 @@ public void deserializeNBT(CompoundTag tag, boolean readingClientFields) {
129130 if (readingClientFields ) {
130131 try {
131132 for (MethodHandle changeListenerHandle : field .changeListenerHandles ) {
132- changeListenerHandle .invoke ();
133+ changeListenerHandle .invoke (holder );
133134 }
134135 } catch (Throwable e ) {
136+ if (e instanceof WrongMethodTypeException ) {
137+ throw new IllegalArgumentException ("Invalid method signature for change listener for field %s %s" .formatted (field .fieldName , holder .getClass ().getCanonicalName ()));
138+ }
135139 GTCEu .LOGGER .error ("Sync: Error while invoking change listener for field {}" , field .fieldName );
136140 GTCEu .LOGGER .error (e );
137141 }
@@ -201,13 +205,13 @@ private static void deserialiseField(ISyncManaged holder, ClassSyncData.FieldSyn
201205 field .handle .set (holder , transformer .deserializeNBT (savedValue , holder , null ));
202206 }
203207 } catch (UnsupportedOperationException e ) {
204- GTCEu .LOGGER .error ("Sync error : failed to perform VarHandle set: unsupported op {} {}" ,
208+ GTCEu .LOGGER .error ("Sync: failed to perform VarHandle set: unsupported op {} {}" ,
205209 field .fieldName , field .handle .toString ());
206210 }
207211 }
208212 } else if (field .isComplex && savedValue instanceof CompoundTag compound ) {
209213 if (currentVal == null ) {
210- GTCEu .LOGGER .error ("Sync error : ISyncManaged field was null, cannot instantiate {}" ,
214+ GTCEu .LOGGER .error ("Sync: ISyncManaged field was null, cannot instantiate {}" ,
211215 field .fieldName );
212216 return ;
213217 }
0 commit comments