From 935d974bec8337bc578cd972d3a5516dc9aac4ec Mon Sep 17 00:00:00 2001 From: Michael Hillcox Date: Mon, 15 Feb 2021 16:32:16 +0000 Subject: [PATCH] feat: improved scrolling list, add screen input improvements, close on open gui key being typed again --- gradle.properties | 2 +- .../mikey/xray/gui/GuiSelectionScreen.java | 20 ++++++++++++++----- .../mikey/xray/gui/manage/GuiAddBlock.java | 2 +- .../mikey/xray/gui/manage/GuiBlockList.java | 6 +++--- .../pro/mikey/xray/gui/manage/GuiEdit.java | 1 + .../pro/mikey/xray/gui/utils/GuiBase.java | 4 ++++ .../mikey/xray/keybinding/KeyBindings.java | 11 ++++++---- 7 files changed, 32 insertions(+), 14 deletions(-) diff --git a/gradle.properties b/gradle.properties index a1d705d..4e36e4a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ # This is required to provide enough memory for the Minecraft decompilation process. org.gradle.jvmargs=-Xmx6G -mod_version=2.6.1 +mod_version=2.7.0 game_version=1.16.5 # Forge diff --git a/src/main/java/pro/mikey/xray/gui/GuiSelectionScreen.java b/src/main/java/pro/mikey/xray/gui/GuiSelectionScreen.java index 3a19de8..90fd4a2 100644 --- a/src/main/java/pro/mikey/xray/gui/GuiSelectionScreen.java +++ b/src/main/java/pro/mikey/xray/gui/GuiSelectionScreen.java @@ -12,6 +12,7 @@ import pro.mikey.xray.gui.utils.GuiBase; import pro.mikey.xray.gui.utils.ScrollingList; import pro.mikey.xray.gui.utils.SupportButton; +import pro.mikey.xray.keybinding.KeyBindings; import pro.mikey.xray.store.BlockStore; import pro.mikey.xray.utils.BlockData; import pro.mikey.xray.xray.Controller; @@ -152,6 +153,15 @@ public void init() { })); } + @Override + public boolean keyPressed(int keyCode, int scanCode, int modifiers) { + if (!search.isFocused() && keyCode == KeyBindings.toggleGui.getKeyBinding().getKey().getKeyCode()) { + this.closeScreen(); + return true; + } + return super.keyPressed(keyCode, scanCode, modifiers); + } + private void updateSearch() { if (lastSearch.equals(search.getText())) return; @@ -267,11 +277,11 @@ public void render(MatrixStack stack, int entryIdx, int top, int left, int entry FontRenderer font = Minecraft.getInstance().fontRenderer; - font.drawString(stack, blockData.getEntryName(), left + 40, top + 7, 0xFFFFFF); - font.drawString(stack, blockData.isDrawing() ? "Enabled" : "Disabled", left + 40, top + 17, blockData.isDrawing() ? Color.GREEN.getRGB() : Color.RED.getRGB()); + font.drawString(stack, blockData.getEntryName(), left + 35, top + 7, 0xFFFFFF); + font.drawString(stack, blockData.isDrawing() ? "Enabled" : "Disabled", left + 35, top + 17, blockData.isDrawing() ? Color.GREEN.getRGB() : Color.RED.getRGB()); RenderHelper.enableStandardItemLighting(); - Minecraft.getInstance().getItemRenderer().renderItemAndEffectIntoGUI(blockData.getItemStack(), left + 15, top + 7); + Minecraft.getInstance().getItemRenderer().renderItemAndEffectIntoGUI(blockData.getItemStack(), left + 8, top + 7); RenderHelper.disableStandardItemLighting(); if (mouseX > left && mouseX < (left + entryWidth) && mouseY > top && mouseY < (top + entryHeight) && mouseY < (this.parent.getTop() + this.parent.getHeight()) && mouseY > this.parent.getTop()) { this.parent.parent.renderTooltip( @@ -286,8 +296,8 @@ public void render(MatrixStack stack, int entryIdx, int top, int left, int entry RenderSystem.enableBlend(); RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); Minecraft.getInstance().getRenderManager().textureManager.bindTexture(GuiSelectionScreen.CIRCLE); - GuiBase.drawTexturedQuadFit((left + entryWidth) - 37, top + (entryHeight / 2f) - 9, 14, 14, new int[]{255, 255, 255}, 50f); - GuiBase.drawTexturedQuadFit((left + entryWidth) - 35, top + (entryHeight / 2f) - 7, 10, 10, blockData.getColor()); + GuiBase.drawTexturedQuadFit(((left + entryWidth)) - 34, top + (entryHeight / 2f) - 9, 14, 14, blockData.getColor(), 50f); + GuiBase.drawTexturedQuadFit(((left + entryWidth)) - 32, top + (entryHeight / 2f) - 7, 10, 10, blockData.getColor()); RenderSystem.disableAlphaTest(); RenderSystem.disableBlend(); } diff --git a/src/main/java/pro/mikey/xray/gui/manage/GuiAddBlock.java b/src/main/java/pro/mikey/xray/gui/manage/GuiAddBlock.java index 2887ea9..60ccae7 100644 --- a/src/main/java/pro/mikey/xray/gui/manage/GuiAddBlock.java +++ b/src/main/java/pro/mikey/xray/gui/manage/GuiAddBlock.java @@ -132,7 +132,7 @@ public boolean mouseClicked(double x, double y, int mouse) { if (!oreName.isFocused() && oreNameCleared && Objects.equals(oreName.getText(), "")) { oreNameCleared = false; - oreName.setText(I18n.format("xray.input.gui")); + oreName.setText(this.selectBlock.getTranslatedName().getString()); } return super.mouseClicked(x, y, mouse); diff --git a/src/main/java/pro/mikey/xray/gui/manage/GuiBlockList.java b/src/main/java/pro/mikey/xray/gui/manage/GuiBlockList.java index 00c68f1..5b230b5 100644 --- a/src/main/java/pro/mikey/xray/gui/manage/GuiBlockList.java +++ b/src/main/java/pro/mikey/xray/gui/manage/GuiBlockList.java @@ -133,12 +133,12 @@ public void render(MatrixStack stack, int entryIdx, int top, int left, int entry FontRenderer font = this.parent.minecraft.fontRenderer; ResourceLocation resource = this.block.getItemStack().getItem().getRegistryName(); - font.drawString(stack,this.block.getItemStack().getItem().getName().getString(), left + 40, top + 7, Color.WHITE.getRGB()); - font.drawString(stack, resource != null ? resource.getNamespace() : "", left + 40, top + 17, Color.WHITE.getRGB()); + font.drawString(stack,this.block.getItemStack().getItem().getName().getString(), left + 35, top + 7, Color.WHITE.getRGB()); + font.drawString(stack, resource != null ? resource.getNamespace() : "", left + 35, top + 17, Color.WHITE.getRGB()); // @mcp: func_240652_a_ = unknown... Code recommendation RenderHelper.enableStandardItemLighting(); - this.parent.minecraft.getItemRenderer().renderItemAndEffectIntoGUI(this.block.getItemStack(), left + 15, top + 7); + this.parent.minecraft.getItemRenderer().renderItemAndEffectIntoGUI(this.block.getItemStack(), left + 8, top + 7); RenderHelper.disableStandardItemLighting(); } diff --git a/src/main/java/pro/mikey/xray/gui/manage/GuiEdit.java b/src/main/java/pro/mikey/xray/gui/manage/GuiEdit.java index 739c73b..b9186f1 100644 --- a/src/main/java/pro/mikey/xray/gui/manage/GuiEdit.java +++ b/src/main/java/pro/mikey/xray/gui/manage/GuiEdit.java @@ -62,6 +62,7 @@ public void init() { ClientController.blockStore.write(new ArrayList<>(Controller.getBlockStore().getStore().values())); this.closeScreen(); + getMinecraft().displayGuiScreen(new GuiSelectionScreen()); })); addButton(redSlider = new Slider(getWidth() / 2 - 138, getHeight() / 2 + 7, 202, 20, new TranslationTextComponent("xray.color.red"), StringTextComponent.EMPTY, 0, 255, (block.getColor() >> 16 & 0xff), false, true, (e) -> {}, (e) -> {})); diff --git a/src/main/java/pro/mikey/xray/gui/utils/GuiBase.java b/src/main/java/pro/mikey/xray/gui/utils/GuiBase.java index 1437610..6e29b72 100644 --- a/src/main/java/pro/mikey/xray/gui/utils/GuiBase.java +++ b/src/main/java/pro/mikey/xray/gui/utils/GuiBase.java @@ -72,6 +72,10 @@ public static void drawTexturedQuadFit(double x, double y, double width, double drawTexturedQuadFit(x, y, width, height, new int[]{color >> 16 & 0xff, color >> 8 & 0xff,color & 0xff }, 255f); } + public static void drawTexturedQuadFit(double x, double y, double width, double height, int color, float alpha) { + drawTexturedQuadFit(x, y, width, height, new int[]{color >> 16 & 0xff, color >> 8 & 0xff,color & 0xff }, alpha); + } + @Override public void render(MatrixStack stack, int x, int y, float partialTicks) { renderBackground(stack); diff --git a/src/main/java/pro/mikey/xray/keybinding/KeyBindings.java b/src/main/java/pro/mikey/xray/keybinding/KeyBindings.java index a43a7fd..1d5fbb1 100644 --- a/src/main/java/pro/mikey/xray/keybinding/KeyBindings.java +++ b/src/main/java/pro/mikey/xray/keybinding/KeyBindings.java @@ -17,9 +17,12 @@ public class KeyBindings { private static final String CATEGORY = "X-Ray"; private static List keyBindings = new ArrayList<>(); + public static KeyActionable toggleXRay = new KeyActionable(GLFW.GLFW_KEY_BACKSLASH, I18n.format("xray.config.toggle"), Controller::toggleXRay); + public static KeyActionable toggleGui = new KeyActionable(GLFW.GLFW_KEY_G, I18n.format("xray.config.open"), () -> Minecraft.getInstance().displayGuiScreen( new GuiSelectionScreen() )); + public static void setup() { - keyBindings.add(new KeyActionable(GLFW.GLFW_KEY_BACKSLASH, I18n.format("xray.config.toggle"), Controller::toggleXRay)); - keyBindings.add(new KeyActionable(GLFW.GLFW_KEY_G, I18n.format("xray.config.open"), () -> Minecraft.getInstance().displayGuiScreen( new GuiSelectionScreen() ))); + keyBindings.add(toggleXRay); + keyBindings.add(toggleGui); keyBindings.forEach(e -> ClientRegistry.registerKeyBinding(e.getKeyBinding())); } @@ -37,7 +40,7 @@ public static void eventInput(TickEvent event) }); } - private static final class KeyActionable { + public static final class KeyActionable { private KeyBinding keyBinding; private Runnable onPress; @@ -46,7 +49,7 @@ private static final class KeyActionable { this.keyBinding = new KeyBinding(description, key, CATEGORY); } - KeyBinding getKeyBinding() { + public KeyBinding getKeyBinding() { return keyBinding; } }