diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerProcessingPatternEncoder.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerProcessingPatternEncoder.java index 28a06f89e..c4bf80cd7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerProcessingPatternEncoder.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerProcessingPatternEncoder.java @@ -38,7 +38,7 @@ public class ContainerProcessingPatternEncoder extends ContainerBase { } } - addPlayerInventory(8, 90); + addPlayerInventory(8, 101); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiProcessingPatternEncoder.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiProcessingPatternEncoder.java index d1c17e88c..9bf352d19 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiProcessingPatternEncoder.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiProcessingPatternEncoder.java @@ -5,22 +5,29 @@ import com.raoulvdberge.refinedstorage.container.ContainerProcessingPatternEncod import com.raoulvdberge.refinedstorage.network.MessageGridPatternCreate; import com.raoulvdberge.refinedstorage.network.MessageProcessingPatternEncoderClear; import com.raoulvdberge.refinedstorage.tile.TileProcessingPatternEncoder; +import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.resources.I18n; import net.minecraft.init.SoundEvents; +import net.minecraftforge.fml.client.config.GuiCheckBox; import java.io.IOException; public class GuiProcessingPatternEncoder extends GuiBase { private TileProcessingPatternEncoder encoder; + private GuiCheckBox oredictPattern; + public GuiProcessingPatternEncoder(ContainerProcessingPatternEncoder container, TileProcessingPatternEncoder encoder) { - super(container, 176, 172); + super(container, 176, 183); this.encoder = encoder; } @Override public void init(int x, int y) { + oredictPattern = addCheckBox(x + 7, y + 76, I18n.format("misc.refinedstorage:oredict"), TileProcessingPatternEncoder.OREDICT_PATTERN.getValue()); } @Override @@ -32,7 +39,7 @@ public class GuiProcessingPatternEncoder extends GuiBase { } private boolean isOverClear(int mouseX, int mouseY) { - return inBounds(136, 75, 7, 7, mouseX, mouseY); + return inBounds(80, 19, 7, 7, mouseX, mouseY); } @Override @@ -57,7 +64,7 @@ public class GuiProcessingPatternEncoder extends GuiBase { @Override public void drawForeground(int mouseX, int mouseY) { drawString(7, 7, t("gui.refinedstorage:processing_pattern_encoder")); - drawString(7, 78, t("container.inventory")); + drawString(7, 90, t("container.inventory")); if (isOverCreatePattern(mouseX, mouseY)) { drawTooltip(mouseX, mouseY, t("gui.refinedstorage:processing_pattern_encoder.pattern_create")); @@ -68,6 +75,15 @@ public class GuiProcessingPatternEncoder extends GuiBase { } } + @Override + protected void actionPerformed(GuiButton button) throws IOException { + super.actionPerformed(button); + + if (button == oredictPattern) { + TileDataManager.setParameter(TileProcessingPatternEncoder.OREDICT_PATTERN, oredictPattern.isChecked()); + } + } + @Override protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { super.mouseClicked(mouseX, mouseY, mouseButton); @@ -82,4 +98,10 @@ public class GuiProcessingPatternEncoder extends GuiBase { mc.getSoundHandler().playSound(PositionedSoundRecord.getMasterRecord(SoundEvents.UI_BUTTON_CLICK, 1.0F)); } } + + public void updateOredictPattern(boolean checked) { + if (oredictPattern != null) { + oredictPattern.setIsChecked(checked); + } + } } \ No newline at end of file diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java index d66cf1fc2..0883bd56f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java @@ -120,11 +120,13 @@ public class GuiGrid extends GuiBase { searchField.yPosition = sy; } - if (oredictPattern == null) { - oredictPattern = addCheckBox(ox, oy, I18n.format("misc.refinedstorage:oredict"), TileGrid.OREDICT_PATTERN.getValue()); - } else { - oredictPattern.xPosition = ox; - oredictPattern.yPosition = oy; + if (grid.getType() == EnumGridType.PATTERN) { + if (oredictPattern == null) { + oredictPattern = addCheckBox(ox, oy, I18n.format("misc.refinedstorage:oredict"), TileGrid.OREDICT_PATTERN.getValue()); + } else { + oredictPattern.xPosition = ox; + oredictPattern.yPosition = oy; + } } if (grid.getType() != EnumGridType.FLUID) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/sidebutton/SideButtonCompare.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/sidebutton/SideButtonCompare.java index 52a456c00..8721589e9 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/sidebutton/SideButtonCompare.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/sidebutton/SideButtonCompare.java @@ -39,7 +39,7 @@ public class SideButtonCompare extends SideButton { } else if (mask == IComparer.COMPARE_NBT) { ty = 48; } else if (mask == IComparer.COMPARE_OREDICT) { - ty = -100; // Temporary + return; } int tx = (parameter.getValue() & mask) == mask ? 0 : 16; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileProcessingPatternEncoder.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileProcessingPatternEncoder.java index ca07ce9d5..652243056 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileProcessingPatternEncoder.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileProcessingPatternEncoder.java @@ -2,11 +2,17 @@ package com.raoulvdberge.refinedstorage.tile; import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.RSUtils; +import com.raoulvdberge.refinedstorage.gui.GuiProcessingPatternEncoder; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic; import com.raoulvdberge.refinedstorage.inventory.ItemValidatorBasic; import com.raoulvdberge.refinedstorage.item.ItemPattern; +import com.raoulvdberge.refinedstorage.tile.data.ITileDataConsumer; +import com.raoulvdberge.refinedstorage.tile.data.ITileDataProducer; +import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; +import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.datasync.DataSerializers; import net.minecraft.util.EnumFacing; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.items.CapabilityItemHandler; @@ -14,9 +20,35 @@ import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; public class TileProcessingPatternEncoder extends TileBase { + private static final String NBT_OREDICT_PATTERN = "OredictPattern"; + + public static final TileDataParameter OREDICT_PATTERN = new TileDataParameter<>(DataSerializers.BOOLEAN, false, new ITileDataProducer() { + @Override + public Boolean getValue(TileProcessingPatternEncoder tile) { + return tile.oredictPattern; + } + }, new ITileDataConsumer() { + @Override + public void setValue(TileProcessingPatternEncoder tile, Boolean value) { + tile.oredictPattern = value; + + tile.markDirty(); + } + }, parameter -> { + if (Minecraft.getMinecraft().currentScreen instanceof GuiProcessingPatternEncoder) { + ((GuiProcessingPatternEncoder) Minecraft.getMinecraft().currentScreen).updateOredictPattern(parameter.getValue()); + } + }); + private ItemHandlerBasic patterns = new ItemHandlerBasic(2, this, new ItemValidatorBasic(RSItems.PATTERN)); private ItemHandlerBasic configuration = new ItemHandlerBasic(9 * 2, this); + private boolean oredictPattern; + + public TileProcessingPatternEncoder() { + dataManager.addWatchedParameter(OREDICT_PATTERN); + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); @@ -24,6 +56,8 @@ public class TileProcessingPatternEncoder extends TileBase { RSUtils.writeItems(patterns, 0, tag); RSUtils.writeItems(configuration, 1, tag); + tag.setBoolean(NBT_OREDICT_PATTERN, oredictPattern); + return tag; } @@ -33,12 +67,18 @@ public class TileProcessingPatternEncoder extends TileBase { RSUtils.readItems(patterns, 0, tag); RSUtils.readItems(configuration, 1, tag); + + if (tag.hasKey(NBT_OREDICT_PATTERN)) { + oredictPattern = tag.getBoolean(NBT_OREDICT_PATTERN); + } } public void onCreatePattern() { if (canCreatePattern()) { ItemStack pattern = new ItemStack(RSItems.PATTERN); + ItemPattern.setOredict(pattern, oredictPattern); + for (int i = 0; i < 18; ++i) { if (configuration.getStackInSlot(i) != null) { if (i >= 9) { diff --git a/src/main/resources/assets/refinedstorage/textures/gui/processing_pattern_encoder.png b/src/main/resources/assets/refinedstorage/textures/gui/processing_pattern_encoder.png index f6fcdb0b5..185fd197b 100755 Binary files a/src/main/resources/assets/refinedstorage/textures/gui/processing_pattern_encoder.png and b/src/main/resources/assets/refinedstorage/textures/gui/processing_pattern_encoder.png differ