From 8705180baea2fa4126b87c722bcc11b2738592bc Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Tue, 1 Jul 2014 20:32:27 -0500 Subject: [PATCH 01/11] Removed Lumen Cable. --- items/parts/PartType.java | 17 +---------------- parts/networking/PartLumenCableCovered.java | 12 ------------ parts/networking/PartLumenCableGlass.java | 12 ------------ parts/networking/PartLumenCableSmart.java | 12 ------------ parts/networking/PartLumenDenseCable.java | 12 ------------ 5 files changed, 1 insertion(+), 64 deletions(-) delete mode 100644 parts/networking/PartLumenCableCovered.java delete mode 100644 parts/networking/PartLumenCableGlass.java delete mode 100644 parts/networking/PartLumenCableSmart.java delete mode 100644 parts/networking/PartLumenDenseCable.java diff --git a/items/parts/PartType.java b/items/parts/PartType.java index 46ffa0456..ebefcb026 100644 --- a/items/parts/PartType.java +++ b/items/parts/PartType.java @@ -20,10 +20,6 @@ import appeng.parts.networking.PartCableCovered; import appeng.parts.networking.PartCableGlass; import appeng.parts.networking.PartCableSmart; import appeng.parts.networking.PartDenseCable; -import appeng.parts.networking.PartLumenCableCovered; -import appeng.parts.networking.PartLumenCableGlass; -import appeng.parts.networking.PartLumenCableSmart; -import appeng.parts.networking.PartLumenDenseCable; import appeng.parts.networking.PartQuartzFiber; import appeng.parts.p2p.PartP2PBCPower; import appeng.parts.p2p.PartP2PIC2Power; @@ -105,15 +101,7 @@ public enum PartType P2PTunnelEU(465, AEFeature.P2PTunnelEU, PartP2PIC2Power.class, GuiText.EUTunnel), - P2PTunnelRF(466, AEFeature.P2PTunnelRF, PartP2PRFPower.class, GuiText.RFTunnel), - - LumenCableGlass(480, AEFeature.Core, PartLumenCableGlass.class), - - LumenCableCovered(500, AEFeature.Core, PartLumenCableCovered.class), - - LumenCableSmart(520, AEFeature.Core, PartLumenCableSmart.class), - - LumenCableDense(540, AEFeature.DenseCables, PartLumenDenseCable.class); + P2PTunnelRF(466, AEFeature.P2PTunnelRF, PartP2PRFPower.class, GuiText.RFTunnel); private final EnumSet features; private final Class myPart; @@ -136,9 +124,6 @@ public enum PartType if ( this == CableSmart || this == CableCovered || this == CableGlass || this == CableDense ) return AEColor.values(); - if ( this == LumenCableSmart || this == LumenCableCovered || this == LumenCableGlass || this == LumenCableDense ) - return AEColor.values(); - return null; } diff --git a/parts/networking/PartLumenCableCovered.java b/parts/networking/PartLumenCableCovered.java deleted file mode 100644 index b1d072558..000000000 --- a/parts/networking/PartLumenCableCovered.java +++ /dev/null @@ -1,12 +0,0 @@ -package appeng.parts.networking; - -import net.minecraft.item.ItemStack; - -public class PartLumenCableCovered extends PartCableCovered -{ - - public PartLumenCableCovered(ItemStack is) { - super( is ); - } - -} diff --git a/parts/networking/PartLumenCableGlass.java b/parts/networking/PartLumenCableGlass.java deleted file mode 100644 index a0f0d0203..000000000 --- a/parts/networking/PartLumenCableGlass.java +++ /dev/null @@ -1,12 +0,0 @@ -package appeng.parts.networking; - -import net.minecraft.item.ItemStack; - -public class PartLumenCableGlass extends PartCableGlass -{ - - public PartLumenCableGlass(ItemStack is) { - super( is ); - } - -} diff --git a/parts/networking/PartLumenCableSmart.java b/parts/networking/PartLumenCableSmart.java deleted file mode 100644 index 700b487f3..000000000 --- a/parts/networking/PartLumenCableSmart.java +++ /dev/null @@ -1,12 +0,0 @@ -package appeng.parts.networking; - -import net.minecraft.item.ItemStack; - -public class PartLumenCableSmart extends PartCableSmart -{ - - public PartLumenCableSmart(ItemStack is) { - super( is ); - } - -} diff --git a/parts/networking/PartLumenDenseCable.java b/parts/networking/PartLumenDenseCable.java deleted file mode 100644 index fd09b6f81..000000000 --- a/parts/networking/PartLumenDenseCable.java +++ /dev/null @@ -1,12 +0,0 @@ -package appeng.parts.networking; - -import net.minecraft.item.ItemStack; - -public class PartLumenDenseCable extends PartDenseCable -{ - - public PartLumenDenseCable(ItemStack is) { - super( is ); - } - -} From 4ce40869f459fbcb2f1399afc667c7f0fb194cc0 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Tue, 1 Jul 2014 20:43:08 -0500 Subject: [PATCH 02/11] Fix issues with Pattern Terminal. --- .../gui/implementations/GuiMEMonitorable.java | 16 +++-- .../gui/implementations/GuiPatternTerm.java | 13 +++- .../implementations/ContainerPatternTerm.java | 28 +++++++-- core/sync/packets/PacketValueConfig.java | 2 +- parts/reporting/PartPatternTerminal.java | 63 ++++++++++++++++++- 5 files changed, 108 insertions(+), 14 deletions(-) diff --git a/client/gui/implementations/GuiMEMonitorable.java b/client/gui/implementations/GuiMEMonitorable.java index 431541d33..3cf50b7bb 100644 --- a/client/gui/implementations/GuiMEMonitorable.java +++ b/client/gui/implementations/GuiMEMonitorable.java @@ -144,8 +144,8 @@ public class GuiMEMonitorable extends AEBaseMEGui implements ISortSource, IConfi boolean hasNEI = AppEng.instance.isIntegrationEnabled( "NEI" ); - int NEI = hasNEI ? 4 : 0; - int top = hasNEI ? 22 : 4; + int NEI = hasNEI ? 0 : 0; + int top = hasNEI ? 22 : 0; int magicNumber = 114 + 1; int extraSpace = height - magicNumber - NEI - top - reservedSpace; @@ -183,7 +183,9 @@ public class GuiMEMonitorable extends AEBaseMEGui implements ISortSource, IConfi // slot 18 this.ySize = magicNumber + rows * 18 + reservedSpace; - this.guiTop = top; + // this.guiTop = top; + int unusedSpace = height - ySize; + guiTop = (int) Math.floor( (float) unusedSpace / (unusedSpace < 0 ? 3.8f : 2.0f) ); int offset = guiTop + 8; @@ -235,9 +237,15 @@ public class GuiMEMonitorable extends AEBaseMEGui implements ISortSource, IConfi if ( s instanceof AppEngSlot ) { if ( ((AppEngSlot) s).xDisplayPosition < 197 ) - ((AppEngSlot) s).yDisplayPosition = ((AppEngSlot) s).defY + ySize - 78 - 5; + repositionSlot( (AppEngSlot) s ); } } + + } + + protected void repositionSlot(AppEngSlot s) + { + s.yDisplayPosition = s.defY + ySize - 78 - 5; } @Override diff --git a/client/gui/implementations/GuiPatternTerm.java b/client/gui/implementations/GuiPatternTerm.java index 46f36fa40..d7ddc642b 100644 --- a/client/gui/implementations/GuiPatternTerm.java +++ b/client/gui/implementations/GuiPatternTerm.java @@ -12,6 +12,7 @@ import appeng.api.storage.ITerminalHost; import appeng.client.gui.widgets.GuiImgButton; import appeng.client.gui.widgets.GuiTabButton; import appeng.container.implementations.ContainerPatternTerm; +import appeng.container.slot.AppEngSlot; import appeng.core.localization.GuiText; import appeng.core.sync.network.NetworkHandler; import appeng.core.sync.packets.PacketValueConfig; @@ -42,7 +43,7 @@ public class GuiPatternTerm extends GuiMEMonitorable buttonList.add( clearBtn = new GuiImgButton( this.guiLeft + 74, this.guiTop + this.ySize - 163, Settings.ACTIONS, ActionItems.CLOSE ) ); clearBtn.halfSize = true; - buttonList.add( encodeBtn = new GuiImgButton( this.guiLeft + 147, this.guiTop + this.ySize - 144, Settings.ACTIONS, ActionItems.ENCODE ) ); + buttonList.add( encodeBtn = new GuiImgButton( this.guiLeft + 147, this.guiTop + this.ySize - 142, Settings.ACTIONS, ActionItems.ENCODE ) ); } @Override @@ -81,10 +82,18 @@ public class GuiPatternTerm extends GuiMEMonitorable } } + protected void repositionSlot(AppEngSlot s) + { + if ( s.isPlayerSide() ) + s.yDisplayPosition = s.defY + ySize - 78 - 5; + else + s.yDisplayPosition = s.defY + ySize - 78 - 3; + } + public GuiPatternTerm(InventoryPlayer inventoryPlayer, ITerminalHost te) { super( inventoryPlayer, te, new ContainerPatternTerm( inventoryPlayer, te ) ); container = (ContainerPatternTerm) this.inventorySlots; - reservedSpace = 85; + reservedSpace = 81; } protected String getBackground() diff --git a/container/implementations/ContainerPatternTerm.java b/container/implementations/ContainerPatternTerm.java index aa8710236..a04415c4c 100644 --- a/container/implementations/ContainerPatternTerm.java +++ b/container/implementations/ContainerPatternTerm.java @@ -141,9 +141,9 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA super.detectAndSendChanges(); if ( Platform.isServer() ) { - if ( craftingMode != ct.craftingMode ) + if ( craftingMode != ct.isCraftingRecipe() ) { - craftingMode = ct.craftingMode; + craftingMode = ct.isCraftingRecipe(); updateOrderOfOutputSlots(); } } @@ -285,9 +285,9 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA public boolean isSlotEnabled(int idx) { if ( idx == 1 ) - return Platform.isServer() ? ct.craftingMode == false : craftingMode == false; + return Platform.isServer() ? ct.isCraftingRecipe() == false : craftingMode == false; if ( idx == 2 ) - return Platform.isServer() ? ct.craftingMode == true : craftingMode == true; + return Platform.isServer() ? ct.isCraftingRecipe() == true : craftingMode == true; return false; } @@ -386,6 +386,26 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA } } + @Override + public ItemStack slotClick(int slotNum, int p_75144_2_, int p_75144_3_, EntityPlayer p_75144_4_) + { + Slot s = null; + for (Object g : inventorySlots) + { + if ( g instanceof Slot ) + { + Slot gg = (Slot) g; + if ( gg.slotNumber == slotNum ) + s = gg; + } + } + + ItemStack is = super.slotClick( slotNum, p_75144_2_, p_75144_3_, p_75144_4_ ); + if ( s == patternSlotOUT ) + detectAndSendChanges(); + return is; + } + public void clear() { for (Slot s : craftingSlots) diff --git a/core/sync/packets/PacketValueConfig.java b/core/sync/packets/PacketValueConfig.java index c5171eeee..847d04d1b 100644 --- a/core/sync/packets/PacketValueConfig.java +++ b/core/sync/packets/PacketValueConfig.java @@ -96,7 +96,7 @@ public class PacketValueConfig extends AppEngPacket ContainerPatternTerm cpt = (ContainerPatternTerm) c; if ( Name.equals( "PatternTerminal.CraftMode" ) ) { - cpt.ct.craftingMode = Value.equals( "1" ); + cpt.ct.setCraftingRecipe( Value.equals( "1" ) ); } else if ( Name.equals( "PatternTerminal.Encode" ) ) { diff --git a/parts/reporting/PartPatternTerminal.java b/parts/reporting/PartPatternTerminal.java index 60ebde4dc..04d75c470 100644 --- a/parts/reporting/PartPatternTerminal.java +++ b/parts/reporting/PartPatternTerminal.java @@ -5,6 +5,9 @@ import java.util.List; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import appeng.api.implementations.ICraftingPatternItem; +import appeng.api.networking.crafting.ICraftingPatternDetails; +import appeng.api.storage.data.IAEItemStack; import appeng.client.texture.CableBusTextures; import appeng.core.sync.GuiBridge; import appeng.tile.inventory.AppEngInternalInventory; @@ -18,13 +21,13 @@ public class PartPatternTerminal extends PartTerminal implements IAEAppEngInvent AppEngInternalInventory output = new AppEngInternalInventory( this, 3 ); AppEngInternalInventory pattern = new AppEngInternalInventory( this, 2 ); - public boolean craftingMode = true; + private boolean craftingMode = true; @Override public void writeToNBT(NBTTagCompound data) { super.writeToNBT( data ); - data.setBoolean( "craftingMode", craftingMode ); + data.setBoolean( "craftingMode", isCraftingRecipe() ); pattern.writeToNBT( data, "pattern" ); output.writeToNBT( data, "outputList" ); crafting.writeToNBT( data, "craftingGrid" ); @@ -34,7 +37,7 @@ public class PartPatternTerminal extends PartTerminal implements IAEAppEngInvent public void readFromNBT(NBTTagCompound data) { super.readFromNBT( data ); - craftingMode = data.getBoolean( "craftingMode" ); + setCraftingRecipe( data.getBoolean( "craftingMode" ) ); pattern.readFromNBT( data, "pattern" ); output.readFromNBT( data, "outputList" ); crafting.readFromNBT( data, "craftingGrid" ); @@ -78,6 +81,60 @@ public class PartPatternTerminal extends PartTerminal implements IAEAppEngInvent @Override public void onChangeInventory(IInventory inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack) { + if ( inv == pattern && slot == 1 ) + { + ItemStack is = pattern.getStackInSlot( 1 ); + if ( is != null && is.getItem() instanceof ICraftingPatternItem ) + { + ICraftingPatternItem pattern = (ICraftingPatternItem) is.getItem(); + ICraftingPatternDetails details = pattern.getPatternForItem( is, this.getHost().getTile().getWorldObj() ); + if ( details != null ) + { + setCraftingRecipe( details.isCraftable() ); + + for (int x = 0; x < crafting.getSizeInventory() && x < details.getInputs().length; x++) + { + IAEItemStack aeis = details.getInputs()[x]; + crafting.setInventorySlotContents( x, aeis == null ? null : aeis.getItemStack() ); + } + + for (int x = 0; x < output.getSizeInventory() && x < details.getOutputs().length; x++) + { + IAEItemStack aeis = details.getOutputs()[x]; + output.setInventorySlotContents( x, aeis == null ? null : aeis.getItemStack() ); + } + } + } + } + else if ( inv == crafting ) + { + fixCraftingRecipes(); + } + host.markForSave(); } + + public boolean isCraftingRecipe() + { + return craftingMode; + } + + public void setCraftingRecipe(boolean craftingMode) + { + this.craftingMode = craftingMode; + fixCraftingRecipes(); + } + + private void fixCraftingRecipes() + { + if ( isCraftingRecipe() ) + { + for (int x = 0; x < crafting.getSizeInventory(); x++) + { + ItemStack is = crafting.getStackInSlot( x ); + if ( is != null ) + is.stackSize = 1; + } + } + } } From 9a2614540d1d25273c997ecf438e07a1016b15cf Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Tue, 1 Jul 2014 20:44:12 -0500 Subject: [PATCH 03/11] Implementing Crafting Upgrade. --- items/materials/ItemMultiMaterial.java | 2 ++ items/materials/MaterialType.java | 2 +- parts/automation/UpgradeInventory.java | 9 ++++++- tile/crafting/TileCraftingTile.java | 37 ++++++++++++++++++++++++++ 4 files changed, 48 insertions(+), 2 deletions(-) diff --git a/items/materials/ItemMultiMaterial.java b/items/materials/ItemMultiMaterial.java index 5fe0a45aa..761809066 100644 --- a/items/materials/ItemMultiMaterial.java +++ b/items/materials/ItemMultiMaterial.java @@ -288,6 +288,8 @@ public class ItemMultiMaterial extends AEBaseItem implements IStorageComponent, return Upgrades.SPEED; case CardInverter: return Upgrades.INVERTER; + case CardCrafting: + return Upgrades.CRAFTING; default: return null; } diff --git a/items/materials/MaterialType.java b/items/materials/MaterialType.java index bbbc1c699..c346cb2fd 100644 --- a/items/materials/MaterialType.java +++ b/items/materials/MaterialType.java @@ -62,7 +62,7 @@ public enum MaterialType EnderDust(46, AEFeature.QuantumNetworkBridge, "dustEnder", EntitySingularity.class), Singularity(47, AEFeature.QuantumNetworkBridge, EntitySingularity.class), QESingularity(48, AEFeature.QuantumNetworkBridge, EntitySingularity.class), - BlankPattern(52); + BlankPattern(52), CardCrafting(53); private String oreName; private EnumSet features; diff --git a/parts/automation/UpgradeInventory.java b/parts/automation/UpgradeInventory.java index 68ab9365f..cf077f207 100644 --- a/parts/automation/UpgradeInventory.java +++ b/parts/automation/UpgradeInventory.java @@ -25,6 +25,7 @@ public class UpgradeInventory extends AppEngInternalInventory implements IAEAppE private int RedstoneUpgrades = 0; private int CapacityUpgrades = 0; private int InverterUpgrades = 0; + private int CraftingUpgrades = 0; public UpgradeInventory(Object itemOrBlock, IAEAppEngInventory _te, int s) { super( null, s ); @@ -98,7 +99,7 @@ public class UpgradeInventory extends AppEngInternalInventory implements IAEAppE private void updateUpgradeInfo() { cached = true; - InverterUpgrades = CapacityUpgrades = RedstoneUpgrades = SpeedUpgrades = FuzzyUpgrades = 0; + InverterUpgrades = CapacityUpgrades = RedstoneUpgrades = SpeedUpgrades = FuzzyUpgrades = CraftingUpgrades = 0; for (ItemStack is : this) { @@ -123,6 +124,9 @@ public class UpgradeInventory extends AppEngInternalInventory implements IAEAppE case INVERTER: InverterUpgrades++; break; + case CRAFTING: + CraftingUpgrades++; + break; default: break; } @@ -133,6 +137,7 @@ public class UpgradeInventory extends AppEngInternalInventory implements IAEAppE RedstoneUpgrades = Math.min( RedstoneUpgrades, getMaxInstalled( Upgrades.REDSTONE ) ); SpeedUpgrades = Math.min( SpeedUpgrades, getMaxInstalled( Upgrades.SPEED ) ); InverterUpgrades = Math.min( InverterUpgrades, getMaxInstalled( Upgrades.INVERTER ) ); + CraftingUpgrades = Math.min( CraftingUpgrades, getMaxInstalled( Upgrades.CRAFTING ) ); } public int getInstalledUpgrades(Upgrades u) @@ -152,6 +157,8 @@ public class UpgradeInventory extends AppEngInternalInventory implements IAEAppE return SpeedUpgrades; case INVERTER: return InverterUpgrades; + case CRAFTING: + return CraftingUpgrades; default: return 0; } diff --git a/tile/crafting/TileCraftingTile.java b/tile/crafting/TileCraftingTile.java index 3112218d3..2212aeeb7 100644 --- a/tile/crafting/TileCraftingTile.java +++ b/tile/crafting/TileCraftingTile.java @@ -2,6 +2,7 @@ package appeng.tile.crafting; import java.util.EnumSet; +import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; import appeng.api.implementations.IPowerChannelState; import appeng.api.networking.GridFlags; @@ -15,6 +16,8 @@ import appeng.me.cluster.implementations.CraftingCPUCalculator; import appeng.me.cluster.implementations.CraftingCPUCluster; import appeng.me.helpers.AENetworkProxy; import appeng.me.helpers.AENetworkProxyMultiblock; +import appeng.tile.events.AETileEventHandler; +import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkTile; import appeng.util.Platform; @@ -25,6 +28,9 @@ public class TileCraftingTile extends AENetworkTile implements IAEMultiBlock, IP final CraftingCPUCalculator calc = new CraftingCPUCalculator( this ); public ISimplifiedBundle lightCache; + public NBTTagCompound previousState = null; + public boolean isCoreBlock = false; + @Override protected AENetworkProxy createProxy() { @@ -42,7 +48,38 @@ public class TileCraftingTile extends AENetworkTile implements IAEMultiBlock, IP calc.calculateMultiblock( worldObj, getLocation() ); } + private class CraftingHandler extends AETileEventHandler + { + + public CraftingHandler() { + super( TileEventType.WORLD_NBT ); + } + + @Override + public void writeToNBT(NBTTagCompound data) + { + data.setBoolean( "core", isCoreBlock ); + if ( isCoreBlock && clust != null ) + clust.writeToNBT( data ); + } + + @Override + public void readFromNBT(NBTTagCompound data) + { + isCoreBlock = data.getBoolean( "core" ); + if ( isCoreBlock ) + { + if ( clust != null ) + clust.readFromNBT( data ); + else + previousState = (NBTTagCompound) data.copy(); + } + } + + }; + public TileCraftingTile() { + addNewHandler( new CraftingHandler() ); gridProxy.setFlags( GridFlags.MULTIBLOCK, GridFlags.REQUIRE_CHANNEL ); gridProxy.setValidSides( EnumSet.noneOf( ForgeDirection.class ) ); } From 72ea6a5fa520c90035014fd129e9fd6409ee1902 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Tue, 1 Jul 2014 20:44:35 -0500 Subject: [PATCH 04/11] Sort Items alphabetically in creative tab. --- items/materials/ItemMultiMaterial.java | 15 +++++++++++++-- items/parts/ItemMultiPart.java | 18 ++++++++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/items/materials/ItemMultiMaterial.java b/items/materials/ItemMultiMaterial.java index 761809066..24446bcd1 100644 --- a/items/materials/ItemMultiMaterial.java +++ b/items/materials/ItemMultiMaterial.java @@ -1,5 +1,6 @@ package appeng.items.materials; +import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.EnumSet; @@ -298,11 +299,21 @@ public class ItemMultiMaterial extends AEBaseItem implements IStorageComponent, @Override public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List cList) { - for (MaterialType mat : MaterialType.values()) + List types = Arrays.asList( MaterialType.values() ); + Collections.sort( types, new Comparator() { + + @Override + public int compare(MaterialType o1, MaterialType o2) + { + return o1.name().compareTo( o2.name() ); + } + + } ); + + for (MaterialType mat : types) { if ( mat.damageValue >= 0 && mat.isRegistered() ) cList.add( new ItemStack( this, 1, mat.damageValue ) ); } } - } diff --git a/items/parts/ItemMultiPart.java b/items/parts/ItemMultiPart.java index fd031e90d..bae0975ae 100644 --- a/items/parts/ItemMultiPart.java +++ b/items/parts/ItemMultiPart.java @@ -1,5 +1,8 @@ package appeng.items.parts; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.EnumSet; import java.util.HashMap; import java.util.List; @@ -61,7 +64,7 @@ public class ItemMultiPart extends AEBaseItem implements IPartItem, IItemGroup } catch (Throwable e) { - AELog.integration(e); + AELog.integration( e ); return null; // part not supported.. } @@ -200,7 +203,18 @@ public class ItemMultiPart extends AEBaseItem implements IPartItem, IItemGroup @Override public void getSubItems(Item number, CreativeTabs tab, List cList) { - for (Entry part : dmgToPart.entrySet()) + List> types = new ArrayList( dmgToPart.entrySet() ); + Collections.sort( types, new Comparator>() { + + @Override + public int compare(Entry o1, Entry o2) + { + return o1.getValue().part.name().compareTo( o2.getValue().part.name() ); + } + + } ); + + for (Entry part : types) cList.add( new ItemStack( this, 1, part.getKey() ) ); } From ce9d84fc18bb279a318a52dd713bd42a033c9b7c Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Tue, 1 Jul 2014 20:44:54 -0500 Subject: [PATCH 05/11] De-code patterns when you shift click. --- items/misc/ItemEncodedPattern.java | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/items/misc/ItemEncodedPattern.java b/items/misc/ItemEncodedPattern.java index d2fbb92ed..7f92a258d 100644 --- a/items/misc/ItemEncodedPattern.java +++ b/items/misc/ItemEncodedPattern.java @@ -4,11 +4,13 @@ import java.util.EnumSet; import java.util.List; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; import net.minecraftforge.client.MinecraftForgeClient; +import appeng.api.AEApi; import appeng.api.implementations.ICraftingPatternItem; import appeng.api.networking.crafting.ICraftingPatternDetails; import appeng.client.render.items.ItemEncodedPatternRenderer; @@ -29,6 +31,29 @@ public class ItemEncodedPattern extends AEBaseItem implements ICraftingPatternIt MinecraftForgeClient.registerItemRenderer( this, new ItemEncodedPatternRenderer() ); } + @Override + public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) + { + InventoryPlayer inv = player.inventory; + + for (int s = 0; s < player.inventory.getSizeInventory(); s++) + { + if ( inv.getStackInSlot( s ) == stack ) + { + inv.setInventorySlotContents( s, AEApi.instance().materials().materialBlankPattern.stack( stack.stackSize ) ); + return true; + } + } + + return false; + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World w, EntityPlayer p) + { + return AEApi.instance().materials().materialBlankPattern.stack( stack.stackSize ); + } + @Override public void addInformation(ItemStack is, EntityPlayer p, List l, boolean more) { @@ -132,7 +157,9 @@ public class ItemEncodedPattern extends AEBaseItem implements ICraftingPatternIt @Override public ICraftingPatternDetails getPatternForItem(ItemStack is, World w) { - return new PatternHelper( is, w ); + if ( is.hasTagCompound() ) + return new PatternHelper( is, w ); + return null; } } From 82b9e2c71f97346214cb042c3869c8cd11570835 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Tue, 1 Jul 2014 20:51:36 -0500 Subject: [PATCH 06/11] Fixed damage for seeds. --- items/misc/ItemCrystalSeed.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/items/misc/ItemCrystalSeed.java b/items/misc/ItemCrystalSeed.java index bd0f67cdf..750df8806 100644 --- a/items/misc/ItemCrystalSeed.java +++ b/items/misc/ItemCrystalSeed.java @@ -61,7 +61,7 @@ public class ItemCrystalSeed extends AEBaseItem implements IGrowableCrystal { NBTTagCompound comp = Platform.openNbtData( is ); comp.setInteger( "progress", newDamage ); - is.setItemDamage( (is.getItemDamage() / SINGLE_OFFSET) * SINGLE_OFFSET ); + is.setItemDamage( (int) (is.getItemDamage() / LEVEL_OFFSET) * LEVEL_OFFSET ); } public ItemCrystalSeed() { From d91b8b6cccc04a7d6c931b5d90b88f387407bd8b Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Tue, 1 Jul 2014 20:53:32 -0500 Subject: [PATCH 07/11] Working on Crafting CPU Save / Restore Logic --- .../CraftingCPUCalculator.java | 2 + .../implementations/CraftingCPUCluster.java | 199 ++++++++++++++---- 2 files changed, 162 insertions(+), 39 deletions(-) diff --git a/me/cluster/implementations/CraftingCPUCalculator.java b/me/cluster/implementations/CraftingCPUCalculator.java index 7b71eaaac..f4af98246 100644 --- a/me/cluster/implementations/CraftingCPUCalculator.java +++ b/me/cluster/implementations/CraftingCPUCalculator.java @@ -64,6 +64,8 @@ public class CraftingCPUCalculator extends MBCalculator } } + c.done(); + Iterator i = c.getTiles(); while (i.hasNext()) { diff --git a/me/cluster/implementations/CraftingCPUCluster.java b/me/cluster/implementations/CraftingCPUCluster.java index 56475fde6..1126639db 100644 --- a/me/cluster/implementations/CraftingCPUCluster.java +++ b/me/cluster/implementations/CraftingCPUCluster.java @@ -8,12 +8,15 @@ import java.util.Map.Entry; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; import net.minecraft.world.WorldServer; import appeng.api.AEApi; import appeng.api.config.Actionable; import appeng.api.config.FuzzyMode; import appeng.api.config.PowerMultiplier; +import appeng.api.implementations.ICraftingPatternItem; import appeng.api.networking.IGrid; import appeng.api.networking.IGridHost; import appeng.api.networking.IGridNode; @@ -23,6 +26,7 @@ import appeng.api.networking.crafting.ICraftingPatternDetails; import appeng.api.networking.energy.IEnergyGrid; import appeng.api.networking.events.MENetworkCraftingCpuChange; import appeng.api.networking.security.BaseActionSource; +import appeng.api.networking.security.MachineSource; import appeng.api.networking.storage.IBaseMonitor; import appeng.api.networking.storage.IStorageGrid; import appeng.api.storage.IMEInventory; @@ -46,6 +50,36 @@ import cpw.mods.fml.common.FMLCommonHandler; public class CraftingCPUCluster implements IAECluster, IBaseMonitor { + class TaskProgress + { + + long value; + + }; + + /** + * crafting job info + */ + MECraftingInventory inventory = new MECraftingInventory(); + IAEItemStack finalOutput; + + boolean waiting = false; + Map tasks = new HashMap(); + IItemList waitingFor = AEApi.instance().storage().createItemList(); + + // instance sate + private LinkedList tiles = new LinkedList(); + private LinkedList storage = new LinkedList(); + private LinkedList status = new LinkedList(); + + MachineSource machineSrc = null; + + int accelerator = 0; + public WorldCoord min; + public WorldCoord max; + public boolean isDestroyed = false; + private boolean isComplete = true; + private final HashMap, Object> listeners = new HashMap, Object>(); protected Iterator, Object>> getListeners() @@ -85,23 +119,6 @@ public class CraftingCPUCluster implements IAECluster, IBaseMonitor tiles = new LinkedList(); - - int accelerator = 0; - private LinkedList storage = new LinkedList(); - private LinkedList status = new LinkedList(); - public void getListOfItem(IItemList list, CraftingItemList whichList) { switch (whichList) @@ -145,18 +162,6 @@ public class CraftingCPUCluster implements IAECluster, IBaseMonitor tasks = new HashMap(); - IItemList waitingFor = AEApi.instance().storage().createItemList(); - @Override public Iterator getTiles() { @@ -205,6 +210,11 @@ public class CraftingCPUCluster implements IAECluster, IBaseMonitor= input.getStackSize() ) { is.decStackSize( input.getStackSize() ); + markDirty(); // AELog.info( "Task: " + is.getStackSize() + " remaining : " + getRemainingTasks() + // " remaining : " @@ -279,6 +290,7 @@ public class CraftingCPUCluster implements IAECluster, IBaseMonitor e : tasks.entrySet()) + { + NBTTagCompound item = writeItem( AEItemStack.create( e.getKey().getPattern() ) ); + item.setLong( "craftingProgress", e.getValue().value ); + list.appendTag( item ); + } + data.setTag( "tasks", list ); + + data.setTag( "waitingFor", writeList( waitingFor ) ); + } + + private IItemList readList(NBTTagList tag) + { + IItemList out = AEApi.instance().storage().createItemList(); + + for (int x = 0; x < tag.tagCount(); x++) + { + IAEItemStack ais = AEItemStack.loadItemStackFromNBT( tag.getCompoundTagAt( x ) ); + if ( ais != null ) + out.add( ais ); + } + + return out; + } + + private NBTTagList writeList(IItemList myList) + { + NBTTagList out = new NBTTagList(); + + for (IAEItemStack ais : myList) + out.appendTag( writeItem( ais ) ); + + return out; + } + + private NBTTagCompound writeItem(IAEItemStack finalOutput2) + { + NBTTagCompound out = new NBTTagCompound(); + + if ( finalOutput2 != null ) + finalOutput2.writeToNBT( out ); + + return out; + } + + public void done() + { + TileCraftingTile core = getCore(); + + core.isCoreBlock = true; + + if ( core.previousState != null ) + { + readFromNBT( core.previousState ); + core.previousState = null; + } + } + } From 64f2acfb433d0ea630ce92a48d0c26a67907a3f9 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Wed, 2 Jul 2014 00:04:35 -0500 Subject: [PATCH 08/11] QNB blocks don't deform. --- block/qnb/BlockQuantumLinkChamber.java | 10 ++++++++++ block/qnb/BlockQuantumRing.java | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/block/qnb/BlockQuantumLinkChamber.java b/block/qnb/BlockQuantumLinkChamber.java index 91d1d8a88..2d571c50c 100644 --- a/block/qnb/BlockQuantumLinkChamber.java +++ b/block/qnb/BlockQuantumLinkChamber.java @@ -61,6 +61,16 @@ public class BlockQuantumLinkChamber extends AEBaseBlock implements ICustomColli bridge.neighborUpdate(); } + @Override + public void breakBlock(World w, int x, int y, int z, Block a, int b) + { + TileQuantumBridge bridge = getTileEntity( w, x, y, z ); + if ( bridge != null ) + bridge.breakCluster(); + + super.breakBlock( w, x, y, z, a, b ); + } + @Override protected Class getRenderer() { diff --git a/block/qnb/BlockQuantumRing.java b/block/qnb/BlockQuantumRing.java index 6ac42b6a8..7870c096a 100644 --- a/block/qnb/BlockQuantumRing.java +++ b/block/qnb/BlockQuantumRing.java @@ -37,6 +37,16 @@ public class BlockQuantumRing extends AEBaseBlock implements ICustomCollision bridge.neighborUpdate(); } + @Override + public void breakBlock(World w, int x, int y, int z, Block a, int b) + { + TileQuantumBridge bridge = getTileEntity( w, x, y, z ); + if ( bridge != null ) + bridge.breakCluster(); + + super.breakBlock( w, x, y, z, a, b ); + } + @Override protected Class getRenderer() { From 1d687f30845b0ef617d2428c98d1dfdef5d5040e Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Wed, 2 Jul 2014 00:05:21 -0500 Subject: [PATCH 09/11] Graceful saving/loading and breaking of CPUs. --- block/crafting/BlockCraftingUnit.java | 13 ++++ .../implementations/CraftingCPUCluster.java | 73 +++++++++++++------ tile/crafting/TileCraftingTile.java | 67 +++++++++++++++++ tile/qnb/TileQuantumBridge.java | 30 +++++--- 4 files changed, 149 insertions(+), 34 deletions(-) diff --git a/block/crafting/BlockCraftingUnit.java b/block/crafting/BlockCraftingUnit.java index 92cb511e0..b7213c772 100644 --- a/block/crafting/BlockCraftingUnit.java +++ b/block/crafting/BlockCraftingUnit.java @@ -41,6 +41,9 @@ public class BlockCraftingUnit extends AEBaseBlock @Override public boolean onActivated(World w, int x, int y, int z, EntityPlayer p, int side, float hitX, float hitY, float hitZ) { + if ( Platform.isClient() ) + return true; + TileCraftingTile tg = getTileEntity( w, x, y, z ); if ( tg != null && !p.isSneaking() && tg.isFormed() && tg.isActive() ) { @@ -94,6 +97,16 @@ public class BlockCraftingUnit extends AEBaseBlock return RenderBlockCrafting.class; } + @Override + public void breakBlock(World w, int x, int y, int z, Block a, int b) + { + TileCraftingTile cp = getTileEntity( w, x, y, z ); + if ( cp != null ) + cp.breakCluster(); + + super.breakBlock( w, x, y, z, a, b ); + } + @Override public void onNeighborBlockChange(World w, int x, int y, int z, Block junk) { diff --git a/me/cluster/implementations/CraftingCPUCluster.java b/me/cluster/implementations/CraftingCPUCluster.java index 1126639db..8cbe1a7d3 100644 --- a/me/cluster/implementations/CraftingCPUCluster.java +++ b/me/cluster/implementations/CraftingCPUCluster.java @@ -64,6 +64,7 @@ public class CraftingCPUCluster implements IAECluster, IBaseMonitor tasks = new HashMap(); IItemList waitingFor = AEApi.instance().storage().createItemList(); @@ -78,7 +79,6 @@ public class CraftingCPUCluster implements IAECluster, IBaseMonitor, Object> listeners = new HashMap, Object>(); @@ -168,6 +168,11 @@ public class CraftingCPUCluster implements IAECluster, IBaseMonitor getInventory() + { + return inventory; + } + public CraftingCPUCluster(WorldCoord _min, WorldCoord _max) { min = _min; max = _max; @@ -302,9 +307,17 @@ public class CraftingCPUCluster implements IAECluster, IBaseMonitor ii = sg.getItemInventory(); - - for (IAEItemStack is : inventory.getItemList()) - { - is = inventory.extractItems( is.copy(), Actionable.MODULATE, machineSrc ); - - if ( is != null ) - is = ii.injectItems( is, Actionable.MODULATE, machineSrc ); - - if ( is != null ) - inventory.injectItems( is, Actionable.MODULATE, machineSrc ); - } - - if ( inventory.getItemList().isEmpty() ) - inventory = new MECraftingInventory(); - - markDirty(); + storeItems(); return; } @@ -539,6 +535,32 @@ public class CraftingCPUCluster implements IAECluster, IBaseMonitor ii = sg.getItemInventory(); + + for (IAEItemStack is : inventory.getItemList()) + { + is = inventory.extractItems( is.copy(), Actionable.MODULATE, machineSrc ); + + if ( is != null ) + is = ii.injectItems( is, Actionable.MODULATE, machineSrc ); + + if ( is != null ) + inventory.injectItems( is, Actionable.MODULATE, machineSrc ); + } + + if ( inventory.getItemList().isEmpty() ) + inventory = new MECraftingInventory(); + + markDirty(); + } + private World getWorld() { return null; @@ -657,6 +679,7 @@ public class CraftingCPUCluster implements IAECluster, IBaseMonitor e : tasks.entrySet()) @@ -744,4 +768,9 @@ public class CraftingCPUCluster implements IAECluster, IBaseMonitor inv = clust.getInventory(); + + LinkedList places = new LinkedList(); + + Iterator i = clust.getTiles(); + while (i.hasNext()) + { + IGridHost h = i.next(); + if ( h == this ) + places.add( new WorldCoord( this ) ); + else + { + TileEntity te = (TileEntity) h; + + for (ForgeDirection d : ForgeDirection.VALID_DIRECTIONS) + { + WorldCoord wc = new WorldCoord( te ); + wc.add( d, 1 ); + if ( worldObj.isAirBlock( wc.x, wc.y, wc.z ) ) + places.add( wc ); + } + + } + } + + Collections.shuffle( places ); + + if ( places.isEmpty() ) + throw new RuntimeException( "No air or even the tile hat was destroyed?!?!" ); + + for (IAEItemStack ais : inv.getAvailableItems( new ItemList( IAEItemStack.class ) )) + { + ais = ais.copy(); + ais.setStackSize( ais.getItemStack().getMaxStackSize() ); + while (true) + { + IAEItemStack g = inv.extractItems( ais.copy(), Actionable.MODULATE, clust.getActionSource() ); + if ( g == null ) + break; + + WorldCoord wc = places.poll(); + places.add( wc ); + + Platform.spawnDrops( worldObj, wc.x, wc.y, wc.z, Arrays.asList( g.getItemStack() ) ); + } + + } + + clust.destroy(); + } + } } diff --git a/tile/qnb/TileQuantumBridge.java b/tile/qnb/TileQuantumBridge.java index 6e9e59cbe..9e97f2a6f 100644 --- a/tile/qnb/TileQuantumBridge.java +++ b/tile/qnb/TileQuantumBridge.java @@ -31,8 +31,8 @@ import appeng.util.Platform; public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock { - final private static ItemStack ring = AEApi.instance().blocks().blockQuantumRing.stack(1); - + final private static ItemStack ring = AEApi.instance().blocks().blockQuantumRing.stack( 1 ); + final int sidesRing[] = new int[] {}; final int sidesLink[] = new int[] { 0 }; @@ -134,14 +134,14 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock { if ( clust != null ) { - if ( ! affectWorld ) + if ( !affectWorld ) clust.updateStatus = false; - + clust.destroy(); } - + clust = null; - + if ( affectWorld ) gridProxy.setValidSides( EnumSet.noneOf( ForgeDirection.class ) ); } @@ -157,26 +157,26 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock { return !isInvalid(); } - + @Override public void onReady() { super.onReady(); - if ( worldObj.getBlock( xCoord, yCoord, zCoord) == AEApi.instance().blocks().blockQuantumRing.block() ) + if ( worldObj.getBlock( xCoord, yCoord, zCoord ) == AEApi.instance().blocks().blockQuantumRing.block() ) gridProxy.setVisualRepresentation( ring ); } @Override public void invalidate() { - disconnect(false); + disconnect( false ); super.invalidate(); } @Override public void onChunkUnload() { - disconnect(false); + disconnect( false ); super.onChunkUnload(); } @@ -189,9 +189,9 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock if ( xdex != flags ) { xdex = flags; - markForUpdate(); + markForUpdate(); } - + if ( isCorner() || isCenter() ) { gridProxy.setValidSides( getConnections() ); @@ -283,4 +283,10 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock return (xdex & hasSingularity) == hasSingularity; } + public void breakCluster() + { + if ( clust != null ) + clust.destroy(); + } + } From a0c15025b765bed9fd038e12097f3d76a540b962 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Wed, 2 Jul 2014 00:05:46 -0500 Subject: [PATCH 10/11] Fixed a possible NPE in the cable rendering logic. --- client/render/BusRenderHelper.java | 13 +++-- client/render/BusRenderer.java | 4 +- client/render/CableRenderHelper.java | 51 ++++++++++--------- client/render/blocks/RenderBlockCrafting.java | 5 +- parts/CableBusContainer.java | 47 +++++++++-------- 5 files changed, 65 insertions(+), 55 deletions(-) diff --git a/client/render/BusRenderHelper.java b/client/render/BusRenderHelper.java index 5b4ffc32a..61cde8fac 100644 --- a/client/render/BusRenderHelper.java +++ b/client/render/BusRenderHelper.java @@ -34,9 +34,9 @@ public class BusRenderHelper implements IPartRenderHelper AEBaseBlock blk = (AEBaseBlock) AEApi.instance().blocks().blockMultiPart.block(); BaseBlockRender bbr = new BaseBlockRender(); - public ForgeDirection ax; - public ForgeDirection ay; - public ForgeDirection az; + private ForgeDirection ax = ForgeDirection.EAST; + private ForgeDirection ay = ForgeDirection.UP; + private ForgeDirection az = ForgeDirection.SOUTH; int color = 0xffffff; @@ -457,4 +457,11 @@ public class BusRenderHelper implements IPartRenderHelper return az; } + public void setOrientation(ForgeDirection dx, ForgeDirection dy, ForgeDirection dz) + { + ax = dx == null ? ForgeDirection.EAST : dx; + ay = dy == null ? ForgeDirection.UP : dy; + az = dz == null ? ForgeDirection.SOUTH : dz; + } + } diff --git a/client/render/BusRenderer.java b/client/render/BusRenderer.java index a32432bc1..33d7e5fd5 100644 --- a/client/render/BusRenderer.java +++ b/client/render/BusRenderer.java @@ -112,9 +112,7 @@ public class BusRenderer implements IItemRenderer BusRenderHelper.instance.setInvColor( 0xffffff ); renderer.blockAccess = ClientHelper.proxy.getWorld(); - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.SOUTH; + BusRenderHelper.instance.setOrientation( ForgeDirection.EAST, ForgeDirection.UP, ForgeDirection.SOUTH ); renderer.uvRotateBottom = renderer.uvRotateEast = renderer.uvRotateNorth = renderer.uvRotateSouth = renderer.uvRotateTop = renderer.uvRotateWest = 0; renderer.useInventoryTint = false; diff --git a/client/render/CableRenderHelper.java b/client/render/CableRenderHelper.java index 6211f4a7d..bf7b7e6d4 100644 --- a/client/render/CableRenderHelper.java +++ b/client/render/CableRenderHelper.java @@ -63,8 +63,8 @@ public class CableRenderHelper if ( part != null ) { cableBusContainer.setSide( s ); - BusCollisionHelper bch = new BusCollisionHelper( boxes, BusRenderHelper.instance.ax, BusRenderHelper.instance.ay, - BusRenderHelper.instance.az, null, true ); + BusRenderHelper brh = BusRenderHelper.instance; + BusCollisionHelper bch = new BusCollisionHelper( boxes, brh.getWorldX(), brh.getWorldY(), brh.getWorldZ(), null, true ); part.getBoxes( bch ); } } @@ -132,46 +132,49 @@ public class CableRenderHelper IPart part = cableBusContainer.getPart( s ); if ( part != null ) { + ForgeDirection ax, ay, az; + switch (s) { case DOWN: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.NORTH; - BusRenderHelper.instance.az = ForgeDirection.DOWN; + ax = ForgeDirection.EAST; + ay = ForgeDirection.NORTH; + az = ForgeDirection.DOWN; break; case UP: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.SOUTH; - BusRenderHelper.instance.az = ForgeDirection.UP; + ax = ForgeDirection.EAST; + ay = ForgeDirection.SOUTH; + az = ForgeDirection.UP; break; case EAST: - BusRenderHelper.instance.ax = ForgeDirection.SOUTH; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.EAST; + ax = ForgeDirection.SOUTH; + ay = ForgeDirection.UP; + az = ForgeDirection.EAST; break; case WEST: - BusRenderHelper.instance.ax = ForgeDirection.NORTH; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.WEST; + ax = ForgeDirection.NORTH; + ay = ForgeDirection.UP; + az = ForgeDirection.WEST; break; case NORTH: - BusRenderHelper.instance.ax = ForgeDirection.WEST; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.NORTH; + ax = ForgeDirection.WEST; + ay = ForgeDirection.UP; + az = ForgeDirection.NORTH; break; case SOUTH: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.SOUTH; + ax = ForgeDirection.EAST; + ay = ForgeDirection.UP; + az = ForgeDirection.SOUTH; break; case UNKNOWN: default: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.SOUTH; + ax = ForgeDirection.EAST; + ay = ForgeDirection.UP; + az = ForgeDirection.SOUTH; break; - } + + BusRenderHelper.instance.setOrientation( ax, ay, az ); part.renderDynamic( x, y, z, BusRenderHelper.instance, BusRenderer.instance.renderer ); } } diff --git a/client/render/blocks/RenderBlockCrafting.java b/client/render/blocks/RenderBlockCrafting.java index ab4c2b0da..f35633ee3 100644 --- a/client/render/blocks/RenderBlockCrafting.java +++ b/client/render/blocks/RenderBlockCrafting.java @@ -61,9 +61,8 @@ public class RenderBlockCrafting extends BaseBlockRender BusRenderHelper i = BusRenderHelper.instance; renderer.blockAccess = w; i.setPass( 0 ); - i.ax = ForgeDirection.EAST; - i.ay = ForgeDirection.UP; - i.az = ForgeDirection.SOUTH; + + i.setOrientation( ForgeDirection.EAST, ForgeDirection.UP, ForgeDirection.SOUTH ); try { diff --git a/parts/CableBusContainer.java b/parts/CableBusContainer.java index dcff47c88..06dd8a65e 100644 --- a/parts/CableBusContainer.java +++ b/parts/CableBusContainer.java @@ -528,46 +528,49 @@ public class CableBusContainer implements AEMultiTile, ICableBusContainer public void setSide(ForgeDirection s) { + ForgeDirection ax, ay, az; + switch (s) { case DOWN: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.NORTH; - BusRenderHelper.instance.az = ForgeDirection.DOWN; + ax = ForgeDirection.EAST; + ay = ForgeDirection.NORTH; + az = ForgeDirection.DOWN; break; case UP: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.SOUTH; - BusRenderHelper.instance.az = ForgeDirection.UP; + ax = ForgeDirection.EAST; + ay = ForgeDirection.SOUTH; + az = ForgeDirection.UP; break; case EAST: - BusRenderHelper.instance.ax = ForgeDirection.SOUTH; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.EAST; + ax = ForgeDirection.SOUTH; + ay = ForgeDirection.UP; + az = ForgeDirection.EAST; break; case WEST: - BusRenderHelper.instance.ax = ForgeDirection.NORTH; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.WEST; + ax = ForgeDirection.NORTH; + ay = ForgeDirection.UP; + az = ForgeDirection.WEST; break; case NORTH: - BusRenderHelper.instance.ax = ForgeDirection.WEST; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.NORTH; + ax = ForgeDirection.WEST; + ay = ForgeDirection.UP; + az = ForgeDirection.NORTH; break; case SOUTH: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.SOUTH; + ax = ForgeDirection.EAST; + ay = ForgeDirection.UP; + az = ForgeDirection.SOUTH; break; case UNKNOWN: default: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.SOUTH; + ax = ForgeDirection.EAST; + ay = ForgeDirection.UP; + az = ForgeDirection.SOUTH; break; - } + + BusRenderHelper.instance.setOrientation( ax, ay, az ); } @SideOnly(Side.CLIENT) From 98f83ad5e48b7d3ed37daef03deb0b23120e1323 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Wed, 2 Jul 2014 00:06:44 -0500 Subject: [PATCH 11/11] instead of itemid use the Item system hash. for hash generation purposes should improve lookup type stuff. --- util/item/AEItemDef.java | 9 ++++++--- util/item/AEItemStack.java | 3 +-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/util/item/AEItemDef.java b/util/item/AEItemDef.java index bcdd2ac79..bb7800ef8 100644 --- a/util/item/AEItemDef.java +++ b/util/item/AEItemDef.java @@ -37,17 +37,20 @@ public class AEItemDef static AESharedNBT lowTag = new AESharedNBT( Integer.MIN_VALUE ); static AESharedNBT highTag = new AESharedNBT( Integer.MAX_VALUE ); + public AEItemDef(Item it) { + item = it; + itemID = System.identityHashCode( item ); + } + public AEItemDef copy() { - AEItemDef t = new AEItemDef(); + AEItemDef t = new AEItemDef( item ); t.def = def; - t.item = item; t.damageValue = damageValue; t.dspDamage = dspDamage; t.maxDamage = maxDamage; t.tagCompound = tagCompound; t.isOre = isOre; - t.itemID = itemID; return t; } diff --git a/util/item/AEItemStack.java b/util/item/AEItemStack.java index 3f7dce110..5defa307c 100644 --- a/util/item/AEItemStack.java +++ b/util/item/AEItemStack.java @@ -57,8 +57,7 @@ public final class AEItemStack extends AEStack implements IAEItemS if ( is == null ) throw new RuntimeException( "Invalid Itemstack." ); - def = new AEItemDef(); - def.item = is.getItem(); + def = new AEItemDef( is.getItem() ); if ( def.item == null ) throw new RuntimeException( "This ItemStack is bad, it has a null item." );