diff --git a/src/main/java/net/minestom/server/item/ItemTag.java b/src/main/java/net/minestom/server/item/ItemTag.java index 4ad673136..ad5350042 100644 --- a/src/main/java/net/minestom/server/item/ItemTag.java +++ b/src/main/java/net/minestom/server/item/ItemTag.java @@ -32,10 +32,66 @@ public class ItemTag { this.writeConsumer.accept(nbtCompound, value); } + public static @NotNull ItemTag Byte(@NotNull String key) { + return new ItemTag<>(key, + nbtCompound -> nbtCompound.getByte(key), + (nbtCompound, value) -> nbtCompound.setByte(key, value)); + } + + public static @NotNull ItemTag Short(@NotNull String key) { + return new ItemTag<>(key, + nbtCompound -> nbtCompound.getShort(key), + (nbtCompound, value) -> nbtCompound.setShort(key, value)); + } + public static @NotNull ItemTag Integer(@NotNull String key) { return new ItemTag<>(key, nbtCompound -> nbtCompound.getInt(key), (nbtCompound, integer) -> nbtCompound.setInt(key, integer)); } + public static @NotNull ItemTag Long(@NotNull String key) { + return new ItemTag<>(key, + nbtCompound -> nbtCompound.getLong(key), + (nbtCompound, value) -> nbtCompound.setLong(key, value)); + } + + public static @NotNull ItemTag Float(@NotNull String key) { + return new ItemTag<>(key, + nbtCompound -> nbtCompound.getFloat(key), + (nbtCompound, value) -> nbtCompound.setFloat(key, value)); + } + + public static @NotNull ItemTag Double(@NotNull String key) { + return new ItemTag<>(key, + nbtCompound -> nbtCompound.getDouble(key), + (nbtCompound, value) -> nbtCompound.setDouble(key, value)); + } + + public static @NotNull ItemTag ByteArray(@NotNull String key) { + return new ItemTag<>(key, + nbtCompound -> nbtCompound.getByteArray(key), + (nbtCompound, value) -> nbtCompound.setByteArray(key, value)); + } + + public static @NotNull ItemTag String(@NotNull String key) { + return new ItemTag<>(key, + nbtCompound -> nbtCompound.getString(key), + (nbtCompound, value) -> nbtCompound.setString(key, value)); + } + + // TODO List/Compound + + public static @NotNull ItemTag IntArray(@NotNull String key) { + return new ItemTag<>(key, + nbtCompound -> nbtCompound.getIntArray(key), + (nbtCompound, value) -> nbtCompound.setIntArray(key, value)); + } + + public static @NotNull ItemTag LongArray(@NotNull String key) { + return new ItemTag<>(key, + nbtCompound -> nbtCompound.getLongArray(key), + (nbtCompound, value) -> nbtCompound.setLongArray(key, value)); + } + }