diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-06-08 22:12:18 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-06-08 22:12:18 +0800 |
| commit | 52ec5dcd865e6c6eeeb686c4ebe40b8580e90407 (patch) | |
| tree | 4b5bf2e5dfade9b1267359efce432035be499464 | |
| parent | 95195247b173215c6bb48654ac97f78b1dd28cd3 (diff) | |
| parent | a8dd27ef4e946c879a2e3e5e163683a41896e78f (diff) | |
| download | RoughlyEnoughItems-52ec5dcd865e6c6eeeb686c4ebe40b8580e90407.tar.gz RoughlyEnoughItems-52ec5dcd865e6c6eeeb686c4ebe40b8580e90407.tar.bz2 RoughlyEnoughItems-52ec5dcd865e6c6eeeb686c4ebe40b8580e90407.zip | |
Merge remote-tracking branch 'origin/8.x-1.18.2' into 9.x-1.19
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; - } - |
