aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md6
-rw-r--r--src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java36
-rw-r--r--src/main/java/me/shedaniel/rei/listeners/ContainerScreenHooks.java9
-rw-r--r--src/main/java/me/shedaniel/rei/listeners/CreativePlayerInventoryScreenHooks.java6
-rw-r--r--src/main/java/me/shedaniel/rei/listeners/RecipeBookGuiHooks.java7
-rw-r--r--src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java43
-rw-r--r--src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java16
-rw-r--r--src/main/java/me/shedaniel/rei/mixin/MixinRecipeBookGui.java38
-rwxr-xr-xsrc/main/resources/fabric.mod.json3
-rw-r--r--src/main/resources/listeners.roughlyenoughitems.mixins.json15
-rwxr-xr-xsrc/main/resources/mixin.roughlyenoughitems.mixins.json (renamed from src/main/resources/roughlyenoughitems.mixins.json)5
11 files changed, 71 insertions, 113 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0bb7374e9..9f1ec1270 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,9 @@
View full changelog [here](https://github.com/shedaniel/RoughlyEnoughItems/blob/1.14/CHANGELOG.md).
+## v2.9-beta+build.107 (BETA)
+- Fixed: Crashing when clicking tabs
+- Added: Buttons to switch category page
+- Fixed: NullPointerException by geniii
+- Fixed [#58](https://github.com/shedaniel/RoughlyEnoughItems/issues/58): Keybinds (e.g. O, R, U) working even a search field is focused
## v2.9-beta+build.106 (BETA)
- Using: [HammerLib](https://minecraft.curseforge.com/projects/hammer-lib) as a simple opengl scissors api
- New: Mod Name of category new shows in category tooltips
@@ -9,6 +14,7 @@ View full changelog [here](https://github.com/shedaniel/RoughlyEnoughItems/blob/
- Fixed: Button Width Rendering issues when the width is an odd number
- Changed: Mod Name changed from `RoughlyEnoughItems` to `Roughly Enough Items`
- Changed: Lots of internal refractors
+- Fixed: Enchanting books not showing its maximum level
## v2.8.2+build.104
- Fixed [#81](https://github.com/shedaniel/RoughlyEnoughItems/issues/81): Scrolling unaffected by exclusion zones.
- Added [#82](https://github.com/shedaniel/RoughlyEnoughItems/issues/82): Close search after pressing "Enter"
diff --git a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java
index e53168df6..99ca687d8 100644
--- a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java
+++ b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java
@@ -16,6 +16,7 @@ import net.minecraft.client.render.GuiLighting;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.sound.SoundEvents;
import net.minecraft.text.StringTextComponent;
+import net.minecraft.text.TranslatableTextComponent;
import net.minecraft.util.math.MathHelper;
import org.lwjgl.BufferUtils;
import org.lwjgl.glfw.GLFW;
@@ -32,6 +33,7 @@ import static me.shedaniel.rei.gui.RecipeViewingScreen.getSpeedCraftFunctionalBy
public class VillagerRecipeViewingScreen extends Screen {
+ private static final int TABS_PER_PAGE = 8;
private final Map<RecipeCategory, List<RecipeDisplay>> categoryMap;
private final List<RecipeCategory> categories;
private final List<Widget> widgets;
@@ -42,7 +44,6 @@ public class VillagerRecipeViewingScreen extends Screen {
private int selectedCategoryIndex, selectedRecipeIndex;
private double scroll;
private int tabsPage;
- private static final int TABS_PER_PAGE = 9;
public VillagerRecipeViewingScreen(Map<RecipeCategory, List<RecipeDisplay>> map) {
super(new StringTextComponent(""));
@@ -117,6 +118,7 @@ public class VillagerRecipeViewingScreen extends Screen {
return false;
selectedCategoryIndex = getId() + tabsPage * TABS_PER_PAGE;
scroll = 0;
+ selectedRecipeIndex = 0;
VillagerRecipeViewingScreen.this.init();
return true;
}
@@ -126,6 +128,26 @@ public class VillagerRecipeViewingScreen extends Screen {
tab.setRenderer(categories.get(j), categories.get(j).getIcon(), categories.get(j).getCategoryName(), tab.getId() + tabsPage * TABS_PER_PAGE == selectedCategoryIndex);
}
}
+ ButtonWidget w, w2;
+ this.widgets.add(w = new ButtonWidget(bounds.x + 2, bounds.y - 16, 10, 10, new TranslatableTextComponent("text.rei.left_arrow")) {
+ @Override
+ public void onPressed() {
+ tabsPage--;
+ if (tabsPage < 0)
+ tabsPage = MathHelper.ceil(categories.size() / (float) TABS_PER_PAGE) - 1;
+ VillagerRecipeViewingScreen.this.init();
+ }
+ });
+ this.widgets.add(w2 = new ButtonWidget(bounds.x + bounds.width - 12, bounds.y - 16, 10, 10, new TranslatableTextComponent("text.rei.right_arrow")) {
+ @Override
+ public void onPressed() {
+ tabsPage++;
+ if (tabsPage > MathHelper.ceil(categories.size() / (float) TABS_PER_PAGE) - 1)
+ tabsPage = 0;
+ VillagerRecipeViewingScreen.this.init();
+ }
+ });
+ w.enabled = w2.enabled = categories.size() > TABS_PER_PAGE;
this.widgets.add(new ClickableLabelWidget(bounds.x + 4 + scrollListBounds.width / 2, bounds.y + 6, categories.get(selectedCategoryIndex).getCategoryName()) {
@Override
@@ -142,22 +164,14 @@ public class VillagerRecipeViewingScreen extends Screen {
@Override
public void render(int mouseX, int mouseY, float delta) {
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
- int colour = getDefaultColor();
- if (clickable && isHovered(mouseX, mouseY))
- colour = getHoveredColor();
- font.draw((isHovered(mouseX, mouseY) ? "§n" : "") + text, x - font.getStringWidth(text) / 2, y, colour);
+ font.draw((isHovered(mouseX, mouseY) ? "§n" : "") + text, x - font.getStringWidth(text) / 2, y, getDefaultColor());
if (clickable && getTooltips().isPresent())
if (!focused && isHighlighted(mouseX, mouseY))
ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltips().get().split("\n")));
else if (focused)
ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(new Point(x, y), getTooltips().get().split("\n")));
}
-
- @Override
- public int getHoveredColor() {
- return -1;
- }
-
+
@Override
public int getDefaultColor() {
return 4210752;
diff --git a/src/main/java/me/shedaniel/rei/listeners/ContainerScreenHooks.java b/src/main/java/me/shedaniel/rei/listeners/ContainerScreenHooks.java
index caae64adc..da393b5b6 100644
--- a/src/main/java/me/shedaniel/rei/listeners/ContainerScreenHooks.java
+++ b/src/main/java/me/shedaniel/rei/listeners/ContainerScreenHooks.java
@@ -1,17 +1,26 @@
package me.shedaniel.rei.listeners;
+import net.minecraft.client.gui.ContainerScreen;
import net.minecraft.container.Slot;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+@Mixin(ContainerScreen.class)
public interface ContainerScreenHooks {
+ @Accessor("left")
int rei_getContainerLeft();
+ @Accessor("top")
int rei_getContainerTop();
+ @Accessor("containerWidth")
int rei_getContainerWidth();
+ @Accessor("containerHeight")
int rei_getContainerHeight();
+ @Accessor("focusedSlot")
Slot rei_getHoveredSlot();
}
diff --git a/src/main/java/me/shedaniel/rei/listeners/CreativePlayerInventoryScreenHooks.java b/src/main/java/me/shedaniel/rei/listeners/CreativePlayerInventoryScreenHooks.java
index 45cdc198b..9948d289c 100644
--- a/src/main/java/me/shedaniel/rei/listeners/CreativePlayerInventoryScreenHooks.java
+++ b/src/main/java/me/shedaniel/rei/listeners/CreativePlayerInventoryScreenHooks.java
@@ -1,5 +1,11 @@
package me.shedaniel.rei.listeners;
+import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+@Mixin(CreativePlayerInventoryScreen.class)
public interface CreativePlayerInventoryScreenHooks {
+ @Accessor("selectedTab")
int rei_getSelectedTab();
}
diff --git a/src/main/java/me/shedaniel/rei/listeners/RecipeBookGuiHooks.java b/src/main/java/me/shedaniel/rei/listeners/RecipeBookGuiHooks.java
index c76eb2b6e..a694322c3 100644
--- a/src/main/java/me/shedaniel/rei/listeners/RecipeBookGuiHooks.java
+++ b/src/main/java/me/shedaniel/rei/listeners/RecipeBookGuiHooks.java
@@ -1,17 +1,24 @@
package me.shedaniel.rei.listeners;
import net.minecraft.client.gui.recipebook.GroupButtonWidget;
+import net.minecraft.client.gui.recipebook.RecipeBookGui;
import net.minecraft.client.gui.widget.RecipeBookGhostSlots;
import net.minecraft.client.gui.widget.TextFieldWidget;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
import java.util.List;
+@Mixin(RecipeBookGui.class)
public interface RecipeBookGuiHooks {
+ @Accessor("ghostSlots")
RecipeBookGhostSlots rei_getGhostSlots();
+ @Accessor("searchField")
TextFieldWidget rei_getSearchField();
+ @Accessor("tabButtons")
List<GroupButtonWidget> rei_getTabButtons();
}
diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java
deleted file mode 100644
index 6d1a39e55..000000000
--- a/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package me.shedaniel.rei.mixin;
-
-import me.shedaniel.rei.listeners.ContainerScreenHooks;
-import net.minecraft.client.gui.ContainerScreen;
-import net.minecraft.container.Slot;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-
-@Mixin(ContainerScreen.class)
-public class MixinContainerScreen implements ContainerScreenHooks {
-
- @Shadow protected int left;
- @Shadow protected int top;
- @Shadow protected int containerWidth;
- @Shadow protected int containerHeight;
- @Shadow protected Slot focusedSlot;
-
- @Override
- public int rei_getContainerLeft() {
- return left;
- }
-
- @Override
- public int rei_getContainerTop() {
- return top;
- }
-
- @Override
- public int rei_getContainerWidth() {
- return containerWidth;
- }
-
- @Override
- public int rei_getContainerHeight() {
- return containerHeight;
- }
-
- @Override
- public Slot rei_getHoveredSlot() {
- return focusedSlot;
- }
-
-}
diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java
deleted file mode 100644
index c5cac7ba6..000000000
--- a/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package me.shedaniel.rei.mixin;
-
-import me.shedaniel.rei.listeners.CreativePlayerInventoryScreenHooks;
-import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-
-@Mixin(CreativePlayerInventoryScreen.class)
-public class MixinCreativePlayerInventoryScreen implements CreativePlayerInventoryScreenHooks {
- @Shadow private static int selectedTab;
-
- @Override
- public int rei_getSelectedTab() {
- return selectedTab;
- }
-}
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 7885eff88..000000000
--- a/src/main/java/me/shedaniel/rei/mixin/MixinRecipeBookGui.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package me.shedaniel.rei.mixin;
-
-import me.shedaniel.rei.listeners.RecipeBookGuiHooks;
-import net.minecraft.client.gui.recipebook.GroupButtonWidget;
-import net.minecraft.client.gui.recipebook.RecipeBookGui;
-import net.minecraft.client.gui.widget.RecipeBookGhostSlots;
-import net.minecraft.client.gui.widget.TextFieldWidget;
-import org.spongepowered.asm.mixin.Final;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-
-import java.util.List;
-
-@Mixin(RecipeBookGui.class)
-public class MixinRecipeBookGui implements RecipeBookGuiHooks {
-
- @Shadow @Final protected RecipeBookGhostSlots ghostSlots;
-
- @Shadow private TextFieldWidget searchField;
-
- @Shadow @Final private List<GroupButtonWidget> tabButtons;
-
- public RecipeBookGhostSlots rei_getGhostSlots() {
- return ghostSlots;
- }
-
- @Override
- public TextFieldWidget rei_getSearchField() {
- return searchField;
- }
-
- @Override
- public List<GroupButtonWidget> rei_getTabButtons() {
- return tabButtons;
- }
-
-
-}
diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json
index b80d634b3..4cfb3c35b 100755
--- a/src/main/resources/fabric.mod.json
+++ b/src/main/resources/fabric.mod.json
@@ -38,7 +38,8 @@
"cloth-config": ">=0.1.0"
},
"mixins": [
- "roughlyenoughitems.mixins.json"
+ "mixin.roughlyenoughitems.mixins.json",
+ "listeners.roughlyenoughitems.mixins.json"
],
"custom": {
"modmenu:clientsideOnly": true
diff --git a/src/main/resources/listeners.roughlyenoughitems.mixins.json b/src/main/resources/listeners.roughlyenoughitems.mixins.json
new file mode 100644
index 000000000..429adad8a
--- /dev/null
+++ b/src/main/resources/listeners.roughlyenoughitems.mixins.json
@@ -0,0 +1,15 @@
+{
+ "required": true,
+ "package": "me.shedaniel.rei.listeners",
+ "minVersion": "0.7.11",
+ "compatibilityLevel": "JAVA_8",
+ "mixins": [],
+ "client": [
+ "ContainerScreenHooks",
+ "CreativePlayerInventoryScreenHooks",
+ "RecipeBookGuiHooks"
+ ],
+ "injectors": {
+ "defaultRequire": 1
+ }
+}
diff --git a/src/main/resources/roughlyenoughitems.mixins.json b/src/main/resources/mixin.roughlyenoughitems.mixins.json
index 0fcdc8327..a8334dea1 100755
--- a/src/main/resources/roughlyenoughitems.mixins.json
+++ b/src/main/resources/mixin.roughlyenoughitems.mixins.json
@@ -5,10 +5,7 @@
"compatibilityLevel": "JAVA_8",
"mixins": [],
"client": [
- "MixinContainerScreen",
- "MixinBrewingRecipeRegistry",
- "MixinRecipeBookGui",
- "MixinCreativePlayerInventoryScreen"
+ "MixinBrewingRecipeRegistry"
],
"injectors": {
"defaultRequire": 1