Skip to content

Commit 0ec852a

Browse files
committed
Use stack-aware recipe remainders
1 parent 71bc6be commit 0ec852a

File tree

7 files changed

+48
-8
lines changed

7 files changed

+48
-8
lines changed

common/src/main/java/juuxel/adorn/block/entity/BrewerBlockEntity.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import juuxel.adorn.fluid.FluidReference;
66
import juuxel.adorn.item.AdornItems;
77
import juuxel.adorn.menu.BrewerMenu;
8+
import juuxel.adorn.platform.ItemBridge;
89
import juuxel.adorn.recipe.AdornRecipes;
910
import juuxel.adorn.recipe.BrewerInput;
1011
import juuxel.adorn.recipe.FluidBrewingRecipe;
@@ -142,15 +143,14 @@ private boolean isActive() {
142143

143144
private static void decrementIngredient(BrewerBlockEntity brewer, int slot) {
144145
var stack = brewer.getStack(slot);
145-
// TODO: Use stack-aware version on Fabric (and Neo if available)
146-
var remainder = stack.getItem().getRecipeRemainder();
146+
var remainder = ItemBridge.get().getRecipeRemainder(stack);
147147
stack.decrement(1);
148148

149-
if (remainder != null) {
149+
if (!remainder.isEmpty()) {
150150
if (stack.isEmpty()) {
151-
brewer.setStack(slot, new ItemStack(remainder));
151+
brewer.setStack(slot, remainder);
152152
} else {
153-
ItemScatterer.spawn(brewer.world, brewer.pos.getX() + 0.5, brewer.pos.getY() + 0.5, brewer.pos.getZ() + 0.5, new ItemStack(remainder));
153+
ItemScatterer.spawn(brewer.world, brewer.pos.getX() + 0.5, brewer.pos.getY() + 0.5, brewer.pos.getZ() + 0.5, remainder);
154154
}
155155
}
156156
}

common/src/main/java/juuxel/adorn/compat/emi/EmiUtil.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import juuxel.adorn.fluid.FluidIngredient;
66
import juuxel.adorn.fluid.FluidUnit;
77
import juuxel.adorn.platform.FluidBridge;
8+
import juuxel.adorn.platform.ItemBridge;
89
import net.minecraft.item.Item;
910

1011
public final class EmiUtil {
@@ -23,9 +24,9 @@ public static EmiIngredient withRemainders(EmiIngredient ingredient) {
2324
for (var stack : ingredient.getEmiStacks()) {
2425
var item = stack.getKeyOfType(Item.class);
2526
if (item == null) continue;
26-
if (item.hasRecipeRemainder()) {
27-
// TODO: Use stack-aware recipe remainders
28-
stack.setRemainder(EmiStack.of(item.getRecipeRemainder()));
27+
var remainder = ItemBridge.get().getRecipeRemainder(stack.getItemStack());
28+
if (!remainder.isEmpty()) {
29+
stack.setRemainder(EmiStack.of(remainder));
2930
}
3031
}
3132

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package juuxel.adorn.platform;
2+
3+
import juuxel.adorn.util.InlineServices;
4+
import juuxel.adorn.util.Services;
5+
import net.minecraft.item.ItemStack;
6+
7+
@InlineServices
8+
public interface ItemBridge {
9+
ItemStack getRecipeRemainder(ItemStack stack);
10+
11+
@InlineServices.Getter
12+
static ItemBridge get() {
13+
return Services.load(ItemBridge.class);
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package juuxel.adorn.platform.fabric;
2+
3+
import juuxel.adorn.platform.ItemBridge;
4+
import net.minecraft.item.ItemStack;
5+
6+
public final class ItemBridgeFabric implements ItemBridge {
7+
@Override
8+
public ItemStack getRecipeRemainder(ItemStack stack) {
9+
return stack.getRecipeRemainder();
10+
}
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
juuxel.adorn.platform.fabric.ItemBridgeFabric
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package juuxel.adorn.platform.neo;
2+
3+
import juuxel.adorn.platform.ItemBridge;
4+
import net.minecraft.item.ItemStack;
5+
6+
public final class ItemBridgeNeo implements ItemBridge {
7+
@Override
8+
public ItemStack getRecipeRemainder(ItemStack stack) {
9+
return stack.hasCraftingRemainingItem() ? stack.getCraftingRemainingItem() : ItemStack.EMPTY;
10+
}
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
juuxel.adorn.platform.neo.ItemBridgeNeo

0 commit comments

Comments
 (0)