aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java4
-rw-r--r--src/main/java/me/shedaniel/rei/api/TabGetter.java5
-rw-r--r--src/main/java/me/shedaniel/rei/client/ClientHelper.java11
-rw-r--r--src/main/java/me/shedaniel/rei/client/ConfigHelper.java1
-rw-r--r--src/main/java/me/shedaniel/rei/client/GuiHelper.java6
-rw-r--r--src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java32
-rw-r--r--src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java13
-rw-r--r--src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java18
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java35
-rw-r--r--src/main/java/me/shedaniel/rei/listeners/ContainerScreenHooks.java (renamed from src/main/java/me/shedaniel/rei/listeners/IMixinContainerScreen.java)4
-rw-r--r--src/main/java/me/shedaniel/rei/listeners/IMixinRecipeBookGui.java9
-rw-r--r--src/main/java/me/shedaniel/rei/listeners/IMixinTabGetter.java7
-rw-r--r--src/main/java/me/shedaniel/rei/mixin/GhostSlotsHook.java14
-rw-r--r--src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java21
-rw-r--r--src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java26
-rw-r--r--src/main/java/me/shedaniel/rei/mixin/MixinRecipeBookGui.java22
-rw-r--r--src/main/java/me/shedaniel/rei/mixin/MixinTabGetter.java18
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java12
18 files changed, 143 insertions, 115 deletions
diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
index 8727e4e00..0dd3ed0d2 100644
--- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
+++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
@@ -11,7 +11,7 @@ import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.event.client.ClientTickCallback;
import net.fabricmc.fabric.api.network.ServerSidePacketRegistry;
-import net.fabricmc.loader.FabricLoader;
+import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.item.ItemStack;
import net.minecraft.server.network.ServerPlayerEntity;
@@ -77,7 +77,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer, ModInitiali
configHelper = new ConfigHelper();
// If pluginloader is not installed, base functionality should still remain
- if (!FabricLoader.INSTANCE.getModContainers().stream().map(modContainer -> modContainer.getInfo().getId()).anyMatch(s -> s.equalsIgnoreCase("pluginloader"))) {
+ if (!FabricLoader.getInstance().isModLoaded("pluginloader")) {
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());
}
diff --git a/src/main/java/me/shedaniel/rei/api/TabGetter.java b/src/main/java/me/shedaniel/rei/api/TabGetter.java
new file mode 100644
index 000000000..8afe43f30
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/api/TabGetter.java
@@ -0,0 +1,5 @@
+package me.shedaniel.rei.api;
+
+public interface TabGetter {
+ int rei_getSelectedTab();
+}
diff --git a/src/main/java/me/shedaniel/rei/client/ClientHelper.java b/src/main/java/me/shedaniel/rei/client/ClientHelper.java
index 277802679..b91d43f32 100644
--- a/src/main/java/me/shedaniel/rei/client/ClientHelper.java
+++ b/src/main/java/me/shedaniel/rei/client/ClientHelper.java
@@ -14,6 +14,8 @@ import net.fabricmc.fabric.api.client.keybinding.FabricKeyBinding;
import net.fabricmc.fabric.api.network.ClientSidePacketRegistry;
import net.fabricmc.fabric.impl.client.keybinding.KeyBindingRegistryImpl;
import net.fabricmc.loader.api.FabricLoader;
+import net.fabricmc.loader.api.ModContainer;
+import net.fabricmc.loader.api.metadata.ModMetadata;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.Mouse;
import net.minecraft.client.gui.Screen;
@@ -47,13 +49,8 @@ public class ClientHelper implements ClientModInitializer {
String modid = location.getNamespace();
if (modid.equalsIgnoreCase("minecraft"))
return "Minecraft";
- return ((net.fabricmc.loader.FabricLoader) FabricLoader.getInstance()).getModContainers().stream().map(modContainer -> {
- return modContainer.getInfo();
- }).filter(modInfo -> modInfo.getId().equals(modid) || (modInfo.getName() != null && modInfo.getName().equals(modid))).findFirst().map(modInfo -> {
- if (modInfo.getName() != null)
- return modInfo.getName();
- return modid;
- }).orElse(modid);
+ // return FabricLoader.getInstance().getAllMods().stream().map(ModContainer::getMetadata).filter(metadata -> metadata.getId().equals(modid)).findFirst().map(ModMetadata::getName).orElse(modid);
+ return FabricLoader.getInstance().getModContainer(modid).map(ModContainer::getMetadata).map(ModMetadata::getName).orElse(modid);
}
return "";
}
diff --git a/src/main/java/me/shedaniel/rei/client/ConfigHelper.java b/src/main/java/me/shedaniel/rei/client/ConfigHelper.java
index 2e5f9b6ea..38f00a804 100644
--- a/src/main/java/me/shedaniel/rei/client/ConfigHelper.java
+++ b/src/main/java/me/shedaniel/rei/client/ConfigHelper.java
@@ -15,7 +15,6 @@ public class ConfigHelper {
private REIConfig config;
private boolean craftableOnly;
- @SuppressWarnings("deprecated")
public ConfigHelper() {
this.configFile = new File(FabricLoader.getInstance().getConfigDirectory(), "rei.json");
this.craftableOnly = false;
diff --git a/src/main/java/me/shedaniel/rei/client/GuiHelper.java b/src/main/java/me/shedaniel/rei/client/GuiHelper.java
index cf74fafbd..9c41a5abf 100644
--- a/src/main/java/me/shedaniel/rei/client/GuiHelper.java
+++ b/src/main/java/me/shedaniel/rei/client/GuiHelper.java
@@ -3,7 +3,7 @@ package me.shedaniel.rei.client;
import com.google.common.collect.Lists;
import me.shedaniel.rei.gui.ContainerScreenOverlay;
import me.shedaniel.rei.gui.widget.TextFieldWidget;
-import me.shedaniel.rei.listeners.IMixinContainerScreen;
+import me.shedaniel.rei.listeners.ContainerScreenHooks;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.ContainerScreen;
import net.minecraft.item.ItemStack;
@@ -52,8 +52,8 @@ public class GuiHelper {
GuiHelper.lastContainerScreen = lastContainerScreen;
}
- public static IMixinContainerScreen getLastMixinContainerScreen() {
- return (IMixinContainerScreen) lastContainerScreen;
+ public static ContainerScreenHooks getLastContainerScreenHooks() {
+ return (ContainerScreenHooks) lastContainerScreen;
}
}
diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
index 92e7e3135..3d8fcd654 100644
--- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
+++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
@@ -99,7 +99,7 @@ public class ContainerScreenOverlay extends ScreenComponent {
list.add("§c§m" + I18n.translate("text.rei.cheating"));
else
list.add("§a" + I18n.translate("text.rei.cheating"));
- addTooltip(new QueuedTooltip(new Point(mouseX, mouseY), list));
+ addTooltip(QueuedTooltip.create(list));
}
}
});
@@ -121,10 +121,8 @@ public class ContainerScreenOverlay extends ScreenComponent {
public void draw(int mouseX, int mouseY, float partialTicks) {
text = getGameModeShortText(getCurrentGameMode());
super.draw(mouseX, mouseY, partialTicks);
- if (isHighlighted(mouseX, mouseY)) {
- List<String> list = Arrays.asList(I18n.translate("text.rei.gamemode_button.tooltip", getGameModeText(getNextGameMode())).split("\n"));
- addTooltip(new QueuedTooltip(new Point(mouseX, mouseY), list));
- }
+ if (isHighlighted(mouseX, mouseY))
+ addTooltip(QueuedTooltip.create(I18n.translate("text.rei.gamemode_button.tooltip", getGameModeText(getNextGameMode())).split("\n")));
}
});
widgets.add(new ButtonWidget(RoughlyEnoughItemsCore.getConfigHelper().getConfig().mirrorItemPanel ? window.getScaledWidth() - 80 : 60, 10, 20, 20, "") {
@@ -140,10 +138,8 @@ public class ContainerScreenOverlay extends ScreenComponent {
MinecraftClient.getInstance().getTextureManager().bindTexture(CHEST_GUI_TEXTURE);
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
drawTexturedRect(getBounds().x + 3, getBounds().y + 3, getCurrentWeather().getId() * 14, 14, 14, 14);
- if (isHighlighted(mouseX, mouseY)) {
- List<String> list = Arrays.asList(I18n.translate("text.rei.weather_button.tooltip", getNextWeather().getName()).split("\n"));
- addTooltip(new QueuedTooltip(new Point(mouseX, mouseY), list));
- }
+ if (isHighlighted(mouseX, mouseY))
+ addTooltip(QueuedTooltip.create(I18n.translate("text.rei.weather_button.tooltip", getNextWeather().getName()).split("\n")));
}
});
}
@@ -154,7 +150,7 @@ public class ContainerScreenOverlay extends ScreenComponent {
this.text = String.format("%s/%s", page + 1, getTotalPage() + 1);
super.draw(mouseX, mouseY, partialTicks);
if (isHighlighted(mouseX, mouseY))
- GuiHelper.getLastOverlay().addTooltip(new QueuedTooltip(new Point(mouseX, mouseY), Arrays.asList(I18n.translate("text.rei.go_back_first_page").split("\n"))));
+ addTooltip(QueuedTooltip.create(I18n.translate("text.rei.go_back_first_page").split("\n")));
}
@Override
@@ -260,14 +256,14 @@ public class ContainerScreenOverlay extends ScreenComponent {
}
private Rectangle getTextFieldArea() {
- int widthRemoved = RoughlyEnoughItemsCore.getConfigHelper().getConfig().enableCraftableOnlyButton ? 22 : 0;
+ int widthRemoved = RoughlyEnoughItemsCore.getConfigHelper().getConfig().enableCraftableOnlyButton ? 22 : 2;
if (RoughlyEnoughItemsCore.getConfigHelper().getConfig().sideSearchField)
return new Rectangle(rectangle.x + 2, window.getScaledHeight() - 22, rectangle.width - 6 - widthRemoved, 18);
if (MinecraftClient.getInstance().currentScreen instanceof RecipeViewingScreen) {
RecipeViewingScreen widget = (RecipeViewingScreen) MinecraftClient.getInstance().currentScreen;
return new Rectangle(widget.getBounds().x, window.getScaledHeight() - 22, widget.getBounds().width - widthRemoved, 18);
}
- return new Rectangle(GuiHelper.getLastMixinContainerScreen().rei_getContainerLeft(), window.getScaledHeight() - 22, GuiHelper.getLastMixinContainerScreen().rei_getContainerWidth() - widthRemoved, 18);
+ return new Rectangle(GuiHelper.getLastContainerScreenHooks().rei_getContainerLeft(), window.getScaledHeight() - 22, GuiHelper.getLastContainerScreenHooks().rei_getContainerWidth() - widthRemoved, 18);
}
private Rectangle getCraftableToggleArea() {
@@ -303,7 +299,7 @@ public class ContainerScreenOverlay extends ScreenComponent {
GuiLighting.disable();
Screen currentScreen = MinecraftClient.getInstance().currentScreen;
if (!(currentScreen instanceof RecipeViewingScreen) || !((RecipeViewingScreen) currentScreen).choosePageActivated)
- QUEUED_TOOLTIPS.stream().filter(queuedTooltip -> queuedTooltip != null).forEach(queuedTooltip -> MinecraftClient.getInstance().currentScreen.drawTooltip(queuedTooltip.text, queuedTooltip.mouse.x, queuedTooltip.mouse.y));
+ QUEUED_TOOLTIPS.stream().filter(queuedTooltip -> queuedTooltip != null).forEach(queuedTooltip -> MinecraftClient.getInstance().currentScreen.drawTooltip(queuedTooltip.getText(), queuedTooltip.getLocation().x, queuedTooltip.getLocation().y));
QUEUED_TOOLTIPS.clear();
GuiLighting.disable();
}
@@ -341,7 +337,7 @@ public class ContainerScreenOverlay extends ScreenComponent {
private Rectangle calculateBoundary() {
if (!RoughlyEnoughItemsCore.getConfigHelper().getConfig().mirrorItemPanel) {
- int startX = GuiHelper.getLastMixinContainerScreen().rei_getContainerLeft() + GuiHelper.getLastMixinContainerScreen().rei_getContainerWidth() + 10;
+ int startX = GuiHelper.getLastContainerScreenHooks().rei_getContainerLeft() + GuiHelper.getLastContainerScreenHooks().rei_getContainerWidth() + 10;
int width = window.getScaledWidth() - startX;
if (MinecraftClient.getInstance().currentScreen instanceof RecipeViewingScreen) {
RecipeViewingScreen widget = (RecipeViewingScreen) MinecraftClient.getInstance().currentScreen;
@@ -359,8 +355,8 @@ public class ContainerScreenOverlay extends ScreenComponent {
return widget.getBounds().x;
}
if (MinecraftClient.getInstance().player.getRecipeBook().isGuiOpen())
- return GuiHelper.getLastMixinContainerScreen().rei_getContainerLeft() - 147 - 30;
- return GuiHelper.getLastMixinContainerScreen().rei_getContainerLeft();
+ return GuiHelper.getLastContainerScreenHooks().rei_getContainerLeft() - 147 - 30;
+ return GuiHelper.getLastContainerScreenHooks().rei_getContainerLeft();
}
private int getTotalPage() {
@@ -413,8 +409,8 @@ public class ContainerScreenOverlay extends ScreenComponent {
}
}
if (itemStack == null && MinecraftClient.getInstance().currentScreen instanceof ContainerScreen)
- if (GuiHelper.getLastMixinContainerScreen().rei_getHoveredSlot() != null)
- itemStack = GuiHelper.getLastMixinContainerScreen().rei_getHoveredSlot().getStack();
+ if (GuiHelper.getLastContainerScreenHooks().rei_getHoveredSlot() != null)
+ itemStack = GuiHelper.getLastContainerScreenHooks().rei_getHoveredSlot().getStack();
if (itemStack != null && !itemStack.isEmpty()) {
if (ClientHelper.RECIPE.matchesKey(int_1, int_2))
return ClientHelper.executeRecipeKeyBind(this, itemStack);
diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
index 6e78cbd4c..541940375 100644
--- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
+++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
@@ -21,8 +21,10 @@ 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;
+import java.util.Optional;
import java.util.function.Supplier;
public class RecipeViewingScreen extends Screen {
@@ -71,6 +73,11 @@ public class RecipeViewingScreen extends Screen {
@Override
public boolean keyPressed(int int_1, int int_2, int int_3) {
+ if (int_1 == 256 && choosePageActivated) {
+ choosePageActivated = false;
+ onInitialized();
+ return true;
+ }
if ((int_1 == 256 || this.client.options.keyInventory.matchesKey(int_1, int_2)) && this.doesEscapeKeyClose()) {
MinecraftClient.getInstance().openScreen(GuiHelper.getLastContainerScreen());
GuiHelper.getLastOverlay().onInitialized();
@@ -158,7 +165,7 @@ public class RecipeViewingScreen extends Screen {
this.text = selectedCategory.getCategoryName();
super.draw(mouseX, mouseY, partialTicks);
if (isHighlighted(mouseX, mouseY))
- GuiHelper.getLastOverlay().addTooltip(new QueuedTooltip(new Point(mouseX, mouseY), Arrays.asList(I18n.translate("text.rei.view_all_categories").split("\n"))));
+ GuiHelper.getLastOverlay().addTooltip(QueuedTooltip.create(I18n.translate("text.rei.view_all_categories").split("\n")));
}
@Override
@@ -173,7 +180,7 @@ public class RecipeViewingScreen extends Screen {
this.text = String.format("%d/%d", page + 1, getTotalPages(selectedCategory));
super.draw(mouseX, mouseY, partialTicks);
if (isHighlighted(mouseX, mouseY))
- GuiHelper.getLastOverlay().addTooltip(new QueuedTooltip(new Point(mouseX, mouseY), Arrays.asList(I18n.translate("text.rei.choose_page").split("\n"))));
+ GuiHelper.getLastOverlay().addTooltip(QueuedTooltip.create(I18n.translate("text.rei.choose_page").split("\n")));
}
@Override
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 ee84bbab8..d1383c377 100644
--- a/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java
+++ b/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java
@@ -238,7 +238,6 @@ public class ConfigScreen extends Screen {
public void onInitWidget(TextFieldWidget widget) {
widget.setMaxLength(99999);
widget.setText(RoughlyEnoughItemsCore.getConfigHelper().getConfig().gamemodeCommand);
- widget.setSuggestion(I18n.translate("text.rei.give_command.suggestion"));
}
@Override
@@ -251,6 +250,23 @@ public class ConfigScreen extends Screen {
}
}
}));
+ entryListWidget.configAddEntry(new ConfigEntry.TextFieldConfigEntry(new TranslatableTextComponent("text.rei.weather_command"), new ConfigEntry.TextFieldConfigEntry.ConfigEntryTextFieldProvider() {
+ @Override
+ public void onInitWidget(TextFieldWidget widget) {
+ widget.setMaxLength(99999);
+ widget.setText(RoughlyEnoughItemsCore.getConfigHelper().getConfig().weatherCommand);
+ }
+
+ @Override
+ public void onUpdateText(TextFieldWidget button, String text) {
+ RoughlyEnoughItemsCore.getConfigHelper().getConfig().weatherCommand = text;
+ try {
+ RoughlyEnoughItemsCore.getConfigHelper().saveConfig();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }));
entryListWidget.configAddEntry(new ConfigEntry.TextFieldConfigEntry(new TranslatableTextComponent("text.rei.config.max_recipes_per_page"), new ConfigEntry.TextFieldConfigEntry.ConfigEntryTextFieldProvider() {
@Override
public void onInitWidget(TextFieldWidget widget) {
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java b/src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java
index 8d6d82796..5f7a689eb 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java
@@ -1,18 +1,45 @@
package me.shedaniel.rei.gui.widget;
+import com.google.common.collect.Lists;
+import me.shedaniel.rei.client.ClientHelper;
+
import java.awt.*;
import java.util.LinkedList;
import java.util.List;
public class QueuedTooltip {
- public Point mouse;
- public List<String> text;
+ private Point location;
+ private List<String> text;
- public QueuedTooltip(Point mouse, List<String> text) {
- this.mouse = mouse;
+ protected QueuedTooltip(Point location, List<String> text) {
+ this.location = location;
this.text = new LinkedList<>(text);
}
+ public static QueuedTooltip create(Point location, List<String> text) {
+ return new QueuedTooltip(location, text);
+ }
+
+ public static QueuedTooltip create(Point location, String... text) {
+ return QueuedTooltip.create(location, Lists.newArrayList(text));
+ }
+
+ public static QueuedTooltip create(List<String> text) {
+ return QueuedTooltip.create(ClientHelper.getMouseLocation(), text);
+ }
+
+ public static QueuedTooltip create(String... text) {
+ return QueuedTooltip.create(ClientHelper.getMouseLocation(), text);
+ }
+
+ public Point getLocation() {
+ return location;
+ }
+
+ public List<String> getText() {
+ return text;
+ }
+
}
diff --git a/src/main/java/me/shedaniel/rei/listeners/IMixinContainerScreen.java b/src/main/java/me/shedaniel/rei/listeners/ContainerScreenHooks.java
index dd14a96ba..33ed1aceb 100644
--- a/src/main/java/me/shedaniel/rei/listeners/IMixinContainerScreen.java
+++ b/src/main/java/me/shedaniel/rei/listeners/ContainerScreenHooks.java
@@ -3,7 +3,7 @@ package me.shedaniel.rei.listeners;
import net.minecraft.container.Slot;
import net.minecraft.item.ItemStack;
-public interface IMixinContainerScreen {
+public interface ContainerScreenHooks {
public int rei_getContainerLeft();
@@ -13,8 +13,6 @@ public interface IMixinContainerScreen {
public int rei_getContainerHeight();
- public ItemStack rei_getDraggedStack();
-
public Slot rei_getHoveredSlot();
}
diff --git a/src/main/java/me/shedaniel/rei/listeners/IMixinRecipeBookGui.java b/src/main/java/me/shedaniel/rei/listeners/IMixinRecipeBookGui.java
deleted file mode 100644
index a26f2dbae..000000000
--- a/src/main/java/me/shedaniel/rei/listeners/IMixinRecipeBookGui.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package me.shedaniel.rei.listeners;
-
-import net.minecraft.client.gui.widget.RecipeBookGhostSlots;
-
-public interface IMixinRecipeBookGui {
-
- public RecipeBookGhostSlots rei_getGhostSlots();
-
-}
diff --git a/src/main/java/me/shedaniel/rei/listeners/IMixinTabGetter.java b/src/main/java/me/shedaniel/rei/listeners/IMixinTabGetter.java
deleted file mode 100644
index eeab65c18..000000000
--- a/src/main/java/me/shedaniel/rei/listeners/IMixinTabGetter.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package me.shedaniel.rei.listeners;
-
-public interface IMixinTabGetter {
-
- public int rei_getSelectedTab();
-
-}
diff --git a/src/main/java/me/shedaniel/rei/mixin/GhostSlotsHook.java b/src/main/java/me/shedaniel/rei/mixin/GhostSlotsHook.java
new file mode 100644
index 000000000..4857c5c40
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/mixin/GhostSlotsHook.java
@@ -0,0 +1,14 @@
+package me.shedaniel.rei.mixin;
+
+import net.minecraft.client.gui.recipebook.RecipeBookGui;
+import net.minecraft.client.gui.widget.RecipeBookGhostSlots;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+@Mixin(RecipeBookGui.class)
+public interface GhostSlotsHook {
+
+ @Accessor("ghostSlots")
+ RecipeBookGhostSlots rei_getGhostSlots();
+
+}
diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java
index c2f2114ec..0ba58ae8a 100644
--- a/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java
+++ b/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java
@@ -1,10 +1,10 @@
package me.shedaniel.rei.mixin;
+import me.shedaniel.rei.api.TabGetter;
import me.shedaniel.rei.client.ClientHelper;
import me.shedaniel.rei.client.GuiHelper;
import me.shedaniel.rei.gui.ContainerScreenOverlay;
-import me.shedaniel.rei.listeners.IMixinContainerScreen;
-import me.shedaniel.rei.listeners.IMixinTabGetter;
+import me.shedaniel.rei.listeners.ContainerScreenHooks;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.ContainerScreen;
import net.minecraft.client.gui.Screen;
@@ -20,7 +20,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(ContainerScreen.class)
-public class MixinContainerScreen extends Screen implements IMixinContainerScreen {
+public class MixinContainerScreen extends Screen implements ContainerScreenHooks {
@Shadow
protected int left;
@@ -32,8 +32,6 @@ public class MixinContainerScreen extends Screen implements IMixinContainerScree
protected int height;
@Shadow
protected Slot focusedSlot;
- @Shadow
- private ItemStack field_2782;
@Override
public int rei_getContainerLeft() {
@@ -58,7 +56,7 @@ public class MixinContainerScreen extends Screen implements IMixinContainerScree
@Inject(method = "onInitialized()V", at = @At("RETURN"))
protected void onInitialized(CallbackInfo info) {
if (MinecraftClient.getInstance().currentScreen instanceof CreativePlayerInventoryScreen) {
- IMixinTabGetter tabGetter = (IMixinTabGetter) MinecraftClient.getInstance().currentScreen;
+ TabGetter tabGetter = (TabGetter) MinecraftClient.getInstance().currentScreen;
if (tabGetter.rei_getSelectedTab() != ItemGroup.INVENTORY.getIndex())
return;
}
@@ -69,7 +67,7 @@ public class MixinContainerScreen extends Screen implements IMixinContainerScree
@Inject(method = "draw(IIF)V", at = @At("RETURN"))
public void draw(int int_1, int int_2, float float_1, CallbackInfo info) {
if (MinecraftClient.getInstance().currentScreen instanceof CreativePlayerInventoryScreen) {
- IMixinTabGetter tabGetter = (IMixinTabGetter) MinecraftClient.getInstance().currentScreen;
+ TabGetter tabGetter = (TabGetter) MinecraftClient.getInstance().currentScreen;
if (tabGetter.rei_getSelectedTab() != ItemGroup.INVENTORY.getIndex())
return;
}
@@ -77,11 +75,6 @@ public class MixinContainerScreen extends Screen implements IMixinContainerScree
}
@Override
- public ItemStack rei_getDraggedStack() {
- return this.field_2782;
- }
-
- @Override
public Slot rei_getHoveredSlot() {
return focusedSlot;
}
@@ -89,7 +82,7 @@ public class MixinContainerScreen extends Screen implements IMixinContainerScree
@Override
public boolean mouseScrolled(double double_1) {
if (MinecraftClient.getInstance().currentScreen instanceof CreativePlayerInventoryScreen) {
- IMixinTabGetter tabGetter = (IMixinTabGetter) MinecraftClient.getInstance().currentScreen;
+ TabGetter tabGetter = (TabGetter) MinecraftClient.getInstance().currentScreen;
if (tabGetter.rei_getSelectedTab() != ItemGroup.INVENTORY.getIndex())
return super.mouseScrolled(double_1);
}
@@ -103,7 +96,7 @@ public class MixinContainerScreen extends Screen implements IMixinContainerScree
@Inject(method = "keyPressed(III)Z", at = @At("HEAD"), cancellable = true)
public void keyPressed(int int_1, int int_2, int int_3, CallbackInfoReturnable<Boolean> ci) {
if (MinecraftClient.getInstance().currentScreen instanceof CreativePlayerInventoryScreen) {
- IMixinTabGetter tabGetter = (IMixinTabGetter) MinecraftClient.getInstance().currentScreen;
+ TabGetter tabGetter = (TabGetter) MinecraftClient.getInstance().currentScreen;
if (tabGetter.rei_getSelectedTab() != ItemGroup.INVENTORY.getIndex())
return;
}
diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java
index 1cf8b3398..94a6302a5 100644
--- a/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java
+++ b/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java
@@ -1,7 +1,7 @@
package me.shedaniel.rei.mixin;
+import me.shedaniel.rei.client.ClientHelper;
import me.shedaniel.rei.client.GuiHelper;
-import me.shedaniel.rei.listeners.IMixinTabGetter;
import net.minecraft.client.gui.ingame.AbstractPlayerInventoryScreen;
import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen;
import net.minecraft.entity.player.PlayerInventory;
@@ -14,7 +14,7 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(CreativePlayerInventoryScreen.class)
-public abstract class MixinCreativePlayerInventoryScreen extends AbstractPlayerInventoryScreen<CreativePlayerInventoryScreen.CreativeContainer> implements IMixinTabGetter {
+public abstract class MixinCreativePlayerInventoryScreen extends AbstractPlayerInventoryScreen<CreativePlayerInventoryScreen.CreativeContainer> {
@Shadow
private static int selectedTab;
@@ -28,15 +28,10 @@ public abstract class MixinCreativePlayerInventoryScreen extends AbstractPlayerI
@Shadow
protected abstract boolean doRenderScrollBar();
- @Override
- public int rei_getSelectedTab() {
- return selectedTab;
- }
-
@Inject(method = "mouseScrolled", at = @At("HEAD"), cancellable = true)
public void mouseScrolled(double amount, CallbackInfoReturnable<Boolean> ci) {
- if (!doRenderScrollBar())
- if (super.mouseScrolled(amount)) {
+ if (!doRenderScrollBar() && selectedTab == ItemGroup.INVENTORY.getIndex())
+ if (GuiHelper.isOverlayVisible() && GuiHelper.getLastOverlay().getRectangle().contains(ClientHelper.getMouseLocation()) && GuiHelper.getLastOverlay().mouseScrolled(amount)) {
ci.setReturnValue(true);
ci.cancel();
}
@@ -45,7 +40,7 @@ public abstract class MixinCreativePlayerInventoryScreen extends AbstractPlayerI
@Inject(method = "keyPressed", at = @At("HEAD"), cancellable = true)
public void keyPressed(int int_1, int int_2, int int_3, CallbackInfoReturnable<Boolean> ci) {
if (selectedTab == ItemGroup.INVENTORY.getIndex())
- if (super.keyPressed(int_1, int_2, int_3)) {
+ if (GuiHelper.getLastOverlay().keyPressed(int_1, int_2, int_3)) {
ci.setReturnValue(true);
ci.cancel();
}
@@ -54,7 +49,7 @@ public abstract class MixinCreativePlayerInventoryScreen extends AbstractPlayerI
@Inject(method = "charTyped", at = @At("HEAD"), cancellable = true)
public void charTyped(char char_1, int int_1, CallbackInfoReturnable<Boolean> ci) {
if (!this.field_2888 && selectedTab == ItemGroup.INVENTORY.getIndex())
- if (super.charTyped(char_1, int_1)) {
+ if (GuiHelper.isOverlayVisible() && GuiHelper.getLastOverlay().charTyped(char_1, int_1)) {
ci.setReturnValue(true);
ci.cancel();
}
@@ -62,10 +57,11 @@ public abstract class MixinCreativePlayerInventoryScreen extends AbstractPlayerI
@Inject(method = "mouseClicked", at = @At("HEAD"), cancellable = true)
public void mouseClicked(double i, double j, int k, CallbackInfoReturnable<Boolean> ci) {
- if (GuiHelper.getLastOverlay().mouseClicked(i, j, k)) {
- ci.setReturnValue(true);
- ci.cancel();
- }
+ if (selectedTab == ItemGroup.INVENTORY.getIndex())
+ if (GuiHelper.isOverlayVisible() && GuiHelper.getLastOverlay().mouseClicked(i, j, k)) {
+ ci.setReturnValue(true);
+ ci.cancel();
+ }
}
}
diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinRecipeBookGui.java b/src/main/java/me/shedaniel/rei/mixin/MixinRecipeBookGui.java
deleted file mode 100644
index a4a129c1a..000000000
--- a/src/main/java/me/shedaniel/rei/mixin/MixinRecipeBookGui.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package me.shedaniel.rei.mixin;
-
-import me.shedaniel.rei.listeners.IMixinRecipeBookGui;
-import net.minecraft.client.gui.recipebook.RecipeBookGui;
-import net.minecraft.client.gui.widget.RecipeBookGhostSlots;
-import org.spongepowered.asm.mixin.Final;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-
-@Mixin(RecipeBookGui.class)
-public class MixinRecipeBookGui implements IMixinRecipeBookGui {
-
- @Shadow
- @Final
- protected RecipeBookGhostSlots ghostSlots;
-
- @Override
- public RecipeBookGhostSlots rei_getGhostSlots() {
- return ghostSlots;
- }
-
-}
diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinTabGetter.java b/src/main/java/me/shedaniel/rei/mixin/MixinTabGetter.java
new file mode 100644
index 000000000..e62496726
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/mixin/MixinTabGetter.java
@@ -0,0 +1,18 @@
+package me.shedaniel.rei.mixin;
+
+import me.shedaniel.rei.api.TabGetter;
+import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
+
+@Mixin(CreativePlayerInventoryScreen.class)
+public class MixinTabGetter implements TabGetter {
+
+ @Shadow private static int selectedTab;
+
+ @Override
+ public int rei_getSelectedTab() {
+ return selectedTab;
+ }
+
+}
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
index 0fd543ef9..c37150e59 100644
--- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
+++ b/