Remove "compare nbt" button, switch it to "exact mode" on or off. Rewrite Comparer a bit.

This commit is contained in:
raoulvdberge
2019-10-17 00:48:10 +02:00
parent d6f257401f
commit a3fd30bec5
15 changed files with 55 additions and 132 deletions

View File

@@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.api.util;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import javax.annotation.Nullable; import javax.annotation.Nonnull;
/** /**
* Utilities for comparing item and fluid stacks. * Utilities for comparing item and fluid stacks.
@@ -20,7 +20,7 @@ public interface IComparer {
* @param flags the flags to compare with * @param flags the flags to compare with
* @return true if the left and right stack are the same, false otherwise * @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. * Compares two stacks by NBT, damage and quantity.
@@ -29,7 +29,7 @@ public interface IComparer {
* @param right the right stack * @param right the right stack
* @return true if the left and right stack are the same, false otherwise * @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); return isEqual(left, right, COMPARE_NBT | COMPARE_QUANTITY);
} }
@@ -40,7 +40,7 @@ public interface IComparer {
* @param right the right stack * @param right the right stack
* @return true if the left and right stack are the same, false otherwise * @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); return isEqual(left, right, COMPARE_NBT);
} }
@@ -52,14 +52,5 @@ public interface IComparer {
* @param flags the flags to compare with * @param flags the flags to compare with
* @return true if the left and right stack are the same, false otherwise * @return true if the left and right stack are the same, false otherwise
*/ */
boolean isEqual(@Nullable FluidStack left, @Nullable FluidStack right, int flags); boolean isEqual(@Nonnull FluidStack left, @Nonnull 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);
} }

View File

@@ -2,26 +2,23 @@ package com.raoulvdberge.refinedstorage.apiimpl.util;
import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.api.util.IComparer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResultType;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import javax.annotation.Nullable; import javax.annotation.Nonnull;
public class Comparer implements IComparer { public class Comparer implements IComparer {
@Override @Override
public boolean isEqual(@Nullable ItemStack left, @Nullable ItemStack right, int flags) { public boolean isEqual(@Nonnull ItemStack left, @Nonnull ItemStack right, int flags) {
ActionResultType validity = getResult(left, right); if (left.isEmpty() && right.isEmpty()) {
return true;
if (validity == ActionResultType.FAIL || validity == ActionResultType.SUCCESS) {
return validity == ActionResultType.SUCCESS;
} }
if (left.getItem() != right.getItem()) { if (!ItemStack.areItemsEqual(left, right)) {
return false; return false;
} }
if ((flags & COMPARE_NBT) == COMPARE_NBT) { if ((flags & COMPARE_NBT) == COMPARE_NBT) {
if (!isEqualNbt(left, right)) { if (!ItemStack.areItemStackTagsEqual(left, right)) {
return false; return false;
} }
} }
@@ -36,77 +33,27 @@ public class Comparer implements IComparer {
} }
@Override @Override
public boolean isEqual(@Nullable FluidStack left, @Nullable FluidStack right, int flags) { public boolean isEqual(@Nonnull FluidStack left, @Nonnull FluidStack right, int flags) {
if (left == null && right == null) { if (left.isEmpty() && right.isEmpty()) {
return true; return true;
} }
if ((left == null && right != null) || (left != null && right == null)) {
return false;
}
if (left.getFluid() != right.getFluid()) { if (left.getFluid() != right.getFluid()) {
return false; return false;
} }
if ((flags & COMPARE_NBT) == COMPARE_NBT) {
if (!FluidStack.areFluidStackTagsEqual(left, right)) {
return false;
}
}
if ((flags & COMPARE_QUANTITY) == COMPARE_QUANTITY) { if ((flags & COMPARE_QUANTITY) == COMPARE_QUANTITY) {
if (left.getAmount() != right.getAmount()) { if (left.getAmount() != right.getAmount()) {
return false; return false;
} }
} }
if ((flags & COMPARE_NBT) == COMPARE_NBT) {
if (left.getTag() != null && !left.getTag().equals(right.getTag())) {
return false;
}
}
return true; 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;
}
} }

View File

@@ -164,7 +164,7 @@ public abstract class BaseContainer extends Container {
@Override @Override
protected Slot addSlot(Slot slot) { protected Slot addSlot(Slot slot) {
if (slot instanceof FluidFilterSlot) { if (slot instanceof FluidFilterSlot) {
fluids.add(null); fluids.add(FluidStack.EMPTY);
fluidSlots.add((FluidFilterSlot) slot); fluidSlots.add((FluidFilterSlot) slot);
} }

View File

@@ -1,10 +1,9 @@
package com.raoulvdberge.refinedstorage.screen; package com.raoulvdberge.refinedstorage.screen;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.container.ConstructorContainer; 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.ConstructorDropSideButton;
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.ExactModeSideButton;
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton;
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.TypeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.TypeSideButton;
import com.raoulvdberge.refinedstorage.tile.TileConstructor; import com.raoulvdberge.refinedstorage.tile.TileConstructor;
@@ -22,7 +21,7 @@ public class GuiConstructor extends BaseScreen<ConstructorContainer> {
addSideButton(new TypeSideButton(this, TileConstructor.TYPE)); 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)); addSideButton(new ConstructorDropSideButton(this));
} }

View File

@@ -1,7 +1,6 @@
package com.raoulvdberge.refinedstorage.screen; package com.raoulvdberge.refinedstorage.screen;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.container.DestructorContainer; import com.raoulvdberge.refinedstorage.container.DestructorContainer;
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.*; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.*;
import com.raoulvdberge.refinedstorage.tile.TileDestructor; import com.raoulvdberge.refinedstorage.tile.TileDestructor;
@@ -21,7 +20,7 @@ public class GuiDestructor extends BaseScreen<DestructorContainer> {
addSideButton(new WhitelistBlacklistSideButton(this, TileDestructor.WHITELIST_BLACKLIST)); 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)); addSideButton(new DestructorPickupSideButton(this));
} }

View File

@@ -1,10 +1,9 @@
package com.raoulvdberge.refinedstorage.screen; package com.raoulvdberge.refinedstorage.screen;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.container.DetectorContainer; 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.DetectorModeSideButton;
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.ExactModeSideButton;
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.TypeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.TypeSideButton;
import com.raoulvdberge.refinedstorage.tile.TileDetector; import com.raoulvdberge.refinedstorage.tile.TileDetector;
import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.client.gui.widget.TextFieldWidget;
@@ -24,7 +23,7 @@ public class GuiDetector extends BaseScreen<DetectorContainer> {
addSideButton(new DetectorModeSideButton(this)); 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 = new TextFieldWidget(font, x + 41 + 1, y + 23 + 1, 50, font.FONT_HEIGHT, "");
amount.setText(String.valueOf(TileDetector.AMOUNT.getValue())); amount.setText(String.valueOf(TileDetector.AMOUNT.getValue()));

View File

@@ -1,7 +1,6 @@
package com.raoulvdberge.refinedstorage.screen; package com.raoulvdberge.refinedstorage.screen;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.container.DiskManipulatorContainer; import com.raoulvdberge.refinedstorage.container.DiskManipulatorContainer;
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.*; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.*;
import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator; import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator;
@@ -19,7 +18,7 @@ public class GuiDiskManipulator extends BaseScreen<DiskManipulatorContainer> {
addSideButton(new IoModeSideButton(this)); addSideButton(new IoModeSideButton(this));
addSideButton(new TypeSideButton(this, TileDiskManipulator.TYPE)); addSideButton(new TypeSideButton(this, TileDiskManipulator.TYPE));
addSideButton(new WhitelistBlacklistSideButton(this, TileDiskManipulator.WHITELIST_BLACKLIST)); addSideButton(new WhitelistBlacklistSideButton(this, TileDiskManipulator.WHITELIST_BLACKLIST));
addSideButton(new CompareSideButton(this, TileDiskManipulator.COMPARE, IComparer.COMPARE_NBT)); addSideButton(new ExactModeSideButton(this, TileDiskManipulator.COMPARE));
} }
@Override @Override

View File

@@ -1,9 +1,8 @@
package com.raoulvdberge.refinedstorage.screen; package com.raoulvdberge.refinedstorage.screen;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.container.ExporterContainer; 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.RedstoneModeSideButton;
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.TypeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.TypeSideButton;
import com.raoulvdberge.refinedstorage.tile.TileExporter; import com.raoulvdberge.refinedstorage.tile.TileExporter;
@@ -21,7 +20,7 @@ public class GuiExporter extends BaseScreen<ExporterContainer> {
addSideButton(new TypeSideButton(this, TileExporter.TYPE)); addSideButton(new TypeSideButton(this, TileExporter.TYPE));
addSideButton(new CompareSideButton(this, TileExporter.COMPARE, IComparer.COMPARE_NBT)); addSideButton(new ExactModeSideButton(this, TileExporter.COMPARE));
} }
@Override @Override

View File

@@ -1,9 +1,8 @@
package com.raoulvdberge.refinedstorage.screen; package com.raoulvdberge.refinedstorage.screen;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.container.ImporterContainer; 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.RedstoneModeSideButton;
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.TypeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.TypeSideButton;
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.WhitelistBlacklistSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.WhitelistBlacklistSideButton;
@@ -24,7 +23,7 @@ public class GuiImporter extends BaseScreen<ImporterContainer> {
addSideButton(new WhitelistBlacklistSideButton(this, TileImporter.WHITELIST_BLACKLIST)); addSideButton(new WhitelistBlacklistSideButton(this, TileImporter.WHITELIST_BLACKLIST));
addSideButton(new CompareSideButton(this, TileImporter.COMPARE, IComparer.COMPARE_NBT)); addSideButton(new ExactModeSideButton(this, TileImporter.COMPARE));
} }
@Override @Override

View File

@@ -1,9 +1,8 @@
package com.raoulvdberge.refinedstorage.screen; package com.raoulvdberge.refinedstorage.screen;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.container.InterfaceContainer; 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.screen.widget.sidebutton.RedstoneModeSideButton;
import com.raoulvdberge.refinedstorage.tile.TileInterface; import com.raoulvdberge.refinedstorage.tile.TileInterface;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
@@ -18,7 +17,7 @@ public class GuiInterface extends BaseScreen<InterfaceContainer> {
public void onPostInit(int x, int y) { public void onPostInit(int x, int y) {
addSideButton(new RedstoneModeSideButton(this, TileInterface.REDSTONE_MODE)); addSideButton(new RedstoneModeSideButton(this, TileInterface.REDSTONE_MODE));
addSideButton(new CompareSideButton(this, TileInterface.COMPARE, IComparer.COMPARE_NBT)); addSideButton(new ExactModeSideButton(this, TileInterface.COMPARE));
} }
@Override @Override

View File

@@ -1,9 +1,8 @@
package com.raoulvdberge.refinedstorage.screen; package com.raoulvdberge.refinedstorage.screen;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.container.StorageMonitorContainer; 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 com.raoulvdberge.refinedstorage.tile.TileStorageMonitor;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
@@ -15,7 +14,7 @@ public class GuiStorageMonitor extends BaseScreen<StorageMonitorContainer> {
@Override @Override
public void onPostInit(int x, int y) { public void onPostInit(int x, int y) {
addSideButton(new CompareSideButton(this, TileStorageMonitor.COMPARE, IComparer.COMPARE_NBT)); addSideButton(new ExactModeSideButton(this, TileStorageMonitor.COMPARE));
} }
@Override @Override

View File

@@ -2,12 +2,10 @@ package com.raoulvdberge.refinedstorage.screen;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.storage.AccessType; import com.raoulvdberge.refinedstorage.api.storage.AccessType;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.*; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.*;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import com.raoulvdberge.refinedstorage.util.RenderUtils; import com.raoulvdberge.refinedstorage.util.RenderUtils;
import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.container.Container; import net.minecraft.inventory.container.Container;
@@ -26,22 +24,20 @@ public class StorageScreen<T extends Container> extends BaseScreen<T> {
private String texture; private String texture;
private TileDataParameter<Integer, ?> typeParameter; private TileDataParameter<Integer, ?> typeParameter;
private TileDataParameter<Integer, ?> redstoneModeParameter; private TileDataParameter<Integer, ?> redstoneModeParameter;
private TileDataParameter<Integer, ?> compareParameter; private TileDataParameter<Integer, ?> exactModeParameter;
private TileDataParameter<Integer, ?> whitelistBlacklistParameter; private TileDataParameter<Integer, ?> whitelistBlacklistParameter;
private TileDataParameter<Integer, ?> priorityParameter; private TileDataParameter<Integer, ?> priorityParameter;
private TileDataParameter<AccessType, ?> accessTypeParameter; private TileDataParameter<AccessType, ?> accessTypeParameter;
private Supplier<Long> storedSupplier; private Supplier<Long> storedSupplier;
private Supplier<Long> capacitySupplier; private Supplier<Long> capacitySupplier;
private Button priorityButton;
public StorageScreen(T container, public StorageScreen(T container,
PlayerInventory inventory, PlayerInventory inventory,
ITextComponent title, ITextComponent title,
String texture, String texture,
@Nullable TileDataParameter<Integer, ?> typeParameter, @Nullable TileDataParameter<Integer, ?> typeParameter,
@Nullable TileDataParameter<Integer, ?> redstoneModeParameter, @Nullable TileDataParameter<Integer, ?> redstoneModeParameter,
@Nullable TileDataParameter<Integer, ?> compareParameter, @Nullable TileDataParameter<Integer, ?> exactModeParameter,
@Nullable TileDataParameter<Integer, ?> whitelistBlacklistParameter, @Nullable TileDataParameter<Integer, ?> whitelistBlacklistParameter,
TileDataParameter<Integer, ?> priorityParameter, TileDataParameter<Integer, ?> priorityParameter,
@Nullable TileDataParameter<AccessType, ?> accessTypeParameter, @Nullable TileDataParameter<AccessType, ?> accessTypeParameter,
@@ -51,7 +47,7 @@ public class StorageScreen<T extends Container> extends BaseScreen<T> {
this.texture = texture; this.texture = texture;
this.typeParameter = typeParameter; this.typeParameter = typeParameter;
this.redstoneModeParameter = redstoneModeParameter; this.redstoneModeParameter = redstoneModeParameter;
this.compareParameter = compareParameter; this.exactModeParameter = exactModeParameter;
this.whitelistBlacklistParameter = whitelistBlacklistParameter; this.whitelistBlacklistParameter = whitelistBlacklistParameter;
this.priorityParameter = priorityParameter; this.priorityParameter = priorityParameter;
this.accessTypeParameter = accessTypeParameter; this.accessTypeParameter = accessTypeParameter;
@@ -73,8 +69,8 @@ public class StorageScreen<T extends Container> extends BaseScreen<T> {
addSideButton(new WhitelistBlacklistSideButton(this, whitelistBlacklistParameter)); addSideButton(new WhitelistBlacklistSideButton(this, whitelistBlacklistParameter));
} }
if (compareParameter != null) { if (exactModeParameter != null) {
addSideButton(new CompareSideButton(this, compareParameter, IComparer.COMPARE_NBT)); addSideButton(new ExactModeSideButton(this, exactModeParameter));
} }
if (accessTypeParameter != null) { if (accessTypeParameter != null) {
@@ -83,7 +79,7 @@ public class StorageScreen<T extends Container> extends BaseScreen<T> {
int buttonWidth = 10 + font.getStringWidth(I18n.format("misc.refinedstorage.priority")); 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)); minecraft.displayGuiScreen(new PriorityScreen(this, priorityParameter, playerInventory));
}); });
} }

View File

@@ -7,25 +7,25 @@ import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
public class CompareSideButton extends SideButton { public class ExactModeSideButton extends SideButton {
private TileDataParameter<Integer, ?> parameter; private static final int MASK = IComparer.COMPARE_NBT;
private int mask;
public CompareSideButton(BaseScreen screen, TileDataParameter<Integer, ?> parameter, int mask) { private TileDataParameter<Integer, ?> parameter;
public ExactModeSideButton(BaseScreen screen, TileDataParameter<Integer, ?> parameter) {
super(screen); super(screen);
this.parameter = parameter; this.parameter = parameter;
this.mask = mask;
} }
@Override @Override
public String getTooltip() { 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) { if ((parameter.getValue() & MASK) == MASK) {
tooltip += I18n.format("gui.yes"); tooltip += I18n.format("sidebutton.refinedstorage.exact_mode.on");
} else { } else {
tooltip += I18n.format("gui.no"); tooltip += I18n.format("sidebutton.refinedstorage.exact_mode.off");
} }
return tooltip; return tooltip;
@@ -33,19 +33,14 @@ public class CompareSideButton extends SideButton {
@Override @Override
protected void renderButtonIcon(int x, int y) { protected void renderButtonIcon(int x, int y) {
int ty = 0; int ty = 16 * 12;
int tx = (parameter.getValue() & MASK) == MASK ? 0 : 16;
if (mask == IComparer.COMPARE_NBT) {
ty = 48;
}
int tx = (parameter.getValue() & mask) == mask ? 0 : 16;
screen.blit(x, y, tx, ty, 16, 16); screen.blit(x, y, tx, ty, 16, 16);
} }
@Override @Override
public void onPress() { public void onPress() {
TileDataManager.setParameter(parameter, parameter.getValue() ^ mask); TileDataManager.setParameter(parameter, parameter.getValue() ^ MASK);
} }
} }

View File

@@ -123,7 +123,9 @@
"misc.refinedstorage.last_modified.weeks": "Last modified %d weeks ago by %s", "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.year": "Last modified %d year ago by %s",
"misc.refinedstorage.last_modified.years": "Last modified %d years 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": "Redstone mode",
"sidebutton.refinedstorage.redstone_mode.0": "Ignore redstone signal", "sidebutton.refinedstorage.redstone_mode.0": "Ignore redstone signal",
"sidebutton.refinedstorage.redstone_mode.1": "Only work with redstone signal", "sidebutton.refinedstorage.redstone_mode.1": "Only work with redstone signal",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB