diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-01-01 13:55:45 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-01-01 13:55:45 +0800 |
| commit | f6b8a2d4604f9cda66546598629b2a13c92b1cbe (patch) | |
| tree | df687173b054a83afb9d1c5488c5cb5e09c7629e /src/main/java/me/shedaniel/gui | |
| parent | 430ff25e1bbfce2fe90e69044439cc3ea179dbf1 (diff) | |
| download | RoughlyEnoughItems-f6b8a2d4604f9cda66546598629b2a13c92b1cbe.tar.gz RoughlyEnoughItems-f6b8a2d4604f9cda66546598629b2a13c92b1cbe.tar.bz2 RoughlyEnoughItems-f6b8a2d4604f9cda66546598629b2a13c92b1cbe.zip | |
1.2 Custom Keybinds
Diffstat (limited to 'src/main/java/me/shedaniel/gui')
| -rw-r--r-- | src/main/java/me/shedaniel/gui/ConfigGui.java | 74 | ||||
| -rwxr-xr-x | src/main/java/me/shedaniel/gui/GuiItemList.java | 8 | ||||
| -rwxr-xr-x | src/main/java/me/shedaniel/gui/REIRenderHelper.java | 4 | ||||
| -rwxr-xr-x | src/main/java/me/shedaniel/gui/RecipeGui.java | 1 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/gui/widget/KeyBindButton.java | 59 |
5 files changed, 144 insertions, 2 deletions
diff --git a/src/main/java/me/shedaniel/gui/ConfigGui.java b/src/main/java/me/shedaniel/gui/ConfigGui.java new file mode 100644 index 000000000..31a1c3feb --- /dev/null +++ b/src/main/java/me/shedaniel/gui/ConfigGui.java @@ -0,0 +1,74 @@ +package me.shedaniel.gui; + +import me.shedaniel.ClientListener; +import me.shedaniel.Core; +import me.shedaniel.gui.widget.KeyBindButton; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.resource.language.I18n; + +import java.io.IOException; + +public class ConfigGui extends Gui { + + private Gui parent; + + public ConfigGui(Gui parent) { + this.parent = parent; + } + + @Override + protected void onInitialized() { + addButton(new KeyBindButton(997, parent.width / 2 - 20, 30, 80, 20, Core.config.recipeKeyBind, key -> { + Core.config.recipeKeyBind = key; + ClientListener.recipeKeybind.setKey(key); + try { + Core.saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + } + })); + addButton(new KeyBindButton(997, parent.width / 2 - 20, 60, 80, 20, Core.config.usageKeyBind, key -> { + Core.config.usageKeyBind = key; + ClientListener.useKeybind.setKey(key); + try { + Core.saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + } + })); + addButton(new KeyBindButton(997, parent.width / 2 - 20, 90, 80, 20, Core.config.hideKeyBind, key -> { + Core.config.hideKeyBind = key; + ClientListener.hideKeybind.setKey(key); + try { + Core.saveConfig(); + } catch (IOException e) { + e.printStackTrace(); + } + })); + } + + @Override + public void draw(int mouseX, int mouseY, float partialTicks) { + drawBackground(); + super.draw(mouseX, mouseY, partialTicks); + String text = I18n.translate("key.rei.recipe") + ": "; + drawString(MinecraftClient.getInstance().fontRenderer, text, parent.width / 2 - 40 - MinecraftClient.getInstance().fontRenderer.getStringWidth(text), 30 + 6, -1); + text = I18n.translate("key.rei.use") + ": "; + drawString(MinecraftClient.getInstance().fontRenderer, text, parent.width / 2 - 40 - MinecraftClient.getInstance().fontRenderer.getStringWidth(text), 60 + 6, -1); + text = I18n.translate("key.rei.hide") + ": "; + drawString(MinecraftClient.getInstance().fontRenderer, text, parent.width / 2 - 40 - MinecraftClient.getInstance().fontRenderer.getStringWidth(text), 90 + 6, -1); + } + + @Override + public boolean keyPressed(int p_keyPressed_1_, int p_keyPressed_2_, int p_keyPressed_3_) { + if (p_keyPressed_1_ == 256 && this.canClose()) { + this.close(); + if (parent != null) + MinecraftClient.getInstance().openGui(parent); + return true; + } else { + return super.keyPressed(p_keyPressed_1_, p_keyPressed_2_, p_keyPressed_3_); + } + } +} diff --git a/src/main/java/me/shedaniel/gui/GuiItemList.java b/src/main/java/me/shedaniel/gui/GuiItemList.java index b4f913c7c..14ec8c5b3 100755 --- a/src/main/java/me/shedaniel/gui/GuiItemList.java +++ b/src/main/java/me/shedaniel/gui/GuiItemList.java @@ -11,6 +11,7 @@ import me.shedaniel.listenerdefinitions.IMixinContainerGui; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.ContainerGui; import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.Window; import net.minecraft.item.ItemStack; import net.minecraft.text.TextComponent; @@ -37,6 +38,7 @@ public class GuiItemList extends Drawable { Button buttonLeft; Button buttonRight; Button buttonCheating; + Button buttonConfig; TextBox searchBox; private ArrayList<ItemStack> view; private Control lastHovered; @@ -102,6 +104,12 @@ public class GuiItemList extends Drawable { controls.add(searchBox); buttonCheating = new Button(5, 5, 45, 20, getCheatModeText()); buttonCheating.onClick = this::cheatClicked; + buttonConfig = new Button(5, 28, 45, 20, I18n.translate("text.rei.config")); + buttonConfig.onClick = i -> { + MinecraftClient.getInstance().openGui(new ConfigGui(overlayedGui)); + return true; + }; + controls.add(buttonConfig); controls.add(buttonCheating); calculateSlots(); updateView(); diff --git a/src/main/java/me/shedaniel/gui/REIRenderHelper.java b/src/main/java/me/shedaniel/gui/REIRenderHelper.java index f706a4c56..a60ca45e4 100755 --- a/src/main/java/me/shedaniel/gui/REIRenderHelper.java +++ b/src/main/java/me/shedaniel/gui/REIRenderHelper.java @@ -1,11 +1,11 @@ package me.shedaniel.gui; import com.mojang.blaze3d.platform.GlStateManager; +import me.shedaniel.ClientListener; import me.shedaniel.gui.widget.Control; import me.shedaniel.gui.widget.IFocusable; import me.shedaniel.gui.widget.REISlot; import me.shedaniel.impl.REIRecipeManager; -import me.shedaniel.library.KeyBindManager; import me.shedaniel.listenerdefinitions.IMixinContainerGui; import net.fabricmc.loader.FabricLoader; import net.minecraft.client.MinecraftClient; @@ -154,7 +154,7 @@ public class REIRenderHelper { handled = true; } if (!handled) { - return KeyBindManager.processGuiKeybinds(typedChar); + return ClientListener.processGuiKeybinds(typedChar); } return handled; } diff --git a/src/main/java/me/shedaniel/gui/RecipeGui.java b/src/main/java/me/shedaniel/gui/RecipeGui.java index d4f3db8f0..9ca41e958 100755 --- a/src/main/java/me/shedaniel/gui/RecipeGui.java +++ b/src/main/java/me/shedaniel/gui/RecipeGui.java @@ -73,6 +73,7 @@ public class RecipeGui extends ContainerGui { @Override public void draw(int mouseX, int mouseY, float partialTicks) { + drawBackground(); super.draw(mouseX, mouseY, partialTicks); int y = (int) ((mainWindow.getScaledHeight() / 2 - this.guiHeight / 2)); drawStringCentered(this.fontRenderer, selectedCategory.getDisplayName(), left + guiWidth / 2, y + 11, -1); diff --git a/src/main/java/me/shedaniel/gui/widget/KeyBindButton.java b/src/main/java/me/shedaniel/gui/widget/KeyBindButton.java new file mode 100644 index 000000000..b3d2bde3c --- /dev/null +++ b/src/main/java/me/shedaniel/gui/widget/KeyBindButton.java @@ -0,0 +1,59 @@ +package me.shedaniel.gui.widget; + +import me.shedaniel.ClientListener; +import me.shedaniel.library.KeyBindFunction; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.resource.language.I18n; +import net.minecraft.text.TextFormat; + +import java.awt.event.KeyEvent; +import java.util.function.Consumer; + +public class KeyBindButton extends ButtonWidget { + + private int currentKey; + private Consumer<Integer> onEditKeyBind; + private boolean editMode; + + public KeyBindButton(int buttonId, int x, int y, int widthIn, int heightIn, int currentKey, Consumer<Integer> onEditKeyBind) { + super(buttonId, x, y, widthIn, heightIn, ""); + this.currentKey = currentKey; + this.onEditKeyBind = onEditKeyBind; + } + + @Override + public boolean charTyped(char p_charTyped_1_, int p_charTyped_2_) { + if (editMode) { + currentKey = KeyEvent.getExtendedKeyCodeForChar(p_charTyped_1_); + onEditKeyBind.accept(currentKey); + editMode = false; + return true; + } + return false; + } + + @Override + public void draw(int mouseX, int mouseY, float partialTicks) { + this.text = editMode ? I18n.translate("text.rei.listeningkey") : KeyEvent.getKeyText(currentKey); + if (!editMode && ClientListener.keyBinds.stream().map(KeyBindFunction::getKey).filter(integer -> integer == currentKey).count() > 1) + this.text = TextFormat.RED + this.text; + super.draw(mouseX, mouseY, partialTicks); + } + + @Override + public void setHasFocus(boolean boolean_1) { + if (boolean_1 == false) + editMode = boolean_1; + } + + @Override + public boolean hasFocus() { + return true; + } + + @Override + public void onPressed(double double_1, double double_2) { + editMode = !editMode; + } + +} |
