diff --git a/common/src/main/java/cx/rain/mc/nbtedit/gui/NBTEditGui.java b/common/src/main/java/cx/rain/mc/nbtedit/gui/NBTEditGui.java index b59b01f..60e0777 100644 --- a/common/src/main/java/cx/rain/mc/nbtedit/gui/NBTEditGui.java +++ b/common/src/main/java/cx/rain/mc/nbtedit/gui/NBTEditGui.java @@ -20,6 +20,7 @@ import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.resources.sounds.SimpleSoundInstance; +import net.minecraft.nbt.CollectionTag; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; @@ -304,11 +305,22 @@ private void copySelected() { } setFocused(focused); + } else { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.VILLAGER_NO, 1)); } } private void paste() { + var focused = getFocused(); + if (focused != null) { + var tag = focused.getTag(); + if (!(tag instanceof CompoundTag) + && !(tag instanceof CollectionTag)) { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.VILLAGER_NO, 1)); + return; + } + var node = NBTEdit.getInstance().getClient().getClipboard(); if (node != null) { focused.setShowChildren(true); @@ -328,6 +340,8 @@ private void paste() { setFocused(node); update(true); } + } else { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.VILLAGER_NO, 1)); } } @@ -591,28 +605,44 @@ public boolean onKeyPress(int keyCode, int scanCode, int modifiers) { } if (keyCode == GLFW.GLFW_KEY_C && modifiers == GLFW.GLFW_MOD_CONTROL) { - copySelected(); - updateButtons(); - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1)); + if (getFocused() != null) { + copySelected(); + updateButtons(); + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1)); + } else { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.VILLAGER_NO, 1)); + } } if (keyCode == GLFW.GLFW_KEY_V && modifiers == GLFW.GLFW_MOD_CONTROL) { - paste(); - updateButtons(); - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1)); + if (getFocused() != null) { + paste(); + updateButtons(); + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1)); + } else { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.VILLAGER_NO, 1)); + } } if (keyCode == GLFW.GLFW_KEY_X && modifiers == GLFW.GLFW_MOD_CONTROL) { - copySelected(); - deleteSelected(); - updateButtons(); - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1)); + if (getFocused() != null) { + copySelected(); + deleteSelected(); + updateButtons(); + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1)); + } else { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.VILLAGER_NO, 1)); + } } if (keyCode == GLFW.GLFW_KEY_D && modifiers == GLFW.GLFW_MOD_CONTROL) { - deleteSelected(); - updateButtons(); - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1)); + if (getFocused() != null) { + deleteSelected(); + updateButtons(); + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1)); + } else { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.VILLAGER_NO, 1)); + } } return false; diff --git a/common/src/main/java/cx/rain/mc/nbtedit/gui/screen/NBTEditScreen.java b/common/src/main/java/cx/rain/mc/nbtedit/gui/screen/NBTEditScreen.java index 8aa00da..1502d68 100644 --- a/common/src/main/java/cx/rain/mc/nbtedit/gui/screen/NBTEditScreen.java +++ b/common/src/main/java/cx/rain/mc/nbtedit/gui/screen/NBTEditScreen.java @@ -1,6 +1,5 @@ package cx.rain.mc.nbtedit.gui.screen; -import com.mojang.blaze3d.vertex.PoseStack; import cx.rain.mc.nbtedit.NBTEdit; import cx.rain.mc.nbtedit.gui.NBTEditGui; import cx.rain.mc.nbtedit.nbt.NBTTree; diff --git a/common/src/main/java/cx/rain/mc/nbtedit/nbt/NBTTree.java b/common/src/main/java/cx/rain/mc/nbtedit/nbt/NBTTree.java index fefa740..0d5ffad 100644 --- a/common/src/main/java/cx/rain/mc/nbtedit/nbt/NBTTree.java +++ b/common/src/main/java/cx/rain/mc/nbtedit/nbt/NBTTree.java @@ -174,7 +174,7 @@ public void setShowChildren(boolean value) { public static final String TAG_NAME = "name"; public static final String TAG_TYPE = "type"; - public static final String TAG_LIST_TYPE = "type"; + public static final String TAG_LIST_TYPE = "elementType"; public static final String TAG_VALUE = "value"; public static Node fromString(String data) { diff --git a/gradle.properties b/gradle.properties index 2f976c4..8462b2d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,6 +3,7 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false +fabric.loom.multiProjectOptimisation=true enabled_platforms=fabric,forge archives_base_name=nbtedit