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 /api/src/main | |
| 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
Diffstat (limited to 'api/src/main')
5 files changed, 55 insertions, 9 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, |
