aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/me/shedaniel/rei/api/EntryStack.java21
-rw-r--r--src/main/java/me/shedaniel/rei/gui/config/entry/FilteringEntry.java1
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java2
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java2
-rw-r--r--src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java25
-rw-r--r--src/main/java/me/shedaniel/rei/listeners/BucketItemHooks.java12
6 files changed, 38 insertions, 25 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/EntryStack.java b/src/main/java/me/shedaniel/rei/api/EntryStack.java
index c90111ac2..376ae2aef 100644
--- a/src/main/java/me/shedaniel/rei/api/EntryStack.java
+++ b/src/main/java/me/shedaniel/rei/api/EntryStack.java
@@ -30,8 +30,10 @@ import me.shedaniel.rei.gui.widget.QueuedTooltip;
import me.shedaniel.rei.impl.EmptyEntryStack;
import me.shedaniel.rei.impl.FluidEntryStack;
import me.shedaniel.rei.impl.ItemEntryStack;
+import me.shedaniel.rei.listeners.BucketItemHooks;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.fluid.Fluid;
+import net.minecraft.item.BucketItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemConvertible;
import net.minecraft.item.ItemStack;
@@ -122,6 +124,25 @@ public interface EntryStack {
}
}
+ static EntryStack copyFluidToBucket(EntryStack stack) {
+ if (stack.getType() != Type.FLUID)
+ throw new IllegalArgumentException("EntryStack must be fluid!");
+ Fluid fluid = stack.getFluid();
+ Item item = fluid.getBucketItem();
+ if (item == null)
+ return EntryStack.empty();
+ return EntryStack.create(item);
+ }
+
+ static EntryStack copyBucketToFluid(EntryStack stack) {
+ if (stack.getType() != Type.ITEM)
+ throw new IllegalArgumentException("EntryStack must be item!");
+ Item item = stack.getItem();
+ if (item instanceof BucketItem)
+ return EntryStack.create(((BucketItemHooks) item).getFluid(), 1000);
+ return EntryStack.empty();
+ }
+
Optional<Identifier> getIdentifier();
EntryStack.Type getType();
diff --git a/src/main/java/me/shedaniel/rei/gui/config/entry/FilteringEntry.java b/src/main/java/me/shedaniel/rei/gui/config/entry/FilteringEntry.java
index 922a06e07..0d3c1916b 100644
--- a/src/main/java/me/shedaniel/rei/gui/config/entry/FilteringEntry.java
+++ b/src/main/java/me/shedaniel/rei/gui/config/entry/FilteringEntry.java
@@ -546,7 +546,6 @@ public class FilteringEntry extends AbstractConfigListEntry<List<EntryStack>> {
if (tooltip != null) {
FilteringEntry.this.tooltip = tooltip;
}
-// System.out.println(getCurrentEntry().getItemStack().toTag(new CompoundTag()).toString());
}
}
}
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java
index eba0a2fda..436394f85 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java
@@ -816,6 +816,8 @@ public class EntryListWidget extends WidgetWithBounds {
if (containsMouse(mouseX, mouseY) && ClientHelper.getInstance().isCheating()) {
EntryStack entry = getCurrentEntry().copy();
if (!entry.isEmpty()) {
+ if (entry.getType() == EntryStack.Type.FLUID)
+ entry = EntryStack.copyFluidToBucket(entry);
if (entry.getType() == EntryStack.Type.ITEM)
entry.setAmount(button != 1 && !Screen.hasShiftDown() ? 1 : entry.getItemStack().getMaxCount());
ClientHelper.getInstance().tryCheatingEntry(entry);
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java
index 4c841bad7..4c1d22c68 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java
@@ -387,6 +387,8 @@ public class FavoritesListWidget extends WidgetWithBounds {
if (containsMouse(mouseX, mouseY) && ClientHelper.getInstance().isCheating()) {
EntryStack entry = getCurrentEntry().copy();
if (!entry.isEmpty()) {
+ if (entry.getType() == EntryStack.Type.FLUID)
+ entry = EntryStack.copyFluidToBucket(entry);
if (entry.getType() == EntryStack.Type.ITEM)
entry.setAmount(button != 1 && !Screen.hasShiftDown() ? 1 : entry.getItemStack().getMaxCount());
ClientHelper.getInstance().tryCheatingEntry(entry);
diff --git a/src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java b/src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java
index 2532a6ff6..38eecf3ac 100644
--- a/src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java
+++ b/src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java
@@ -56,21 +56,9 @@ import java.util.function.Predicate;
@ApiStatus.Internal
public class ItemEntryStack extends AbstractEntryStack implements OptimalEntryStack {
- private static final Predicate<BakedModel> IS_SIDE_LIT;
+ private static final Predicate<BakedModel> IS_SIDE_LIT = BakedModel::isSideLit;
private static final MatrixStack MATRICES = new MatrixStack();
- static {
- boolean isOn1_15_2 = false;
- String isSideLit = FabricLoader.getInstance().getMappingResolver().mapMethodName("intermediary", "net.minecraft.class_1087", "method_24304", "()Z");
- try {
- BakedModel.class.getDeclaredMethod(isSideLit);
- isOn1_15_2 = true;
- } catch (NoSuchMethodException ignored) {
- }
- //noinspection Convert2MethodRef
- IS_SIDE_LIT = isOn1_15_2 ? Executor.call(() -> () -> new ModelSideLit1152Compat()) : Executor.call(() -> () -> new ModelHasDepth1151Compat());
- }
-
private ItemStack itemStack;
public ItemEntryStack(ItemStack itemStack) {
@@ -136,19 +124,8 @@ public class ItemEntryStack extends AbstractEntryStack implements OptimalEntrySt
public boolean equalsIgnoreAmount(EntryStack stack) {
if (stack.getType() != Type.ITEM)
return false;
- if (itemStack.getItem() == Items.GRASS_BLOCK) {
-// System.out.println(itemStack.toTag(new CompoundTag()).toString() + " " + stack.getItemStack().toTag(new CompoundTag()).toString());
- }
if (itemStack.getItem() != stack.getItem())
return false;
- if (itemStack.getItem() == Items.GRASS_BLOCK) {
- ItemStack otherStack = stack.getItemStack();
- CompoundTag o1 = itemStack.getTag();
- CompoundTag o2 = otherStack.getTag();
- boolean b = o1 == o2 || ((o1 != null && o2 != null) && equals(o1, o2));
-// System.out.println(itemStack.toTag(new CompoundTag()).toString() + " " + stack.getItemStack().toTag(new CompoundTag()).toString() + " " + b);
- return b;
- }
ItemStack otherStack = stack.getItemStack();
CompoundTag o1 = itemStack.getTag();
CompoundTag o2 = otherStack.getTag();
diff --git a/src/main/java/me/shedaniel/rei/listeners/BucketItemHooks.java b/src/main/java/me/shedaniel/rei/listeners/BucketItemHooks.java
new file mode 100644
index 000000000..e49ded38e
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/listeners/BucketItemHooks.java
@@ -0,0 +1,12 @@
+package me.shedaniel.rei.listeners;
+
+import net.minecraft.fluid.Fluid;
+import net.minecraft.item.BucketItem;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+@Mixin(BucketItem.class)
+public interface BucketItemHooks {
+ @Accessor("fluid")
+ Fluid getFluid();
+}