Prechádzať zdrojové kódy

get fluid bucket

Signed-off-by: shedaniel <daniel@shedaniel.me>
shedaniel 5 rokov pred
rodič
commit
2247908470

+ 21 - 0
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();

+ 0 - 1
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());
         }
     }
 }

+ 2 - 0
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);

+ 2 - 0
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);

+ 1 - 24
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();

+ 12 - 0
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();
+}

BIN
src/main/resources/assets/roughlyenoughitems/textures/gui/recipecontainer.png


BIN
src/main/resources/assets/roughlyenoughitems/textures/gui/recipecontainer_dark.png


+ 2 - 1
src/main/resources/listeners.roughlyenoughitems.json

@@ -8,7 +8,8 @@
     "ContainerScreenHooks",
     "RecipeBookGuiHooks",
     "AbstractInventoryScreenHooks",
-    "RecipeBookButtonWidgetHooks"
+    "RecipeBookButtonWidgetHooks",
+    "BucketItemHooks"
   ],
   "injectors": {
     "defaultRequire": 1