aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/gui
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-01-01 13:55:45 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-01-01 13:55:45 +0800
commitf6b8a2d4604f9cda66546598629b2a13c92b1cbe (patch)
treedf687173b054a83afb9d1c5488c5cb5e09c7629e /src/main/java/me/shedaniel/gui
parent430ff25e1bbfce2fe90e69044439cc3ea179dbf1 (diff)
downloadRoughlyEnoughItems-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.java74
-rwxr-xr-xsrc/main/java/me/shedaniel/gui/GuiItemList.java8
-rwxr-xr-xsrc/main/java/me/shedaniel/gui/REIRenderHelper.java4
-rwxr-xr-xsrc/main/java/me/shedaniel/gui/RecipeGui.java1
-rw-r--r--src/main/java/me/shedaniel/gui/widget/KeyBindButton.java59
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;
+ }
+
+}