aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-04-18 22:00:45 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-04-18 22:00:45 +0800
commita9a476f81d1547d8a14aa2e566487fcaead0954a (patch)
treeceb7a80517e35e513c88634a6a305f16cd13510b /src/main/java/me
parentc684a013be87b57ab7d690b4b33e0454a6379b92 (diff)
downloadRoughlyEnoughItems-a9a476f81d1547d8a14aa2e566487fcaead0954a.tar.gz
RoughlyEnoughItems-a9a476f81d1547d8a14aa2e566487fcaead0954a.tar.bz2
RoughlyEnoughItems-a9a476f81d1547d8a14aa2e566487fcaead0954a.zip
Wrap around plz (2.7.9.94)
Fix #66
Diffstat (limited to 'src/main/java/me')
-rw-r--r--src/main/java/me/shedaniel/rei/api/DisplayHelper.java7
-rw-r--r--src/main/java/me/shedaniel/rei/client/ClientHelper.java43
-rw-r--r--src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java65
-rw-r--r--src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java1
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java57
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java25
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java4
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java30
-rw-r--r--src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java10
9 files changed, 155 insertions, 87 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/DisplayHelper.java b/src/main/java/me/shedaniel/rei/api/DisplayHelper.java
index f912b33c5..edb319d76 100644
--- a/src/main/java/me/shedaniel/rei/api/DisplayHelper.java
+++ b/src/main/java/me/shedaniel/rei/api/DisplayHelper.java
@@ -1,10 +1,13 @@
package me.shedaniel.rei.api;
import me.shedaniel.rei.RoughlyEnoughItemsCore;
+import net.minecraft.util.ActionResult;
import java.awt.*;
import java.util.List;
+import static net.minecraft.util.ActionResult.PASS;
+
public interface DisplayHelper {
List<DisplayBoundsHandler> getSortedBoundsHandlers(Class screenClass);
@@ -20,6 +23,10 @@ public interface DisplayHelper {
Rectangle getRightBounds(T screen);
+ default ActionResult canItemSlotWidgetFit(boolean isOnRightSide, int left, int top, T screen, Rectangle fullBounds) {
+ return PASS;
+ }
+
default Rectangle getItemListArea(Rectangle rectangle) {
return new Rectangle(rectangle.x + 2, rectangle.y + 24, rectangle.width - 4, rectangle.height - (RoughlyEnoughItemsCore.getConfigManager().getConfig().sideSearchField ? 27 + 22 : 27));
}
diff --git a/src/main/java/me/shedaniel/rei/client/ClientHelper.java b/src/main/java/me/shedaniel/rei/client/ClientHelper.java
index 2ccdcea43..1e274241d 100644
--- a/src/main/java/me/shedaniel/rei/client/ClientHelper.java
+++ b/src/main/java/me/shedaniel/rei/client/ClientHelper.java
@@ -1,6 +1,7 @@
package me.shedaniel.rei.client;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Maps;
import io.netty.buffer.Unpooled;
import me.shedaniel.rei.RoughlyEnoughItemsCore;
import me.shedaniel.rei.RoughlyEnoughItemsNetwork;
@@ -18,7 +19,9 @@ import net.fabricmc.loader.api.metadata.ModMetadata;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen;
import net.minecraft.client.util.InputUtil;
+import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
+import net.minecraft.item.Items;
import net.minecraft.text.TranslatableTextComponent;
import net.minecraft.util.DefaultedList;
import net.minecraft.util.Identifier;
@@ -29,24 +32,44 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
public class ClientHelper implements 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");
+ private static final Map<String, String> MOD_NAME_CACHE = Maps.newHashMap();
public static FabricKeyBinding RECIPE, USAGE, HIDE;
- public static String getModFromItemStack(ItemStack stack) {
- if (!stack.isEmpty()) {
- Identifier location = Registry.ITEM.getId(stack.getItem());
- assert location != null;
- String modid = location.getNamespace();
- if (modid.equalsIgnoreCase("minecraft"))
- return "Minecraft";
- return FabricLoader.getInstance().getModContainer(modid).map(ModContainer::getMetadata).map(ModMetadata::getName).orElse(modid);
- }
- return "";
+ static {
+ MOD_NAME_CACHE.put("minecraft", "Minecraft");
+ MOD_NAME_CACHE.put("c", "Common");
+ }
+
+ public static String getFormattedModFromItem(Item item) {
+ String mod = getModFromItem(item);
+ if (mod.equalsIgnoreCase(""))
+ return "";
+ return "§9§o" + mod;
+ }
+
+ public static String getModFromItem(Item item) {
+ if (item.equals(Items.AIR))
+ return "";
+ return getModFromIdentifier(Registry.ITEM.getId(item));
+ }
+
+ public static String getModFromIdentifier(Identifier identifier) {
+ if (identifier == null)
+ return "";
+ Optional<String> any = Optional.ofNullable(MOD_NAME_CACHE.getOrDefault(identifier.getNamespace(), null));
+ if (any.isPresent())
+ return any.get();
+ String modid = identifier.getNamespace();
+ String s = FabricLoader.getInstance().getModContainer(modid).map(ModContainer::getMetadata).map(ModMetadata::getName).orElse(modid);
+ MOD_NAME_CACHE.put(modid, s);
+ return s;
}
public static boolean isCheating() {
diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
index 5e9a6c54d..9ca770d5c 100644
--- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
+++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
@@ -337,48 +337,49 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra
toggleButtonWidget.lateRender(mouseX, mouseY, delta);
Screen currentScreen = MinecraftClient.getInstance().currentScreen;
if (!(currentScreen instanceof RecipeViewingScreen) || !((RecipeViewingScreen) currentScreen).choosePageActivated)
- QUEUED_TOOLTIPS.stream().filter(Objects::nonNull).forEach(queuedTooltip -> renderTooltip(queuedTooltip.getText(), queuedTooltip.getX(), queuedTooltip.getY()));
+ QUEUED_TOOLTIPS.stream().filter(Objects::nonNull).forEach(this::renderTooltip);
QUEUED_TOOLTIPS.clear();
}
- public void renderTooltip(List<String> list_1, int int_1, int int_2) {
+ public void renderTooltip(QueuedTooltip tooltip) {
+ renderTooltip(tooltip.getText(), tooltip.getX(), tooltip.getY());
+ }
+
+ public void renderTooltip(List<String> lines, int mouseX, int mouseY) {
TextRenderer font = MinecraftClient.getInstance().textRenderer;
- if (!list_1.isEmpty()) {
+ if (!lines.isEmpty()) {
GlStateManager.disableRescaleNormal();
GuiLighting.disable();
GlStateManager.disableLighting();
- int int_3 = 0;
- for(String string_1 : list_1)
- if (font.getStringWidth(string_1) > int_3)
- int_3 = font.getStringWidth(string_1);
- int int_5 = int_1 + 12;
- int int_6 = int_2 - 12;
- int int_8 = 8;
- if (list_1.size() > 1)
- int_8 += 2 + (list_1.size() - 1) * 10;
- if (int_5 + int_3 > window.getScaledWidth())
- int_5 -= 28 + int_3;
- if (int_6 + int_8 + 6 > window.getScaledHeight())
- int_6 = window.getScaledHeight() - int_8 - 6;
+ int width = 0;
+ for(String line : lines)
+ if (font.getStringWidth(line) > width)
+ width = font.getStringWidth(line);
+ int height = lines.size() <= 1 ? 8 : lines.size() * 10;
+ int x = Math.max(mouseX + 12, 6);
+ int y = Math.min(mouseY - 12, window.getScaledHeight() - height - 6);
+ if (x + width > window.getScaledWidth())
+ x -= 24 + width;
+ if (y < 6)
+ y += 24;
this.blitOffset = 1000;
- this.fillGradient(int_5 - 3, int_6 - 4, int_5 + int_3 + 3, int_6 - 3, -267386864, -267386864);
- this.fillGradient(int_5 - 3, int_6 + int_8 + 3, int_5 + int_3 + 3, int_6 + int_8 + 4, -267386864, -267386864);
- this.fillGradient(int_5 - 3, int_6 - 3, int_5 + int_3 + 3, int_6 + int_8 + 3, -267386864, -267386864);
- this.fillGradient(int_5 - 4, int_6 - 3, int_5 - 3, int_6 + int_8 + 3, -267386864, -267386864);
- this.fillGradient(int_5 + int_3 + 3, int_6 - 3, int_5 + int_3 + 4, int_6 + int_8 + 3, -267386864, -267386864);
- this.fillGradient(int_5 - 3, int_6 - 3 + 1, int_5 - 3 + 1, int_6 + int_8 + 3 - 1, 1347420415, 1344798847);
- this.fillGradient(int_5 + int_3 + 2, int_6 - 3 + 1, int_5 + int_3 + 3, int_6 + int_8 + 3 - 1, 1347420415, 1344798847);
- this.fillGradient(int_5 - 3, int_6 - 3, int_5 + int_3 + 3, int_6 - 3 + 1, 1347420415, 1347420415);
- this.fillGradient(int_5 - 3, int_6 + int_8 + 2, int_5 + int_3 + 3, int_6 + int_8 + 3, 1344798847, 1344798847);
+ this.fillGradient(x - 3, y - 4, x + width + 3, y - 3, -267386864, -267386864);
+ this.fillGradient(x - 3, y + height + 3, x + width + 3, y + height + 4, -267386864, -267386864);
+ this.fillGradient(x - 3, y - 3, x + width + 3, y + height + 3, -267386864, -267386864);
+ this.fillGradient(x - 4, y - 3, x - 3, y + height + 3, -267386864, -267386864);
+ this.fillGradient(x + width + 3, y - 3, x + width + 4, y + height + 3, -267386864, -267386864);
+ this.fillGradient(x - 3, y - 3 + 1, x - 3 + 1, y + height + 3 - 1, 1347420415, 1344798847);
+ this.fillGradient(x + width + 2, y - 3 + 1, x + width + 3, y + height + 3 - 1, 1347420415, 1344798847);
+ this.fillGradient(x - 3, y - 3, x + width + 3, y - 3 + 1, 1347420415, 1347420415);
+ this.fillGradient(x - 3, y + height + 2, x + width + 3, y + height + 3, 1344798847, 1344798847);
- for(int int_12 = 0; int_12 < list_1.size(); ++int_12) {
+ int currentY = y;
+ for(int lineIndex = 0; lineIndex < lines.size(); lineIndex++) {
GlStateManager.disableDepthTest();
- font.drawWithShadow(list_1.get(int_12), (float) int_5, (float) int_6, -1);
+ font.drawWithShadow(lines.get(lineIndex), x, currentY, -1);
GlStateManager.enableDepthTest();
- if (int_12 == 0)
- int_6 += 2;
- int_6 += 10;
+ currentY += lineIndex == 0 ? 12 : 10;
}
this.blitOffset = 0;
GlStateManager.enableLighting();
@@ -420,9 +421,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra
}
private int getTotalPage() {
- if (itemListOverlay.getTotalSlotsPerPage() > 0)
- return MathHelper.ceil(itemListOverlay.getCurrentDisplayed().size() / itemListOverlay.getTotalSlotsPerPage());
- return 0;
+ return itemListOverlay.getTotalPage();
}
@Override
diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
index 5b8c319b9..0f467f723 100644
--- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
+++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
@@ -325,6 +325,7 @@ public class RecipeViewingScreen extends Screen {
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
GuiLighting.disable();
tabs.stream().filter(TabWidget::isSelected).forEach(tabWidget -> tabWidget.render(mouseX, mouseY, delta));
+ GuiLighting.disable();
ScreenHelper.getLastOverlay().render(mouseX, mouseY, delta);
ScreenHelper.getLastOverlay().lateRender(mouseX, mouseY, delta);
if (choosePageActivated) {
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java
index f65e6de56..be8e99d75 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java
@@ -12,10 +12,12 @@ import me.shedaniel.rei.client.ScreenHelper;
import me.shedaniel.rei.client.SearchArgument;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
+import net.minecraft.client.render.GuiLighting;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
+import net.minecraft.util.ActionResult;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.registry.Registry;
import org.apache.commons.lang3.StringUtils;
@@ -24,7 +26,6 @@ import java.awt.*;
import java.util.*;
import java.util.List;
import java.util.stream.Collectors;
-import java.util.stream.Stream;
public class ItemListOverlay extends Widget {
@@ -68,12 +69,13 @@ public class ItemListOverlay extends Widget {
return "ERROR";
}
- public int getTotalSlotsPerPage() {
+ public int getFullTotalSlotsPerPage() {
return width * height;
}
@Override
public void render(int int_1, int int_2, float float_1) {
+ GuiLighting.disable();
widgets.forEach(widget -> widget.render(int_1, int_2, float_1));
ClientPlayerEntity player = minecraft.player;
if (rectangle.contains(ClientUtils.getMouseLocation()) && ClientHelper.isCheating() && !player.inventory.getCursorStack().isEmpty() && minecraft.isInSingleplayer())
@@ -86,19 +88,24 @@ public class ItemListOverlay extends Widget {
this.widgets = Lists.newLinkedList();
calculateListSize(rectangle);
currentDisplayed = processSearchTerm(searchTerm, RoughlyEnoughItemsCore.getItemRegisterer().getItemList(), ScreenHelper.inventoryStacks);
- double startX = rectangle.getCenterX() - width * 9;
- double startY = rectangle.getCenterY() - height * 9;
+ int startX = (int) rectangle.getCenterX() - width * 9;
+ int startY = (int) rectangle.getCenterY() - height * 9;
this.listArea = new Rectangle((int) startX, (int) startY, width * 18, height * 18);
- for(int i = 0; i < getTotalSlotsPerPage(); i++) {
- int j = i + page * getTotalSlotsPerPage();
+ int fitSlotsPerPage = getTotalFitSlotsPerPage(listArea.x, listArea.y, listArea);
+ int j = page * fitSlotsPerPage;
+ for(int i = 0; i < getFullTotalSlotsPerPage(); i++) {
if (j >= currentDisplayed.size())
break;
- widgets.add(new ItemSlotWidget((int) (startX + (i % width) * 18), (int) (startY + MathHelper.floor(i / width) * 18), Collections.singletonList(currentDisplayed.get(j)), false, true, true) {
+ int x = startX + (i % width) * 18, y = startY + MathHelper.floor(i / width) * 18;
+ if (!canBeFit(x, y, listArea))
+ continue;
+ j++;
+ widgets.add(new ItemSlotWidget(x, y, Collections.singletonList(currentDisplayed.get(j)), false, true, true) {
@Override
- protected void drawToolTip(ItemStack itemStack, float delta) {
+ protected void queueTooltip(ItemStack itemStack, float delta) {
ClientPlayerEntity player = minecraft.player;
if (!ClientHelper.isCheating() || player.inventory.getCursorStack().isEmpty())
- super.drawToolTip(itemStack, delta);
+ super.queueTooltip(itemStack, delta);
}
@Override
@@ -126,6 +133,34 @@ public class ItemListOverlay extends Widget {
}
}
+ public int getTotalPage() {
+ int fitSlotsPerPage = getTotalFitSlotsPerPage(listArea.x, listArea.y, listArea);
+ if (fitSlotsPerPage > 0)
+ return MathHelper.ceil(getCurrentDisplayed().size() / fitSlotsPerPage);
+ return 0;
+ }
+
+ public int getTotalFitSlotsPerPage(int startX, int startY, Rectangle listArea) {
+ int slots = 0;
+ for(int i = 0; i < getFullTotalSlotsPerPage(); i++)
+ if (canBeFit(startX + (i % width) * 18, startY + MathHelper.floor(i / width) * 18, listArea))
+ slots++;
+ return slots;
+ }
+
+ public boolean canBeFit(int left, int top, Rectangle listArea) {
+ List<DisplayHelper.DisplayBoundsHandler> sortedBoundsHandlers = RoughlyEnoughItemsCore.getDisplayHelper().getSortedBoundsHandlers(minecraft.currentScreen.getClass());
+ ActionResult result = ActionResult.SUCCESS;
+ for(DisplayHelper.DisplayBoundsHandler sortedBoundsHandler : sortedBoundsHandlers) {
+ ActionResult fit = sortedBoundsHandler.canItemSlotWidgetFit(!RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel, left, top, minecraft.currentScreen, listArea);
+ if (fit != ActionResult.PASS) {
+ result = fit;
+ break;
+ }
+ }
+ return result == ActionResult.SUCCESS;
+ }
+
@Override
public boolean keyPressed(int int_1, int int_2, int int_3) {
for(Widget widget : widgets)
@@ -196,10 +231,10 @@ public class ItemListOverlay extends Widget {
}
private boolean filterItem(ItemStack itemStack, List<SearchArgument> arguments) {
- String mod = ClientHelper.getModFromItemStack(itemStack);
+ String mod = ClientHelper.getModFromItem(itemStack.getItem());
List<String> toolTipsList = tryGetItemStackToolTip(itemStack);
String toolTipsMixed = toolTipsList.stream().skip(1).collect(Collectors.joining()).toLowerCase();
- String allMixed = Stream.of(tryGetItemStackName(itemStack), toolTipsMixed).collect(Collectors.joining()).toLowerCase();
+ String allMixed = toolTipsList.stream().collect(Collectors.joining()).toLowerCase();
for(SearchArgument searchArgument : arguments.stream().filter(searchArgument -> !searchArgument.isInclude()).collect(Collectors.toList())) {
if (searchArgument.getArgumentType().equals(SearchArgument.ArgumentType.MOD))
if (mod.toLowerCase().contains(searchArgument.getText().toLowerCase()))
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 44895525e..58a93cefd 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
@@ -65,7 +65,8 @@ public class ItemSlotWidget extends HighlightableWidget {
minecraft.getTextureManager().bindTexture(RECIPE_GUI);
blit(this.x - 1, this.y - 1, 0, 222, 18, 18);
}
- if (drawHighlightedBackground && isHighlighted(mouseX, mouseY)) {
+ boolean highlighted = isHighlighted(mouseX, mouseY);
+ if (drawHighlightedBackground && highlighted) {
GlStateManager.disableLighting();
GlStateManager.disableDepthTest();
GlStateManager.colorMask(true, true, true, false);
@@ -75,7 +76,7 @@ public class ItemSlotWidget extends HighlightableWidget {
GlStateManager.enableDepthTest();
}
if (!itemStack.isEmpty()) {
- if (RoughlyEnoughItemsCore.getConfigManager().getConfig().aprilFoolsFish2019 && !isHighlighted(mouseX, mouseY))
+ if (RoughlyEnoughItemsCore.getConfigManager().getConfig().aprilFoolsFish2019 && !highlighted)
itemStack = Items.TROPICAL_FISH.getDefaultStack();
GuiLighting.enableForItems();
ItemRenderer itemRenderer = minecraft.getItemRenderer();
@@ -84,27 +85,31 @@ public class ItemSlotWidget extends HighlightableWidget {
itemRenderer.renderGuiItemOverlay(font, itemStack, x, y, getItemCountOverlay(itemStack));
itemRenderer.zOffset = 0.0F;
}
- if (!itemStack.isEmpty() && isHighlighted(mouseX, mouseY) && showToolTips)
- drawToolTip(itemStack, delta);
+ if (!itemStack.isEmpty() && highlighted && showToolTips)
+ queueTooltip(itemStack, delta);
}
- protected void drawToolTip(ItemStack itemStack, float delta) {
+ protected void queueTooltip(ItemStack itemStack, float delta) {
ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltip(itemStack)));
}
protected List<String> getTooltip(ItemStack itemStack) {
- final String modString = "§9§o" + ClientHelper.getModFromItemStack(itemStack);
+ final String modString = ClientHelper.getFormattedModFromItem(itemStack.getItem());
List<String> toolTip = Lists.newArrayList(ItemListOverlay.tryGetItemStackToolTip(itemStack));
toolTip.addAll(getExtraToolTips(itemStack));
+ boolean alreadyHasMod = false;
for(String s : Lists.newArrayList(toolTip))
- if (s.equalsIgnoreCase(modString))
- toolTip.remove(s);
- toolTip.add(modString);
+ if (s.equalsIgnoreCase(modString)) {
+ alreadyHasMod = true;
+ break;
+ }
+ if (!alreadyHasMod)
+ toolTip.add(modString);
return toolTip;
}
protected List<String> getExtraToolTips(ItemStack stack) {
- return Lists.newArrayList();
+ return Collections.emptyList();
}
protected String getItemCountOverlay(ItemStack currentStack) {
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 8d8300c00..96e805d8d 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java
@@ -5,7 +5,7 @@ import com.google.common.collect.Lists;
import me.shedaniel.cloth.api.ClientUtils;
import java.awt.*;
-import java.util.LinkedList;
+import java.util.Collections;
import java.util.List;
public class QueuedTooltip {
@@ -15,7 +15,7 @@ public class QueuedTooltip {
private QueuedTooltip(Point location, List<String> text) {
this.location = location;
- this.text = new LinkedList<>(text);
+ this.text = Collections.unmodifiableList(text);
}
public static QueuedTooltip create(Point location, List<String> text) {
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
index 7765a1d3f..b6f86a691 100644
--- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
+++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
@@ -28,6 +28,7 @@ import net.minecraft.recipe.cooking.SmeltingRecipe;
import net.minecraft.recipe.cooking.SmokingRecipe;
import net.minecraft.recipe.crafting.ShapedRecipe;
import net.minecraft.recipe.crafting.ShapelessRecipe;
+import net.minecraft.util.ActionResult;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
@@ -136,43 +137,50 @@ public class DefaultPlugin implements REIPlugin {
@Override
public void registerBounds(DisplayHelper displayHelper) {
- displayHelper.registerBoundsHandler(new DisplayHelper.DisplayBoundsHandler() {
+ displayHelper.registerBoundsHandler(new DisplayHelper.DisplayBoundsHandler<ContainerScreen>() {
@Override
public Class getBaseSupportedClass() {
return ContainerScreen.class;
}
@Override
- public Rectangle getLeftBounds(Object screen) {
- if (MinecraftClient.getInstance().player.getRecipeBook().isGuiOpen())
- return new Rectangle(2, 0, ScreenHelper.getLastContainerScreenHooks().rei_getContainerLeft() - 4 - 147 - 30, MinecraftClient.getInstance().window.getScaledHeight());
+ public Rectangle getLeftBounds(ContainerScreen screen) {
return new Rectangle(2, 0, ScreenHelper.getLastContainerScreenHooks().rei_getContainerLeft() - 4, MinecraftClient.getInstance().window.getScaledHeight());
}
@Override
- public Rectangle getRightBounds(Object screen) {
+ public Rectangle getRightBounds(ContainerScreen screen) {
int startX = ScreenHelper.getLastContainerScreenHooks().rei_getContainerLeft() + ScreenHelper.getLastContainerScreenHooks().rei_getContainerWidth() + 2;
return new Rectangle(startX, 0, MinecraftClient.getInstance().window.getScaledWidth() - startX - 2, MinecraftClient.getInstance().window.getScaledHeight());
}
@Override
+ public ActionResult canItemSlotWidgetFit(boolean isOnRightSide, int left, int top, ContainerScreen screen, Rectangle fullBounds) {
+ if (!isOnRightSide)
+ if (MinecraftClient.getInstance().player.getRecipeBook().isGuiOpen() && left + 18 > ScreenHelper.getLastContainerScreenHooks().rei_getContainerLeft() - 4 - 145 - 30)
+ if (top + 18 >= ScreenHelper.getLastContainerScreenHooks().rei_getContainerTop() && top <= ScreenHelper.getLastContainerScreenHooks().rei_getContainerTop() + ScreenHelper.getLastContainerScreenHooks().rei_getContainerHeight())
+ return ActionResult.FAIL;
+ return ActionResult.PASS;
+ }
+
+ @Override
public float getPriority() {
return -1.0f;
}
});
- displayHelper.registerBoundsHandler(new DisplayHelper.DisplayBoundsHandler() {
+ displayHelper.registerBoundsHandler(new DisplayHelper.DisplayBoundsHandler<RecipeViewingScreen>() {
@Override
public Class getBaseSupportedClass() {
return RecipeViewingScreen.class;
}
@Override
- public Rectangle getLeftBounds(Object screen) {
+ public Rectangle getLeftBounds(RecipeViewingScreen screen) {
return new Rectangle(2, 0, ((RecipeViewingScreen) screen).getBounds().x - 4, MinecraftClient.getInstance().window.getScaledHeight());
}
@Override
- public Rectangle getRightBounds(Object screen) {
+ public Rectangle getRightBounds(RecipeViewingScreen screen) {
int startX = ((RecipeViewingScreen) screen).getBounds().x + ((RecipeViewingScreen) screen).getBounds().width + 2;
return new Rectangle(startX, 0, MinecraftClient.getInstance().window.getScaledWidth() - startX - 2, MinecraftClient.getInstance().window.getScaledHeight());
}
@@ -182,19 +190,19 @@ public class DefaultPlugin implements REIPlugin {
return -1.0f;
}
});
- displayHelper.registerBoundsHandler(new DisplayHelper.DisplayBoundsHandler() {
+ displayHelper.registerBoundsHandler(new DisplayHelper.DisplayBoundsHandler<CreativePlayerInventoryScreen>() {
@Override
public Class getBaseSupportedClass() {
return CreativePlayerInventoryScreen.class;
}
@Override
- public Rectangle getLeftBounds(Object screen) {
+ public Rectangle getLeftBounds(CreativePlayerInventoryScreen screen) {
return new Rectangle(2, 0, ScreenHelper.getLastContainerScreenHooks().rei_getContainerLeft() - 2, MinecraftClient.getInstance().window.getScaledHeight());
}
@Override
- public Rectangle getRightBounds(Object screen) {
+ public Rectangle getRightBounds(CreativePlayerInventoryScreen screen) {
int startX = ScreenHelper.getLastContainerScreenHooks().rei_getContainerLeft() + ScreenHelper.getLastContainerScreenHooks().rei_getContainerWidth();
return new Rectangle(startX, 0, MinecraftClient.getInstance().window.getScaledWidth() - startX - 2, MinecraftClient.getInstance().window.getScaledHeight());
}
diff --git a/src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java b/src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java
index f72ca31b0..1fbbb021a 100644
--- a/src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java
+++ b/src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java
@@ -1,7 +1,6 @@
package me.shedaniel.rei.utils;
import me.shedaniel.cloth.api.ConfigScreenBuilder;
-import me.shedaniel.cloth.gui.ClothConfigScreen;
import me.shedaniel.cloth.gui.entries.BooleanListEntry;
import me.shedaniel.cloth.gui.entries.EnumListEntry;
import me.shedaniel.cloth.gui.entries.IntegerSliderEntry;
@@ -15,11 +14,8 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.Screen;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.resource.language.I18n;
-import net.minecraft.util.Pair;
import java.io.IOException;
-import java.util.List;
-import java.util.Map;
public class ClothScreenRegistry {
@@ -69,10 +65,4 @@ public class ClothScreenRegistry {
}));
}
- private static class SelfSavedConfig extends ClothConfigScreen.Builder.SavedConfig {
- protected SelfSavedConfig(Map<String, List<Pair<String, Object>>> map) {
- super(map);
- }
- }
-
}