From 488ce3e6004ea0054487b3472d81820f288771a9 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sat, 17 Sep 2016 22:42:19 +0200 Subject: [PATCH] Add oredict button to grid --- .../apiimpl/autocrafting/CraftingPattern.java | 2 +- .../java/refinedstorage/gui/grid/GuiGrid.java | 24 +++++++++++++++ .../java/refinedstorage/item/ItemPattern.java | 21 +++++++++++++ .../refinedstorage/tile/grid/TileGrid.java | 28 ++++++++++++++++++ .../gui/processing_pattern_encoder.png | Bin 2551 -> 2555 bytes 5 files changed, 74 insertions(+), 1 deletion(-) diff --git a/src/main/java/refinedstorage/apiimpl/autocrafting/CraftingPattern.java b/src/main/java/refinedstorage/apiimpl/autocrafting/CraftingPattern.java index 4ce1f07ad..7e4371eb7 100755 --- a/src/main/java/refinedstorage/apiimpl/autocrafting/CraftingPattern.java +++ b/src/main/java/refinedstorage/apiimpl/autocrafting/CraftingPattern.java @@ -85,7 +85,7 @@ public class CraftingPattern implements ICraftingPattern { @Override public boolean isOredicted() { - return true; + return ItemPattern.isOredicted(stack); } @Override diff --git a/src/main/java/refinedstorage/gui/grid/GuiGrid.java b/src/main/java/refinedstorage/gui/grid/GuiGrid.java index 6964e6ae4..ba64db8e0 100755 --- a/src/main/java/refinedstorage/gui/grid/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/grid/GuiGrid.java @@ -4,6 +4,7 @@ import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ListMultimap; import com.google.common.collect.Multimaps; import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.renderer.GlStateManager; @@ -13,6 +14,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fml.client.config.GuiCheckBox; import net.minecraftforge.fml.common.FMLCommonHandler; import refinedstorage.RefinedStorage; import refinedstorage.api.network.grid.IItemGridHandler; @@ -30,6 +32,7 @@ import refinedstorage.gui.sidebutton.*; import refinedstorage.integration.jei.IntegrationJEI; import refinedstorage.integration.jei.RefinedStorageJEIPlugin; import refinedstorage.network.*; +import refinedstorage.tile.data.TileDataManager; import refinedstorage.tile.grid.IGrid; import refinedstorage.tile.grid.TileGrid; @@ -54,6 +57,8 @@ public class GuiGrid extends GuiBase { private GuiTextField searchField; + private GuiCheckBox patternOredicted; + private ContainerGrid container; private IGrid grid; @@ -94,6 +99,10 @@ public class GuiGrid extends GuiBase { searchField.yPosition = sy; } + if (grid.getType() == EnumGridType.PATTERN) { + patternOredicted = addCheckBox(x + 64, y + 138, "Use oredict", TileGrid.PATTERN_OREDICTED.getValue()); // @TODO: I18N + } + if (grid.getType() != EnumGridType.FLUID) { addSideButton(new SideButtonGridViewType(grid)); } @@ -402,6 +411,15 @@ public class GuiGrid extends GuiBase { } } + @Override + protected void actionPerformed(GuiButton button) throws IOException { + super.actionPerformed(button); + + if (button == patternOredicted) { + TileDataManager.setParameter(TileGrid.PATTERN_OREDICTED, patternOredicted.isChecked()); + } + } + @Override protected void keyTyped(char character, int keyCode) throws IOException { if (checkHotbarKeys(keyCode)) { @@ -427,4 +445,10 @@ public class GuiGrid extends GuiBase { searchField.setFocused(TileGrid.isSearchBoxModeWithAutoselection(mode)); } } + + public void updatePatternOredicted(boolean oredicted) { + if (patternOredicted != null) { + patternOredicted.setIsChecked(oredicted); + } + } } diff --git a/src/main/java/refinedstorage/item/ItemPattern.java b/src/main/java/refinedstorage/item/ItemPattern.java index d44a1d8e3..abd685d02 100755 --- a/src/main/java/refinedstorage/item/ItemPattern.java +++ b/src/main/java/refinedstorage/item/ItemPattern.java @@ -29,6 +29,7 @@ import java.util.Set; public class ItemPattern extends ItemBase implements ICraftingPatternProvider { private static final String NBT_SLOT = "Slot_%d"; private static final String NBT_OUTPUTS = "Outputs"; + private static final String NBT_OREDICTED = "Oredicted"; public ItemPattern() { super("pattern"); @@ -52,6 +53,10 @@ public class ItemPattern extends ItemBase implements ICraftingPatternProvider { } combineItems(tooltip, true, Iterables.toArray(pattern.getOutputs(), ItemStack.class)); + + if (pattern.isOredicted()) { + tooltip.add(TextFormatting.BLUE + "Uses ore dictionary"); // @TODO: I18N + } } else { tooltip.add(TextFormatting.RED + I18n.format("misc.refinedstorage:pattern.invalid") + TextFormatting.RESET); @@ -78,6 +83,22 @@ public class ItemPattern extends ItemBase implements ICraftingPatternProvider { } } + public static void setOredicted(ItemStack pattern, boolean oredicted) { + if (!pattern.hasTagCompound()) { + pattern.setTagCompound(new NBTTagCompound()); + } + + pattern.getTagCompound().setBoolean(NBT_OREDICTED, oredicted); + } + + public static boolean isOredicted(ItemStack pattern) { + if (!pattern.hasTagCompound() || !pattern.getTagCompound().hasKey(NBT_OREDICTED)) { + return false; + } + + return pattern.getTagCompound().getBoolean(NBT_OREDICTED); + } + public static void setSlot(ItemStack pattern, int slot, ItemStack stack) { if (!pattern.hasTagCompound()) { pattern.setTagCompound(new NBTTagCompound()); diff --git a/src/main/java/refinedstorage/tile/grid/TileGrid.java b/src/main/java/refinedstorage/tile/grid/TileGrid.java index aba7e3fe4..f12c8e81d 100755 --- a/src/main/java/refinedstorage/tile/grid/TileGrid.java +++ b/src/main/java/refinedstorage/tile/grid/TileGrid.java @@ -107,10 +107,28 @@ public class TileGrid extends TileNode implements IGrid { } }); + public static final TileDataParameter PATTERN_OREDICTED = new TileDataParameter<>(DataSerializers.BOOLEAN, false, new ITileDataProducer() { + @Override + public Boolean getValue(TileGrid tile) { + return tile.patternOredicted; + } + }, new ITileDataConsumer() { + @Override + public void setValue(TileGrid tile, Boolean value) { + tile.patternOredicted = value; + tile.markDirty(); + } + }, parameter -> { + if (Minecraft.getMinecraft().currentScreen instanceof GuiGrid) { + ((GuiGrid) Minecraft.getMinecraft().currentScreen).updatePatternOredicted(parameter.getValue()); + } + }); + public static final String NBT_VIEW_TYPE = "ViewType"; public static final String NBT_SORTING_DIRECTION = "SortingDirection"; public static final String NBT_SORTING_TYPE = "SortingType"; public static final String NBT_SEARCH_BOX_MODE = "SearchBoxMode"; + private static final String NBT_PATTERN_OREDICTED = "PatternOredicted"; public static final int SORTING_DIRECTION_ASCENDING = 0; public static final int SORTING_DIRECTION_DESCENDING = 1; @@ -152,11 +170,14 @@ public class TileGrid extends TileNode implements IGrid { private int sortingType = SORTING_TYPE_NAME; private int searchBoxMode = SEARCH_BOX_MODE_NORMAL; + private boolean patternOredicted = false; + public TileGrid() { dataManager.addWatchedParameter(VIEW_TYPE); dataManager.addWatchedParameter(SORTING_DIRECTION); dataManager.addWatchedParameter(SORTING_TYPE); dataManager.addWatchedParameter(SEARCH_BOX_MODE); + dataManager.addWatchedParameter(PATTERN_OREDICTED); } @Override @@ -308,6 +329,8 @@ public class TileGrid extends TileNode implements IGrid { ItemStack pattern = new ItemStack(RefinedStorageItems.PATTERN); + ItemPattern.setOredicted(pattern, patternOredicted); + for (int i = 0; i < 9; ++i) { ItemStack ingredient = matrix.getStackInSlot(i); @@ -461,6 +484,10 @@ public class TileGrid extends TileNode implements IGrid { if (tag.hasKey(NBT_SEARCH_BOX_MODE)) { searchBoxMode = tag.getInteger(NBT_SEARCH_BOX_MODE); } + + if (tag.hasKey(NBT_PATTERN_OREDICTED)) { + patternOredicted = tag.getBoolean(NBT_PATTERN_OREDICTED); + } } @Override @@ -475,6 +502,7 @@ public class TileGrid extends TileNode implements IGrid { tag.setInteger(NBT_SORTING_DIRECTION, sortingDirection); tag.setInteger(NBT_SORTING_TYPE, sortingType); tag.setInteger(NBT_SEARCH_BOX_MODE, searchBoxMode); + tag.setBoolean(NBT_PATTERN_OREDICTED, patternOredicted); return tag; } 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 f6fcdb0b5bad7a5cdfc5fe6350d29056c85583c9..7d30bc3a889b0d0ea087eb2e6ef65c82b863067e 100755 GIT binary patch delta 1305 zcmew^{9AZK2#fIn1_r(Zj9J$@IT;ujBuiW)N`mv#O3D+9QW**oGxJLH@={9_O!N%& z3=P(DaRF7cCQNQ)vEsS^wz5v=?zuzD)i0z?KEonk|K-o(>roFLY~Qy0RaN|}pPify z*DF`v3}Ipye>?5^Ti3wnjn}ixc^MME%CIzq-L}nipLqRc<-3gz4fa>g<(G>zJTKk% zE94PhM)|&L(;J@ejJrOOV?jLgRlba^w%@r|GQ_ezm^Wv~I**2R)AwkvTD>58I>&|T z1$O^Ge*S(dNuTj={hzDZ2Ts;DGVHHj_j=`e=BT*!uf6uLRP`0toG+9*-g_+2`H|`a zt8?k|@0ZW&eYWwj2g?lZ^C^cpHY{c+e=hxMG3SA;udbe+UKJDH{+r8Sj<(%tmIv<@ zLSkF}zx+8Uz%b`>+l)-^z8Cg8b^grTVjfi}dZ6@!${s1#z#mSMb7nHtAGmL<8}+>7 z-{jM`@{S&rXFPCO!Gd4J!GfzfxRK%is=4wlQVKl({{$)=SpDGB`X53Z><^dfe-yef z|JP}aApNH1_$5p+tGpE~?D^T07{6@x=UTsSGKWDGBjeX3jc-C1&f9Y|e?HE{_>Z&M zam7A9iI&BI3Lk|ee*Sy;ecyfix8LpezxCe3Qup=m{JOd~^S_?=tBqGW5L2Nh?baZ} zWOLcJMxsA`sx7O;vG<=hzg*0)LM3$d*GmtrtGPDp;B@e`{X2OXo2o*Mdq&}8*?_fE zAIS!2h1&^KaMmpTUdI!#Zc6uVR)f!ylV7tbGTxcY%PvuWe*e3;wcDB*1Prz$Et~1> z@IUYC)(gkqzg2KhO2|0s!+Bt_*UmY6xIkSRb<%>K`dze$GwDqr8{evr6rZ5UA0Kz!cGwx=IV59F9JOlofnJ2Qo!!Nvq= zPYlC@i4hDo0^AMtD~+}!sdY0vdw+jM{Ka>CGxE#dbId&ZLDgXLPf=IK1otIJtDS`y z_6Xp1*k))OWB2oS$#)@QrW6-+HNrdeuYgr)@dU zknM_W!GTwn9WZkl96s&6;gkJ$z1fcYW)#x2WqFAbbl{1xO~kjNt(erch=Ffdu}4>sz=e*u-DphSs!6t zST&t+2L=OU!M$U%7#`fqo^|y1?irccvKx6D%4cVa-M?UF4GKVz1;zM<4hcv;MUQ%Z2rgS?pVG&HLRN(y)%Hz~3(>T*cwK_dU_8u@}~Qv%Ihk zi2wiN*WPV6q8;Mv_gC>+?9>-{P=3DD_G_)f>DQ&Po!cGG7xulk^n1MHqD7X+9@d!S zKi_=*?YH@&O_@w5L-9i|vmOR(u7dJ?3+-kx#H^0nTeI@`*U}y984mA!wAqK@AD`3J z&>t@6<#`wnSmt)j-1ea3-`vxO)_Ybj77b^NVfR0@I#8rlf6Bp`nhf=SEH5uA?R#;5 z=bE=+F@Gc(Y6I^oIh<@bNr{oiu`zuh+dk77Trey{)ab7TEAd+V>YFb`U?R4l9hVIX&2 ztD4K8=l=8b%kGQ;o~y!MFFjoTO(daExM9++Ka*FmsVe+&$tavG8?bijBiR70a65qt z?wZBl>v#gzP3hjvYVcWf@>@1VMw`j}>=GjD_rHr{oV6*Gxsxo zsb9o+RC+6B`!p&#Us2YY%=84ql}Zqj|e-0<=>t0ZZL_hy%M_ASgU zYk_G1DRKq68S2`E_nGTfDo6W