aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-03-07 23:13:49 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-03-07 23:13:49 +0800
commit20a0d31befa8120688b77faf189748ca4c0b9e07 (patch)
treee7d3fd477e44daea5949fa2e7880ba39db2c78fb /src/main/java/me
parent8cd1f1a9804f980c1666079c99bafb6330c77723 (diff)
downloadRoughlyEnoughItems-20a0d31befa8120688b77faf189748ca4c0b9e07.tar.gz
RoughlyEnoughItems-20a0d31befa8120688b77faf189748ca4c0b9e07.tar.bz2
RoughlyEnoughItems-20a0d31befa8120688b77faf189748ca4c0b9e07.zip
option to disable recipe book
Diffstat (limited to 'src/main/java/me')
-rw-r--r--src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java2
-rw-r--r--src/main/java/me/shedaniel/rei/client/ConfigObject.java3
-rw-r--r--src/main/java/me/shedaniel/rei/client/GuiHelper.java17
-rw-r--r--src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java19
-rw-r--r--src/main/java/me/shedaniel/rei/listeners/ContainerScreenHooks.java11
-rw-r--r--src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java3
-rw-r--r--src/main/java/me/shedaniel/rei/mixin/MixinScreen.java22
7 files changed, 63 insertions, 14 deletions
diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
index dddb955e0..2cac1d50e 100644
--- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
+++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
@@ -81,8 +81,6 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer, ModInitiali
RoughlyEnoughItemsCore.LOGGER.warn("REI: Plugin Loader is not loaded! Please consider installing https://minecraft.curseforge.com/projects/pluginloader for REI plugin compatibility!");
registerPlugin(new Identifier("roughlyenoughitems", "default_plugin"), new DefaultPlugin());
}
-
- ClientTickCallback.EVENT.register(GuiHelper::onTick);
}
@Override
diff --git a/src/main/java/me/shedaniel/rei/client/ConfigObject.java b/src/main/java/me/shedaniel/rei/client/ConfigObject.java
index ba697d99a..447fb8658 100644
--- a/src/main/java/me/shedaniel/rei/client/ConfigObject.java
+++ b/src/main/java/me/shedaniel/rei/client/ConfigObject.java
@@ -43,6 +43,9 @@ public class ConfigObject {
@Comment("Toggle utils buttons")
public boolean showUtilsButtons = false;
+ @Comment("Disable Recipe Book")
+ public boolean disableRecipeBook = false;
+
@Comment("The location of choose page dialog")
public RelativePoint choosePageDialogPoint = new RelativePoint(.5, .5);
diff --git a/src/main/java/me/shedaniel/rei/client/GuiHelper.java b/src/main/java/me/shedaniel/rei/client/GuiHelper.java
index 9c41a5abf..329753add 100644
--- a/src/main/java/me/shedaniel/rei/client/GuiHelper.java
+++ b/src/main/java/me/shedaniel/rei/client/GuiHelper.java
@@ -1,11 +1,14 @@
package me.shedaniel.rei.client;
import com.google.common.collect.Lists;
+import me.shedaniel.rei.RoughlyEnoughItemsCore;
import me.shedaniel.rei.gui.ContainerScreenOverlay;
import me.shedaniel.rei.gui.widget.TextFieldWidget;
import me.shedaniel.rei.listeners.ContainerScreenHooks;
-import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.ContainerScreen;
+import net.minecraft.client.gui.InputListener;
+import net.minecraft.client.gui.widget.ButtonWidget;
+import net.minecraft.client.gui.widget.RecipeBookButtonWidget;
import net.minecraft.item.ItemStack;
import java.util.List;
@@ -38,10 +41,14 @@ public class GuiHelper {
return getLastOverlay(false);
}
- public static void onTick(MinecraftClient client) {
- if (client.currentScreen instanceof ContainerScreen && lastContainerScreen != client.currentScreen) {
- GuiHelper.lastContainerScreen = (ContainerScreen) client.currentScreen;
- }
+ public static void disableRecipeBook(ContainerScreen lastContainerScreen, List<InputListener> listeners, List<ButtonWidget> buttonWidgets) {
+ RoughlyEnoughItemsCore.LOGGER.info("%d %d", listeners.size(), buttonWidgets.size());
+ for(InputListener listener : listeners)
+ if (listener instanceof RecipeBookButtonWidget)
+ listeners.remove(listener);
+ for(ButtonWidget buttonWidget : buttonWidgets)
+ if (buttonWidget instanceof RecipeBookButtonWidget)
+ buttonWidgets.remove(buttonWidget);
}
public static ContainerScreen getLastContainerScreen() {
diff --git a/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java b/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java
index 4af12577b..01f40f9aa 100644
--- a/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java
+++ b/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java
@@ -207,6 +207,25 @@ public class ConfigScreen extends Screen {
return getTrueFalseText(RoughlyEnoughItemsCore.getConfigManager().getConfig().showUtilsButtons);
}
}));
+ entryListWidget.configAddEntry(new ConfigEntry.ButtonConfigEntry(new TranslatableTextComponent("text.rei.config.disable_recipe_book"), new ConfigEntry.ButtonConfigEntry.ConfigEntryButtonProvider() {
+ @Override
+ public boolean onPressed(int button, double mouseX, double mouseY) {
+ if (button == 0)
+ RoughlyEnoughItemsCore.getConfigManager().getConfig().disableRecipeBook = !RoughlyEnoughItemsCore.getConfigManager().getConfig().disableRecipeBook;
+ try {
+ RoughlyEnoughItemsCore.getConfigManager().saveConfig();
+ } catch (IOException e) {
+ e.printStackTrace();
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String getText() {
+ return getTrueFalseText(RoughlyEnoughItemsCore.getConfigManager().getConfig().disableRecipeBook);
+ }
+ }));
entryListWidget.configAddEntry(new ConfigEntry.CategoryTitleConfigEntry(new TranslatableTextComponent("text.rei.config.advanced")));
entryListWidget.configAddEntry(new ConfigEntry.TextFieldConfigEntry(new TranslatableTextComponent("text.rei.give_command"), new ConfigEntry.TextFieldConfigEntry.ConfigEntryTextFieldProvider() {
@Override
diff --git a/src/main/java/me/shedaniel/rei/listeners/ContainerScreenHooks.java b/src/main/java/me/shedaniel/rei/listeners/ContainerScreenHooks.java
index 33ed1aceb..caae64adc 100644
--- a/src/main/java/me/shedaniel/rei/listeners/ContainerScreenHooks.java
+++ b/src/main/java/me/shedaniel/rei/listeners/ContainerScreenHooks.java
@@ -1,18 +1,17 @@
package me.shedaniel.rei.listeners;
import net.minecraft.container.Slot;
-import net.minecraft.item.ItemStack;
public interface ContainerScreenHooks {
- public int rei_getContainerLeft();
+ int rei_getContainerLeft();
- public int rei_getContainerTop();
+ int rei_getContainerTop();
- public int rei_getContainerWidth();
+ int rei_getContainerWidth();
- public int rei_getContainerHeight();
+ int rei_getContainerHeight();
- public Slot rei_getHoveredSlot();
+ Slot rei_getHoveredSlot();
}
diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java
index 0ba58ae8a..b0fed91c7 100644
--- a/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java
+++ b/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java
@@ -1,5 +1,6 @@
package me.shedaniel.rei.mixin;
+import me.shedaniel.rei.RoughlyEnoughItemsCore;
import me.shedaniel.rei.api.TabGetter;
import me.shedaniel.rei.client.ClientHelper;
import me.shedaniel.rei.client.GuiHelper;
@@ -9,9 +10,9 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.ContainerScreen;
import net.minecraft.client.gui.Screen;
import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen;
+import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.container.Slot;
import net.minecraft.item.ItemGroup;
-import net.minecraft.item.ItemStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinScreen.java
new file mode 100644
index 000000000..df034a967
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/mixin/MixinScreen.java
@@ -0,0 +1,22 @@
+package me.shedaniel.rei.mixin;
+
+import me.shedaniel.rei.RoughlyEnoughItemsCore;
+import net.minecraft.client.gui.ContainerScreen;
+import net.minecraft.client.gui.Screen;
+import net.minecraft.client.gui.widget.ButtonWidget;
+import net.minecraft.client.gui.widget.RecipeBookButtonWidget;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
+
+@Mixin(Screen.class)
+public class MixinScreen {
+
+ @Inject(method = "addButton", at = @At("HEAD"), cancellable = true)
+ protected void addButton(ButtonWidget buttonWidget, CallbackInfoReturnable info) {
+ if (RoughlyEnoughItemsCore.getConfigManager().getConfig().disableRecipeBook && ((Screen) (Object) this) instanceof ContainerScreen && buttonWidget instanceof RecipeBookButtonWidget)
+ info.cancel();
+ }
+
+}