diff options
| author | shedaniel <daniel@shedaniel.me> | 2020-03-05 15:49:06 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2020-03-05 15:49:06 +0800 |
| commit | 37d201d5db11c717ffa0d9d3d4af5ed6381a21fa (patch) | |
| tree | bcbd169dad006bcc2f1581e8063b12260f40b575 /src/main/java/me/shedaniel | |
| parent | 0fc97290731e0e857c6276411e0a89a056dba561 (diff) | |
| download | RoughlyEnoughItems-37d201d5db11c717ffa0d9d3d4af5ed6381a21fa.tar.gz RoughlyEnoughItems-37d201d5db11c717ffa0d9d3d4af5ed6381a21fa.tar.bz2 RoughlyEnoughItems-37d201d5db11c717ffa0d9d3d4af5ed6381a21fa.zip | |
get fluid bucket
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'src/main/java/me/shedaniel')
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(); +} |
