aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java33
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java5
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/clean/InputCleanHandler.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/RecipeBookGridMenuInfo.java6
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimplePlayerInventoryMenuInfo.java18
-rw-r--r--forge/build.gradle12
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DelegateWidgetWithTranslate.java31
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayCompositeWidget.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayedEntryWidget.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java10
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListWidget.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesListWidget.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayEntry.java30
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java28
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/EntryStacksRegionWidget.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionEntryWidget.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java97
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/logging/FilteringLogger.java64
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java12
24 files changed, 263 insertions, 121 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java
index 1e88199b4..3c753e747 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java
@@ -24,8 +24,11 @@
package me.shedaniel.rei.api.client.gui.widgets;
import com.mojang.blaze3d.vertex.PoseStack;
+import com.mojang.math.Matrix4f;
+import com.mojang.math.Vector4f;
import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;
+import me.shedaniel.math.impl.PointHelper;
import me.shedaniel.rei.api.client.gui.AbstractContainerEventHandler;
import me.shedaniel.rei.api.client.gui.Renderer;
import net.fabricmc.api.EnvType;
@@ -33,6 +36,8 @@ import net.fabricmc.api.Environment;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
+import java.util.Stack;
+
/**
* The base class for a screen widget
*
@@ -49,6 +54,34 @@ public abstract class Widget extends AbstractContainerEventHandler implements ne
* The font for rendering text
*/
protected final Font font = minecraft.font;
+ private static final Stack<Point> mouseStack = new Stack<>();
+
+ public static Point mouse() {
+ return mouseStack.empty() ? PointHelper.ofMouse() : mouseStack.peek();
+ }
+
+ public static Point pushMouse(Point mouse) {
+ return mouseStack.push(mouse);
+ }
+
+ public static Point popMouse() {
+ return mouseStack.pop();
+ }
+
+ public static Point translateMouse(PoseStack poses) {
+ return translateMouse(poses.last().pose());
+ }
+
+ public static Point translateMouse(double x, double y, double z) {
+ return translateMouse(Matrix4f.createTranslateMatrix((float) x, (float) y, (float) z));
+ }
+
+ public static Point translateMouse(Matrix4f pose) {
+ Point mouse = mouse();
+ Vector4f mouseVec = new Vector4f(mouse.x, mouse.y, 0, 1);
+ mouseVec.transform(pose);
+ return pushMouse(mouse);
+ }
public int getZ() {
return this.getBlitOffset();
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java
index bb0dc58c4..919228d16 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java
@@ -231,6 +231,10 @@ public interface EntryStack<T> extends TextRepresentable, Renderer {
@Environment(EnvType.CLIENT)
public static Settings<Function<EntryStack<?>, List<Component>>> TOOLTIP_APPEND_EXTRA;
@Environment(EnvType.CLIENT)
+ @Deprecated
+ @ApiStatus.Internal
+ public static Settings<Boolean> FLUID_AMOUNT_VISIBLE;
+ @Environment(EnvType.CLIENT)
public static Settings<Float> FLUID_RENDER_RATIO;
static {
@@ -240,6 +244,7 @@ public interface EntryStack<T> extends TextRepresentable, Renderer {
CONTAINING_NS = new Settings<>((stack, ns) -> ns);
TOOLTIP_APPEND_EXTRA = new Settings<>(stack -> Collections.emptyList());
FLUID_RENDER_RATIO = new Settings<>(1.0F);
+ FLUID_AMOUNT_VISIBLE = new Settings<>(true);
});
}
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/clean/InputCleanHandler.java b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/clean/InputCleanHandler.java
index 38fac60ce..934893518 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/clean/InputCleanHandler.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/clean/InputCleanHandler.java
@@ -43,7 +43,7 @@ public interface InputCleanHandler<T extends AbstractContainerMenu, D extends Di
static <T extends AbstractContainerMenu> void returnSlotsToPlayerInventory(MenuInfoContext<T, ?, ?> context, DumpHandler<T, ?> dumpHandler, SlotAccessor slotAccessor) {
ItemStack stackToReturn = slotAccessor.getItemStack();
if (!stackToReturn.isEmpty()) {
- for (; stackToReturn.getCount() > 0; slotAccessor.takeStack(1)) {
+ for (; !(stackToReturn = slotAccessor.getItemStack()).isEmpty(); slotAccessor.takeStack(1)) {
ItemStack stackToInsert = stackToReturn.copy();
stackToInsert.setCount(1);
if (!dumpGenericsFtw(context, dumpHandler, stackToInsert)) {
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/RecipeBookGridMenuInfo.java b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/RecipeBookGridMenuInfo.java
index 30ba221fc..9455c621c 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/RecipeBookGridMenuInfo.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/RecipeBookGridMenuInfo.java
@@ -25,6 +25,8 @@ package me.shedaniel.rei.api.common.transfer.info.simple;
import me.shedaniel.rei.api.common.display.SimpleGridMenuDisplay;
import me.shedaniel.rei.api.common.transfer.RecipeFinder;
+import me.shedaniel.rei.api.common.transfer.info.MenuInfoContext;
+import net.minecraft.world.entity.player.StackedContents;
import net.minecraft.world.inventory.RecipeBookMenu;
import net.minecraft.world.item.ItemStack;
@@ -56,8 +58,8 @@ public class RecipeBookGridMenuInfo<T extends RecipeBookMenu<?>, D extends Simpl
}
@Override
- public void populateRecipeFinder(T menu, RecipeFinder finder) {
- menu.fillCraftSlotsStackedContents(new net.minecraft.world.entity.player.StackedContents() {
+ public void populateRecipeFinder(MenuInfoContext<T, ?, D> context, RecipeFinder finder) {
+ context.getMenu().fillCraftSlotsStackedContents(new StackedContents() {
@Override
public void accountSimpleStack(ItemStack stack) {
finder.addNormalItem(stack);
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimplePlayerInventoryMenuInfo.java b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimplePlayerInventoryMenuInfo.java
index 246bff88f..d6511b521 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimplePlayerInventoryMenuInfo.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimplePlayerInventoryMenuInfo.java
@@ -23,7 +23,6 @@
package me.shedaniel.rei.api.common.transfer.info.simple;
-import com.google.common.base.MoreObjects;
import me.shedaniel.rei.api.common.display.Display;
import me.shedaniel.rei.api.common.transfer.RecipeFinder;
import me.shedaniel.rei.api.common.transfer.RecipeFinderPopulator;
@@ -53,7 +52,7 @@ public interface SimplePlayerInventoryMenuInfo<T extends AbstractContainerMenu,
for (SlotAccessor inventoryStack : getInventorySlots(context)) {
finder.addNormalItem(inventoryStack.getItemStack());
}
- populateRecipeFinder(context.getMenu(), finder);
+ populateRecipeFinder(context, finder);
};
}
@@ -76,11 +75,10 @@ public interface SimplePlayerInventoryMenuInfo<T extends AbstractContainerMenu,
default DumpHandler<T, D> getDumpHandler() {
return (context, stackToDump) -> {
Iterable<SlotAccessor> inventoryStacks = getInventorySlots(context);
+ SlotAccessor occupiedSlotWithRoomForStack = DumpHandler.getOccupiedSlotWithRoomForStack(stackToDump, inventoryStacks);
+ SlotAccessor emptySlot = DumpHandler.getEmptySlot(inventoryStacks);
- SlotAccessor nextSlot = MoreObjects.firstNonNull(
- DumpHandler.getOccupiedSlotWithRoomForStack(stackToDump, inventoryStacks),
- DumpHandler.getEmptySlot(inventoryStacks)
- );
+ SlotAccessor nextSlot = occupiedSlotWithRoomForStack == null ? emptySlot : occupiedSlotWithRoomForStack;
if (nextSlot == null) {
return false;
}
@@ -99,8 +97,16 @@ public interface SimplePlayerInventoryMenuInfo<T extends AbstractContainerMenu,
.collect(Collectors.toList());
}
+ @Deprecated(forRemoval = true)
default void populateRecipeFinder(T menu, RecipeFinder finder) {}
+ default void populateRecipeFinder(MenuInfoContext<T, ?, D> context, RecipeFinder finder) {
+ for (SlotAccessor inventoryStack : getInputSlots(context)) {
+ finder.addNormalItem(inventoryStack.getItemStack());
+ }
+ populateRecipeFinder(context.getMenu(), finder);
+ }
+
/**
* Used to forcefully clear the input slots, if things did not dump to the player's inventory successfully.
* The default implementation here is to void the items, as with vanilla,
diff --git a/forge/build.gradle b/forge/build.gradle
index 1294d5347..5da03eef6 100644
--- a/forge/build.gradle
+++ b/forge/build.gradle
@@ -96,8 +96,8 @@ dependencies {
// modRuntime("curse.maven:geckolib-388172:3627502")
// modRuntime("curse.maven:refined-storage-243076:3623324")
// modRuntime("appeng:appliedenergistics2:10.0.1")
- // modRuntime("curse.maven:tcon-74072:3273213")
- // modRuntime("curse.maven:mantle-74924:3634761")
+ modRuntime("curse.maven:tcon-74072:3784732")
+ modRuntime("curse.maven:mantle-74924:3784500")
// modRuntime("curse.maven:jer-240630:3575590")
// modRuntime("curse.maven:jep-417645:3550303")
// modRuntime("curse.maven:simple-storage-network-268495:3594529")
@@ -113,9 +113,9 @@ dependencies {
// modRuntime("curse.maven:token-enchanter-444421:3449483")
// modRuntime("curse.maven:silent-lib-242998:3400030")
// modRuntime("curse.maven:resourceful-bees-384508:3485315")
- // modRuntime("curse.maven:thermal-expansion-69163:3404884")
- // modRuntime("curse.maven:thermal-foundation-222880:3412300")
- // modRuntime("curse.maven:cofh-core-69162:3407019")
+ modRuntime("curse.maven:thermal-expansion-69163:3803489")
+ modRuntime("curse.maven:thermal-foundation-222880:3803495")
+ modRuntime("curse.maven:cofh-core-69162:3803484")
// modRuntime("curse.maven:advanced-peripherals-431725:3525665")
// modRuntime("curse.maven:cc-tweaked-282001:3434680")
// modRuntime("curse.maven:ender-storage-245174:3361748")
@@ -130,7 +130,7 @@ dependencies {
// modRuntime("curse.maven:integrated-dynamics-236307:3631804")
// modRuntime("curse.maven:common-capabilities-247007:3614900")
// modRuntime("curse.maven:evilcraft-74610:3795956")
- modRuntime("curse.maven:cyclops-core-236307:3778682")
+ // modRuntime("curse.maven:cyclops-core-236307:3778682")
// modRuntime("curse.maven:elemental-craft-395158:3593428")
// modRuntime("curse.maven:datapack-anvil-432817:3569515")
// modRuntime("curse.maven:assemblylinemachines-388282:3623609")
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
index d1be18c87..8546ddb3e 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
@@ -53,10 +53,7 @@ import me.shedaniel.rei.impl.common.entry.comparison.NbtHasherProviderImpl;
import me.shedaniel.rei.impl.common.entry.settings.EntrySettingsAdapterRegistryImpl;
import me.shedaniel.rei.impl.common.entry.type.EntryTypeRegistryImpl;
import me.shedaniel.rei.impl.common.fluid.FluidSupportProviderImpl;
-import me.shedaniel.rei.impl.common.logging.FileLogger;
-import me.shedaniel.rei.impl.common.logging.Log4JLogger;
-import me.shedaniel.rei.impl.common.logging.MultiLogger;
-import me.shedaniel.rei.impl.common.logging.TransformingLogger;
+import me.shedaniel.rei.impl.common.logging.*;
import me.shedaniel.rei.impl.common.logging.performance.PerformanceLogger;
import me.shedaniel.rei.impl.common.logging.performance.PerformanceLoggerImpl;
import me.shedaniel.rei.impl.common.plugins.PluginManagerImpl;
@@ -66,6 +63,7 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.PackType;
import net.minecraft.util.Unit;
import org.apache.commons.lang3.mutable.MutableLong;
+import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.jetbrains.annotations.ApiStatus;
@@ -77,6 +75,7 @@ public class RoughlyEnoughItemsCore {
@ApiStatus.Internal
public static final InternalLogger LOGGER = new TransformingLogger(new MultiLogger(ImmutableList.of(
new FileLogger(Platform.getGameFolder().resolve("logs/rei.log")),
+ new FilteringLogger(new FileLogger(Platform.getGameFolder().resolve("logs/rei-issues.log")), Level.WARN),
new Log4JLogger(LogManager.getFormatterLogger("REI"))
)), message -> "[REI] " + message);
public static final PerformanceLogger PERFORMANCE_LOGGER = new PerformanceLoggerImpl();
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
index 2825a2ffb..19d382455 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
@@ -105,7 +105,7 @@ public class RoughlyEnoughItemsNetwork {
try {
boolean shift = packetByteBuf.readBoolean();
try {
- InputSlotCrafter<AbstractContainerMenu, Container, Display> crafter = InputSlotCrafter.start(category, container, player, packetByteBuf.readNbt(), shift);
+ InputSlotCrafter<AbstractContainerMenu, Container, Display> crafter = InputSlotCrafter.start(category, container, player, packetByteBuf.readAnySizeNbt(), shift);
} catch (InputSlotCrafter.NotEnoughMaterialsException e) {
if (!(container instanceof RecipeBookMenu)) {
return;
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DelegateWidgetWithTranslate.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DelegateWidgetWithTranslate.java
index 5867f4232..c03cd3fb3 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DelegateWidgetWithTranslate.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DelegateWidgetWithTranslate.java
@@ -27,6 +27,7 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Matrix4f;
import com.mojang.math.Vector4f;
import me.shedaniel.rei.api.client.gui.widgets.DelegateWidget;
+import me.shedaniel.rei.api.client.gui.widgets.Widget;
import me.shedaniel.rei.api.client.gui.widgets.WidgetWithBounds;
import java.util.function.Supplier;
@@ -83,4 +84,34 @@ public class DelegateWidgetWithTranslate extends DelegateWidget {
Vector4f mouse = transformMouse(d, e);
return super.mouseScrolled(mouse.x(), mouse.y(), f);
}
+
+ @Override
+ public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
+ try {
+ Widget.translateMouse(translate.get());
+ return super.keyPressed(keyCode, scanCode, modifiers);
+ } finally {
+ Widget.popMouse();
+ }
+ }
+
+ @Override
+ public boolean keyReleased(int keyCode, int scanCode, int modifiers) {
+ try {
+ Widget.translateMouse(translate.get());
+ return super.keyReleased(keyCode, scanCode, modifiers);
+ } finally {
+ Widget.popMouse();
+ }
+ }
+
+ @Override
+ public boolean charTyped(char character, int modifiers) {
+ try {
+ Widget.translateMouse(translate.get());
+ return super.charTyped(character, modifiers);
+ } finally {
+ Widget.popMouse();
+ }
+ }
} \ No newline at end of file
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayCompositeWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayCompositeWidget.java
index 1a02fbae3..6f65bc525 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayCompositeWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayCompositeWidget.java
@@ -83,7 +83,7 @@ public class DisplayCompositeWidget extends DelegateWidgetWithBounds implements
return true;
}
- if (ConfigObject.getInstance().isFavoritesEnabled() && containsMouse(PointHelper.ofMouse())) {
+ if (ConfigObject.getInstance().isFavoritesEnabled() && containsMouse(mouse())) {
if (ConfigObject.getInstance().getFavoriteKeyCode().matchesKey(keyCode, scanCode)) {
FavoritesListWidget favoritesListWidget = ScreenOverlayImpl.getFavoritesListWidget();
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayedEntryWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayedEntryWidget.java
index 58f46abaf..bd15c0da5 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayedEntryWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayedEntryWidget.java
@@ -61,7 +61,7 @@ public abstract class DisplayedEntryWidget extends EntryWidget {
@Override
protected boolean doAction(double mouseX, double mouseY, int button) {
- if (ClientHelper.getInstance().isCheating() && !(Minecraft.getInstance().screen instanceof DisplayScreen)) {
+ if (ClientHelper.getInstance().isCheating() && !Screen.hasControlDown() && !(Minecraft.getInstance().screen instanceof DisplayScreen)) {
EntryStack<?> entry = getCurrentEntry().copy();
if (!entry.isEmpty()) {
if (entry.getType() != VanillaEntryTypes.ITEM) {
@@ -88,7 +88,7 @@ public abstract class DisplayedEntryWidget extends EntryWidget {
public boolean cancelDeleteItems(EntryStack<?> stack) {
if (!interactable || !ConfigObject.getInstance().isGrabbingItems())
return super.cancelDeleteItems(stack);
- if (ClientHelper.getInstance().isCheating() && !(Minecraft.getInstance().screen instanceof DisplayScreen)) {
+ if (ClientHelper.getInstance().isCheating() && !Screen.hasControlDown() && !(Minecraft.getInstance().screen instanceof DisplayScreen)) {
EntryStack<?> entry = getCurrentEntry().copy();
if (!entry.isEmpty()) {
if (entry.getType() != VanillaEntryTypes.ITEM) {
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java
index 5122cc9c2..219c02932 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java
@@ -418,7 +418,7 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget {
public Tooltip getCurrentTooltip(TooltipContext context) {
Tooltip tooltip = getCurrentEntry().getTooltip(context);
- if (tooltip != null && !ClientHelper.getInstance().isCheating() && getTransferHandler() != null
+ if (tooltip != null && getTransferHandler() != null
&& !(Minecraft.getInstance().screen instanceof DisplayScreen)) {
tooltip.add(Component.translatable("text.auto_craft.move_items.tooltip").withStyle(ChatFormatting.YELLOW));
}
@@ -487,7 +487,7 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget {
}
protected boolean doAction(double mouseX, double mouseY, int button) {
- if (interactableFavorites && ConfigObject.getInstance().isFavoritesEnabled() && containsMouse(PointHelper.ofMouse()) && !getCurrentEntry().isEmpty()) {
+ if (interactableFavorites && ConfigObject.getInstance().isFavoritesEnabled() && !getCurrentEntry().isEmpty()) {
ModifierKeyCode keyCode = ConfigObject.getInstance().getFavoriteKeyCode();
if (keyCode.matchesMouse(button)) {
FavoriteEntry favoriteEntry = asFavoriteEntry();
@@ -507,7 +507,7 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget {
}
}
- if (!ClientHelper.getInstance().isCheating() && !(Minecraft.getInstance().screen instanceof DisplayScreen) && Screen.hasControlDown()) {
+ if (!(Minecraft.getInstance().screen instanceof DisplayScreen) && Screen.hasControlDown()) {
try {
TransferHandler handler = getTransferHandler();
@@ -561,7 +561,7 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget {
@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
- if (containsMouse(PointHelper.ofMouse())) {
+ if (containsMouse(mouse())) {
return keyPressedIgnoreContains(keyCode, scanCode, modifiers);
}
@@ -571,7 +571,7 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget {
public boolean keyPressedIgnoreContains(int keyCode, int scanCode, int modifiers) {
if (!interactable) return false;
- if (interactableFavorites && ConfigObject.getInstance().isFavoritesEnabled() && containsMouse(PointHelper.ofMouse()) && !getCurrentEntry().isEmpty()) {
+ if (interactableFavorites && ConfigObject.getInstance().isFavoritesEnabled() && !getCurrentEntry().isEmpty()) {
if (ConfigObject.getInstance().getFavoriteKeyCode().matchesKey(keyCode, scanCode)) {
FavoriteEntry favoriteEntry = asFavoriteEntry();
if (favoriteEntry != null) {
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget.java
index aa9656cc0..8f3d79114 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget.java
@@ -407,7 +407,7 @@ public class TextFieldWidget extends WidgetWithBounds implements TickableWidget,
public void renderBorder(PoseStack matrices) {
if (this.hasBorder()) {
- if (containsMouse(PointHelper.ofMouse()) || focused)
+ if (containsMouse(mouse()) || focused)
fill(matrices, this.bounds.x - 1, this.bounds.y - 1, this.bounds.x + this.bounds.width + 1, this.bounds.y + this.bounds.height + 1, -1);
else
fill(matrices, this.bounds.x - 1, this.bounds.y - 1, this.bounds.x + this.bounds.width + 1, this.bounds.y + this.bounds.height + 1, -6250336);
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListWidget.java
index 3e16da5c5..7b8356bcb 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListWidget.java
@@ -353,7 +353,7 @@ public class EntryListWidget extends WidgetWithBounds implements OverlayListWidg
@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
- if (containsChecked(PointHelper.ofMouse(), false))
+ if (containsChecked(mouse(), false))
for (Widget widget : children)
if (widget.keyPressed(keyCode, scanCode, modifiers))
return true;
@@ -497,7 +497,7 @@ public class EntryListWidget extends WidgetWithBounds implements OverlayListWidg
@Override
public EntryStack<?> getFocusedStack() {
- Point mouse = PointHelper.ofMouse();
+ Point mouse = mouse();
if (containsChecked(mouse, false)) {
for (EntryListStackEntry entry : entries) {
EntryStack<?> currentEntry = entry.getCurrentEntry();
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesListWidget.java
index 0c19e7bff..dc486b3ac 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesListWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesListWidget.java
@@ -155,7 +155,7 @@ public class FavoritesListWidget extends WidgetWithBounds implements DraggableCo
@Override
public EntryStack<?> getFocusedStack() {
- Point mouse = PointHelper.ofMouse();
+ Point mouse = mouse();
EntryStack<?> stack = region.getFocusedStack();
if (stack != null && !stack.isEmpty()) return stack;
stack = systemRegion.getFocusedStack();
@@ -264,7 +264,7 @@ public class FavoritesListWidget extends WidgetWithBounds implements DraggableCo
@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
- if (containsMouse(PointHelper.ofMouse()))
+ if (containsMouse(mouse()))
for (Widget widget : children())
if (widget.keyPressed(keyCode, scanCode, modifiers))
return true;
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayEntry.java
index 1a9fcd097..d3a457716 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayEntry.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayEntry.java
@@ -160,13 +160,26 @@ public class DisplayEntry extends WidgetWithBounds {
if (result.hasApplicable) {
plusButton.setText(Component.literal("+"));
plusButton.render(poses, Math.round(mouse.x()), Math.round(mouse.y()), delta);
+ poses.popPose();
if (plusButton.containsMouse(Math.round(mouse.x()), Math.round(mouse.y()))) {
result.tooltipRenderer.accept(new Point(mouseX, mouseY), Tooltip::queue);
+
+ if (result.renderer != null) {
+ poses.pushPose();
+ if (!stable || !target.equals(bounds)) {
+ poses.translate(0, 0, 600);
+ }
+ poses.translate(xOffset(), yOffset(), 0);
+ poses.scale(xScale(), yScale(), 1.0F);
+
+ result.renderer.render(poses, mouseX, mouseY, delta, widgets.get(), getBounds(), display);
+ poses.popPose();
+ }
}
+ } else {
+ poses.popPose();
}
-
- poses.popPose();
}
}
@@ -210,18 +223,15 @@ public class DisplayEntry extends WidgetWithBounds {
@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
- for (Widget widget : widgets.get()) {
- if (widget instanceof EntryWidget) {
- double mouseX = PointHelper.getMouseFloatingX(), mouseY = PointHelper.getMouseFloatingY();
- if (widget.containsMouse(transformMouseX(mouseX), transformMouseY(mouseY))
- && ((EntryWidget) widget).keyPressedIgnoreContains(keyCode, scanCode, modifiers)) {
- return true;
- }
- } else {
+ try {
+ Widget.pushMouse(new Point(transformMouseX(mouse().x), transformMouseY(mouse().y)));
+ for (Widget widget : widgets.get()) {
if (widget.keyPressed(keyCode, scanCode, modifiers)) {
return true;
}
}
+ } finally {
+ Widget.popMouse();
}
return super.keyPressed(keyCode, scanCode, modifiers);
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java
index 1fd5f0c46..307631c62 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java
@@ -248,10 +248,10 @@ public class DisplayHistoryWidget extends WidgetWithBounds implements DraggableC
}
}
- scroll.setTo(scroll.target() + ClothConfigInitializer.getScrollStep() * -2 * amount, ClothConfigInitializer.getScrollDuration());
+ scroll.setTo(scroll.target() + ClothConfigInitializer.getScrollStep() * amount * (getBounds().getWidth() / -50.0), ClothConfigInitializer.getScrollDuration());<