diff --git a/dependencies.gradle b/dependencies.gradle index 9e6debc9..8afad2f4 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -5,6 +5,7 @@ dependencies { compile('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-149-GTNH:dev') compile('curse.maven:cofh-core-69162:2388751') compile('com.github.GTNewHorizons:waila:1.5.22:dev') + compile('com.github.GTNewHorizons:CraftTweaker:3.2.11:dev') compileOnly('com.github.GTNewHorizons:ExtraCells2:2.5.25:dev') { transitive = false } compileOnly("com.github.GTNewHorizons:WirelessCraftingTerminal:1.8.9.2:dev") @@ -14,12 +15,12 @@ dependencies { compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.41.216:dev') compileOnly('com.github.GTNewHorizons:StructureLib:1.2.0-beta.2:dev') compileOnly('net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev') - compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') + compile('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') compileOnly('com.github.GTNewHorizons:AppleCore:3.2.5:dev') { transitive = false } compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.28:dev') { transitive = false } compileOnly('com.gregoriust.gregtech:gregtech_1.7.10:6.14.23:dev') { transitive = false } compileOnly('com.github.GTNewHorizons:OpenComputers:1.8.0.5-GTNH:dev') { transitive = false } - compileOnly('com.github.GTNewHorizons:ThaumicEnergistics:1.3.27-GTNH:dev') { transitive = false } + compile('com.github.GTNewHorizons:ThaumicEnergistics:1.3.27-GTNH:dev') { transitive = false } compileOnly('com.github.GTNewHorizons:GTplusplus:1.7.191:dev') { transitive = false } compileOnly('com.github.GTNewHorizons:KekzTech:0.6.25:dev') diff --git a/src/main/java/com/glodblock/github/client/gui/FCGuiSwitchTerminal.java b/src/main/java/com/glodblock/github/client/gui/FCGuiSwitchTerminal.java deleted file mode 100644 index d017cb3f..00000000 --- a/src/main/java/com/glodblock/github/client/gui/FCGuiSwitchTerminal.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.glodblock.github.client.gui; - -import java.util.List; - -import com.glodblock.github.inventory.gui.GuiType; -import com.glodblock.github.util.ModAndClassUtil; - -public class FCGuiSwitchTerminal { - - private GuiFCImgButton fluidBtn; - private GuiFCImgButton essentiaBtn; - private GuiFCImgButton craftBtn; - private GuiFCImgButton patternBtn; - private final GuiType originGui; - - public FCGuiSwitchTerminal(GuiType gui) { - this.originGui = gui; - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void addButtons(List buttonList, int offsetX, int offsetY) { - int y = 0; - if (this.originGui != GuiType.WIRELESS_FLUID_TERMINAL) { - buttonList.add(fluidBtn = new GuiFCImgButton(offsetX, offsetY + y, "FLUID_TEM", "YES")); - y += 20; - } - if (ModAndClassUtil.ThE && this.originGui != GuiType.WIRELESS_ESSENTIA_TERMINAL) { - buttonList.add(essentiaBtn = new GuiFCImgButton(offsetX, offsetY + y, "ESSENTIA_TEM", "YES")); - y += 20; - } - buttonList.add(craftBtn = new GuiFCImgButton(offsetX, offsetY + y, "CRAFT_TEM", "YES")); - y += 20; - buttonList.add(patternBtn = new GuiFCImgButton(offsetX, offsetY + y, "PATTERN_TEM", "YES")); - } - -} diff --git a/src/main/java/com/glodblock/github/client/gui/GuiEssentiaTerminal.java b/src/main/java/com/glodblock/github/client/gui/GuiEssentiaTerminal.java index f6706a41..5c075fc2 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiEssentiaTerminal.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiEssentiaTerminal.java @@ -4,6 +4,9 @@ import java.util.HashMap; import java.util.Map; import java.util.Objects; +import com.glodblock.github.inventory.InventoryHandler; +import com.glodblock.github.inventory.gui.GuiType; +import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Slot; @@ -90,6 +93,15 @@ public class GuiEssentiaTerminal extends GuiFluidMonitor { super.handleMouseClick(slot, slotIdx, ctrlDown, mouseButton); } + @Override + protected void actionPerformed(final GuiButton btn) { + if (btn == craftingStatusBtn) { + InventoryHandler.switchGui(GuiType.CRAFTING_STATUS); + } else { + super.actionPerformed(btn); + } + } + public void update(ItemStack itemStack) { this.player.inventory.setItemStack(itemStack); } diff --git a/src/main/java/com/glodblock/github/client/gui/GuiFluidCraftAmount.java b/src/main/java/com/glodblock/github/client/gui/GuiFluidCraftAmount.java index 5b4f4ece..ae87053c 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiFluidCraftAmount.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiFluidCraftAmount.java @@ -1,5 +1,10 @@ package com.glodblock.github.client.gui; +import com.glodblock.github.common.item.ItemWirelessUltraTerminal; +import com.glodblock.github.inventory.item.IWirelessTerminal; +import com.glodblock.github.inventory.item.WirelessFluidTerminalInventory; +import com.glodblock.github.inventory.item.WirelessPatternTerminalInventory; +import com.glodblock.github.util.Ae2ReflectClient; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; @@ -64,14 +69,18 @@ public class GuiFluidCraftAmount extends FCGuiAmount { if (target instanceof PartFluidPatternTerminal) { this.myIcon = new ItemStack(ItemAndBlockHolder.FLUID_TERMINAL, 1); this.originalGui = GuiType.FLUID_PATTERN_TERMINAL; - } - if (target instanceof PartFluidPatternTerminalEx) { + } else if (target instanceof PartFluidPatternTerminalEx) { this.myIcon = new ItemStack(ItemAndBlockHolder.FLUID_TERMINAL_EX, 1); this.originalGui = GuiType.FLUID_PATTERN_TERMINAL_EX; - } - if (target instanceof PartFluidTerminal) { + } else if (target instanceof PartFluidTerminal) { this.myIcon = new ItemStack(ItemAndBlockHolder.FLUID_TERM, 1); this.originalGui = GuiType.FLUID_TERMINAL; + } else if (target instanceof IWirelessTerminal && ((IWirelessTerminal) target).isUniversal(target)) { + this.myIcon = new ItemStack(ItemAndBlockHolder.WIRELESS_ULTRA_TERM, 1); + this.originalGui = ItemWirelessUltraTerminal.readMode(((IWirelessTerminal) target).getItemStack()); + } else if (target instanceof WirelessPatternTerminalInventory) { + this.myIcon = new ItemStack(ItemAndBlockHolder.WIRELESS_PATTERN_TERM, 1); + this.originalGui = GuiType.FLUID_TERMINAL; } } diff --git a/src/main/java/com/glodblock/github/client/gui/GuiFluidCraftConfirm.java b/src/main/java/com/glodblock/github/client/gui/GuiFluidCraftConfirm.java index febf6194..0fff6bbe 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiFluidCraftConfirm.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiFluidCraftConfirm.java @@ -3,6 +3,9 @@ package com.glodblock.github.client.gui; import java.text.NumberFormat; import java.util.*; +import com.glodblock.github.common.item.ItemWirelessUltraTerminal; +import com.glodblock.github.inventory.item.IWirelessTerminal; +import com.glodblock.github.inventory.item.WirelessPatternTerminalInventory; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; @@ -62,9 +65,12 @@ public class GuiFluidCraftConfirm extends AEBaseGui { if (te instanceof PartFluidPatternTerminal) { this.OriginalGui = GuiType.FLUID_PATTERN_TERMINAL; - } - if (te instanceof PartFluidPatternTerminalEx) { + } else if (te instanceof PartFluidPatternTerminalEx) { this.OriginalGui = GuiType.FLUID_PATTERN_TERMINAL_EX; + } else if (te instanceof IWirelessTerminal && ((IWirelessTerminal) te).isUniversal(te)) { + this.OriginalGui = ItemWirelessUltraTerminal.readMode(((IWirelessTerminal) te).getItemStack()); + } else if (te instanceof WirelessPatternTerminalInventory) { + this.OriginalGui = GuiType.FLUID_TERMINAL; } } diff --git a/src/main/java/com/glodblock/github/client/gui/GuiFluidCraftingWireless.java b/src/main/java/com/glodblock/github/client/gui/GuiFluidCraftingWireless.java index bbd801c5..a74116ce 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiFluidCraftingWireless.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiFluidCraftingWireless.java @@ -1,5 +1,7 @@ package com.glodblock.github.client.gui; +import com.glodblock.github.inventory.InventoryHandler; +import com.glodblock.github.inventory.gui.GuiType; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -29,18 +31,22 @@ public class GuiFluidCraftingWireless extends GuiItemMonitor { @Override protected void actionPerformed(final GuiButton btn) { - super.actionPerformed(btn); - if (this.clearBtn == btn) { - Slot s = null; - final Container c = this.inventorySlots; - for (final Object j : c.inventorySlots) { - if (j instanceof SlotCraftingMatrix) { - s = (Slot) j; + if (btn == craftingStatusBtn) { + InventoryHandler.switchGui(GuiType.CRAFTING_STATUS); + } else { + super.actionPerformed(btn); + if (this.clearBtn == btn) { + Slot s = null; + final Container c = this.inventorySlots; + for (final Object j : c.inventorySlots) { + if (j instanceof SlotCraftingMatrix) { + s = (Slot) j; + } + } + if (s != null) { + final PacketInventoryAction p = new PacketInventoryAction(InventoryAction.MOVE_REGION, s.slotNumber, 0); + NetworkHandler.instance.sendToServer(p); } - } - if (s != null) { - final PacketInventoryAction p = new PacketInventoryAction(InventoryAction.MOVE_REGION, s.slotNumber, 0); - NetworkHandler.instance.sendToServer(p); } } } diff --git a/src/main/java/com/glodblock/github/client/gui/GuiFluidPatternTerminalCraftingStatus.java b/src/main/java/com/glodblock/github/client/gui/GuiFluidPatternTerminalCraftingStatus.java index 5721fe51..8680eb79 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiFluidPatternTerminalCraftingStatus.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiFluidPatternTerminalCraftingStatus.java @@ -1,5 +1,7 @@ package com.glodblock.github.client.gui; +import com.glodblock.github.common.item.ItemWirelessUltraTerminal; +import com.glodblock.github.inventory.item.IWirelessTerminal; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; @@ -36,12 +38,13 @@ public class GuiFluidPatternTerminalCraftingStatus extends GuiCraftingStatus { Ae2ReflectClient.rewriteIcon(this, new ItemStack(ItemAndBlockHolder.FLUID_TERMINAL_EX, 1)); else if (host instanceof PartFluidTerminal) { Ae2ReflectClient.rewriteIcon(this, new ItemStack(ItemAndBlockHolder.FLUID_TERM, 1)); + } else if (host instanceof IWirelessTerminal && ((IWirelessTerminal) host).isUniversal(host)) { + Ae2ReflectClient.rewriteIcon(this, new ItemStack(ItemAndBlockHolder.WIRELESS_ULTRA_TERM, 1)); } else if (host instanceof WirelessFluidTerminalInventory) { Ae2ReflectClient.rewriteIcon(this, new ItemStack(ItemAndBlockHolder.WIRELESS_FLUID_TERM, 1)); } else if (host instanceof WirelessPatternTerminalInventory) { Ae2ReflectClient.rewriteIcon(this, new ItemStack(ItemAndBlockHolder.WIRELESS_PATTERN_TERM, 1)); } - super.initGui(); originalGuiBtn = Ae2ReflectClient.getOriginalGuiButton(this); } @@ -53,6 +56,8 @@ public class GuiFluidPatternTerminalCraftingStatus extends GuiCraftingStatus { else if (host instanceof PartFluidPatternTerminalEx) InventoryHandler.switchGui(GuiType.FLUID_PATTERN_TERMINAL_EX); else if (host instanceof PartFluidTerminal) InventoryHandler.switchGui(GuiType.FLUID_TERMINAL); + else if (host instanceof IWirelessTerminal && ((IWirelessTerminal) host).isUniversal(host)) + InventoryHandler.switchGui(ItemWirelessUltraTerminal.readMode(((IWirelessTerminal) host).getItemStack())); else if (host instanceof WirelessFluidTerminalInventory) InventoryHandler.switchGui(GuiType.WIRELESS_FLUID_TERMINAL); else if (host instanceof WirelessPatternTerminalInventory) diff --git a/src/main/java/com/glodblock/github/client/gui/GuiFluidPatternWireless.java b/src/main/java/com/glodblock/github/client/gui/GuiFluidPatternWireless.java index e1358e0d..ed801c36 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiFluidPatternWireless.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiFluidPatternWireless.java @@ -9,5 +9,4 @@ public class GuiFluidPatternWireless extends GuiFluidPatternTerminal { public GuiFluidPatternWireless(InventoryPlayer inventoryPlayer, IWirelessTerminal te) { super(inventoryPlayer, te); } - } diff --git a/src/main/java/com/glodblock/github/client/gui/GuiPatternValueAmount.java b/src/main/java/com/glodblock/github/client/gui/GuiPatternValueAmount.java index c415670f..57537fb8 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiPatternValueAmount.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiPatternValueAmount.java @@ -1,5 +1,8 @@ package com.glodblock.github.client.gui; +import com.glodblock.github.common.item.ItemWirelessUltraTerminal; +import com.glodblock.github.inventory.item.IWirelessTerminal; +import com.glodblock.github.inventory.item.WirelessPatternTerminalInventory; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; @@ -66,10 +69,15 @@ public class GuiPatternValueAmount extends FCGuiAmount { if (target instanceof PartFluidPatternTerminal) { this.myIcon = new ItemStack(ItemAndBlockHolder.FLUID_TERMINAL, 1); this.originalGui = GuiType.FLUID_PATTERN_TERMINAL; - } - if (target instanceof PartFluidPatternTerminalEx) { + } else if (target instanceof PartFluidPatternTerminalEx) { this.myIcon = new ItemStack(ItemAndBlockHolder.FLUID_TERMINAL_EX, 1); this.originalGui = GuiType.FLUID_PATTERN_TERMINAL_EX; + } else if (target instanceof IWirelessTerminal && ((IWirelessTerminal) target).isUniversal(target)) { + this.myIcon = new ItemStack(ItemAndBlockHolder.WIRELESS_ULTRA_TERM, 1); + this.originalGui = ItemWirelessUltraTerminal.readMode(((IWirelessTerminal) target).getItemStack()); + } else if (target instanceof WirelessPatternTerminalInventory) { + this.myIcon = new ItemStack(ItemAndBlockHolder.WIRELESS_PATTERN_TERM, 1); + this.originalGui = GuiType.WIRELESS_FLUID_PATTERN_TERMINAL; } } diff --git a/src/main/java/com/glodblock/github/client/gui/base/FCGuiMonitor.java b/src/main/java/com/glodblock/github/client/gui/base/FCGuiMonitor.java index 2f9bf97f..b9ececeb 100644 --- a/src/main/java/com/glodblock/github/client/gui/base/FCGuiMonitor.java +++ b/src/main/java/com/glodblock/github/client/gui/base/FCGuiMonitor.java @@ -78,6 +78,7 @@ public abstract class FCGuiMonitor> extends AEBaseMEGui protected int rows = 0; protected int maxRows = Integer.MAX_VALUE; protected int standardSize; + protected int offsetY; protected GuiImgButton ViewBox; protected GuiImgButton SortByBox; protected GuiImgButton SortDirBox; @@ -200,60 +201,60 @@ public abstract class FCGuiMonitor> extends AEBaseMEGui final int unusedSpace = this.height - this.ySize; this.guiTop = (int) Math.floor(unusedSpace / (unusedSpace < 0 ? 3.8f : 2.0f)); - int offset = this.guiTop + 8; + this.offsetY = this.guiTop + 8; if (this.customSortOrder) { this.buttonList.add( this.SortByBox = new GuiImgButton( this.guiLeft - 18, - offset, + this.offsetY, Settings.SORT_BY, this.configSrc.getSetting(Settings.SORT_BY))); - offset += 20; + this.offsetY += 20; } if (this.showViewBtn) { this.buttonList.add( this.ViewBox = new GuiImgButton( this.guiLeft - 18, - offset, + this.offsetY, Settings.VIEW_MODE, this.configSrc.getSetting(Settings.VIEW_MODE))); - offset += 20; + this.offsetY += 20; } this.buttonList.add( this.SortDirBox = new GuiImgButton( this.guiLeft - 18, - offset, + this.offsetY, Settings.SORT_DIRECTION, this.configSrc.getSetting(Settings.SORT_DIRECTION))); - offset += 20; + this.offsetY += 20; this.buttonList.add( this.searchBoxSettings = new GuiImgButton( this.guiLeft - 18, - offset, + this.offsetY, Settings.SEARCH_MODE, AEConfig.instance.settings.getSetting(Settings.SEARCH_MODE))); - offset += 20; + this.offsetY += 20; if (ModAndClassUtil.isSaveText) { this.buttonList.add( this.searchStringSave = new GuiImgButton( this.guiLeft - 18, - offset, + this.offsetY, Settings.SAVE_SEARCH, AEConfig.instance.preserveSearchBar ? YesNo.YES : YesNo.NO)); - offset += 20; + this.offsetY += 20; } this.buttonList.add( this.terminalStyleBox = new GuiImgButton( this.guiLeft - 18, - offset, + this.offsetY, Settings.TERMINAL_STYLE, AEConfig.instance.settings.getSetting(Settings.TERMINAL_STYLE))); - offset += 20; + this.offsetY += 20; this.searchField = new FCGuiTextField( this.fontRendererObj, @@ -274,9 +275,10 @@ public abstract class FCGuiMonitor> extends AEBaseMEGui this.buttonList.add( this.craftingStatusImgBtn = new GuiImgButton( this.guiLeft - 18, - offset, + this.offsetY, Settings.CRAFTING_STATUS, AEConfig.instance.settings.getSetting(Settings.CRAFTING_STATUS))); + this.offsetY += 20; } else { this.buttonList.add( this.craftingStatusBtn = new GuiTabButton( diff --git a/src/main/java/com/glodblock/github/common/item/ItemBaseWirelessTerminal.java b/src/main/java/com/glodblock/github/common/item/ItemBaseWirelessTerminal.java index 514f0a1b..f4940f62 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemBaseWirelessTerminal.java +++ b/src/main/java/com/glodblock/github/common/item/ItemBaseWirelessTerminal.java @@ -4,7 +4,6 @@ import static com.glodblock.github.loader.recipe.WirelessTerminalRecipe.getInfin import static com.glodblock.github.util.Util.hasInfinityBoosterCard; import java.util.List; -import java.util.Optional; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -36,7 +35,7 @@ public class ItemBaseWirelessTerminal extends ToolWirelessTerminal implements II public ItemBaseWirelessTerminal(GuiType t) { super(); - this.type = Optional.of(t).get(); + this.type = t; } @Override @@ -65,7 +64,7 @@ public class ItemBaseWirelessTerminal extends ToolWirelessTerminal implements II w, new BlockPos(player.inventory.currentItem, 0, 0), ForgeDirection.UNKNOWN, - this.type); + this.guiGuiType(item)); } else { player.addChatMessage(PlayerMessages.DeviceNotPowered.get()); } @@ -112,11 +111,7 @@ public class ItemBaseWirelessTerminal extends ToolWirelessTerminal implements II return null; } - public void setGuiType(GuiType type) { - this.type = type; - } - - public GuiType guiGuiType() { + public GuiType guiGuiType(ItemStack stack) { return this.type; } diff --git a/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java b/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java index d2c17a2a..8d87cdfc 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java +++ b/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java @@ -1,10 +1,14 @@ package com.glodblock.github.common.item; +import java.util.ArrayList; import java.util.EnumSet; +import java.util.List; +import com.glodblock.github.util.ModAndClassUtil; 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 appeng.api.AEApi; @@ -22,19 +26,29 @@ import com.glodblock.github.inventory.item.WirelessPatternTerminalInventory; import com.glodblock.github.loader.IRegister; import com.glodblock.github.util.NameConst; import com.glodblock.github.util.Util; + import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; public class ItemWirelessUltraTerminal extends ItemBaseWirelessTerminal implements IRegister { - public final static String MODE = "mode"; + public final static String MODE = "mode_main"; + private final static List guis = new ArrayList<>(); public ItemWirelessUltraTerminal() { - super(GuiType.WIRELESS_ESSENTIA_TERMINAL); + super(null); AEApi.instance().registries().wireless().registerWirelessHandler(this); this.setFeature(EnumSet.of(AEFeature.WirelessAccessTerminal, AEFeature.PoweredTools)); setUnlocalizedName(NameConst.ITEM_WIRELESS_ULTRA_TERMINAL); setTextureName(FluidCraft.resource(NameConst.ITEM_WIRELESS_ULTRA_TERMINAL).toString()); + guis.add(GuiType.WIRELESS_CRAFTING_TERMINAL); + guis.add(GuiType.WIRELESS_FLUID_PATTERN_TERMINAL); + guis.add(GuiType.WIRELESS_FLUID_TERMINAL); + if (ModAndClassUtil.ThE) { + guis.add(GuiType.WIRELESS_ESSENTIA_TERMINAL); + } } @Override @@ -44,15 +58,34 @@ public class ItemWirelessUltraTerminal extends ItemBaseWirelessTerminal return this; } + @SideOnly(Side.CLIENT) + @Override + public void addCheckedInformation(ItemStack stack, EntityPlayer player, List lines, + boolean displayMoreInfo) { + super.addCheckedInformation(stack, player, lines, displayMoreInfo); + lines.add(StatCollector.translateToLocal(NameConst.TT_ULTRA_TERMINAL)); + lines.add(StatCollector.translateToLocal(NameConst.TT_ULTRA_TERMINAL + "." + guiGuiType(stack))); + } + + @Override + public String getItemStackDisplayName(ItemStack stack) { + return StatCollector.translateToLocalFormatted( + "item.wireless_ultra_terminal." + + guiGuiType(stack) + + ".name" + ); + } + @Override public Object getInventory(ItemStack stack, World world, int x, int y, int z, EntityPlayer player) { try { IGridNode gridNode = Util.getWirelessGrid(stack); if (gridNode != null) { - if (this.type == GuiType.WIRELESS_FLUID_PATTERN_TERMINAL) { + GuiType gui = readMode(stack); + if (gui == GuiType.WIRELESS_FLUID_PATTERN_TERMINAL) { return new WirelessPatternTerminalInventory(stack, x, gridNode, player); } - if (this.type == GuiType.WIRELESS_CRAFTING_TERMINAL) { + if (gui == GuiType.WIRELESS_CRAFTING_TERMINAL) { return new WirelessCraftingTerminalInventory(stack, x, gridNode, player); } else { return new WirelessFluidTerminalInventory(stack, x, gridNode, player); @@ -66,26 +99,49 @@ public class ItemWirelessUltraTerminal extends ItemBaseWirelessTerminal @Override public ItemStack onItemRightClick(final ItemStack item, final World w, final EntityPlayer player) { + if (player.isSneaking()) { + setNext(readMode(item), item); + return item; + } readMode(item); return super.onItemRightClick(item, w, player); } - public void readMode(ItemStack stack) { + public static GuiType readMode(ItemStack stack) { NBTTagCompound data = Platform.openNbtData(stack); if (data.hasKey(MODE)) { String GUI = data.getString(MODE); try { - this.type = GuiType.valueOf(GUI); + return GuiType.valueOf(GUI); } catch (IllegalArgumentException e) { - this.type = GuiType.WIRELESS_CRAFTING_TERMINAL; + return GuiType.WIRELESS_CRAFTING_TERMINAL; } } else { - this.type = GuiType.WIRELESS_CRAFTING_TERMINAL; + return GuiType.WIRELESS_CRAFTING_TERMINAL; } } + public void setNext(GuiType type, ItemStack stack) { + boolean f = false; + for (GuiType g : guis) { + if (f) { + setMode(g.toString(), stack); + return; + } + if (g == type) { + f = true; + } + } + setMode(guis.get(0).toString(), stack); + } + public void setMode(String mode, ItemStack stack) { NBTTagCompound data = Platform.openNbtData(stack); data.setString(MODE, mode); } + + @Override + public GuiType guiGuiType(ItemStack stack) { + return readMode(stack); + } } diff --git a/src/main/java/com/glodblock/github/inventory/gui/GuiType.java b/src/main/java/com/glodblock/github/inventory/gui/GuiType.java index f7002300..4cf9e5a8 100644 --- a/src/main/java/com/glodblock/github/inventory/gui/GuiType.java +++ b/src/main/java/com/glodblock/github/inventory/gui/GuiType.java @@ -313,15 +313,28 @@ public enum GuiType { } }), - FLUID_CRAFTING_AMOUNT(new PartGuiFactory(FCPart.class) { + FLUID_CRAFTING_CONFIRM_ITEM(new ItemGuiFactory(IWirelessTerminal.class) { @Override - protected Object createServerGui(EntityPlayer player, FCPart inv) { + protected Object createServerGui(EntityPlayer player, IWirelessTerminal inv) { + return new ContainerFluidCraftConfirm(player.inventory, inv); + } + + @Override + protected Object createClientGui(EntityPlayer player, IWirelessTerminal inv) { + return new GuiFluidCraftConfirm(player.inventory, inv); + } + }), + + FLUID_CRAFTING_AMOUNT(new PartOrItemGuiFactory(ITerminalHost.class) { + + @Override + protected Object createServerGui(EntityPlayer player, ITerminalHost inv) { return new ContainerCraftAmount(player.inventory, inv); } @Override - protected Object createClientGui(EntityPlayer player, FCPart inv) { + protected Object createClientGui(EntityPlayer player, ITerminalHost inv) { return new GuiFluidCraftAmount(player.inventory, inv); } }), @@ -339,15 +352,15 @@ public enum GuiType { } }), - PATTERN_VALUE_SET(new PartGuiFactory(FCPart.class) { + PATTERN_VALUE_SET(new PartOrItemGuiFactory(ITerminalHost.class) { @Override - protected Object createServerGui(EntityPlayer player, FCPart inv) { + protected Object createServerGui(EntityPlayer player, ITerminalHost inv) { return new ContainerPatternValueAmount(player.inventory, inv); } @Override - protected Object createClientGui(EntityPlayer player, FCPart inv) { + protected Object createClientGui(EntityPlayer player, ITerminalHost inv) { return new GuiPatternValueAmount(player.inventory, inv); } }); diff --git a/src/main/java/com/glodblock/github/inventory/item/IWirelessTerminal.java b/src/main/java/com/glodblock/github/inventory/item/IWirelessTerminal.java index 1c4d1317..4782da58 100644 --- a/src/main/java/com/glodblock/github/inventory/item/IWirelessTerminal.java +++ b/src/main/java/com/glodblock/github/inventory/item/IWirelessTerminal.java @@ -1,9 +1,21 @@ package com.glodblock.github.inventory.item; +import appeng.api.implementations.guiobjects.IGuiItemObject; import appeng.api.implementations.tiles.IViewCellStorage; import appeng.api.networking.IGridHost; +import appeng.api.networking.security.IActionHost; import appeng.tile.inventory.IAEAppEngInventory; +import com.glodblock.github.common.item.ItemWirelessUltraTerminal; +import net.minecraft.item.ItemStack; -public interface IWirelessTerminal extends IFluidPortableCell, IViewCellStorage, IAEAppEngInventory, IGridHost { +public interface IWirelessTerminal extends IFluidPortableCell, IViewCellStorage, IAEAppEngInventory, IGridHost, IActionHost { + + default boolean isUniversal(Object holder) { + if (holder instanceof IGuiItemObject) { + ItemStack stack = ((IGuiItemObject) holder).getItemStack(); + return stack != null && stack.getItem() instanceof ItemWirelessUltraTerminal; + } + return false; + } } diff --git a/src/main/java/com/glodblock/github/inventory/item/WirelessCraftingTerminalInventory.java b/src/main/java/com/glodblock/github/inventory/item/WirelessCraftingTerminalInventory.java index e5151ea0..9dd2d21b 100644 --- a/src/main/java/com/glodblock/github/inventory/item/WirelessCraftingTerminalInventory.java +++ b/src/main/java/com/glodblock/github/inventory/item/WirelessCraftingTerminalInventory.java @@ -54,8 +54,8 @@ public class WirelessCraftingTerminalInventory extends MEMonitorHandler