From a3fd30bec5372e894daf12c74f10d0a41765d1b8 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Thu, 17 Oct 2019 00:48:10 +0200 Subject: [PATCH] Remove "compare nbt" button, switch it to "exact mode" on or off. Rewrite Comparer a bit. --- .../refinedstorage/api/util/IComparer.java | 19 ++-- .../refinedstorage/apiimpl/util/Comparer.java | 81 +++--------------- .../container/BaseContainer.java | 2 +- .../refinedstorage/screen/GuiConstructor.java | 5 +- .../refinedstorage/screen/GuiDestructor.java | 3 +- .../refinedstorage/screen/GuiDetector.java | 5 +- .../screen/GuiDiskManipulator.java | 3 +- .../refinedstorage/screen/GuiExporter.java | 5 +- .../refinedstorage/screen/GuiImporter.java | 5 +- .../refinedstorage/screen/GuiInterface.java | 5 +- .../screen/GuiStorageMonitor.java | 5 +- .../refinedstorage/screen/StorageScreen.java | 16 ++-- ...deButton.java => ExactModeSideButton.java} | 29 +++---- .../assets/refinedstorage/lang/en_us.json | 4 +- .../assets/refinedstorage/textures/icons.png | Bin 5710 -> 5716 bytes 15 files changed, 55 insertions(+), 132 deletions(-) rename src/main/java/com/raoulvdberge/refinedstorage/screen/widget/sidebutton/{CompareSideButton.java => ExactModeSideButton.java} (62%) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/util/IComparer.java b/src/main/java/com/raoulvdberge/refinedstorage/api/util/IComparer.java index a77394625..4bda5678f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/util/IComparer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/util/IComparer.java @@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.api.util; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; -import javax.annotation.Nullable; +import javax.annotation.Nonnull; /** * Utilities for comparing item and fluid stacks. @@ -20,7 +20,7 @@ public interface IComparer { * @param flags the flags to compare with * @return true if the left and right stack are the same, false otherwise */ - boolean isEqual(@Nullable ItemStack left, @Nullable ItemStack right, int flags); + boolean isEqual(@Nonnull ItemStack left, @Nonnull ItemStack right, int flags); /** * Compares two stacks by NBT, damage and quantity. @@ -29,7 +29,7 @@ public interface IComparer { * @param right the right stack * @return true if the left and right stack are the same, false otherwise */ - default boolean isEqual(@Nullable ItemStack left, @Nullable ItemStack right) { + default boolean isEqual(@Nonnull ItemStack left, @Nonnull ItemStack right) { return isEqual(left, right, COMPARE_NBT | COMPARE_QUANTITY); } @@ -40,7 +40,7 @@ public interface IComparer { * @param right the right stack * @return true if the left and right stack are the same, false otherwise */ - default boolean isEqualNoQuantity(@Nullable ItemStack left, @Nullable ItemStack right) { + default boolean isEqualNoQuantity(@Nonnull ItemStack left, @Nonnull ItemStack right) { return isEqual(left, right, COMPARE_NBT); } @@ -52,14 +52,5 @@ public interface IComparer { * @param flags the flags to compare with * @return true if the left and right stack are the same, false otherwise */ - boolean isEqual(@Nullable FluidStack left, @Nullable FluidStack right, int flags); - - /** - * Compares the NBT tags of two stacks. - * - * @param left the left stack - * @param right the right stack - * @return true if the NBT tags of the two stacks are the same, false otherwise - */ - boolean isEqualNbt(@Nullable ItemStack left, @Nullable ItemStack right); + boolean isEqual(@Nonnull FluidStack left, @Nonnull FluidStack right, int flags); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/util/Comparer.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/util/Comparer.java index 302222b61..4b8626357 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/util/Comparer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/util/Comparer.java @@ -2,26 +2,23 @@ package com.raoulvdberge.refinedstorage.apiimpl.util; import com.raoulvdberge.refinedstorage.api.util.IComparer; import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResultType; import net.minecraftforge.fluids.FluidStack; -import javax.annotation.Nullable; +import javax.annotation.Nonnull; public class Comparer implements IComparer { @Override - public boolean isEqual(@Nullable ItemStack left, @Nullable ItemStack right, int flags) { - ActionResultType validity = getResult(left, right); - - if (validity == ActionResultType.FAIL || validity == ActionResultType.SUCCESS) { - return validity == ActionResultType.SUCCESS; + public boolean isEqual(@Nonnull ItemStack left, @Nonnull ItemStack right, int flags) { + if (left.isEmpty() && right.isEmpty()) { + return true; } - if (left.getItem() != right.getItem()) { + if (!ItemStack.areItemsEqual(left, right)) { return false; } if ((flags & COMPARE_NBT) == COMPARE_NBT) { - if (!isEqualNbt(left, right)) { + if (!ItemStack.areItemStackTagsEqual(left, right)) { return false; } } @@ -36,77 +33,27 @@ public class Comparer implements IComparer { } @Override - public boolean isEqual(@Nullable FluidStack left, @Nullable FluidStack right, int flags) { - if (left == null && right == null) { + public boolean isEqual(@Nonnull FluidStack left, @Nonnull FluidStack right, int flags) { + if (left.isEmpty() && right.isEmpty()) { return true; } - if ((left == null && right != null) || (left != null && right == null)) { - return false; - } - if (left.getFluid() != right.getFluid()) { return false; } + if ((flags & COMPARE_NBT) == COMPARE_NBT) { + if (!FluidStack.areFluidStackTagsEqual(left, right)) { + return false; + } + } + if ((flags & COMPARE_QUANTITY) == COMPARE_QUANTITY) { if (left.getAmount() != right.getAmount()) { return false; } } - if ((flags & COMPARE_NBT) == COMPARE_NBT) { - if (left.getTag() != null && !left.getTag().equals(right.getTag())) { - return false; - } - } - return true; } - - @Override - public boolean isEqualNbt(@Nullable ItemStack left, @Nullable ItemStack right) { - ActionResultType validity = getResult(left, right); - - if (validity == ActionResultType.FAIL || validity == ActionResultType.SUCCESS) { - return validity == ActionResultType.SUCCESS; - } - - if (!ItemStack.areItemStackTagsEqual(left, right)) { - if (left.hasTag() && !right.hasTag() && left.getTag().isEmpty()) { - return true; - } else if (!left.hasTag() && right.hasTag() && right.getTag().isEmpty()) { - return true; - } else if (!left.hasTag() && !right.hasTag()) { - return true; - } - - return false; - } - - return true; - } - - private ActionResultType getResult(@Nullable ItemStack left, @Nullable ItemStack right) { - if (left == null && right == null) { - return ActionResultType.SUCCESS; - } - - if ((left == null && right != null) || (left != null && right == null)) { - return ActionResultType.FAIL; - } - - boolean leftEmpty = left.isEmpty(); - boolean rightEmpty = right.isEmpty(); - - if (leftEmpty && rightEmpty) { - return ActionResultType.SUCCESS; - } - - if ((leftEmpty && !rightEmpty) || (!leftEmpty && rightEmpty)) { - return ActionResultType.FAIL; - } - - return ActionResultType.PASS; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/BaseContainer.java b/src/main/java/com/raoulvdberge/refinedstorage/container/BaseContainer.java index df784366a..4000414ef 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/BaseContainer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/BaseContainer.java @@ -164,7 +164,7 @@ public abstract class BaseContainer extends Container { @Override protected Slot addSlot(Slot slot) { if (slot instanceof FluidFilterSlot) { - fluids.add(null); + fluids.add(FluidStack.EMPTY); fluidSlots.add((FluidFilterSlot) slot); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiConstructor.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiConstructor.java index d0a8f628f..8a4406538 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiConstructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiConstructor.java @@ -1,10 +1,9 @@ package com.raoulvdberge.refinedstorage.screen; import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.container.ConstructorContainer; -import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.CompareSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.ConstructorDropSideButton; +import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.ExactModeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.TypeSideButton; import com.raoulvdberge.refinedstorage.tile.TileConstructor; @@ -22,7 +21,7 @@ public class GuiConstructor extends BaseScreen { addSideButton(new TypeSideButton(this, TileConstructor.TYPE)); - addSideButton(new CompareSideButton(this, TileConstructor.COMPARE, IComparer.COMPARE_NBT)); + addSideButton(new ExactModeSideButton(this, TileConstructor.COMPARE)); addSideButton(new ConstructorDropSideButton(this)); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiDestructor.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiDestructor.java index 1f8e634ea..fffd67e38 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiDestructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiDestructor.java @@ -1,7 +1,6 @@ package com.raoulvdberge.refinedstorage.screen; import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.container.DestructorContainer; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.*; import com.raoulvdberge.refinedstorage.tile.TileDestructor; @@ -21,7 +20,7 @@ public class GuiDestructor extends BaseScreen { addSideButton(new WhitelistBlacklistSideButton(this, TileDestructor.WHITELIST_BLACKLIST)); - addSideButton(new CompareSideButton(this, TileDestructor.COMPARE, IComparer.COMPARE_NBT)); + addSideButton(new ExactModeSideButton(this, TileDestructor.COMPARE)); addSideButton(new DestructorPickupSideButton(this)); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiDetector.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiDetector.java index 0610c5297..7ecb41ab0 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiDetector.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiDetector.java @@ -1,10 +1,9 @@ package com.raoulvdberge.refinedstorage.screen; import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.container.DetectorContainer; -import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.CompareSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.DetectorModeSideButton; +import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.ExactModeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.TypeSideButton; import com.raoulvdberge.refinedstorage.tile.TileDetector; import net.minecraft.client.gui.widget.TextFieldWidget; @@ -24,7 +23,7 @@ public class GuiDetector extends BaseScreen { addSideButton(new DetectorModeSideButton(this)); - addSideButton(new CompareSideButton(this, TileDetector.COMPARE, IComparer.COMPARE_NBT)); + addSideButton(new ExactModeSideButton(this, TileDetector.COMPARE)); amount = new TextFieldWidget(font, x + 41 + 1, y + 23 + 1, 50, font.FONT_HEIGHT, ""); amount.setText(String.valueOf(TileDetector.AMOUNT.getValue())); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiDiskManipulator.java index 76a7e6409..82397aeb5 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiDiskManipulator.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiDiskManipulator.java @@ -1,7 +1,6 @@ package com.raoulvdberge.refinedstorage.screen; import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.container.DiskManipulatorContainer; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.*; import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator; @@ -19,7 +18,7 @@ public class GuiDiskManipulator extends BaseScreen { addSideButton(new IoModeSideButton(this)); addSideButton(new TypeSideButton(this, TileDiskManipulator.TYPE)); addSideButton(new WhitelistBlacklistSideButton(this, TileDiskManipulator.WHITELIST_BLACKLIST)); - addSideButton(new CompareSideButton(this, TileDiskManipulator.COMPARE, IComparer.COMPARE_NBT)); + addSideButton(new ExactModeSideButton(this, TileDiskManipulator.COMPARE)); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiExporter.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiExporter.java index ccedf8150..5a99b0a40 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiExporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiExporter.java @@ -1,9 +1,8 @@ package com.raoulvdberge.refinedstorage.screen; import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.container.ExporterContainer; -import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.CompareSideButton; +import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.ExactModeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.TypeSideButton; import com.raoulvdberge.refinedstorage.tile.TileExporter; @@ -21,7 +20,7 @@ public class GuiExporter extends BaseScreen { addSideButton(new TypeSideButton(this, TileExporter.TYPE)); - addSideButton(new CompareSideButton(this, TileExporter.COMPARE, IComparer.COMPARE_NBT)); + addSideButton(new ExactModeSideButton(this, TileExporter.COMPARE)); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiImporter.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiImporter.java index 9982a47b0..e4a58faf9 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiImporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiImporter.java @@ -1,9 +1,8 @@ package com.raoulvdberge.refinedstorage.screen; import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.container.ImporterContainer; -import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.CompareSideButton; +import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.ExactModeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.TypeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.WhitelistBlacklistSideButton; @@ -24,7 +23,7 @@ public class GuiImporter extends BaseScreen { addSideButton(new WhitelistBlacklistSideButton(this, TileImporter.WHITELIST_BLACKLIST)); - addSideButton(new CompareSideButton(this, TileImporter.COMPARE, IComparer.COMPARE_NBT)); + addSideButton(new ExactModeSideButton(this, TileImporter.COMPARE)); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiInterface.java index 73d0c1785..1e238b3da 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiInterface.java @@ -1,9 +1,8 @@ package com.raoulvdberge.refinedstorage.screen; import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.container.InterfaceContainer; -import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.CompareSideButton; +import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.ExactModeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton; import com.raoulvdberge.refinedstorage.tile.TileInterface; import net.minecraft.client.resources.I18n; @@ -18,7 +17,7 @@ public class GuiInterface extends BaseScreen { public void onPostInit(int x, int y) { addSideButton(new RedstoneModeSideButton(this, TileInterface.REDSTONE_MODE)); - addSideButton(new CompareSideButton(this, TileInterface.COMPARE, IComparer.COMPARE_NBT)); + addSideButton(new ExactModeSideButton(this, TileInterface.COMPARE)); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiStorageMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiStorageMonitor.java index 78c555b77..43419268c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiStorageMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiStorageMonitor.java @@ -1,9 +1,8 @@ package com.raoulvdberge.refinedstorage.screen; import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.container.StorageMonitorContainer; -import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.CompareSideButton; +import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.ExactModeSideButton; import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.PlayerInventory; @@ -15,7 +14,7 @@ public class GuiStorageMonitor extends BaseScreen { @Override public void onPostInit(int x, int y) { - addSideButton(new CompareSideButton(this, TileStorageMonitor.COMPARE, IComparer.COMPARE_NBT)); + addSideButton(new ExactModeSideButton(this, TileStorageMonitor.COMPARE)); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/StorageScreen.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/StorageScreen.java index 0ba7e5ef9..46b7ae47f 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/StorageScreen.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/StorageScreen.java @@ -2,12 +2,10 @@ package com.raoulvdberge.refinedstorage.screen; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.storage.AccessType; -import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.*; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import com.raoulvdberge.refinedstorage.util.RenderUtils; -import net.minecraft.client.gui.widget.button.Button; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.Container; @@ -26,22 +24,20 @@ public class StorageScreen extends BaseScreen { private String texture; private TileDataParameter typeParameter; private TileDataParameter redstoneModeParameter; - private TileDataParameter compareParameter; + private TileDataParameter exactModeParameter; private TileDataParameter whitelistBlacklistParameter; private TileDataParameter priorityParameter; private TileDataParameter accessTypeParameter; private Supplier storedSupplier; private Supplier capacitySupplier; - private Button priorityButton; - public StorageScreen(T container, PlayerInventory inventory, ITextComponent title, String texture, @Nullable TileDataParameter typeParameter, @Nullable TileDataParameter redstoneModeParameter, - @Nullable TileDataParameter compareParameter, + @Nullable TileDataParameter exactModeParameter, @Nullable TileDataParameter whitelistBlacklistParameter, TileDataParameter priorityParameter, @Nullable TileDataParameter accessTypeParameter, @@ -51,7 +47,7 @@ public class StorageScreen extends BaseScreen { this.texture = texture; this.typeParameter = typeParameter; this.redstoneModeParameter = redstoneModeParameter; - this.compareParameter = compareParameter; + this.exactModeParameter = exactModeParameter; this.whitelistBlacklistParameter = whitelistBlacklistParameter; this.priorityParameter = priorityParameter; this.accessTypeParameter = accessTypeParameter; @@ -73,8 +69,8 @@ public class StorageScreen extends BaseScreen { addSideButton(new WhitelistBlacklistSideButton(this, whitelistBlacklistParameter)); } - if (compareParameter != null) { - addSideButton(new CompareSideButton(this, compareParameter, IComparer.COMPARE_NBT)); + if (exactModeParameter != null) { + addSideButton(new ExactModeSideButton(this, exactModeParameter)); } if (accessTypeParameter != null) { @@ -83,7 +79,7 @@ public class StorageScreen extends BaseScreen { int buttonWidth = 10 + font.getStringWidth(I18n.format("misc.refinedstorage.priority")); - priorityButton = addButton(x + 169 - buttonWidth, y + 41, buttonWidth, 20, I18n.format("misc.refinedstorage.priority"), true, true, btn -> { + addButton(x + 169 - buttonWidth, y + 41, buttonWidth, 20, I18n.format("misc.refinedstorage.priority"), true, true, btn -> { minecraft.displayGuiScreen(new PriorityScreen(this, priorityParameter, playerInventory)); }); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/sidebutton/CompareSideButton.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/sidebutton/ExactModeSideButton.java similarity index 62% rename from src/main/java/com/raoulvdberge/refinedstorage/screen/widget/sidebutton/CompareSideButton.java rename to src/main/java/com/raoulvdberge/refinedstorage/screen/widget/sidebutton/ExactModeSideButton.java index 8f21f0501..9d4a99ce2 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/sidebutton/CompareSideButton.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/sidebutton/ExactModeSideButton.java @@ -7,25 +7,25 @@ import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import net.minecraft.client.resources.I18n; import net.minecraft.util.text.TextFormatting; -public class CompareSideButton extends SideButton { - private TileDataParameter parameter; - private int mask; +public class ExactModeSideButton extends SideButton { + private static final int MASK = IComparer.COMPARE_NBT; - public CompareSideButton(BaseScreen screen, TileDataParameter parameter, int mask) { + private TileDataParameter parameter; + + public ExactModeSideButton(BaseScreen screen, TileDataParameter parameter) { super(screen); this.parameter = parameter; - this.mask = mask; } @Override public String getTooltip() { - String tooltip = I18n.format("sidebutton.refinedstorage.compare." + mask) + "\n" + TextFormatting.GRAY; + String tooltip = I18n.format("sidebutton.refinedstorage.exact_mode") + "\n" + TextFormatting.GRAY; - if ((parameter.getValue() & mask) == mask) { - tooltip += I18n.format("gui.yes"); + if ((parameter.getValue() & MASK) == MASK) { + tooltip += I18n.format("sidebutton.refinedstorage.exact_mode.on"); } else { - tooltip += I18n.format("gui.no"); + tooltip += I18n.format("sidebutton.refinedstorage.exact_mode.off"); } return tooltip; @@ -33,19 +33,14 @@ public class CompareSideButton extends SideButton { @Override protected void renderButtonIcon(int x, int y) { - int ty = 0; - - if (mask == IComparer.COMPARE_NBT) { - ty = 48; - } - - int tx = (parameter.getValue() & mask) == mask ? 0 : 16; + int ty = 16 * 12; + int tx = (parameter.getValue() & MASK) == MASK ? 0 : 16; screen.blit(x, y, tx, ty, 16, 16); } @Override public void onPress() { - TileDataManager.setParameter(parameter, parameter.getValue() ^ mask); + TileDataManager.setParameter(parameter, parameter.getValue() ^ MASK); } } diff --git a/src/main/resources/assets/refinedstorage/lang/en_us.json b/src/main/resources/assets/refinedstorage/lang/en_us.json index e51dd4ad8..34399f854 100644 --- a/src/main/resources/assets/refinedstorage/lang/en_us.json +++ b/src/main/resources/assets/refinedstorage/lang/en_us.json @@ -123,7 +123,9 @@ "misc.refinedstorage.last_modified.weeks": "Last modified %d weeks ago by %s", "misc.refinedstorage.last_modified.year": "Last modified %d year ago by %s", "misc.refinedstorage.last_modified.years": "Last modified %d years ago by %s", - "sidebutton.refinedstorage.compare.1": "Use NBT", + "sidebutton.refinedstorage.exact_mode": "Exact mode", + "sidebutton.refinedstorage.exact_mode.on": "On", + "sidebutton.refinedstorage.exact_mode.off": "Off", "sidebutton.refinedstorage.redstone_mode": "Redstone mode", "sidebutton.refinedstorage.redstone_mode.0": "Ignore redstone signal", "sidebutton.refinedstorage.redstone_mode.1": "Only work with redstone signal", diff --git a/src/main/resources/assets/refinedstorage/textures/icons.png b/src/main/resources/assets/refinedstorage/textures/icons.png index 33d052a210aaaf3a1ac75429de8292fc766f93de..4285d2ac919760512da4a5bb039447bb7380f500 100755 GIT binary patch literal 5716 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 literal 5710 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