diff --git a/src/main/java/com/glodblock/github/client/gui/GuiBaseFluidPatternTerminal.java b/src/main/java/com/glodblock/github/client/gui/GuiBaseFluidPatternTerminal.java index 6eb7460a..d8ecad73 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiBaseFluidPatternTerminal.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiBaseFluidPatternTerminal.java @@ -59,7 +59,7 @@ public class GuiBaseFluidPatternTerminal extends GuiFCBaseMonitor { } else if( this.encodeBtn == btn ) { - FluidCraft.proxy.netHandler.sendToServer( new CPacketFluidPatternTermBtns( "PatternTerminal.Encode", isShiftKeyDown() ? "2" : "1" ) ); + FluidCraft.proxy.netHandler.sendToServer( new CPacketFluidPatternTermBtns( "PatternTerminal.Encode", (isCtrlKeyDown() ? 1 : 0) << 1 | (isShiftKeyDown() ? 1 : 0) )); } else if( this.clearBtn == btn ) { diff --git a/src/main/java/com/glodblock/github/client/gui/GuiBaseFluidPatternTerminalEx.java b/src/main/java/com/glodblock/github/client/gui/GuiBaseFluidPatternTerminalEx.java index bd7a37de..2e19ae6d 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiBaseFluidPatternTerminalEx.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiBaseFluidPatternTerminalEx.java @@ -58,7 +58,7 @@ public class GuiBaseFluidPatternTerminalEx extends GuiFCBaseMonitor { if( this.encodeBtn == btn ) { - FluidCraft.proxy.netHandler.sendToServer( new CPacketFluidPatternTermBtns( "PatternTerminalEx.Encode", isShiftKeyDown() ? "2" : "1" ) ); + FluidCraft.proxy.netHandler.sendToServer( new CPacketFluidPatternTermBtns( "PatternTerminalEx.Encode",(isCtrlKeyDown() ? 1 : 0) << 1 | (isShiftKeyDown() ? 1 : 0)) ); } else if( this.clearBtn == btn ) { diff --git a/src/main/java/com/glodblock/github/client/gui/GuiFluidIO.java b/src/main/java/com/glodblock/github/client/gui/GuiFluidIO.java index f14099e6..4a6baab0 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiFluidIO.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiFluidIO.java @@ -6,6 +6,8 @@ import appeng.core.localization.GuiText; import com.glodblock.github.client.gui.container.ContainerFluidIO; import com.glodblock.github.common.parts.PartFluidImportBus; import com.glodblock.github.common.parts.PartSharedFluidBus; +import com.glodblock.github.util.NameConst; +import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; public class GuiFluidIO extends GuiUpgradeable @@ -28,5 +30,30 @@ public class GuiFluidIO extends GuiUpgradeable public void update(int id, IAEFluidStack stack) { ((ContainerFluidIO)this.cvb).getBus().setFluidInSlot(id, stack); } + @Override + public void drawFG( final int offsetX, final int offsetY, final int mouseX, final int mouseY ) + { + this.fontRendererObj.drawString( this.getGuiDisplayName(I18n.format(this.bus instanceof PartFluidImportBus ? NameConst.GUI_FLUID_IMPORT : NameConst.GUI_FLUID_EXPORT)), 8, 6, 4210752 ); + this.fontRendererObj.drawString( GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752 ); + if( this.redstoneMode != null ) + { + this.redstoneMode.set( this.cvb.getRedStoneMode() ); + } + + if( this.fuzzyMode != null ) + { + this.fuzzyMode.set( this.cvb.getFuzzyMode() ); + } + + if( this.craftMode != null ) + { + this.craftMode.set( this.cvb.getCraftingMode() ); + } + + if( this.schedulingMode != null ) + { + this.schedulingMode.set( this.cvb.getSchedulingMode() ); + } + } } diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminal.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminal.java index 0f77c28a..f909d684 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminal.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminal.java @@ -29,6 +29,19 @@ public class ContainerFluidPatternTerminal extends FCBasePartContainer implement super(ip, monitorable); } + public void encodeAllItemAndMoveToInventory(){ + encode(); + ItemStack output = this.patternSlotOUT.getStack(); + if(output != null){ + if(this.patternSlotIN.getStack() != null) output.stackSize += this.patternSlotIN.getStack().stackSize; + if (!getPlayerInv().addItemStackToInventory( output )){ + getPlayerInv().player.entityDropItem(output, 0); + } + this.patternSlotOUT.putStack( null ); + this.patternSlotIN.putStack(null); + } + } + @Override public void encode() { if (!checkHasFluidPattern()) { diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminalEx.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminalEx.java index bb883f35..d1c02753 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminalEx.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminalEx.java @@ -28,6 +28,19 @@ public class ContainerFluidPatternTerminalEx extends FCBasePartContainerEx imple super(ip, monitorable); } + public void encodeAllItemAndMoveToInventory(){ + encode(); + ItemStack output = this.patternSlotOUT.getStack(); + if(output != null){ + if(this.patternSlotIN.getStack() != null) output.stackSize += this.patternSlotIN.getStack().stackSize; + if (!getPlayerInv().addItemStackToInventory( output )){ + getPlayerInv().player.entityDropItem(output, 0); + } + this.patternSlotOUT.putStack( null ); + this.patternSlotIN.putStack(null); + } + } + @Override public void encode() { if (!checkHasFluidPattern()) { @@ -98,6 +111,8 @@ public class ContainerFluidPatternTerminalEx extends FCBasePartContainerEx imple private void encodeFluidPattern() { ItemStack patternStack = new ItemStack(ItemAndBlockHolder.PATTERN); FluidPatternDetails pattern = new FluidPatternDetails(patternStack); + pattern.setCombine(this.combine ? 1:0); + pattern.setPriority(this.prioritize? 1:0); pattern.setInputs(collectInventory(craftingSlots)); pattern.setOutputs(collectInventory(outputSlots)); patternSlotOUT.putStack(pattern.writeToStack()); diff --git a/src/main/java/com/glodblock/github/client/gui/container/FCBasePartContainerEx.java b/src/main/java/com/glodblock/github/client/gui/container/FCBasePartContainerEx.java index 4ba13c36..299f0e26 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/FCBasePartContainerEx.java +++ b/src/main/java/com/glodblock/github/client/gui/container/FCBasePartContainerEx.java @@ -214,8 +214,7 @@ public class FCBasePartContainerEx extends FCBaseMonitorContain implements IAEAp encodedValue.setTag( "in", tagIn ); encodedValue.setTag( "out", tagOut ); - encodedValue.setBoolean( "piroritize", this.isPrioritize() ); - + encodedValue.setBoolean( "prioritize", this.isPrioritize() ); output.setTagCompound( encodedValue ); } diff --git a/src/main/java/com/glodblock/github/common/item/ItemFluidEncodedPattern.java b/src/main/java/com/glodblock/github/common/item/ItemFluidEncodedPattern.java index 0e777d2e..e9b7ab03 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemFluidEncodedPattern.java +++ b/src/main/java/com/glodblock/github/common/item/ItemFluidEncodedPattern.java @@ -1,13 +1,18 @@ package com.glodblock.github.common.item; import appeng.api.networking.crafting.ICraftingPatternDetails; +import appeng.core.localization.GuiText; import appeng.items.misc.ItemEncodedPattern; import com.glodblock.github.FluidCraft; import com.glodblock.github.util.FluidPatternDetails; import com.glodblock.github.util.NameConst; import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.StatCollector; import net.minecraft.world.World; +import java.util.List; public class ItemFluidEncodedPattern extends ItemEncodedPattern { @@ -27,5 +32,21 @@ public class ItemFluidEncodedPattern extends ItemEncodedPattern { GameRegistry.registerItem(this, NameConst.ITEM_FLUID_ENCODED_PATTERN, FluidCraft.MODID); return this; } - + @Override + public void addCheckedInformation(final ItemStack stack, final EntityPlayer player, final List lines, final boolean displayMoreInfo ) + { + // combine and prioritization button is not work for now + NBTTagCompound data = stack.getTagCompound(); + final boolean combine = data.getBoolean("combine"); + final boolean prio = data.getBoolean("priorization"); + super.addCheckedInformation(stack,player,lines,displayMoreInfo); +// lines.add(String.format("%s: %s",combine ? StatCollector.translateToLocal(NameConst.TT_KEY+"combine"):StatCollector.translateToLocal(NameConst.TT_KEY+"not_combine"),combine ? GuiText.Yes.getLocal() : GuiText.No.getLocal())); +// lines.add(String.format("%s: %s",prio ? StatCollector.translateToLocal(NameConst.TT_KEY+"prio"):StatCollector.translateToLocal(NameConst.TT_KEY+"not_prio"),prio ? GuiText.Yes.getLocal() : GuiText.No.getLocal())); + } + public ItemStack stack() { + return new ItemStack(this, 1); + } + public ItemStack stack(int size) { + return new ItemStack(this, size); + } } diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminal.java b/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminal.java index b0c3b633..031803f1 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminal.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminal.java @@ -134,7 +134,10 @@ public class PartFluidPatternTerminal extends FCBasePart { this.setCraftingRecipe(details.isCraftable()); this.setSubstitution(details.canSubstitute()); - + if(newStack != null){ + NBTTagCompound data = newStack.getTagCompound(); + this.setCombineMode(data.getInteger("combine") == 1); + } for (int i = 0; i < this.crafting.getSizeInventory(); i++) { this.crafting.setInventorySlotContents(i, null); } diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminalEx.java b/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminalEx.java index 42c946aa..98c96bd3 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminalEx.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminalEx.java @@ -160,6 +160,11 @@ public class PartFluidPatternTerminalEx extends FCBasePart { } this.setSubstitution(details.canSubstitute()); + if(newStack != null){ + NBTTagCompound data = newStack.getTagCompound(); + this.setCombineMode(data.getInteger("combine") == 1); + this.setPrioritization(data.getInteger("priorization") == 1); + } this.setInverted(inputsCount <= 8 && outputCount >= 8); this.setActivePage(0); diff --git a/src/main/java/com/glodblock/github/loader/RecipeLoader.java b/src/main/java/com/glodblock/github/loader/RecipeLoader.java index 05b1bfd1..6adb76af 100644 --- a/src/main/java/com/glodblock/github/loader/RecipeLoader.java +++ b/src/main/java/com/glodblock/github/loader/RecipeLoader.java @@ -49,7 +49,7 @@ public class RecipeLoader implements Runnable { GameRegistry.addShapelessRecipe(FLUID_TERMINAL_EX.stack(), FLUID_TERMINAL.stack(), AE2_PROCESS_CAL, AE2_PROCESS_ENG, AE2_PROCESS_LOG); GameRegistry.addRecipe(new ShapedOreRecipe(BUFFER.stack(), "ILI", "AGF", "IBI", 'I', "ingotIron", 'G', AE2_QUARTZ_GLASS, 'L', AE2_CELL_1K, 'A', AE2_CORE_ANN, 'F', AE2_CORE_FOM, 'B', BUCKET)); GameRegistry.addRecipe(new ShapedOreRecipe(LARGE_BUFFER.stack(), "BGB", "GEG", "BGB", 'B', BUFFER.stack(), 'G', AE2_QUARTZ_GLASS, 'E', AE2_PROCESS_ENG)); - + GameRegistry.addShapelessRecipe(AE2_BLANK_PATTERN,PATTERN.stack()); if (Config.fluidCells) { OreDictionary.registerOre("anyCertusCrystal", AE2_PURE_CERTUS); for (ItemStack it : OreDictionary.getOres("crystalCertusQuartz")) diff --git a/src/main/java/com/glodblock/github/network/CPacketFluidPatternTermBtns.java b/src/main/java/com/glodblock/github/network/CPacketFluidPatternTermBtns.java index 1028332e..eb8530cf 100644 --- a/src/main/java/com/glodblock/github/network/CPacketFluidPatternTermBtns.java +++ b/src/main/java/com/glodblock/github/network/CPacketFluidPatternTermBtns.java @@ -19,6 +19,11 @@ public class CPacketFluidPatternTermBtns implements IMessage { Value = value; } + public CPacketFluidPatternTermBtns( final String name, final Integer value ) { + Name = name; + Value = value.toString(); + } + public CPacketFluidPatternTermBtns() { // NO-OP } @@ -66,10 +71,17 @@ public class CPacketFluidPatternTermBtns implements IMessage { cpt.getPatternTerminal().setCraftingRecipe(Value.equals("1")); break; case "PatternTerminal.Encode": - if (Value.equals("2")) - cpt.encodeAndMoveToInventory(); - else - cpt.encode(); + switch (Value) { + case "0": + cpt.encode(); + break; + case "1": + cpt.encodeAndMoveToInventory(); + break; + case "3": + cpt.encodeAllItemAndMoveToInventory(); + break; + } break; case "PatternTerminal.Clear": cpt.clear(); @@ -89,10 +101,17 @@ public class CPacketFluidPatternTermBtns implements IMessage { final ContainerFluidPatternTerminalEx cpt = (ContainerFluidPatternTerminalEx) c; switch (Name) { case "PatternTerminalEx.Encode": - if (Value.equals("2")) - cpt.encodeAndMoveToInventory(); - else - cpt.encode(); + switch (Value) { + case "0": + cpt.encode(); + break; + case "1": + cpt.encodeAndMoveToInventory(); + break; + case "3": + cpt.encodeAllItemAndMoveToInventory(); + break; + } break; case "PatternTerminalEx.Clear": cpt.clear(); diff --git a/src/main/java/com/glodblock/github/util/FluidPatternDetails.java b/src/main/java/com/glodblock/github/util/FluidPatternDetails.java index ad19e186..a1af6dba 100644 --- a/src/main/java/com/glodblock/github/util/FluidPatternDetails.java +++ b/src/main/java/com/glodblock/github/util/FluidPatternDetails.java @@ -22,6 +22,7 @@ public class FluidPatternDetails implements ICraftingPatternDetails, Comparable< private IAEItemStack patternStackAe; private IAEItemStack[] inputs = null, inputsCond = null, outputs = null, outputsCond = null; private int priority = 0; + private int combine = 0; public FluidPatternDetails(ItemStack stack) { this.patternStack = stack; @@ -42,6 +43,8 @@ public class FluidPatternDetails implements ICraftingPatternDetails, Comparable< public void setPriority(int priority) { this.priority = priority; } + public void setCombine(int combine){ this.combine = combine;} + public int getCombine(){return combine;} @Override public boolean isCraftable() { @@ -154,6 +157,8 @@ public class FluidPatternDetails implements ICraftingPatternDetails, Comparable< //Shits tag.setTag("in", writeStackArray(checkInitialized(inputs))); tag.setTag("out", writeStackArray(checkInitialized(outputs))); + tag.setInteger("priorization",this.getPriority()); + tag.setInteger("combine",this.getCombine()); patternStack.setTagCompound(tag); patternStackAe = Objects.requireNonNull(AEItemStack.create(patternStack)); return patternStack; diff --git a/src/main/java/com/glodblock/github/util/NameConst.java b/src/main/java/com/glodblock/github/util/NameConst.java index 58eabc03..ae0c3061 100644 --- a/src/main/java/com/glodblock/github/util/NameConst.java +++ b/src/main/java/com/glodblock/github/util/NameConst.java @@ -41,5 +41,7 @@ public class NameConst { public static final String GUI_LARGE_INGREDIENT_BUFFER = GUI_KEY + BLOCK_LARGE_INGREDIENT_BUFFER; public static final String GUI_FLUID_INTERFACE = GUI_KEY + BLOCK_FLUID_INTERFACE; public static final String GUI_OC_PATTERN_EDITOR = GUI_KEY + BLOCK_OC_PATTERN_EDITOR; + public static final String GUI_FLUID_IMPORT = GUI_KEY + ITEM_PART_FLUID_IMPORT; + public static final String GUI_FLUID_EXPORT = GUI_KEY + ITEM_PART_FLUID_EXPORT; } diff --git a/src/main/resources/assets/ae2fc/lang/en_US.lang b/src/main/resources/assets/ae2fc/lang/en_US.lang index 07015d88..eeae9215 100644 --- a/src/main/resources/assets/ae2fc/lang/en_US.lang +++ b/src/main/resources/assets/ae2fc/lang/en_US.lang @@ -60,5 +60,6 @@ ae2fc.gui.fluid_interface.4=W ae2fc.gui.fluid_interface.5=E ae2fc.gui.oc_pattern_editor=OC Pattern Editor ae2fc.gui.button.set=Set - +ae2fc.gui.part_fluid_import=ME Fluid Import Bus +ae2fc.gui.part_fluid_export=ME Fluid Export Bus itemGroup.ae2fc=Fluid Craft For AE2 diff --git a/src/main/resources/assets/ae2fc/lang/zh_CN.lang b/src/main/resources/assets/ae2fc/lang/zh_CN.lang index 0ee792e3..db1c4fe4 100644 --- a/src/main/resources/assets/ae2fc/lang/zh_CN.lang +++ b/src/main/resources/assets/ae2fc/lang/zh_CN.lang @@ -60,5 +60,6 @@ ae2fc.gui.fluid_interface.4=西 ae2fc.gui.fluid_interface.5=东 ae2fc.gui.oc_pattern_editor=OC样板编辑器 ae2fc.gui.button.set=设置 - +ae2fc.gui.part_fluid_import=ME流体输入总线 +ae2fc.gui.part_fluid_export=ME流体输出总线 itemGroup.ae2fc=AE2流体合成套件重置