diff --git a/src/main/java/net/mision_thi/nbttooltips/NBTtooltipsMod.java b/src/main/java/net/mision_thi/nbttooltips/NBTtooltipsMod.java index 95db15c..9e8b0f2 100644 --- a/src/main/java/net/mision_thi/nbttooltips/NBTtooltipsMod.java +++ b/src/main/java/net/mision_thi/nbttooltips/NBTtooltipsMod.java @@ -14,7 +14,8 @@ public class NBTtooltipsMod implements ModInitializer { public static final MinecraftClient client = MinecraftClient.getInstance(); public static final String MOD_ID = "NBTtooltips"; public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); - public static final KeyBinding KEYBIND = KeyBindingHelper.registerKeyBinding(new KeyBinding("nbttooltips.keybind", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_LEFT_ALT, KeyBinding.INVENTORY_CATEGORY)); + public static final KeyBinding SHOW_NBT_KEYBIND = KeyBindingHelper.registerKeyBinding(new KeyBinding("nbttooltips.keybind.show", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_LEFT_ALT, KeyBinding.INVENTORY_CATEGORY)); + public static final KeyBinding COPY_NBT_KEYBIND = KeyBindingHelper.registerKeyBinding(new KeyBinding("nbttooltips.keybind.copy", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_RIGHT_ALT, KeyBinding.INVENTORY_CATEGORY)); @Override public void onInitialize() { diff --git a/src/main/java/net/mision_thi/nbttooltips/mixin/mision_thi_TooltipChanger.java b/src/main/java/net/mision_thi/nbttooltips/mixin/mision_thi_TooltipChanger.java index 39e23f5..b01375f 100644 --- a/src/main/java/net/mision_thi/nbttooltips/mixin/mision_thi_TooltipChanger.java +++ b/src/main/java/net/mision_thi/nbttooltips/mixin/mision_thi_TooltipChanger.java @@ -29,7 +29,7 @@ public abstract class mision_thi_TooltipChanger { @Redirect(method = "getTooltip", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/tooltip/TooltipType;isCreative()Z")) protected boolean forceVisible(TooltipType instance) { - int code = InputUtil.fromTranslationKey(NBTtooltipsMod.KEYBIND.getBoundKeyTranslationKey()).getCode(); + int code = InputUtil.fromTranslationKey(NBTtooltipsMod.SHOW_NBT_KEYBIND.getBoundKeyTranslationKey()).getCode(); shouldShow = instance.isAdvanced() && InputUtil.isKeyPressed(client.getWindow().getHandle(), code); return shouldShow || instance.isCreative(); } @@ -37,10 +37,10 @@ protected boolean forceVisible(TooltipType instance) { @Inject(method = "getTooltip", at = @At("RETURN")) protected void injectEditTooltipmethod(Item.TooltipContext context, PlayerEntity player, TooltipType type, CallbackInfoReturnable> info) { + ItemStack itemStack = (ItemStack) (Object) this; + // If the advanced tooltips are on and the shift key is pressed the method is run. if (shouldShow && !isEmpty()) { - ItemStack itemStack = (ItemStack) (Object) this; - /* Before calling the main method from the `tooltip changer` class. We check if the item even has custom NBT. @@ -48,7 +48,11 @@ protected void injectEditTooltipmethod(Item.TooltipContext context, PlayerEntity if (!itemStack.getComponentChanges().isEmpty()) { TooltipChanger.Main(itemStack, info.getReturnValue()); } + } + int code = InputUtil.fromTranslationKey(NBTtooltipsMod.COPY_NBT_KEYBIND.getBoundKeyTranslationKey()).getCode(); + if (InputUtil.isKeyPressed(client.getWindow().getHandle(), code)) { + client.keyboard.setClipboard(TooltipChanger.getNbtElement(itemStack).asString()); } } } \ No newline at end of file diff --git a/src/main/java/net/mision_thi/nbttooltips/tooltips/TooltipChanger.java b/src/main/java/net/mision_thi/nbttooltips/tooltips/TooltipChanger.java index c76e3a4..60628e7 100644 --- a/src/main/java/net/mision_thi/nbttooltips/tooltips/TooltipChanger.java +++ b/src/main/java/net/mision_thi/nbttooltips/tooltips/TooltipChanger.java @@ -58,10 +58,14 @@ public static void Main(ItemStack itemStack, List list) { // build the nbt text NbtTextBuilder builder = new NbtTextBuilder(); builder.append(Text.translatable("item.nbt_tags.nbttooltips").formatted(Formatting.DARK_GRAY)); - builder.buildElement(ComponentChanges.CODEC.encodeStart(NBT_OPS_UNLIMITED, itemStack.getComponentChanges()).getOrThrow()); + builder.buildElement(getNbtElement(itemStack)); list.addAll(index, builder.build()); } + public static NbtElement getNbtElement(ItemStack itemStack) { + return ComponentChanges.CODEC.encodeStart(NBT_OPS_UNLIMITED, itemStack.getComponentChanges()).getOrThrow(); + } + /** * @author aMelonRind */ diff --git a/src/main/resources/assets/nbttooltips/lang/en_us.json b/src/main/resources/assets/nbttooltips/lang/en_us.json index 74e43ee..19dc525 100644 --- a/src/main/resources/assets/nbttooltips/lang/en_us.json +++ b/src/main/resources/assets/nbttooltips/lang/en_us.json @@ -1,4 +1,5 @@ { - "nbttooltips.keybind": "Show NBT", + "nbttooltips.keybind.show": "Show NBT", + "nbttooltips.keybind.copy": "Copy NBT", "item.nbt_tags.nbttooltips": "NBT: " } \ No newline at end of file