77import io .netty .channel .Channel ;
88import java .util .ArrayList ;
99import java .util .List ;
10+ import java .util .UUID ;
1011import java .util .stream .Collectors ;
1112import net .akazukin .library .compat .minecraft .Compat ;
1213import net .akazukin .library .compat .minecraft .data .WrappedAnvilInventory ;
@@ -150,49 +151,37 @@ else if (itemStack instanceof ItemStack)
150151
151152 @ Override
152153 public <T > T setNBT (final T itemStack , final String key , final String value ) {
153- final net .minecraft .server .v1_16_R3 .ItemStack nmsItemStack ;
154- if (itemStack instanceof net .minecraft .server .v1_16_R3 .ItemStack )
155- nmsItemStack = (net .minecraft .server .v1_16_R3 .ItemStack ) itemStack ;
156- else if (itemStack instanceof ItemStack )
157- nmsItemStack = CraftItemStack .asNMSCopy ((ItemStack ) itemStack );
158- else
159- return null ;
154+ return this .setNBT (itemStack , key , (Object ) value );
155+ }
160156
161- final NBTTagCompound nbt = nmsItemStack .getOrCreateTag ();
162- nbt .setString (key , value );
157+ @ Override
158+ public <T > T setNBT (final T itemStack , final String key , final long value ) {
159+ return this .setNBT (itemStack , key , (Object ) value );
160+ }
163161
164- if (itemStack instanceof net .minecraft .server .v1_16_R3 .ItemStack )
165- return (T ) nmsItemStack ;
166- else if (itemStack instanceof ItemStack )
167- return (T ) CraftItemStack .asBukkitCopy (nmsItemStack );
168- else
169- return null ;
162+ @ Override
163+ public <T > T setNBT (final T itemStack , final String key , final boolean value ) {
164+ return this .setNBT (itemStack , key , (Object ) value );
170165 }
171166
172167 @ Override
173- public <T > T setNBT (final T itemStack , final String key , final long value ) {
174- final net .minecraft .server .v1_16_R3 .ItemStack nmsItemStack ;
175- if (itemStack instanceof net .minecraft .server .v1_16_R3 .ItemStack )
176- nmsItemStack = (net .minecraft .server .v1_16_R3 .ItemStack ) itemStack ;
177- else if (itemStack instanceof ItemStack )
178- nmsItemStack = CraftItemStack .asNMSCopy ((ItemStack ) itemStack );
179- else
180- return null ;
168+ public <T > T setNBT (final T itemStack , final String key , final byte value ) {
169+ return this .setNBT (itemStack , key , (Object ) value );
170+ }
181171
182- final NBTTagCompound nbt = nmsItemStack .getOrCreateTag ();
183- nbt .setLong (key , value );
172+ @ Override
173+ public <T > T setNBT (final T itemStack , final String key , final short value ) {
174+ return this .setNBT (itemStack , key , (Object ) value );
175+ }
184176
185- if (itemStack instanceof net .minecraft .server .v1_16_R3 .ItemStack )
186- return (T ) nmsItemStack ;
187- else if (itemStack instanceof ItemStack )
188- return (T ) CraftItemStack .asBukkitCopy (nmsItemStack );
189- else
190- return null ;
177+ @ Override
178+ public <T > T setNBT (final T itemStack , final String key , final UUID value ) {
179+ return this .setNBT (itemStack , key , (Object ) value );
191180 }
192181
193182 @ Override
194- public <T > T setNBT (final T itemStack , final String key , final boolean value ) {
195- return this .setNBT (itemStack , key , String . valueOf ( value ) );
183+ public <T > T setNBT (final T itemStack , final String key , final double value ) {
184+ return this .setNBT (itemStack , key , ( Object ) value );
196185 }
197186
198187 @ Override
@@ -329,8 +318,8 @@ public <I> I setPDCData(final I itemStack, final String key, final Long value) {
329318 }
330319
331320 @ Override
332- public <I > I setPDCData (final I itemStack , final String key , final boolean value ) {
333- return this .setPDCData (itemStack , PersistentDataType .BYTE , key , (byte ) (value ? 1 : 0 ));
321+ public <I > I setPDCData (final I itemStack , final String key , final Boolean value ) {
322+ return this .setPDCData (itemStack , PersistentDataType .BYTE , key , value != null ? (byte ) (value ? 1 : 0 ) : null );
334323 }
335324
336325 @ Override
@@ -377,6 +366,11 @@ public <I> I setPlData(final I itemStack, final String key, final Integer value)
377366 return this .setPDCData (itemStack , key , value );
378367 }
379368
369+ @ Override
370+ public <I > I setPlData (final I itemStack , final String key , final Long value ) {
371+ return this .setPDCData (itemStack , key , value );
372+ }
373+
380374 @ Override
381375 public String getPlDataString (final Object itemStack , final String key ) {
382376 return this .getPDCDataString (itemStack , key );
@@ -398,7 +392,7 @@ public Boolean getPlDataBool(final Object itemStack, final String key) {
398392 }
399393
400394 @ Override
401- public <I > I setPlData (final I itemStack , final String key , final boolean value ) {
395+ public <I > I setPlData (final I itemStack , final String key , final Boolean value ) {
402396 return this .setPDCData (itemStack , key , value );
403397 }
404398
@@ -474,4 +468,40 @@ else if (itemStack instanceof ItemStack)
474468 else
475469 return null ;
476470 }
471+
472+ public <T > T setNBT (final T itemStack , final String key , final Object value ) {
473+ final net .minecraft .server .v1_16_R3 .ItemStack nmsItemStack ;
474+ if (itemStack instanceof net .minecraft .server .v1_16_R3 .ItemStack )
475+ nmsItemStack = (net .minecraft .server .v1_16_R3 .ItemStack ) itemStack ;
476+ else if (itemStack instanceof ItemStack )
477+ nmsItemStack = CraftItemStack .asNMSCopy ((ItemStack ) itemStack );
478+ else
479+ return null ;
480+
481+ final NBTTagCompound nbt = nmsItemStack .getOrCreateTag ();
482+
483+ if (value instanceof Boolean )
484+ nbt .setBoolean (key , (Boolean ) value );
485+ else if (value instanceof String )
486+ nbt .setString (key , (String ) value );
487+ else if (value instanceof Integer )
488+ nbt .setInt (key , (Integer ) value );
489+ else if (value instanceof Long )
490+ nbt .setLong (key , (Long ) value );
491+ else if (value instanceof Byte )
492+ nbt .setByte (key , (Byte ) value );
493+ else if (value instanceof Short )
494+ nbt .setShort (key , (Short ) value );
495+ else if (value instanceof Double )
496+ nbt .setDouble (key , (Double ) value );
497+ else if (value instanceof UUID )
498+ nbt .a (key , (UUID ) value );
499+
500+ if (itemStack instanceof net .minecraft .server .v1_16_R3 .ItemStack )
501+ return (T ) nmsItemStack ;
502+ else if (itemStack instanceof ItemStack )
503+ return (T ) CraftItemStack .asBukkitCopy (nmsItemStack );
504+ else
505+ return null ;
506+ }
477507}
0 commit comments