aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-01-12 00:45:21 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-01-12 00:45:21 +0800
commit1ac6e0efb3ef837634e23b897ec9dcd826357462 (patch)
treed852845a9a2320b49ece225ce60e23b1fdd167e0 /src/main/java/me/shedaniel
parentc0dd3fc336fdd0fe3dd9a705c2e8256f72de4869 (diff)
downloadRoughlyEnoughItems-2.0.0.31.tar.gz
RoughlyEnoughItems-2.0.0.31.tar.bz2
RoughlyEnoughItems-2.0.0.31.zip
KeyBindsv2.0.0.31
Diffstat (limited to 'src/main/java/me/shedaniel')
-rw-r--r--src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java3
-rw-r--r--src/main/java/me/shedaniel/rei/client/ClientHelper.java18
-rw-r--r--src/main/java/me/shedaniel/rei/client/ConfigManager.java1
-rw-r--r--src/main/java/me/shedaniel/rei/client/GuiHelper.java9
-rw-r--r--src/main/java/me/shedaniel/rei/client/REIConfig.java4
-rw-r--r--src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java33
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java2
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java13
-rw-r--r--src/main/java/me/shedaniel/rei/listeners/IMixinContainerGui.java3
-rw-r--r--src/main/java/me/shedaniel/rei/mixin/MixinContainerGui.java8
10 files changed, 82 insertions, 12 deletions
diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
index a3618898d..157d8bd26 100644
--- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
+++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
@@ -90,7 +90,8 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer, ModInitiali
ItemStack stack = packetByteBuf.readItemStack();
if (player.inventory.insertStack(stack.copy()))
player.sendChatMessage(new TranslatableTextComponent("text.rei.cheat_items", stack.getDisplayName().getFormattedText(), stack.getAmount(), player.getEntityName()), ChatMessageType.SYSTEM);
- else player.sendChatMessage(new TranslatableTextComponent("text.rei.failed_cheat_items"), ChatMessageType.SYSTEM);
+ else
+ player.sendChatMessage(new TranslatableTextComponent("text.rei.failed_cheat_items"), ChatMessageType.SYSTEM);
});
}
diff --git a/src/main/java/me/shedaniel/rei/client/ClientHelper.java b/src/main/java/me/shedaniel/rei/client/ClientHelper.java
index ea7ce4d24..306ddaa6b 100644
--- a/src/main/java/me/shedaniel/rei/client/ClientHelper.java
+++ b/src/main/java/me/shedaniel/rei/client/ClientHelper.java
@@ -10,9 +10,13 @@ import me.shedaniel.rei.gui.widget.RecipeViewingWidget;
import me.shedaniel.rei.listeners.ClientLoaded;
import me.shedaniel.rei.listeners.IMixinContainerGui;
import net.fabricmc.api.ClientModInitializer;
+import net.fabricmc.fabric.api.client.keybinding.FabricKeyBinding;
+import net.fabricmc.fabric.impl.client.keybinding.KeyBindingRegistryImpl;
import net.fabricmc.loader.FabricLoader;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.Mouse;
+import net.minecraft.client.resource.language.I18n;
+import net.minecraft.client.util.InputUtil;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.item.Item;
@@ -24,12 +28,17 @@ import net.minecraft.util.PacketByteBuf;
import net.minecraft.util.registry.Registry;
import java.awt.*;
+import java.awt.event.KeyEvent;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ClientHelper implements ClientLoaded, ClientModInitializer {
+ private static final Identifier RECIPE_KEYBIND = new Identifier("roughlyenoughitems", "recipe_keybind");
+ private static final Identifier USAGE_KEYBIND = new Identifier("roughlyenoughitems", "usage_keybind");
+ private static final Identifier HIDE_KEYBIND = new Identifier("roughlyenoughitems", "hide_keybind");
+ public static FabricKeyBinding RECIPE, USAGE, HIDE;
private static List<ItemStack> itemList;
private static boolean cheating;
@@ -134,6 +143,15 @@ public class ClientHelper implements ClientLoaded, ClientModInitializer {
@Override
public void onInitializeClient() {
this.cheating = false;
+ registerFabricKeyBinds();
+ }
+
+ private void registerFabricKeyBinds() {
+ String category = "key.rei.category";
+ KeyBindingRegistryImpl.INSTANCE.addCategory(category);
+ KeyBindingRegistryImpl.INSTANCE.register(RECIPE = FabricKeyBinding.Builder.create(RECIPE_KEYBIND, InputUtil.Type.KEY_KEYBOARD, 82, category).build());
+ KeyBindingRegistryImpl.INSTANCE.register(USAGE = FabricKeyBinding.Builder.create(USAGE_KEYBIND, InputUtil.Type.KEY_KEYBOARD, 85, category).build());
+ KeyBindingRegistryImpl.INSTANCE.register(HIDE = FabricKeyBinding.Builder.create(HIDE_KEYBIND, InputUtil.Type.KEY_KEYBOARD, 79, category).build());
}
}
diff --git a/src/main/java/me/shedaniel/rei/client/ConfigManager.java b/src/main/java/me/shedaniel/rei/client/ConfigManager.java
index a2d4d9890..3ff143f44 100644
--- a/src/main/java/me/shedaniel/rei/client/ConfigManager.java
+++ b/src/main/java/me/shedaniel/rei/client/ConfigManager.java
@@ -2,7 +2,6 @@ package me.shedaniel.rei.client;
import me.shedaniel.rei.RoughlyEnoughItemsCore;
import net.fabricmc.loader.FabricLoader;
-import org.apache.logging.log4j.core.Core;
import java.io.File;
import java.io.FileWriter;
diff --git a/src/main/java/me/shedaniel/rei/client/GuiHelper.java b/src/main/java/me/shedaniel/rei/client/GuiHelper.java
index 09d05ec2c..21ff9c058 100644
--- a/src/main/java/me/shedaniel/rei/client/GuiHelper.java
+++ b/src/main/java/me/shedaniel/rei/client/GuiHelper.java
@@ -6,9 +6,18 @@ import net.minecraft.client.gui.ContainerGui;
public class GuiHelper {
+ private static boolean overlayVisible = true;
private static ContainerGuiOverlay overlay;
public static TextFieldWidget searchField;
+ public static boolean isOverlayVisible() {
+ return overlayVisible;
+ }
+
+ public static void toggleOverlayVisible() {
+ overlayVisible = !overlayVisible;
+ }
+
public static ContainerGuiOverlay getOverlay(ContainerGui lastGui) {
if (overlay == null) {
overlay = new ContainerGuiOverlay(lastGui);
diff --git a/src/main/java/me/shedaniel/rei/client/REIConfig.java b/src/main/java/me/shedaniel/rei/client/REIConfig.java
index dfc961f28..2f4060a9f 100644
--- a/src/main/java/me/shedaniel/rei/client/REIConfig.java
+++ b/src/main/java/me/shedaniel/rei/client/REIConfig.java
@@ -11,10 +11,6 @@ public class REIConfig {
.setPrettyPrinting()
.create();
- public int recipeKeyBind = KeyEvent.VK_R;
- public int usageKeyBind = KeyEvent.VK_U;
- public int hideKeyBind = KeyEvent.VK_O;
- public boolean centreSearchBox = false;
public REIItemListOrdering itemListOrdering = REIItemListOrdering.REGISTRY;
public boolean isAscending = true;
public boolean enableCraftableOnlyButton = true;
diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java
index 687f43630..a8000d8d5 100644
--- a/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java
+++ b/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java
@@ -12,6 +12,7 @@ import net.minecraft.client.gui.GuiEventListener;
import net.minecraft.client.render.GuiLighting;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.client.util.Window;
+import net.minecraft.item.ItemStack;
import net.minecraft.util.math.MathHelper;
import java.awt.*;
@@ -22,12 +23,12 @@ public class ContainerGuiOverlay extends Gui {
public static String searchTerm = "";
private static int page = 0;
+ private static ItemListOverlay itemListOverlay;
private final List<IWidget> widgets;
private final List<QueuedTooltip> queuedTooltips;
private Rectangle rectangle;
private IMixinContainerGui containerGui;
private Window window;
- private static ItemListOverlay itemListOverlay;
private ButtonWidget buttonLeft, buttonRight;
public ContainerGuiOverlay(ContainerGui containerGui) {
@@ -147,6 +148,8 @@ public class ContainerGuiOverlay extends Gui {
@Override
public void draw(int int_1, int int_2, float float_1) {
+ if (!GuiHelper.isOverlayVisible())
+ return;
widgets.forEach(widget -> {
GuiLighting.disable();
widget.draw(int_1, int_2, float_1);
@@ -193,6 +196,34 @@ public class ContainerGuiOverlay extends Gui {
for(GuiEventListener listener : listeners)
if (listener.keyPressed(int_1, int_2, int_3))
return true;
+ Point point = ClientHelper.getMouseLocation();
+ ItemStack itemStack = null;
+ for(IWidget widget : itemListOverlay.getListeners())
+ if (widget instanceof ItemSlotWidget && ((ItemSlotWidget) widget).isHighlighted(point.x, point.y)) {
+ itemStack = ((ItemSlotWidget) widget).getCurrentStack();
+ break;
+ }
+ if (itemStack == null && MinecraftClient.getInstance().currentGui instanceof RecipeViewingWidget) {
+ RecipeViewingWidget recipeViewingWidget = (RecipeViewingWidget) MinecraftClient.getInstance().currentGui;
+ for(GuiEventListener entry : recipeViewingWidget.getEntries())
+ if (entry instanceof ItemSlotWidget && ((ItemSlotWidget) entry).isHighlighted(point.x, point.y)) {
+ itemStack = ((ItemSlotWidget) entry).getCurrentStack();
+ break;
+ }
+ }
+ if (itemStack == null && MinecraftClient.getInstance().currentGui instanceof ContainerGui)
+ if (containerGui.getHoveredSlot() != null)
+ itemStack = containerGui.getHoveredSlot().getStack();
+ if (itemStack != null && !itemStack.isEmpty()) {
+ if (ClientHelper.RECIPE.matchesKey(int_1, int_2))
+ return ClientHelper.executeRecipeKeyBind(this, itemStack, containerGui);
+ else if (ClientHelper.USAGE.matchesKey(int_1, int_2))
+ return ClientHelper.executeUsageKeyBind(this, itemStack, containerGui);
+ }
+ if (ClientHelper.HIDE.matchesKey(int_1, int_2)) {
+ GuiHelper.toggleOverlayVisible();
+ return true;
+ }
return false;
}
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
index f87c5a291..bf3897c47 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
@@ -100,7 +100,7 @@ public class ItemSlotWidget extends Drawable implements HighlightableWidget {
return "";
}
- protected ItemStack getCurrentStack() {
+ public ItemStack getCurrentStack() {
if (itemList.size() == 0)
return new ItemStack(Items.AIR);
return itemList.get(MathHelper.floor((System.currentTimeMillis() / 500 % (double) itemList.size()) / 1f));
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java
index 90bde332d..365ed3cdd 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java
@@ -6,6 +6,7 @@ import me.shedaniel.rei.api.IRecipeCategory;
import me.shedaniel.rei.api.IRecipeDisplay;
import me.shedaniel.rei.client.ClientHelper;
import me.shedaniel.rei.client.GuiHelper;
+import me.shedaniel.rei.client.RecipeHelper;
import me.shedaniel.rei.listeners.IMixinContainerGui;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.audio.PositionedSoundInstance;
@@ -18,8 +19,9 @@ import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import java.awt.*;
-import java.util.*;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
public class RecipeViewingWidget extends Gui {
@@ -46,8 +48,11 @@ public class RecipeViewingWidget extends Gui {
this.widgets = Lists.newArrayList();
this.bounds = new Rectangle(window.getScaledWidth() / 2 - guiWidth / 2, window.getScaledHeight() / 2 - guiHeight / 2, guiWidth, guiHeight);
this.categoriesMap = categoriesMap;
- this.categories = new LinkedList<>(categoriesMap.keySet());
- Collections.reverse(categories);
+ this.categories = Lists.newArrayList();
+ RecipeHelper.getCategories().forEach(category -> {
+ if (categoriesMap.containsKey(category))
+ categories.add(category);
+ });
this.selectedCategory = categories.get(0);
this.tabs = new ArrayList<>();
}
@@ -172,7 +177,7 @@ public class RecipeViewingWidget extends Gui {
widgets.addAll(selectedCategory.setupDisplay(getParent(), middleDisplay, new Rectangle((int) getBounds().getCenterX() - 75, getBounds().y + 108, 150, 66)));
}
}
-
+
GuiHelper.getOverlay(parent.getContainerGui()).onInitialized();
listeners.addAll(tabs);
listeners.add(GuiHelper.getOverlay(parent.getContainerGui()));
diff --git a/src/main/java/me/shedaniel/rei/listeners/IMixinContainerGui.java b/src/main/java/me/shedaniel/rei/listeners/IMixinContainerGui.java
index d87bcebab..812bf70dc 100644
--- a/src/main/java/me/shedaniel/rei/listeners/IMixinContainerGui.java
+++ b/src/main/java/me/shedaniel/rei/listeners/IMixinContainerGui.java
@@ -2,6 +2,7 @@ package me.shedaniel.rei.listeners;
import me.shedaniel.rei.gui.ContainerGuiOverlay;
import net.minecraft.client.gui.ContainerGui;
+import net.minecraft.container.Slot;
import net.minecraft.item.ItemStack;
import java.util.List;
@@ -18,6 +19,8 @@ public interface IMixinContainerGui {
public ItemStack getDraggedStack();
+ public Slot getHoveredSlot();
+
public ContainerGui getContainerGui();
public void setOverlay(ContainerGuiOverlay overlay);
diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinContainerGui.java b/src/main/java/me/shedaniel/rei/mixin/MixinContainerGui.java
index 165141cdc..3c8d65ccf 100644
--- a/src/main/java/me/shedaniel/rei/mixin/MixinContainerGui.java
+++ b/src/main/java/me/shedaniel/rei/mixin/MixinContainerGui.java
@@ -7,6 +7,7 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.ContainerGui;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiEventListener;
+import net.minecraft.container.Slot;
import net.minecraft.item.ItemStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@@ -32,6 +33,8 @@ public class MixinContainerGui extends Gui implements IMixinContainerGui {
@Shadow
private ItemStack field_2782;
+ @Shadow protected Slot focusedSlot;
+
@Override
public int getContainerLeft() {
return left;
@@ -107,4 +110,9 @@ public class MixinContainerGui extends Gui implements IMixinContainerGui {
}
}
+ @Override
+ public Slot getHoveredSlot() {
+ return focusedSlot;
+ }
+
}