aboutsummaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-06-08 22:12:18 +0800
committershedaniel <daniel@shedaniel.me>2022-06-08 22:12:18 +0800
commit52ec5dcd865e6c6eeeb686c4ebe40b8580e90407 (patch)
tree4b5bf2e5dfade9b1267359efce432035be499464 /api
parent95195247b173215c6bb48654ac97f78b1dd28cd3 (diff)
parenta8dd27ef4e946c879a2e3e5e163683a41896e78f (diff)
downloadRoughlyEnoughItems-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')
-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
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,