From 1d0a4480f881350cef45f0f1f76f48cd293a7db8 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Fri, 27 May 2022 20:22:53 +0800 Subject: Fix clicking pinned JEI slots --- .../gui/widget/DelegateWidgetWithTranslate.java | 31 ++++++++++++++++++++++ .../client/gui/widget/DisplayCompositeWidget.java | 2 +- .../rei/impl/client/gui/widget/EntryWidget.java | 6 ++--- .../gui/widget/basewidgets/TextFieldWidget.java | 2 +- .../gui/widget/entrylist/EntryListWidget.java | 4 +-- .../gui/widget/favorites/FavoritesListWidget.java | 4 +-- .../gui/widget/favorites/history/DisplayEntry.java | 13 ++++----- .../gui/widget/region/EntryStacksRegionWidget.java | 5 ++-- 8 files changed, 47 insertions(+), 20 deletions(-) (limited to 'runtime/src/main/java/me/shedaniel/rei/impl') 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/EntryWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java index 746324a33..ebb2a87b8 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 @@ -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(); @@ -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 ce35d9c07..ff338307b 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 @@ -354,7 +354,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; @@ -498,7 +498,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 35beb1432..e21d81e3f 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 @@ -210,18 +210,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.translateMouse(xOffset, 0, 0); + 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/region/EntryStacksRegionWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/EntryStacksRegionWidget.java index 6fecb94c3..57c80090c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/EntryStacksRegionWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/EntryStacksRegionWidget.java @@ -34,7 +34,6 @@ import me.shedaniel.clothconfig2.api.scroll.ScrollingContainer; import me.shedaniel.math.FloatingPoint; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; -import me.shedaniel.math.impl.PointHelper; import me.shedaniel.rei.api.client.REIRuntime; import me.shedaniel.rei.api.client.config.ConfigObject; import me.shedaniel.rei.api.client.entry.region.RegionEntry; @@ -170,7 +169,7 @@ public class EntryStacksRegionWidget> extends WidgetWit @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; @@ -191,7 +190,7 @@ public class EntryStacksRegionWidget> extends WidgetWit } public EntryStack getFocusedStack() { - Point mouse = PointHelper.ofMouse(); + Point mouse = mouse(); if (innerBounds.contains(mouse)) { for (RealRegionEntry entry : entries.values()) { if (entry.getWidget().containsMouse(mouse)) { -- cgit From 0e6afb30a19e9058b79202b7309d4b9c1d797754 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 28 May 2022 00:28:25 +0800 Subject: Fix #861 --- .../shedaniel/rei/impl/client/gui/widget/region/RegionEntryWidget.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'runtime/src/main/java/me/shedaniel/rei/impl') diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionEntryWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionEntryWidget.java index 436ce315c..338f2a6d1 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionEntryWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionEntryWidget.java @@ -137,7 +137,7 @@ public class RegionEntryWidget> extends DisplayedEntryW @Override protected boolean doAction(double mouseX, double mouseY, int button) { - return entry.getEntry().doAction(button); + return entry.getEntry().doAction(button) || super.doAction(mouseX, mouseY, button); } public RealRegionEntry getEntry() { -- cgit From 0320403c44554b609bf87876b103e02fd84c7a1b Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 28 May 2022 16:43:53 +0800 Subject: Fix CME in parallel registration for JEI recipes --- .../registry/display/DisplayRegistryImpl.java | 2 +- .../rei/impl/common/logging/FilteringLogger.java | 64 ++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 runtime/src/main/java/me/shedaniel/rei/impl/common/logging/FilteringLogger.java (limited to 'runtime/src/main/java/me/shedaniel/rei/impl') diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java index 3f4c96bc2..73bf3122c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java @@ -287,7 +287,7 @@ public class DisplayRegistryImpl extends RecipeManagerContextImpl Date: Sat, 28 May 2022 17:20:40 +0800 Subject: Fix tinkers transfer --- .../shedaniel/rei/impl/client/view/ViewsImpl.java | 97 ++++++++++++---------- 1 file changed, 51 insertions(+), 46 deletions(-) (limited to 'runtime/src/main/java/me/shedaniel/rei/impl') diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java index 57fb1f077..8b1f60edc 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java @@ -28,6 +28,7 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import it.unimi.dsi.fastutil.longs.Long2LongMap; +import it.unimi.dsi.fastutil.longs.Long2LongMaps; import it.unimi.dsi.fastutil.longs.Long2LongOpenHashMap; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.client.config.ConfigObject; @@ -375,60 +376,64 @@ public class ViewsImpl implements Views { List displays = entry.getValue(); for (Display display : displays) { - MenuInfo info = menu != null ? - MenuInfoRegistry.getInstance().getClient(display, context, menu) - : null; - - if (onlyIncludeHasMenu && info == null) { - continue; - } - - Iterable inputSlots = info != null ? info.getInputSlots(context.withDisplay(display)) : Collections.emptySet(); - int slotsCraftable = 0; - boolean containsNonEmpty = false; - List requiredInput = display.getRequiredEntries(); - Long2LongMap invCount = new Long2LongOpenHashMap(CraftableFilter.INSTANCE.getInvStacks()); - for (SlotAccessor inputSlot : inputSlots) { - ItemStack stack = inputSlot.getItemStack(); + try { + MenuInfo info = menu != null ? + MenuInfoRegistry.getInstance().getClient(display, context, menu) + : null; - EntryDefinition definition; - try { - definition = VanillaEntryTypes.ITEM.getDefinition(); - } catch (NullPointerException e) { - break; + if (onlyIncludeHasMenu && info == null) { + continue; } - if (!stack.isEmpty()) { - long hash = definition.hash(null, stack, ComparisonContext.FUZZY); - long newCount = invCount.get(hash) + Math.max(0, stack.getCount()); - invCount.put(hash, newCount); - } - } - for (EntryIngredient slot : requiredInput) { - if (slot.isEmpty()) { - slotsCraftable++; - continue; + Iterable inputSlots = info != null ? Iterables.concat(info.getInputSlots(context.withDisplay(display)), info.getInventorySlots(context.withDisplay(display))) : Collections.emptySet(); + int slotsCraftable = 0; + boolean containsNonEmpty = false; + List requiredInput = display.getRequiredEntries(); + Long2LongMap invCount = new Long2LongOpenHashMap(info == null ? CraftableFilter.INSTANCE.getInvStacks() : Long2LongMaps.EMPTY_MAP); + for (SlotAccessor inputSlot : inputSlots) { + ItemStack stack = inputSlot.getItemStack(); + + EntryDefinition definition; + try { + definition = VanillaEntryTypes.ITEM.getDefinition(); + } catch (NullPointerException e) { + break; + } + + if (!stack.isEmpty()) { + long hash = definition.hash(null, stack, ComparisonContext.FUZZY); + long newCount = invCount.get(hash) + Math.max(0, stack.getCount()); + invCount.put(hash, newCount); + } } - for (EntryStack slotPossible : slot) { - if (slotPossible.getType() != VanillaEntryTypes.ITEM) continue; - ItemStack stack = slotPossible.castValue(); - long hashFuzzy = EntryStacks.hashFuzzy(slotPossible); - long availableAmount = invCount.get(hashFuzzy); - if (availableAmount >= stack.getCount()) { - invCount.put(hashFuzzy, availableAmount - stack.getCount()); - containsNonEmpty = true; + for (EntryIngredient slot : requiredInput) { + if (slot.isEmpty()) { slotsCraftable++; - break; + continue; + } + for (EntryStack slotPossible : slot) { + if (slotPossible.getType() != VanillaEntryTypes.ITEM) continue; + ItemStack stack = slotPossible.castValue(); + long hashFuzzy = EntryStacks.hashFuzzy(slotPossible); + long availableAmount = invCount.get(hashFuzzy); + if (availableAmount >= stack.getCount()) { + invCount.put(hashFuzzy, availableAmount - stack.getCount()); + containsNonEmpty = true; + slotsCraftable++; + break; + } } } - } - if (slotsCraftable == display.getRequiredEntries().size() && containsNonEmpty) { - if (info != null && !onlyIncludeHasMenu) { - onlyIncludeHasMenu = true; - craftables.clear(); + if (slotsCraftable == display.getRequiredEntries().size() && containsNonEmpty) { + if (info != null && !onlyIncludeHasMenu) { + onlyIncludeHasMenu = true; + craftables.clear(); + } + + display.getOutputEntries().stream().flatMap(Collection::stream).collect(Collectors.toCollection(() -> craftables)); } - - display.getOutputEntries().stream().flatMap(Collection::stream).collect(Collectors.toCollection(() -> craftables)); + } catch (Throwable t) { + RoughlyEnoughItemsCore.LOGGER.warn("Error while checking if display is craftable", t); } } } -- cgit From 56b60c82c3566e471187bbe8b4e93fe4a3fad05f Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 28 May 2022 17:25:12 +0800 Subject: Allow ctrl+click when cheat mode is on --- .../me/shedaniel/rei/impl/client/gui/widget/DisplayedEntryWidget.java | 4 ++-- .../java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'runtime/src/main/java/me/shedaniel/rei/impl') 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 ebb2a87b8..209de8d69 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(Point point) { Tooltip tooltip = getCurrentEntry().getTooltip(point); - if (tooltip != null && !ClientHelper.getInstance().isCheating() && getTransferHandler() != null + if (tooltip != null && getTransferHandler() != null && !(Minecraft.getInstance().screen instanceof DisplayScreen)) { tooltip.add(new TranslatableComponent("text.auto_craft.move_items.tooltip").withStyle(ChatFormatting.YELLOW)); } @@ -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(); -- cgit From f24d49576318fdbec2bb695323184a664dd70f4c Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 28 May 2022 17:42:39 +0800 Subject: Fix favoriting items in the pinned recipe and add error rendering --- .../gui/widget/favorites/history/DisplayEntry.java | 19 +++++++++++++--- .../favorites/history/DisplayHistoryWidget.java | 26 +++++++++++----------- 2 files changed, 29 insertions(+), 16 deletions(-) (limited to 'runtime/src/main/java/me/shedaniel/rei/impl') 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 e21d81e3f..b7540c87a 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(new TextComponent("+")); 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(); } } @@ -211,7 +224,7 @@ public class DisplayEntry extends WidgetWithBounds { @Override public boolean keyPressed(int keyCode, int scanCode, int modifiers) { try { - Widget.translateMouse(xOffset, 0, 0); + Widget.pushMouse(new Point(transformMouseX(mouse().x), transformMouseY(mouse().y))); for (Widget widget : widgets.get()) { if (widget.keyPressed(keyCode, scanCode, modifiers)) { return true; 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 b6cd9fb01..6aaf55ba3 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 @@ -254,7 +254,7 @@ public class DisplayHistoryWidget extends WidgetWithBounds implements DraggableC scroll.setTo(scroll.target() + ClothConfigInitializer.getScrollStep() * -2 * amount, ClothConfigInitializer.getScrollDuration()); return true; } - + for (DisplayEntry entry : entries) { if (entry.mouseScrolled(mouseX, mouseY, amount)) { return true; @@ -277,6 +277,12 @@ public class DisplayHistoryWidget extends WidgetWithBounds implements DraggableC @Override public boolean mouseReleased(double mouseX, double mouseY, int button) { + for (DisplayEntry entry : entries) { + if (entry.mouseReleased(mouseX, mouseY, button)) { + return true; + } + } + if (ConfigObject.getInstance().getFavoriteKeyCode().matchesMouse(button)) { Point mouse = PointHelper.ofMouse(); @@ -296,18 +302,18 @@ public class DisplayHistoryWidget extends WidgetWithBounds implements DraggableC } } } - - for (DisplayEntry entry : entries) { - if (entry.mouseReleased(mouseX, mouseY, button)) { - return true; - } - } return super.mouseReleased(mouseX, mouseY, button); } @Override public boolean keyPressed(int keyCode, int scanCode, int modifiers) { + for (DisplayEntry entry : entries) { + if (entry.keyPressed(keyCode, scanCode, modifiers)) { + return true; + } + } + if (ConfigObject.getInstance().getFavoriteKeyCode().matchesKey(keyCode, scanCode)) { Point mouse = PointHelper.ofMouse(); @@ -327,12 +333,6 @@ public class DisplayHistoryWidget extends WidgetWithBounds implements DraggableC } } } - - for (DisplayEntry entry : entries) { - if (entry.keyPressed(keyCode, scanCode, modifiers)) { - return true; - } - } return super.keyPressed(keyCode, scanCode, modifiers); } -- cgit From 5425a1162ada069cc8930e2219710f48049b4fd5 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 28 May 2022 17:45:24 +0800 Subject: Make it easier to scroll between pinned recipes --- .../impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'runtime/src/main/java/me/shedaniel/rei/impl') 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 6aaf55ba3..d4d2cfb48 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 @@ -251,7 +251,7 @@ 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()); return true; } -- cgit