diff options
Diffstat (limited to 'src/main')
141 files changed, 4790 insertions, 1944 deletions
diff --git a/src/main/java/blocks/Block_ControlRod.java b/src/main/java/blocks/Block_ControlRod.java deleted file mode 100644 index 4e407a5ed1..0000000000 --- a/src/main/java/blocks/Block_ControlRod.java +++ /dev/null @@ -1,30 +0,0 @@ -package blocks; - -import cpw.mods.fml.common.registry.GameRegistry; -import kekztech.KekzCore; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.creativetab.CreativeTabs; - -public class Block_ControlRod extends Block { - - private static Block_ControlRod instance = new Block_ControlRod(); - - private Block_ControlRod() { - super(Material.iron); - } - - public static Block_ControlRod getInstance() { - return instance; - } - - public void registerBlock() { - final String blockName = "kekztech_controlrod_block"; - super.setBlockName(blockName); - super.setCreativeTab(CreativeTabs.tabMisc); - super.setBlockTextureName(KekzCore.MODID + ":" + "ControlRod"); - super.setHardness(5.0f); - super.setResistance(6.0f); - GameRegistry.registerBlock(getInstance(), blockName); - } -} diff --git a/src/main/java/blocks/Block_GDCUnit.java b/src/main/java/blocks/Block_GDCUnit.java deleted file mode 100644 index ed778b5e8d..0000000000 --- a/src/main/java/blocks/Block_GDCUnit.java +++ /dev/null @@ -1,31 +0,0 @@ -package blocks;
-
-import cpw.mods.fml.common.registry.GameRegistry;
-import kekztech.KekzCore;
-import net.minecraft.block.Block;
-import net.minecraft.block.material.Material;
-import net.minecraft.creativetab.CreativeTabs;
-
-public class Block_GDCUnit extends Block {
-
- private static Block_GDCUnit instance = new Block_GDCUnit();
-
- private Block_GDCUnit() {
- // I am a singleton
- super(Material.iron);
- }
-
- public static Block_GDCUnit getInstance() {
- return instance;
- }
-
- public void registerBlock() {
- final String blockName = "kekztech_gdcceramicelectrolyteunit_block";
- super.setBlockName(blockName);
- super.setCreativeTab(CreativeTabs.tabMisc);
- super.setBlockTextureName(KekzCore.MODID + ":" + "GDCCeramicElectrolyteUnit");
- super.setHardness(5.0f);
- super.setResistance(6.0f);
- GameRegistry.registerBlock(getInstance(), blockName);
- }
-}
diff --git a/src/main/java/blocks/Block_ItemProxyCable.java b/src/main/java/blocks/Block_ItemProxyCable.java deleted file mode 100644 index dee566bab7..0000000000 --- a/src/main/java/blocks/Block_ItemProxyCable.java +++ /dev/null @@ -1,45 +0,0 @@ -package blocks; - -import cpw.mods.fml.common.registry.GameRegistry; -import itemBlocks.IB_ItemProxyCable; -import kekztech.KekzCore; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import tileentities.TE_ItemProxyCable; - -public class Block_ItemProxyCable extends BlockContainer { - - private static Block_ItemProxyCable instance = new Block_ItemProxyCable(); - - private Block_ItemProxyCable() { - super(Material.glass); - } - - public static Block_ItemProxyCable getInstance() { - return instance; - } - - public void registerBlock() { - final String blockName = "kekztech_itemproxycable_block"; - super.setBlockName(blockName); - super.setCreativeTab(CreativeTabs.tabMisc); - super.setBlockTextureName(KekzCore.MODID + ":" + "TFFTCasing"); - super.setHardness(3.0f); - super.setResistance(2.0f); - GameRegistry.registerBlock(getInstance(), IB_ItemProxyCable.class, blockName); - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public TileEntity createNewTileEntity(World world, int p_149915_2_) { - return new TE_ItemProxyCable(); - } - -} diff --git a/src/main/java/blocks/Block_ItemProxyEndpoint.java b/src/main/java/blocks/Block_ItemProxyEndpoint.java deleted file mode 100644 index 762880c877..0000000000 --- a/src/main/java/blocks/Block_ItemProxyEndpoint.java +++ /dev/null @@ -1,69 +0,0 @@ -package blocks; - -import java.util.UUID; - -import cpw.mods.fml.common.registry.GameRegistry; -import itemBlocks.IB_ItemProxyEndpoint; -import items.Item_Configurator; -import kekztech.GuiHandler; -import kekztech.KekzCore; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import tileentities.TE_ItemProxyEndpoint; - -public class Block_ItemProxyEndpoint extends BlockContainer { - - private static Block_ItemProxyEndpoint instance = new Block_ItemProxyEndpoint(); - - private Block_ItemProxyEndpoint() { - super(Material.glass); - } - - public static Block_ItemProxyEndpoint getInstance() { - return instance; - } - - public void registerBlock() { - final String blockName = "kekztech_itemproxyendpoint_block"; - super.setBlockName(blockName); - super.setCreativeTab(CreativeTabs.tabMisc); - super.setBlockTextureName(KekzCore.MODID + ":" + "ItemProxyEndpoint"); - super.setHardness(3.0f); - super.setResistance(2.0f); - GameRegistry.registerBlock(getInstance(), IB_ItemProxyEndpoint.class, blockName); - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float lx, float ly, float lz) { - if(world.isRemote) { - return true; - } - - final TileEntity te = world.getTileEntity(x, y, z); - if(te != null && te instanceof TE_ItemProxyEndpoint) { - final TE_ItemProxyEndpoint endpoint = (TE_ItemProxyEndpoint) te; - if(player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof Item_Configurator) { - - final ItemStack held = player.inventory.getCurrentItem(); - if(held.hasTagCompound() && held.getTagCompound().hasKey("config")) { - endpoint.setChannel(UUID.fromString(held.getTagCompound().getString("config"))); - } - } else { - player.openGui(KekzCore.instance, GuiHandler.ITEM_PROXY_ENDPOINT, world, x, y, z); - } - return true; - } - return false; - } - - @Override - public TileEntity createNewTileEntity(World world, int p_149915_2_) { - return new TE_ItemProxyEndpoint(); - } - -}
\ No newline at end of file diff --git a/src/main/java/blocks/Block_ItemProxySource.java b/src/main/java/blocks/Block_ItemProxySource.java deleted file mode 100644 index b2cdd4a656..0000000000 --- a/src/main/java/blocks/Block_ItemProxySource.java +++ /dev/null @@ -1,69 +0,0 @@ -package blocks; - -import cpw.mods.fml.common.registry.GameRegistry; -import itemBlocks.IB_ItemProxySource; -import items.Item_Configurator; -import kekztech.GuiHandler; -import kekztech.KekzCore; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import tileentities.TE_ItemProxySource; - -public class Block_ItemProxySource extends BlockContainer { - - private static Block_ItemProxySource instance = new Block_ItemProxySource(); - - private Block_ItemProxySource() { - super(Material.glass); - } - - public static Block_ItemProxySource getInstance() { - return instance; - } - - public void registerBlock() { - final String blockName = "kekztech_itemproxysource_block"; - super.setBlockName(blockName); - super.setCreativeTab(CreativeTabs.tabMisc); - super.setBlockTextureName(KekzCore.MODID + ":" + "ItemProxySource"); - super.setHardness(3.0f); - super.setResistance(2.0f); - GameRegistry.registerBlock(getInstance(), IB_ItemProxySource.class, blockName); - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float lx, float ly, float lz) { - if(world.isRemote) { - return true; - } - - final TileEntity te = world.getTileEntity(x, y, z); - if(te != null && te instanceof TE_ItemProxySource) { - final TE_ItemProxySource source = (TE_ItemProxySource) te; - if(player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().getItem() instanceof Item_Configurator) { - - final NBTTagCompound configNBT = new NBTTagCompound(); - configNBT.setString("config", source.getChannel().toString()); - final ItemStack held = player.inventory.getCurrentItem(); - held.setTagCompound(configNBT); - - } else { - player.openGui(KekzCore.instance, GuiHandler.ITEM_PROXY_SOURCE, world, x, y, z); - } - return true; - } - return false; - } - - @Override - public TileEntity createNewTileEntity(World world, int p_149915_2_) { - return new TE_ItemProxySource(); - } - -} diff --git a/src/main/java/blocks/Block_ItemServerIOPort.java b/src/main/java/blocks/Block_ItemServerIOPort.java deleted file mode 100644 index 79aba33b89..0000000000 --- a/src/main/java/blocks/Block_ItemServerIOPort.java +++ /dev/null @@ -1,41 +0,0 @@ -package blocks; - -import cpw.mods.fml.common.registry.GameRegistry; -import itemBlocks.IB_ItemServerIOPort; -import kekztech.KekzCore; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import tileentities.TE_ItemServerIOPort; - -public class Block_ItemServerIOPort extends BlockContainer { - - private static Block_ItemServerIOPort instance = new Block_ItemServerIOPort(); - - private Block_ItemServerIOPort() { - // I am a singleton - super(Material.iron); - } - - public static Block_ItemServerIOPort getInstance() { - return instance; - } - - public void registerBlock() { - final String blockName = "kekztech_itemserverioport_block"; - super.setBlockName(blockName); - super.setCreativeTab(CreativeTabs.tabMisc); - super.setBlockTextureName(KekzCore.MODID + ":" + "ItemServerIOPort"); - super.setHardness(5.0f); - super.setResistance(6.0f); - GameRegistry.registerBlock(getInstance(), IB_ItemServerIOPort.class, blockName); - } - - @Override - public TileEntity createNewTileEntity(World world, int p_149915_2_) { - return new TE_ItemServerIOPort(); - } - -} diff --git a/src/main/java/blocks/Block_ItemServerRackCasing.java b/src/main/java/blocks/Block_ItemServerRackCasing.java deleted file mode 100644 index e0ee7af698..0000000000 --- a/src/main/java/blocks/Block_ItemServerRackCasing.java +++ /dev/null @@ -1,33 +0,0 @@ -package blocks; - -import cpw.mods.fml.common.registry.GameRegistry; -import itemBlocks.IB_ItemServerRackCasing; -import kekztech.KekzCore; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.creativetab.CreativeTabs; - -public class Block_ItemServerRackCasing extends Block { - - private static Block_ItemServerRackCasing instance = new Block_ItemServerRackCasing(); - - private Block_ItemServerRackCasing() { - // I am a singleton - super(Material.iron); - } - - public static Block_ItemServerRackCasing getInstance() { - return instance; - } - - public void registerBlock() { - final String blockName = "kekztech_itemserverrackcasing_block"; - super.setBlockName(blockName); - super.setCreativeTab(CreativeTabs.tabMisc); - super.setBlockTextureName(KekzCore.MODID + ":" + "ItemServerRackCasing"); - super.setHardness(5.0f); - super.setResistance(6.0f); - GameRegistry.registerBlock(getInstance(), IB_ItemServerRackCasing.class, blockName); - } - -} diff --git a/src/main/java/blocks/Block_TFFTCasing.java b/src/main/java/blocks/Block_TFFTCasing.java deleted file mode 100644 index 02f44a9dd7..0000000000 --- a/src/main/java/blocks/Block_TFFTCasing.java +++ /dev/null @@ -1,31 +0,0 @@ -package blocks;
-
-import cpw.mods.fml.common.registry.GameRegistry;
-import kekztech.KekzCore;
-import net.minecraft.block.Block;
-import net.minecraft.block.material.Material;
-import net.minecraft.creativetab.CreativeTabs;
-
-public class Block_TFFTCasing extends Block {
-
- private static Block_TFFTCasing instance = new Block_TFFTCasing();
-
- private Block_TFFTCasing() {
- // I am a singleton
- super(Material.iron);
- }
-
- public static Block_TFFTCasing getInstance() {
- return instance;
- }
-
- public void registerBlock() {
- final String blockName = "kekztech_tfftcasingblock_block";
- super.setBlockName(blockName);
- super.setCreativeTab(CreativeTabs.tabMisc);
- super.setBlockTextureName(KekzCore.MODID + ":" + "TFFTCasing");
- super.setHardness(5.0f);
- super.setResistance(6.0f);
- GameRegistry.registerBlock(getInstance(), blockName);
- }
-}
diff --git a/src/main/java/blocks/Block_TFFTMultiHatch.java b/src/main/java/blocks/Block_TFFTMultiHatch.java deleted file mode 100644 index e8378f39e8..0000000000 --- a/src/main/java/blocks/Block_TFFTMultiHatch.java +++ /dev/null @@ -1,40 +0,0 @@ -package blocks; - -import cpw.mods.fml.common.registry.GameRegistry; -import itemBlocks.IB_TFFTMultiHatch; -import kekztech.KekzCore; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import tileentities.TE_TFFTMultiHatch; - -public class Block_TFFTMultiHatch extends BlockContainer { - - private static Block_TFFTMultiHatch instance = new Block_TFFTMultiHatch(); - - private Block_TFFTMultiHatch() { - super(Material.iron); - } - - public static Block_TFFTMultiHatch getInstance() { - return instance; - } - - public void registerBlock() { - final String blockName = "kekztech_tfftmultihatch_block"; - super.setBlockName(blockName); - super.setCreativeTab(CreativeTabs.tabMisc); - super.setBlockTextureName(KekzCore.MODID + ":" + "TFFTMultiHatch"); - super.setHardness(5.0f); - super.setResistance(6.0f); - GameRegistry.registerBlock(getInstance(), IB_TFFTMultiHatch.class, blockName); - } - - @Override - public TileEntity createNewTileEntity(World world, int p_149915_2_) { - return new TE_TFFTMultiHatch(); - } - -} diff --git a/src/main/java/blocks/Block_TFFTStorageFieldBlockT1.java b/src/main/java/blocks/Block_TFFTStorageFieldBlockT1.java deleted file mode 100644 index d90838325f..0000000000 --- a/src/main/java/blocks/Block_TFFTStorageFieldBlockT1.java +++ /dev/null @@ -1,37 +0,0 @@ -package blocks;
-
-import cpw.mods.fml.common.registry.GameRegistry;
-import itemBlocks.IB_TFFTStorageFieldBlockT1;
-import kekztech.KekzCore;
-import net.minecraft.block.Block;
-import net.minecraft.block.material.Material;
-import net.minecraft.creativetab.CreativeTabs;
-
-public class Block_TFFTStorageFieldBlockT1 extends Block {
-
- private static Block_TFFTStorageFieldBlockT1 instance = new Block_TFFTStorageFieldBlockT1();
-
- private Block_TFFTStorageFieldBlockT1() {
- // I am a singleton
- super(Material.iron);
- }
-
- public static Block_TFFTStorageFieldBlockT1 getInstance() {
- return instance;
- }
-
- public static int getCapacity() {
- return 500000;
- }
-
- public void registerBlock() {
- final String blockName = "kekztech_tfftstoragefieldblock1_block";
- super.setBlockName(blockName);
- super.setCreativeTab(CreativeTabs.tabMisc);
- super.setBlockTextureName(KekzCore.MODID + ":" + "TFFTStorageFieldBlock1");
- super.setHardness(5.0f);
- super.setResistance(6.0f);
- GameRegistry.registerBlock(getInstance(), IB_TFFTStorageFieldBlockT1.class, blockName);
- }
-
-}
diff --git a/src/main/java/blocks/Block_TFFTStorageFieldBlockT2.java b/src/main/java/blocks/Block_TFFTStorageFieldBlockT2.java deleted file mode 100644 index 08094338d5..0000000000 --- a/src/main/java/blocks/Block_TFFTStorageFieldBlockT2.java +++ /dev/null @@ -1,36 +0,0 @@ -package blocks;
-
-import cpw.mods.fml.common.registry.GameRegistry;
-import itemBlocks.IB_TFFTStorageFieldBlockT2;
-import kekztech.KekzCore;
-import net.minecraft.block.Block;
-import net.minecraft.block.material.Material;
-import net.minecraft.creativetab.CreativeTabs;
-
-public class Block_TFFTStorageFieldBlockT2 extends Block {
-
- private static Block_TFFTStorageFieldBlockT2 instance = new Block_TFFTStorageFieldBlockT2();
-
- private Block_TFFTStorageFieldBlockT2() {
- // I am a singleton
- super(Material.iron);
- }
-
- public static Block_TFFTStorageFieldBlockT2 getInstance() {
- return instance;
- }
-
- public static int getCapacity() {
- return 4000000;
- }
-
- public void registerBlock() {
- final String blockName = "kekztech_tfftstoragefieldblock2_block";
- super.setBlockName(blockName);
- super.setCreativeTab(CreativeTabs.tabMisc);
- super.setBlockTextureName(KekzCore.MODID + ":" + "TFFTStorageFieldBlock2");
- super.setHardness(5.0f);
- super.setResistance(6.0f);
- GameRegistry.registerBlock(getInstance(), IB_TFFTStorageFieldBlockT2.class, blockName);
- }
-}
diff --git a/src/main/java/blocks/Block_TFFTStorageFieldBlockT3.java b/src/main/java/blocks/Block_TFFTStorageFieldBlockT3.java deleted file mode 100644 index 987cf54b63..0000000000 --- a/src/main/java/blocks/Block_TFFTStorageFieldBlockT3.java +++ /dev/null @@ -1,36 +0,0 @@ -package blocks;
-
-import cpw.mods.fml.common.registry.GameRegistry;
-import itemBlocks.IB_TFFTStorageFieldBlockT3;
-import kekztech.KekzCore;
-import net.minecraft.block.Block;
-import net.minecraft.block.material.Material;
-import net.minecraft.creativetab.CreativeTabs;
-
-public class Block_TFFTStorageFieldBlockT3 extends Block {
-
- private static Block_TFFTStorageFieldBlockT3 instance = new Block_TFFTStorageFieldBlockT3();
-
- private Block_TFFTStorageFieldBlockT3() {
- // I am a singleton
- super(Material.iron);
- }
-
- public static Block_TFFTStorageFieldBlockT3 getInstance() {
- return instance;
- }
-
- public static int getCapacity() {
- return 16000000;
- }
-
- public void registerBlock() {
- final String blockName = "kekztech_tfftstoragefieldblock3_block";
- super.setBlockName(blockName);
- super.setCreativeTab(CreativeTabs.tabMisc);
- super.setBlockTextureName(KekzCore.MODID + ":" + "TFFTStorageFieldBlock3");
- super.setHardness(5.0f);
- super.setResistance(6.0f);
- GameRegistry.registerBlock(getInstance(), IB_TFFTStorageFieldBlockT3.class, blockName);
- }
-}
diff --git a/src/main/java/blocks/Block_TFFTStorageFieldBlockT4.java b/src/main/java/blocks/Block_TFFTStorageFieldBlockT4.java deleted file mode 100644 index 4ba363cfbb..0000000000 --- a/src/main/java/blocks/Block_TFFTStorageFieldBlockT4.java +++ /dev/null @@ -1,36 +0,0 @@ -package blocks;
-
-import cpw.mods.fml.common.registry.GameRegistry;
-import itemBlocks.IB_TFFTStorageFieldBlockT4;
-import kekztech.KekzCore;
-import net.minecraft.block.Block;
-import net.minecraft.block.material.Material;
-import net.minecraft.creativetab.CreativeTabs;
-
-public class Block_TFFTStorageFieldBlockT4 extends Block {
-
- private static Block_TFFTStorageFieldBlockT4 instance = new Block_TFFTStorageFieldBlockT4();
-
- private Block_TFFTStorageFieldBlockT4() {
- // I am a singleton
- super(Material.iron);
- }
-
- public static Block_TFFTStorageFieldBlockT4 getInstance() {
- return instance;
- }
-
- public static int getCapacity() {
- return 64000000;
- }
-
- public void registerBlock() {
- final String blockName = "kekztech_tfftstoragefieldblock4_block";
- super.setBlockName(blockName);
- super.setCreativeTab(CreativeTabs.tabMisc);
- super.setBlockTextureName(KekzCore.MODID + ":" + "TFFTStorageFieldBlock4");
- super.setHardness(5.0f);
- super.setResistance(6.0f);
- GameRegistry.registerBlock(getInstance(), IB_TFFTStorageFieldBlockT4.class, blockName);
- }
-}
diff --git a/src/main/java/blocks/Block_TFFTStorageFieldBlockT5.java b/src/main/java/blocks/Block_TFFTStorageFieldBlockT5.java deleted file mode 100644 index 61ed1decf3..0000000000 --- a/src/main/java/blocks/Block_TFFTStorageFieldBlockT5.java +++ /dev/null @@ -1,36 +0,0 @@ -package blocks; - -import cpw.mods.fml.common.registry.GameRegistry; -import itemBlocks.IB_TFFTStorageFieldBlockT5; -import kekztech.KekzCore; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.creativetab.CreativeTabs; - -public class Block_TFFTStorageFieldBlockT5 extends Block { - - private static Block_TFFTStorageFieldBlockT5 instance = new Block_TFFTStorageFieldBlockT5(); - - private Block_TFFTStorageFieldBlockT5() { - // I am a singleton - super(Material.iron); - } - - public static Block_TFFTStorageFieldBlockT5 getInstance() { - return instance; - } - - public static int getCapacity() { - return 256000000; - } - - public void registerBlock() { - final String blockName = "kekztech_tfftstoragefieldblock5_block"; - super.setBlockName(blockName); - super.setCreativeTab(CreativeTabs.tabMisc); - super.setBlockTextureName(KekzCore.MODID + ":" + "TFFTStorageFieldBlock5"); - super.setHardness(5.0f); - super.setResistance(6.0f); - GameRegistry.registerBlock(getInstance(), IB_TFFTStorageFieldBlockT5.class, blockName); - } -}
\ No newline at end of file diff --git a/src/main/java/blocks/Block_YSZUnit.java b/src/main/java/blocks/Block_YSZUnit.java deleted file mode 100644 index a32b28e94d..0000000000 --- a/src/main/java/blocks/Block_YSZUnit.java +++ /dev/null @@ -1,31 +0,0 @@ -package blocks;
-
-import cpw.mods.fml.common.registry.GameRegistry;
-import kekztech.KekzCore;
-import net.minecraft.block.Block;
-import net.minecraft.block.material.Material;
-import net.minecraft.creativetab.CreativeTabs;
-
-public class Block_YSZUnit extends Block {
-
- private static Block_YSZUnit instance = new Block_YSZUnit();
-
- private Block_YSZUnit() {
- // I am a singleton
- super(Material.iron);
- }
-
- public static Block_YSZUnit getInstance() {
- return instance;
- }
-
- public void registerBlock() {
- final String blockName = "kekztech_yszceramicelectrolyteunit_block";
- super.setBlockName(blockName);
- super.setCreativeTab(CreativeTabs.tabMisc);
- super.setBlockTextureName(KekzCore.MODID + ":" + "YSZCeramicElectrolyteUnit");
- super.setHardness(5.0f);
- super.setResistance(6.0f);
- GameRegistry.registerBlock(getInstance(), blockName);
- }
-}
diff --git a/src/main/java/container/GUIContainer_ModularNuclearReactor.java b/src/main/java/client/gui/GUIContainer_ModularNuclearReactor.java index 106c96b092..d6f2a61ce4 100644 --- a/src/main/java/container/GUIContainer_ModularNuclearReactor.java +++ b/src/main/java/client/gui/GUIContainer_ModularNuclearReactor.java @@ -1,7 +1,8 @@ -package container;
+package client.gui;
import org.lwjgl.opengl.GL11;
+import common.container.Container_ModularNuclearReactor;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import kekztech.KekzCore;
import net.minecraft.client.Minecraft;
diff --git a/src/main/java/container/Gui_ItemProxyEndpoint.java b/src/main/java/client/gui/Gui_ItemProxyEndpoint.java index 0fb1b6e05b..f978ed6495 100644 --- a/src/main/java/container/Gui_ItemProxyEndpoint.java +++ b/src/main/java/client/gui/Gui_ItemProxyEndpoint.java @@ -1,7 +1,8 @@ -package container; +package client.gui; import org.lwjgl.opengl.GL11; +import common.container.Container_ItemProxyEndpoint; import kekztech.KekzCore; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.inventory.GuiContainer; @@ -14,7 +15,7 @@ import net.minecraft.util.ResourceLocation; public class Gui_ItemProxyEndpoint extends GuiContainer { - private final ResourceLocation texture = new ResourceLocation(KekzCore.MODID, "textures/gui/ItemTech1by1.png"); + private final ResourceLocation texture = new ResourceLocation(KekzCore.MODID, "textures/gui/ItemTechReceiverNode.png"); private final InventoryPlayer inventory; private final IInventory te; diff --git a/src/main/java/container/Gui_ItemProxySource.java b/src/main/java/client/gui/Gui_ItemProxySource.java index e72928f7ff..a811f01bbe 100644 --- a/src/main/java/container/Gui_ItemProxySource.java +++ b/src/main/java/client/gui/Gui_ItemProxySource.java @@ -1,7 +1,8 @@ -package container; +package client.gui; import org.lwjgl.opengl.GL11; +import common.container.Container_ItemProxySource; import kekztech.KekzCore; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.inventory.GuiContainer; diff --git a/src/main/java/client/renderer/ConduitRenderer.java b/src/main/java/client/renderer/ConduitRenderer.java new file mode 100644 index 0000000000..9266d22f55 --- /dev/null +++ b/src/main/java/client/renderer/ConduitRenderer.java @@ -0,0 +1,93 @@ +package client.renderer; + +import common.tileentities.TE_ItemProxyCable; +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.common.util.ForgeDirection; + +public class ConduitRenderer implements ISimpleBlockRenderingHandler { + + public static final int RID = RenderingRegistry.getNextAvailableRenderId(); + private static final ConduitRenderer INSTANCE = new ConduitRenderer(); + + private ConduitRenderer() { + + } + + public static ConduitRenderer getInstance() { + return INSTANCE; + } + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, + RenderBlocks renderer) { + final TileEntity te = world.getTileEntity(x, y, z); + if(te instanceof TE_ItemProxyCable) { + final TE_ItemProxyCable cable = (TE_ItemProxyCable) te; + + final float thickness = TE_ItemProxyCable.getThickness(); + final float space = (1.0f - thickness) / 2.0f; + + float xThickness = thickness; + float xOffset = space; + float yThickness = thickness; + float yOffset = space; + float zThickness = thickness; + float zOffset = space; + + for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { + if(cable.isConnected(side)) { + switch(side) { + case DOWN: + yOffset = 0.0F; + yThickness += space; + break; + case UP: + yThickness += space; + break; + case NORTH: + zOffset = 0.0F; + zThickness += space; + break; + case SOUTH: + zThickness += space; + break; + case WEST: + xOffset += 0.0F; + xThickness += space; + break; + case EAST: + xThickness += space; + break; + } + } + } + + block.setBlockBounds(xOffset, yOffset, zOffset, + xOffset + xThickness, yOffset + yThickness, zOffset + zThickness); + renderer.setRenderBoundsFromBlock(block); + } + + return false; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return ConduitRenderer.RID; + } + +} diff --git a/src/main/java/client/renderer/TESR_SECapacitor.java b/src/main/java/client/renderer/TESR_SECapacitor.java new file mode 100644 index 0000000000..16c820917d --- /dev/null +++ b/src/main/java/client/renderer/TESR_SECapacitor.java @@ -0,0 +1,74 @@ +package client.renderer; + +import common.tileentities.TE_SpaceElevatorCapacitor; +import kekztech.KekzCore; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; + +public class TESR_SECapacitor extends TileEntitySpecialRenderer { + + private static final ResourceLocation capSide = new ResourceLocation(KekzCore.MODID, "textures/blocks/SpaceElevatorCapacitor_side_renderbase.png"); + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float partialTick) { + final Tessellator tessellator = Tessellator.instance; + final TE_SpaceElevatorCapacitor teCap = (TE_SpaceElevatorCapacitor) te; + // Setup vertices + final double fbr_x = x + 1; + final double fbr_z = z + 1; + + final double ftr_y = y + 1; + + final double uv_a_u = 1.0D; + final double uv_a_v = 1.0D; + + final double uv_b_u = 1.0D; + final double uv_b_v = 0.0D; + + final double uv_c_u = 0.0D; + final double uv_c_v = 0.0D; + + final double uv_d_u = 0.0D; + final double uv_d_v = 1.0D; + // Render sides + super.bindTexture(capSide); + + // Prepare Tessellator + tessellator.startDrawingQuads(); + // Render the caps as red if there are maintenance issues + if(teCap.isDamaged()) { + final float wave = (float) Math.abs(Math.sin((te.getWorldObj().getTotalWorldTime() + partialTick) / 20.0D)); + final int redSat = 64 + (int) Math.ceil(191 * wave); + tessellator.setColorRGBA(redSat, 0, 0, 255); + } else { + final int sat = (int) Math.ceil(teCap.getChargeLevel() * 255); + tessellator.setColorRGBA(0, 0, sat, 255); + } + tessellator.setBrightness(255); + // (DOWN and UP faces are not rendered as they will not ever be visible in the Space Elevator structure) + // NORTH + tessellator.addVertexWithUV(x, y, z, uv_a_u, uv_a_v); + tessellator.addVertexWithUV(x, ftr_y, z, uv_b_u, uv_b_v); + tessellator.addVertexWithUV(fbr_x, ftr_y, z, uv_c_u, uv_c_v); + tessellator.addVertexWithUV(fbr_x, y, z, uv_d_u, uv_d_v); + // SOUTH + tessellator.addVertexWithUV(fbr_x, y, fbr_z, uv_a_u, uv_a_v); + tessellator.addVertexWithUV(fbr_x, ftr_y, fbr_z, uv_b_u, uv_b_v); + tessellator.addVertexWithUV(x, ftr_y, fbr_z, uv_c_u, uv_c_v); + tessellator.addVertexWithUV(x, y, fbr_z, uv_d_u, uv_d_v); + // WEST + tessellator.addVertexWithUV(x, y, fbr_z, uv_a_u, uv_a_v); + tessellator.addVertexWithUV(x, ftr_y, fbr_z, uv_b_u, uv_b_v); + tessellator.addVertexWithUV(x, ftr_y, z, uv_c_u, uv_c_v); + tessellator.addVertexWithUV(x, y, z, uv_d_u, uv_d_v); + // EAST + tessellator.addVertexWithUV(fbr_x, y, z, uv_a_u, uv_a_v); + tessellator.addVertexWithUV(fbr_x, ftr_y, z, uv_b_u, uv_b_v); + tessellator.addVertexWithUV(fbr_x, ftr_y, fbr_z, uv_c_u, uv_c_v); + tessellator.addVertexWithUV(fbr_x, y, fbr_z, uv_d_u, uv_d_v); + // Draw! + tessellator.draw(); + } +} diff --git a/src/main/java/client/renderer/TESR_SETether.java b/src/main/java/client/renderer/TESR_SETether.java new file mode 100644 index 0000000000..2e4fa95cc5 --- /dev/null +++ b/src/main/java/client/renderer/TESR_SETether.java @@ -0,0 +1,76 @@ +package client.renderer; + +import kekztech.KekzCore; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +public class TESR_SETether extends TileEntitySpecialRenderer { + + private static final ResourceLocation tetherBeamTexture = new ResourceLocation(KekzCore.MODID, "textures/effects/Tether_beam.png"); + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float partialTick) { + float beamLengthScale = 1.0F; // [0.0F, 1.0F] -> linear scale from 0 to 256 + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + + // Get Tessellator instance + final Tessellator tessellator = Tessellator.instance; + // Bind beam texture and set texture params + super.bindTexture(tetherBeamTexture); + GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F); + GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F); + // Set render flags for inner beam + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_BLEND); + GL11.glDepthMask(true); + OpenGlHelper.glBlendFunc(770, 1, 1, 0); + // Prepare Tessellator + tessellator.startDrawingQuads(); + tessellator.setColorRGBA(255, 255, 255, 32); + // Variables stuff II + final double halfBeamWidth = 0.38D; + final double d_rot1 = 0.5D + Math.cos(2.356194490192345D) * halfBeamWidth; // rotates the beam... + final double d_rot2 = 0.5D + Math.sin(2.356194490192345D) * halfBeamWidth; + final double d_rot3 = 0.5D + Math.cos((Math.PI / 4D)) * halfBeamWidth; + final double d_rot4 = 0.5D + Math.sin((Math.PI / 4D)) * halfBeamWidth; + final double d_rot5 = 0.5D + Math.cos(3.9269908169872414D) * halfBeamWidth; + final double d_rot6 = 0.5D + Math.sin(3.9269908169872414D) * halfBeamWidth; + final double d_rot7 = 0.5D + Math.cos(5.497787143782138D) * halfBeamWidth; + final double d_rot8 = 0.5D + Math.sin(5.497787143782138D) * halfBeamWidth; // ...until here + final double height = 256.0F * beamLengthScale; + final double uv_x1 = 0.0D; + final double uv_x2 = 1.0D; + final double uv_y1 = -1.0D; // This makes the beam stream upwards if you add a time sensitive number to it + final double uv_y2 = (double)(256.0F * beamLengthScale) * (0.5D / halfBeamWidth) + uv_y1; + // Construct mesh with texture + tessellator.addVertexWithUV(x + d_rot1, y + height, z + d_rot2, uv_x2, uv_y2); + tessellator.addVertexWithUV(x + d_rot1, y, z + d_rot2, uv_x2, uv_y1); + tessellator.addVertexWithUV(x + d_rot3, y, z + d_rot4, uv_x1, uv_y1); + tessellator.addVertexWithUV(x + d_rot3, y + height, z + d_rot4, uv_x1, uv_y2); + tessellator.addVertexWithUV(x + d_rot7, y + height, z + d_rot8, uv_x2, uv_y2); + tessellator.addVertexWithUV(x + d_rot7, y, z + d_rot8, uv_x2, uv_y1); + tessellator.addVertexWithUV(x + d_rot5, y, z + d_rot6, uv_x1, uv_y1); + tessellator.addVertexWithUV(x + d_rot5, y + height, z + d_rot6, uv_x1, uv_y2); + tessellator.addVertexWithUV(x + d_rot3, y + height, z + d_rot4, uv_x2, uv_y2); + tessellator.addVertexWithUV(x + d_rot3, y, z + d_rot4, uv_x2, uv_y1); + tessellator.addVertexWithUV(x + d_rot7, y, z + d_rot8, uv_x1, uv_y1); + tessellator.addVertexWithUV(x + d_rot7, y + height, z + d_rot8, uv_x1, uv_y2); + tessellator.addVertexWithUV(x + d_rot5, y + height, z + d_rot6, uv_x2, uv_y2); + tessellator.addVertexWithUV(x + d_rot5, y, z + d_rot6, uv_x2, uv_y1); + tessellator.addVertexWithUV(x + d_rot1, y, z + d_rot2, uv_x1, uv_y1); + tessellator.addVertexWithUV(x + d_rot1, y + height, z + d_rot2, uv_x1, uv_y2); + // Draw! + tessellator.draw(); + + // Reset render flags + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDepthMask(true); + } + +} diff --git a/src/main/java/common/Blocks.java b/src/main/java/common/Blocks.java new file mode 100644 index 0000000000..18725b6000 --- /dev/null +++ b/src/main/java/common/Blocks.java @@ -0,0 +1,104 @@ +package common; + +import common.blocks.*; +import kekztech.KekzCore; +import net.minecraft.block.Block; + +public class Blocks { + + public static Block yszUnit; + public static Block gdcUnit; + + public static Block tfftCasing; + public static Block tfftStorageField1; + public static Block tfftStorageField2; + public static Block tfftStorageField3; + public static Block tfftStorageField4; + public static Block tfftStorageField5; + public static Block tfftMultiHatch; + + public static Block reactorChamberOFF; + public static Block reactorChamberON; + public static Block reactorControlRod; + + public static Block itemServerDrive; + public static Block itemServerRackCasing; + public static Block itemServerIOPort; + + public static Block itemProxyCable; + public static Block itemProxySource; + public static Block itemProxyEndpoint; + + public static Block jarThaumiumReinforced; + public static Block jarIchor; + + public static Block lscLapotronicEnergyUnit; + + public static Block spaceElevatorStructure; + public static Block spaceElevatorCapacitor; + public static Block spaceElevatorTether; + + public static void preInit() { + KekzCore.LOGGER.info("Registering blocks..."); + + registerBlocks_SOFC(); + registerBlocks_TFFT(); + registerBlocks_Nuclear(); + //registerBlocks_ItemServer(); + //registerBlocks_ItemProxy(); + registerBlocks_Jars(); + registerBlocks_LSC(); + registerBlocks_SpaceElevator(); + + KekzCore.LOGGER.info("Finished registering blocks"); + } + + private static void registerBlocks_SOFC() { + yszUnit = Block_YSZUnit.registerBlock(); + gdcUnit = Block_GDCUnit.registerBlock(); + } + + private static void registerBlocks_TFFT() { + tfftCasing = Block_TFFTCasing.registerBlock(); + tfftStorageField1 = Block_TFFTStorageFieldBlockT1.registerBlock(); + tfftStorageField2 = Block_TFFTStorageFieldBlockT2.registerBlock(); + tfftStorageField3 = Block_TFFTStorageFieldBlockT3.registerBlock(); + tfftStorageField4 = Block_TFFTStorageFieldBlockT4.registerBlock(); + tfftStorageField5 = Block_TFFTStorageFieldBlockT5.registerBlock(); + tfftMultiHatch = Block_TFFTMultiHatch.registerBlock(); + } + + private static void registerBlocks_Nuclear() { + reactorChamberOFF = Block_ReactorChamber_OFF.registerBlock(); + reactorChamberON = Block_ReactorChamber_ON.registerBlock(); + reactorControlRod = Block_ControlRod.registerBlock(); + } + + private static void registerBlocks_ItemServer() { + itemServerDrive = Block_ItemServerDrive.registerBlock(); + itemServerRackCasing = Block_ItemServerRackCasing.registerBlock(); + itemServerIOPort = Block_ItemServerIOPort.registerBlock(); + } + + private static void registerBlocks_ItemProxy() { + itemProxyCable = Block_ItemProxyCable.registerBlock(); + itemProxySource = Block_ItemProxySource.registerBlock(); + itemProxyEndpoint = Block_ItemProxyEndpoint.registerBlock(); + } + + private static void registerBlocks_Jars() { + jarThaumiumReinforced = Block_ThaumiumReinforcedJar.registerBlock(); + jarIchor = Block_IchorJar.registerBlock(); + } + + private static void registerBlocks_LSC() { + lscLapotronicEnergyUnit = Block_LapotronicEnergyUnit.registerBlock(); + } + + private static void registerBlocks_SpaceElevator() { + spaceElevatorStructure = Block_SpaceElevator.registerBlock(); + spaceElevatorCapacitor = Block_SpaceElevatorCapacitor.registerBlock(); + spaceElevatorTether = Block_SpaceElevatorTether.registerBlock(); + } + +} diff --git a/src/main/java/common/Recipes.java b/src/main/java/common/Recipes.java new file mode 100644 index 0000000000..0e3fdfc41f --- /dev/null +++ b/src/main/java/common/Recipes.java @@ -0,0 +1,622 @@ +package common; + +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.registry.GameRegistry; +import gregtech.api.enums.GT_Values; +import gregtech.api.enums.ItemList; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.util.GT_ModHandler; +import gregtech.api.util.GT_OreDictUnificator; +import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GT_Utility; +import items.ErrorItem; +import items.MetaItem_CraftingComponent; +import kekztech.Items; +import kekztech.KekzCore; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import thaumcraft.api.ItemApi; +import thaumcraft.api.ThaumcraftApi; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.crafting.InfusionRecipe; +import util.Util; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; + +public class Recipes { + + public static final HashMap<String, InfusionRecipe> infusionRecipes = new HashMap<>(); + + public static void postInit() { + KekzCore.LOGGER.info("Registering recipes..."); + + registerRecipes_TFFT(); + registerRecipes_SOFC(); + registerRecipes_Nuclear(); + //registerRecipes_ItemServer(); + registerRecipes_Jars(); + registerRecipes_LSC(); + registerRecipes_SpaceElevator(); + + KekzCore.LOGGER.info("Finished registering recipes"); + } + + private static void lapoCapacitorRecipeAdder(GT_Recipe.GT_Recipe_AssemblyLine baseRecipe, Materials boxMaterial, ItemStack newResearchTrigger, ItemStack result) { + if(baseRecipe != null) { + final ArrayList<ItemStack> baseInputs = new ArrayList<>(Arrays.asList(baseRecipe.mInputs)); + if(baseInputs.size() <= 14){ + baseInputs.add(GT_OreDictUnificator.get(OrePrefixes.frameGt, boxMaterial, 4)); + baseInputs.add(GT_OreDictUnificator.get(OrePrefixes.screw, boxMaterial, 24)); + + GT_Values.RA.addAssemblylineRecipe(newResearchTrigger, baseRecipe.mResearchTime, + Util.toItemStackArray(baseInputs), baseRecipe.mFluidInputs, result, + baseRecipe.mDuration * 2, baseRecipe.mEUt); + KekzCore.LOGGER.info("Successfully extended Lapotronic Battery recipe for Lapotronic Capacitor of tier " + result.getItemDamage()); + } + } else { + KekzCore.LOGGER.info("Base recipe was NULL. Failed to extended Lapotronic Battery recipe for Lapotronic Capacitor of tier " + result.getItemDamage()); + } + } + + private static void registerRecipes_TFFT() { + + // Controller + final Object[] tfft_recipe = { + "HFH", "PVP", "CFC", + 'H', OrePrefixes.pipeMedium.get(Materials.StainlessSteel), + 'F', ItemList.Field_Generator_MV.get(1L), + 'P', ItemList.Electric_Pump_HV.get(1L), + 'V', OrePrefixes.rotor.get(Materials.VibrantAlloy), + 'C', OrePrefixes.circuit.get(Materials.Data) + }; + GT_ModHandler.addCraftingRecipe(KekzCore.fms.getStackForm(1), tfft_recipe); + + // Blocks + final ItemStack[] tfftcasing = { + GT_Utility.getIntegratedCircuit(6), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DarkSteel, 3), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.EnderPearl, 3), + GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.StainlessSteel, 1), + }; + GT_Values.RA.addAssemblerRecipe( + tfftcasing, + FluidRegistry.getFluidStack("molten.polytetrafluoroethylene", 144), + new ItemStack(Blocks.tfftCasing, 1), + 200, 256); + final ItemStack[] tfftstoragefield1 = { + GT_Utility.getIntegratedCircuit(6), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Advanced, 1), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.PulsatingIron, 1), + GT_OreDictUnificator.get(OrePrefixes.pipeLarge, Materials.Steel, 1), + ItemList.Electric_Pump_LV.get(1L) + }; + GT_Values.RA.addAssemblerRecipe( + tfftstoragefield1, + FluidRegistry.getFluidStack("molten.glass", 144), + new ItemStack(Blocks.tfftStorageField1, 1), + 200, 256); + final ItemStack[] tfftstoragefield2 = { + GT_Utility.getIntegratedCircuit(6), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Advanced, 2), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.PulsatingIron, 4), + GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.StainlessSteel, 1), + ItemList.Electric_Pump_MV.get(1L) + }; + GT_Values.RA.addAssemblerRecipe( + tfftstoragefield2, + FluidRegistry.getFluidStack("molten.plastic", 576), + new ItemStack(Blocks.tfftStorageField2, 1), + 200, 480); + final ItemStack[] tfftstoragefield3 = { + GT_Utility.getIntegratedCircuit(6), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Data, 2), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.VibrantAlloy, 2), + GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Titanium, 1), + ItemList.Field_Generator_MV.get(1L), + ItemList.Electric_Pump_HV.get(2L) + }; + GT_Values.RA.addAssemblerRecipe( + tfftstoragefield3, + FluidRegistry.getFluidStack("molten.epoxid", 576), + new ItemStack(Blocks.tfftStorageField3, 1), + 300, 1920); + final ItemStack[] tfftstoragefield4 = { + GT_Utility.getIntegratedCircuit(6), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Elite, 4), + GT_OreDictUnificator.get(OrePrefixes.plateTriple, Materials.NiobiumTitanium, 1), + GT_OreDictUnificator.get(OrePrefixes.pipeHuge, Materials.TungstenSteel, 1), + ItemList.Field_Generator_HV.get(1L), + ItemList.Electric_Pump_EV.get(1L) + }; + GT_Values.RA.addAssemblerRecipe( + tfftstoragefield4, + FluidRegistry.getFluidStack("molten.epoxid", 1152), + new ItemStack(Blocks.tfftStorageField4, 1), + 400, 4098); + final ItemStack[] tfftstoragefield5 = { + GT_Utility.getIntegratedCircuit(6), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Ultimate, 4), + GT_OreDictUnificator.get(OrePrefixes.plateTriple, Materials.HSSS, 1), + GT_OreDictUnificator.get(OrePrefixes.pipeHuge, Materials.Enderium, 1), + ItemList.Field_Generator_EV.get(1L), + ItemList.Electric_Pump_IV.get(1L) + }; + GT_Values.RA.addAssemblerRecipe( + tfftstoragefield5, + FluidRegistry.getFluidStack("molten.epoxid", 1152), + new ItemStack(Blocks.tfftStorageField5, 1), + 400, 6147); + final Object[] multi_hatch = { + "PRP", "UFU", "PRP", + 'P', GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.NiobiumTitanium, 1), + 'R', GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.StainlessSteel, 1), + 'U', ItemList.Electric_Pump_IV.get(1L), + 'F', ItemList.Field_Generator_HV.get(1L) + }; + GT_ModHandler.addCraftingRecipe(new ItemStack(Blocks.tfftMultiHatch), multi_hatch); + } + + private static void registerRecipes_SOFC() { + + final MetaItem_CraftingComponent craftingItem = MetaItem_CraftingComponent.getInstance(); + + // Controller + final Object[] mk1_recipe = { + "CCC", "PHP", "FBL", + 'C', OrePrefixes.circuit.get(Materials.Advanced), + 'P', ItemList.Electric_Pump_HV.get(1L), + 'H', ItemList.Hull_HV.get(1L), + 'F', GT_OreDictUnificator.get(OrePrefixes.pipeSmall, Materials.StainlessSteel, 1), + 'B', GT_OreDictUnificator.get(OrePrefixes.cableGt02, Materials.Gold, 1), + 'L', GT_OreDictUnificator.get(OrePrefixes.pipeLarge, Materials.StainlessSteel, 1) + }; + GT_ModHandler.addCraftingRecipe(KekzCore.sofc1.getStackForm(1), mk1_recipe); + final Object[] mk2_recipe = { + "CCC", "PHP", "FBL", + 'C', OrePrefixes.circuit.get(Materials.Master), + 'P', ItemList.Electric_Pump_IV.get(1L), + 'H', ItemList.Hull_IV.get(1L), + 'F', GT_OreDictUnificator.get(OrePrefixes.pipeSmall, Materials.Ultimate, 1), + 'B', Util.getStackofAmountFromOreDict("wireGt04SuperconductorEV", 1), + 'L', GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Ultimate, 1) + }; + GT_ModHandler.addCraftingRecipe(KekzCore.sofc2.getStackForm(1), mk2_recipe); + + // Blocks + final ItemStack[] yszUnit = { + GT_Utility.getIntegratedCircuit(6), + craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicPlate.getMetaID(), 4), + GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Yttrium, 1), + GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.StainlessSteel, 1), + ItemList.Electric_Motor_HV.get(1L), + }; + GT_Values.RA.addAssemblerRecipe( + yszUnit, + Materials.Hydrogen.getGas(4000), + new ItemStack(Blocks.yszUnit, 1), + 1200, 480); + final ItemStack[] gdcUnit = { + GT_Utility.getIntegratedCircuit(6), + craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicPlate.getMetaID(), 8), + GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Gadolinium, new ItemStack(ErrorItem.getInstance(), 1), 1), + GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Desh, new ItemStack(ErrorItem.getInstance(), 1), 1), + ItemList.Electric_Motor_IV.get(1L), + }; + GT_Values.RA.addAssemblerRecipe( + gdcUnit, + Materials.Hydrogen.getGas(16000), + new ItemStack(Blocks.gdcUnit, 1), + 2400, 1920); + + // Items + GT_Values.RA.addAlloySmelterRecipe( + craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicDust.getMetaID(), Loader.isModLoaded("bartworks") ? 3 : 10), + ItemList.Shape_Mold_Plate.get(0), + craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicPlate.getMetaID(), 1), + 400, 480); + GT_Values.RA.addFormingPressRecipe( + craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicDust.getMetaID(), 10), + ItemList.Shape_Mold_Plate.get(0), + craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicPlate.getMetaID(), 1), + 800, 480); + + if (!Loader.isModLoaded("bartworks")) { + GT_Values.RA.addChemicalRecipe( + Materials.Yttrium.getDust(1), GT_Utility.getIntegratedCircuit(6), Materials.Oxygen.getGas(3000), + null, craftingItem.getStackOfAmountFromDamage(Items.YttriaDust.getMetaID(), 1), null, + 400, 30); + GT_Values.RA.addChemicalRecipe( + Util.getStackofAmountFromOreDict("dustZirconium", 1), GT_Utility.getIntegratedCircuit(6), Materials.Oxygen.getGas(2000), + null, craftingItem.getStackOfAmountFromDamage(Items.ZirconiaDust.getMetaID(), 1), null, + 400, 30); + } + + GT_Values.RA.addChemicalRecipe( + Materials.Cerium.getDust(2), GT_Utility.getIntegratedCircuit(6), Materials.Oxygen.getGas(3000), + null, craftingItem.getStackOfAmountFromDamage(Items.CeriaDust.getMetaID(), 2), null, + 400, 30); + GT_Values.RA.addMixerRecipe( + Items.YttriaDust.getOreDictedItemStack(1), + Items.ZirconiaDust.getOreDictedItemStack(5), + GT_Utility.getIntegratedCircuit(6), null, null, null, + craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicDust.getMetaID(), 6), + 400, 96); + GT_Values.RA.addMixerRecipe( + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Gadolinium, new ItemStack(ErrorItem.getInstance(), 1), 1), + craftingItem.getStackOfAmountFromDamage(Items.CeriaDust.getMetaID(), 9), + GT_Utility.getIntegratedCircuit(6), null, null, null, + craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicDust.getMetaID(), 10), + 400, 1920); + } + + private static void registerRecipes_Nuclear() { + + final MetaItem_CraftingComponent craftingItem = MetaItem_CraftingComponent.getInstance(); + + // Controller + + // Blocks + final ItemStack[] controlrod = { + GT_Utility.getIntegratedCircuit(6), + GT_OreDictUnificator.get(OrePrefixes.pipeHuge, Materials.Lead, 1), + GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Steel, 4), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Carbon, 64) + }; + GT_Values.RA.addAssemblerRecipe( + controlrod, + null, + new ItemStack(Blocks.reactorControlRod, 1), + 800, 480); + final ItemStack[] reactorchamber = { + GT_Utility.getIntegratedCircuit(6), + GT_OreDictUnificator.get(OrePrefixes.pipeHuge, Materials.Lead, 1), + GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.Lead, 9), + GT_OreDictUnificator.get(OrePrefixes.ring, Materials.TungstenSteel, 18), + GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Steel, 2), + }; + GT_Values.RA.addAssemblerRecipe( + reactorchamber, + FluidRegistry.getFluidStack("wet.concrete", 144), + new ItemStack(Blocks.reactorChamberOFF, 1), + 1600, 480); + + // Items + GT_Values.RA.addMixerRecipe(Materials.Boron.getDust(1), Materials.Arsenic.getDust(1), GT_Utility.getIntegratedCircuit(6), null, + null, null, craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideDust.getMetaID(), 2), + 100, 1920); + GT_Values.RA.addChemicalRecipe( + Materials.Ammonia.getCells(2), + Materials.CarbonDioxide.getCells(1), + null, + null, + craftingItem.getStackOfAmountFromDamage(Items.AmineCarbamiteDust.getMetaID(), 1), + Util.getStackofAmountFromOreDict("cellEmpty", 3), + 400, 30); + GT_Values.RA.addChemicalRecipe( + craftingItem.getStackOfAmountFromDamage(Items.AmineCarbamiteDust.getMetaID(), 1), + Materials.Diamond.getDust(16), + Materials.CarbonDioxide.getGas(1000), + null, + craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondDust.getMetaID(), 1), + null, 1200, 480); + + GT_Values.RA.addAutoclaveRecipe( + craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondDust.getMetaID(), 4), + Materials.CarbonDioxide.getGas(16000), + craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondCrystal.getMetaID(), 1), 10000, 2400, 7680); + GT_Values.RA.addAutoclaveRecipe( + craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideDust.getMetaID(), 4), + Materials.Nitrogen.getGas(4000), + craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideCrystal.getMetaID(), 1), 10000, 2400, 1920); + + GT_Values.RA.addLatheRecipe( + GT_OreDictUnificator.get(OrePrefixes.stick, Materials.AnnealedCopper, 1), + craftingItem.getStackFromDamage(Items.CopperHeatPipe.getMetaID()), + null, 120, 120); + GT_Values.RA.addLatheRecipe( + GT_OreDictUnificator.get(OrePrefixes.stick, Materials.Silver, 1), + craftingItem.getStackFromDamage(Items.SilverHeatPipe.getMetaID()), + null, 120, 480); + GT_Values.RA.addLatheRecipe( + craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideCrystal.getMetaID(), 4), + craftingItem.getStackFromDamage(Items.BoronArsenideHeatPipe.getMetaID()), + null, 1200, 1920); + GT_Values.RA.addLatheRecipe( + craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondCrystal.getMetaID(), 4), + craftingItem.getStackFromDamage(Items.DiamondHeatPipe.getMetaID()), + null, 1200, 7680); + } + + private static void registerRecipes_ItemServer() { + + final MetaItem_CraftingComponent craftingItem = MetaItem_CraftingComponent.getInstance(); + + // Controller + final Object[] is_recipe = { + "FRF", "CGC", "PZP", + 'F', GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.TungstenSteel, 1), + 'R', GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.TungstenSteel, 1), + 'C', ItemList.Conveyor_Module_LuV.get(1L), + 'G', ItemList.Field_Generator_EV.get(1L), + 'P', GT_OreDictUnificator.get(OrePrefixes.cableGt04, Materials.VanadiumGallium, 1), + 'Z', GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Master, 1) + }; + GT_ModHandler.addCraftingRecipe(KekzCore.is.getStackForm(1), is_recipe); + + // Blocks + final Object[] is_rack_recipe = { + "BRB", "CFC", "BRB", + 'B', GT_OreDictUnificator.get(OrePrefixes.plate, Materials.BlueSteel, 1), + 'R', GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Aluminium, 1), + 'C', GT_OreDictUnificator.get(OrePrefixes.cableGt01, Materials.Platinum, 1), + 'F', GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.TungstenSteel, 1), + }; + GT_ModHandler.addCraftingRecipe(new ItemStack(Blocks.itemServerRackCasing), is_rack_recipe); + final ItemStack[] is_ioport = { + GT_Utility.getIntegratedCircuit(6), + new ItemStack(Blocks.itemServerRackCasing), + GT_OreDictUnificator.get(OrePrefixes.bolt, Materials.Platinum, 16), + GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Platinum, 2), + ItemList.Field_Generator_HV.get(1L), + ItemList.Robot_Arm_EV.get(4L) + }; + GT_Values.RA.addAssemblerRecipe( + is_ioport, + FluidRegistry.getFluidStack("molten.polytetrafluoroethylene", 144), + new ItemStack(Blocks.itemServerIOPort, 1), + 200, 7680); + final Object[] is_blade = { + "CRC", "CMC", "HPH", + 'C', GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Elite, 1), + 'R', GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Aluminium, 1), + 'P', GT_OreDictUnificator.get(OrePrefixes.cableGt08, Materials.Platinum, 1), + 'M', ItemList.Electric_Motor_EV.get(1L), + 'H', craftingItem.getStackFromDamage(Items.BoronArsenideHeatPipe.getMetaID()), + }; + GT_ModHandler.addCraftingRecipe(craftingItem.getStackOfAmountFromDamage(Items.ItemServerBlade.getMetaID(), 8), is_blade); + final ItemStack[] is_drive = { + GT_Utility.getIntegratedCircuit(6), + craftingItem.getStackOfAmountFromDamage(Items.ItemServerBlade.getMetaID(), 8), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.BlueSteel, 4), + GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Aluminium, 1), + GT_OreDictUnificator.get(OrePrefixes.screw, Materials.Aluminium, 16) + }; + GT_Values.RA.addAssemblerRecipe( + is_drive, + FluidRegistry.getFluidStack("molten.polyethylene", 1152), + new ItemStack(Blocks.itemServerDrive, 1), + 200, 7680); + } + + private static void registerRecipes_Jars() { + + // Thaumium Reinforced Jar + final ItemStack[] recipe_jarthaumiumreinforced = { + GameRegistry.makeItemStack("Thaumcraft:ItemResource", 15, 1, null), + GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Thaumium, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), + GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Thaumium, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), + GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Titanium, 1), + GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Thaumium, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), + GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Thaumium, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), + }; + final AspectList aspects_jarthaumiumreinforced = new AspectList() + .add(Aspect.ARMOR, 64) + .add(Aspect.ORDER, 32) + .add(Aspect.WATER, 32) + .add(Aspect.GREED, 16) + .add(Aspect.VOID, 16) + .add(Aspect.AIR, 8); + infusionRecipes.put("THAUMIUMREINFORCEDJAR", + ThaumcraftApi.addInfusionCraftingRecipe("THAUMIUMREINFORCEDJAR", new ItemStack(Blocks.jarThaumiumReinforced, 1, 0), + 5, aspects_jarthaumiumreinforced, ItemApi.getBlock("blockJar", 0), recipe_jarthaumiumreinforced)); + // Thaumium Reinforced Void Jar + final ItemStack n1 = GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Obsidian, 1); + final ItemStack n2 = GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Blaze, 1); + final ItemStack n3 = GT_OreDictUnificator.get(OrePrefixes.plate, Materials.EnderEye, 1); + final ItemStack n4 = ItemApi.getItem("itemNugget", 5); + final ItemStack[] recipe_voidjarupgrade = { + n1, + n2, + n3, + n4 + }; + final AspectList aspects_voidjarupgrade = new AspectList() + .add(Aspect.VOID, 14) + .add(Aspect.MAGIC, 14) + .add(Aspect.ENTROPY, 14) + .add(Aspect.WATER, 14); + infusionRecipes.put("THAUMIUMREINFORCEDVOIDJAR", + ThaumcraftApi.addInfusionCraftingRecipe("THAUMIUMREINFORCEDJAR", new ItemStack(Blocks.jarThaumiumReinforced, 1, 3), + 2, aspects_voidjarupgrade, new ItemStack(Blocks.jarThaumiumReinforced, 1, 0), recipe_voidjarupgrade)); + + final ItemStack[] recipe_jarichor = { + GT_ModHandler.getModItem("ThaumicTinkerer", "kamiResource", 1, 0), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Diamond, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), + GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Osmiridium, 1), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Diamond, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), + GT_OreDictUnificator.get(OrePrefixes.gemExquisite, Materials.Diamond, 1), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Diamond, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), + GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Osmiridium, 1), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Diamond, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), + }; + final AspectList aspects_jarichor = new AspectList() + .add(Aspect.ARMOR, 256) + .add(Aspect.ELDRITCH, 128) + .add(Aspect.ORDER, 128) + .add(Aspect.WATER, 128) + .add(Aspect.GREED, 64) + .add(Aspect.VOID, 64) + .add(Aspect.AIR, 32); + infusionRecipes.put("ICHORJAR", + ThaumcraftApi.addInfusionCraftingRecipe("ICHORJAR", new ItemStack(Blocks.jarIchor, 1, 0), + 15, aspects_jarichor, ItemApi.getBlock("blockJar", 0), recipe_jarichor)); + // Ichor Void Jar + infusionRecipes.put("ICHORVOIDJAR", + ThaumcraftApi.addInfusionCraftingRecipe("ICHORJAR", new ItemStack(Blocks.jarIchor, 1, 3), + 5, aspects_voidjarupgrade, new ItemStack(Blocks.jarIchor, 1, 0), recipe_voidjarupgrade)); + + } + + private static void registerRecipes_LSC(){ + + // Controller + final Object[] lsc_recipe = { + "LPL", "CBC", "LPL", + 'L', ItemList.IC2_LapotronCrystal.getWithCharge(1L, 10000000), + 'P', ItemList.Circuit_Chip_PIC.get(1L), + 'C', OrePrefixes.circuit.get(Materials.Master), + 'B', new ItemStack(Blocks.lscLapotronicEnergyUnit, 1, 0), + }; + GT_ModHandler.addCraftingRecipe(KekzCore.lsc.getStackForm(1), lsc_recipe); + + // Blocks + final Object[] lcBase_recipe = { + "WBW", "RLR", "WBW", + 'W', OrePrefixes.plate.get(Materials.Tantalum), + 'B', OrePrefixes.frameGt.get(Materials.TungstenSteel), + 'R', OrePrefixes.stickLong.get(Materials.TungstenSteel), + 'L', OrePrefixes.block.get(Materials.Lapis) + }; + GT_ModHandler.addCraftingRecipe(new ItemStack(Blocks.lscLapotronicEnergyUnit, 1, 0), lcBase_recipe); + final Object[] lcIV_recipe = { + "SLS", "LOL", "SLS", + 'S', OrePrefixes.screw.get(Materials.Lapis), + 'L', OrePrefixes.plate.get(Materials.Lapis), + 'O', ItemList.Energy_LapotronicOrb.get(1L) + }; + GT_ModHandler.addCraftingRecipe(new ItemStack(Blocks.lscLapotronicEnergyUnit, 1, 1), lcIV_recipe); + + KekzCore.LOGGER.info("Reading Assembly Line recipes from GregTech recipe map"); + GT_Recipe.GT_Recipe_AssemblyLine arLuV = null; + // Next two are hardcoded because my code can't find them + GT_Recipe.GT_Recipe_AssemblyLine arZPM = new GT_Recipe.GT_Recipe_AssemblyLine( + ItemList.Energy_LapotronicOrb2.get(1L), 288000, new ItemStack[] { + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Europium, 16L), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Ultimate, 1), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Ultimate, 1), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Ultimate, 1), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Ultimate, 1), + ItemList.Energy_LapotronicOrb2.get(8L), + ItemList.Field_Generator_LuV.get(2), + ItemList.Circuit_Wafer_SoC2.get(64), + ItemList.Circuit_Wafer_SoC2.get(64), + ItemList.Circuit_Parts_DiodeASMD.get(8), + GT_OreDictUnificator.get(OrePrefixes.cableGt01, Materials.Naquadah, 32) + }, + new FluidStack[] { + Materials.SolderingAlloy.getMolten(2880), + new FluidStack(FluidRegistry.getFluid("ic2coolant"), 16000) + }, + ItemList.Energy_Module.get(1), 2000, 100000 + ); + GT_Recipe.GT_Recipe_AssemblyLine arUV = new GT_Recipe.GT_Recipe_AssemblyLine( + ItemList.Energy_Module.get(1L), 288000, new ItemStack[] { + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Americium, 32L), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Superconductor, 1), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Superconductor, 1), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Superconductor, 1), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Superconductor, 1), + ItemList.Energy_Module.get(8L), + ItemList.Field_Generator_ZPM.get(2), + ItemList.Circuit_Wafer_HPIC.get(64), + ItemList.Circuit_Wafer_HPIC.get(64), + ItemList.Circuit_Parts_DiodeASMD.get(16), + GT_OreDictUnificator.get(OrePrefixes.cableGt01, Materials.NaquadahAlloy, 32) + }, + new FluidStack[] { + Materials.SolderingAlloy.getMolten(2880), + new FluidStack(FluidRegistry.getFluid("ic2coolant"), 16000) + }, + ItemList.Energy_Cluster.get(1), 2000, 200000 + ); + GT_Recipe.GT_Recipe_AssemblyLine arU = null; + for(GT_Recipe.GT_Recipe_AssemblyLine ar : GT_Recipe.GT_Recipe_AssemblyLine.sAssemblylineRecipes) { + if(GT_Utility.areStacksEqual(ar.mOutput, ItemList.Energy_LapotronicOrb2.get(1L), true)) { + // LuV Lapo Orb + arLuV = ar; + } else if(GT_Utility.areStacksEqual(ar.mOutput, ItemList.Energy_Module.get(1L), true)) { + // ZPM Lapo Orb + KekzCore.LOGGER.info("Found matching recipe for Energy Module?"); + } else if(GT_Utility.areStacksEqual(ar.mOutput, ItemList.Energy_Cluster.get(1L), true)) { + // UV Lapo Orb + KekzCore.LOGGER.info("Found matching recipe for Energy Cluster?"); + } else if(GT_Utility.areStacksEqual(ar.mOutput, ItemList.ZPM2.get(1L), true)) { + // Ultimate Battery + arU = ar; + } + } + lapoCapacitorRecipeAdder(arLuV, Materials.Osmiridium, + GT_OreDictUnificator.get(OrePrefixes.block, Materials.Lapis, 1), + new ItemStack(Blocks.lscLapotronicEnergyUnit, 1, 2)); + lapoCapacitorRecipeAdder(arZPM, Materials.NaquadahAlloy, + new ItemStack(Blocks.lscLapotronicEnergyUnit, 1, 2), + new ItemStack(Blocks.lscLapotronicEnergyUnit, 1, 3)); + lapoCapacitorRecipeAdder(arUV, Materials.Neutronium, + new ItemStack(Blocks.lscLapotronicEnergyUnit, 1, 3), + new ItemStack(Blocks.lscLapotronicEnergyUnit, 1, 4)); + lapoCapacitorRecipeAdder(arU, Materials.CosmicNeutronium, + new ItemStack(Blocks.lscLapotronicEnergyUnit, 1, 4), + new ItemStack(Blocks.lscLapotronicEnergyUnit, 1, 5)); + + // Capacitor recycling + GT_Values.RA.addUnboxingRecipe(new ItemStack(Blocks.lscLapotronicEnergyUnit, 1, 1), + ItemList.Energy_LapotronicOrb.get(1L), + GT_OreDictUnificator.get(OrePrefixes.screw, Materials.Lapis, 4), + 1200, 32); + GT_Values.RA.addUnboxingRecipe(new ItemStack(Blocks.lscLapotronicEnergyUnit, 1, 2), + ItemList.Energy_LapotronicOrb2.get(1L), + GT_OreDictUnificator.get(OrePrefixes.screw, Materials.Osmiridium, 24), + 1200, 32); + GT_Values.RA.addUnboxingRecipe(new ItemStack(Blocks.lscLapotronicEnergyUnit, 1, 3), + ItemList.Energy_Module.get(1L), + GT_OreDictUnificator.get(OrePrefixes.screw, Materials.NaquadahAlloy, 24), + 1200, 32); + GT_Values.RA.addUnboxingRecipe(new ItemStack(Blocks.lscLapotronicEnergyUnit, 1, 4), + ItemList.Energy_Cluster.get(1L), + GT_OreDictUnificator.get(OrePrefixes.screw, Materials.Neutronium, 24), + 1200, 32); + GT_Values.RA.addUnboxingRecipe(new ItemStack(Blocks.lscLapotronicEnergyUnit, 1, 5), + ItemList.ZPM2.get(1L), + GT_OreDictUnificator.get(OrePrefixes.screw, Materials.CosmicNeutronium, 24), + 1200, 32); + } + + private static void registerRecipes_SpaceElevator() { + // Controller + final Object[] se_recipe = { + "BCB", "CPC", "BCB", + 'B', new ItemStack(Blocks.spaceElevatorStructure, 1, 0), + 'C', OrePrefixes.cableGt16.get(Materials.Aluminium), + 'P', OrePrefixes.circuit.get(Materials.Master) + }; + GT_ModHandler.addCraftingRecipe(KekzCore.se.getStackForm(1), se_recipe); + // Blocks + final Object[] seBase_recipe = { + "DRD", "RCR", "DRD", + 'D', OrePrefixes.plate.get(Materials.DarkSteel), + 'R', OrePrefixes.stick.get(Materials.Steel), + 'C', OrePrefixes.block.get(Materials.Concrete), + }; + GT_ModHandler.addCraftingRecipe(new ItemStack(Blocks.spaceElevatorStructure, 1, 0), seBase_recipe); + final Object[] seCoilHolder_recipe = { + "DRD", "RCR", "DRD", + 'D', OrePrefixes.plate.get(Materials.DarkSteel), + 'R', OrePrefixes.ring.get(Materials.Steel), + 'C', OrePrefixes.cableGt01.get(Materials.Aluminium) + }; + GT_ModHandler.addCraftingRecipe(new ItemStack(Blocks.spaceElevatorStructure, 1, 1), seCoilHolder_recipe); + } +} diff --git a/src/main/java/common/Researches.java b/src/main/java/common/Researches.java new file mode 100644 index 0000000000..8982a4c583 --- /dev/null +++ b/src/main/java/common/Researches.java @@ -0,0 +1,60 @@ +package common; + +import kekztech.KekzCore; +import net.minecraft.item.ItemStack; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.research.ResearchItem; +import thaumcraft.api.research.ResearchPage; +import thaumic.tinkerer.common.research.KamiResearchItem; + +public class Researches { + + public static final String THAUMIUMREINFORCEDJAR = "THAUMIUMREINFORCEDJAR"; + public static final String ICHORJAR = "ICHORJAR"; + + public static void preInit() { + // Blacklist these researches from being a requirement to unlock TTKami + KekzCore.LOGGER.info("Blacklisting research " + THAUMIUMREINFORCEDJAR + " from /iskamiunlocked"); + KamiResearchItem.Blacklist.add(ICHORJAR); + KekzCore.LOGGER.info("Blacklisting research" +ICHORJAR+ "from /iskamiunlocked"); + KamiResearchItem.Blacklist.add(ICHORJAR); + } + + public static void postInit() { + final AspectList aspects_jarthaumiumreinforced = new AspectList() + .add(Aspect.ARMOR, 3) + .add(Aspect.WATER, 3) + .add(Aspect.GREED, 3) + .add(Aspect.VOID, 3); + @SuppressWarnings("unused") + final ResearchItem jar_thaumiumreinforced = new ResearchItem("THAUMIUMREINFORCEDJAR", "ALCHEMY", aspects_jarthaumiumreinforced, 3, -4, 2, new ItemStack(Blocks.jarThaumiumReinforced, 1)) + .setPages( + new ResearchPage("kekztech.research_page.THAUMIUMREINFORCEDJAR.0"), + new ResearchPage(Recipes.infusionRecipes.get("THAUMIUMREINFORCEDJAR")), + new ResearchPage(Recipes.infusionRecipes.get("THAUMIUMREINFORCEDVOIDJAR")), + new ResearchPage("kekztech.research_page.THAUMIUMREINFORCEDJAR.1") + ) + .setConcealed() + .setParents("JARLABEL") + .registerResearchItem(); + + final AspectList aspects_jarichor = new AspectList() + .add(Aspect.ARMOR, 3) + .add(Aspect.ELDRITCH, 3) + .add(Aspect.WATER, 3) + .add(Aspect.GREED, 5) + .add(Aspect.VOID, 5); + @SuppressWarnings("unused") + final ResearchItem jar_ichor = new ResearchItem("ICHORJAR", "ALCHEMY", aspects_jarichor, 2, -5, 3, new ItemStack(Blocks.jarIchor, 1)) + .setPages( + new ResearchPage("kekztech.research_page.ICHORJAR.0"), + new ResearchPage(Recipes.infusionRecipes.get("ICHORJAR")), + new ResearchPage(Recipes.infusionRecipes.get("ICHORVOIDJAR")) + ) + .setConcealed() + .setParents("THAUMIUMREINFORCEDJAR") + .setParentsHidden("ICHOR") + .registerResearchItem(); + } +} diff --git a/src/main/java/common/blocks/BaseGTUpdateableBlock.java b/src/main/java/common/blocks/BaseGTUpdateableBlock.java new file mode 100644 index 0000000000..6f554101ca --- /dev/null +++ b/src/main/java/common/blocks/BaseGTUpdateableBlock.java @@ -0,0 +1,58 @@ +package common.blocks; + + +import gregtech.api.GregTech_API; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EnumCreatureType; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +/** + * Any blocks that are used as structure parts for GregTech multi machines + * have to inherit from this class. Otherwise the checkMachine() method + * that verifies a machine's structure won't be called correctly. + */ +public abstract class BaseGTUpdateableBlock extends Block { + + protected BaseGTUpdateableBlock(Material material) { + super(material); + GregTech_API.registerMachineBlock(this, -1); + super.setHarvestLevel("wrench", 2); + } + + @Override + public int damageDropped(int meta){ + return meta; + } + + @Override + public boolean canBeReplacedByLeaves(IBlockAccess world, int x, int y, int z) { + return false; + } + + @Override + public boolean canEntityDestroy(IBlockAccess world, int x, int y, int z, Entity entity) { + return false; + } + + @Override + public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) { + return false; + } + + @Override + public void onBlockAdded(World aWorld, int aX, int aY, int aZ) { + if (GregTech_API.isMachineBlock(this, aWorld.getBlockMetadata(aX, aY, aZ))) { + GregTech_API.causeMachineUpdate(aWorld, aX, aY, aZ); + } + } + + @Override + public void breakBlock(World aWorld, int aX, int aY, int aZ, Block aBlock, int aMetaData) { + if (GregTech_API.isMachineBlock(this, aWorld.getBlockMetadata(aX, aY, aZ))) { + GregTech_API.causeMachineUpdate(aWorld, aX, aY, aZ); + } + } +} diff --git a/src/main/java/common/blocks/Block_ControlRod.java b/src/main/java/common/blocks/Block_ControlRod.java new file mode 100644 index 0000000000..808881dead --- /dev/null +++ b/src/main/java/common/blocks/Block_ControlRod.java @@ -0,0 +1,28 @@ +package common.blocks; + +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; + +public class Block_ControlRod extends BaseGTUpdateableBlock { + + private static final Block_ControlRod instance = new Block_ControlRod(); + + private Block_ControlRod() { + super(Material.iron); + } + + public static Block registerBlock() { + final String blockName = "kekztech_controlrod_block"; + instance.setBlockName(blockName); + instance.setCreativeTab(CreativeTabs.tabMisc); + instance.setBlockTextureName(KekzCore.MODID + ":" + "ControlRod"); + instance.setHardness(5.0f); + instance.setResistance(6.0f); + GameRegistry.registerBlock(instance, blockName); + + return instance; + } +} diff --git a/src/main/java/common/blocks/Block_GDCUnit.java b/src/main/java/common/blocks/Block_GDCUnit.java new file mode 100644 index 0000000000..aab81e1aeb --- /dev/null +++ b/src/main/java/common/blocks/Block_GDCUnit.java @@ -0,0 +1,28 @@ +package common.blocks;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import kekztech.KekzCore;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.creativetab.CreativeTabs;
+
+public class Block_GDCUnit extends BaseGTUpdateableBlock {
+
+ private static final Block_GDCUnit instance = new Block_GDCUnit();
+
+ private Block_GDCUnit() {
+ super(Material.iron);
+ }
+
+ public static Block registerBlock() {
+ final String blockName = "kekztech_gdcceramicelectrolyteunit_block";
+ instance.setBlockName(blockName);
+ instance.setCreativeTab(CreativeTabs.tabMisc);
+ instance.setBlockTextureName(KekzCore.MODID + ":" + "GDCCeramicElectrolyteUnit");
+ instance.setHardness(5.0f);
+ instance.setResistance(6.0f);
+ GameRegistry.registerBlock(instance, blockName);
+
+ return instance;
+ }
+}
diff --git a/src/main/java/common/blocks/Block_IchorJar.java b/src/main/java/common/blocks/Block_IchorJar.java new file mode 100644 index 0000000000..560fd0c37b --- /dev/null +++ b/src/main/java/common/blocks/Block_IchorJar.java @@ -0,0 +1,222 @@ +package common.blocks; + +import common.itemBlocks.IB_IchorJar; +import common.tileentities.TE_IchorJar; +import common.tileentities.TE_IchorVoidJar; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.Explosion; +import net.minecraft.world.World; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.common.blocks.BlockJar; +import thaumcraft.common.config.ConfigBlocks; +import thaumcraft.common.config.ConfigItems; +import thaumcraft.common.items.ItemEssence; +import thaumcraft.common.tiles.TileJarFillable; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class Block_IchorJar extends BlockJar { + + private static final Block_IchorJar INSTANCE = new Block_IchorJar(); + + private Block_IchorJar() { + super(); + + super.setHardness(12.0F); + super.setResistance(3.0f); + } + + public static Block registerBlock() { + final String blockName = "kekztech_ichorjar_block"; + INSTANCE.setBlockName(blockName); + GameRegistry.registerBlock(INSTANCE, IB_IchorJar.class, blockName); + + return INSTANCE; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister ir) { + super.iconLiquid = ir.registerIcon("thaumcraft:animatedglow"); + super.iconJarSide = ir.registerIcon("kekztech:ichor_jar_side"); + super.iconJarTop = ir.registerIcon("kekztech:ichor_jar_top"); + super.iconJarTopVoid = ir.registerIcon("kekztech:ichor_jar_top_void"); + super.iconJarSideVoid = ir.registerIcon("kekztech:ichor_jar_side_void"); + super.iconJarBottom = ir.registerIcon("kekztech:ichor_jar_bottom"); + } + + @Override + @SideOnly(Side.CLIENT) + @SuppressWarnings({"unchecked"}) + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { + par3List.add(new ItemStack(par1, 1, 0)); // Normal jar + par3List.add(new ItemStack(par1, 1, 3)); // Void jar + } + + @Override + public TileEntity createTileEntity(World world, int meta) { + if(meta == 3) { + return new TE_IchorVoidJar(); + } else { + return new TE_IchorJar(); + } + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float f1, float f2, float f3) { + // Call parent method to handle jar emptying, labels stuff etc + super.onBlockActivated(world, x, y, z, player, side, f1, f2, f3); + // Interact with Essentia Phials if the player holds one + final ItemStack heldItem = player.getHeldItem(); + if(heldItem != null && heldItem.getItem() == ConfigItems.itemEssence) { + final TileEntity te = world.getTileEntity(x, y, z); + if(te instanceof TE_IchorJar) { + return dealWithPhial(world, player, x, y, z); + } else if(te instanceof TE_IchorVoidJar) { + return dealWithPhial(world, player, x, y, z); + } + } + + return true; + } + + /** + * Handle compatibility with Essentia Phials + * @param world + * Pass through from onBlockActivated() + * @param player + * Pass through from onBlockActivated() + * @param x + * Pass through from onBlockActivated() + * @param y + * Pass through from onBlockActivated() + * @param z + * Pass through from onBlockActivated() + * @return Not sure tbh + */ + private boolean dealWithPhial(World world, EntityPlayer player, int x, int y, int z) { + final TileJarFillable jarTE = (TileJarFillable) world.getTileEntity(x, y, z); + final ItemStack heldItem = player.getHeldItem(); + // Check whether to fill or to drain the phial + if(heldItem.getItemDamage() == 0) { + if(jarTE.amount >= 8){ + if (world.isRemote) { + player.swingItem(); + return false; + } + + final Aspect jarAspect = Aspect.getAspect(jarTE.aspect.getTag()); + if(jarTE.takeFromContainer(jarAspect, 8)) { + // Take an empty phial from the player's inventory + heldItem.stackSize--; + // Fill a new phial + final ItemStack filledPhial = new ItemStack(ConfigItems.itemEssence, 1, 1); + final AspectList phialContent = new AspectList().add(jarAspect, 8); + ((ItemEssence) ConfigItems.itemEssence).setAspects(filledPhial, phialContent); + // Drop on ground if there's no inventory space + if (!player.inventory.addItemStackToInventory(filledPhial)) { + world.spawnEntityInWorld(new EntityItem(world, (float)x + 0.5F, (float)y + 0.5F, (float)z + 0.5F, filledPhial)); + } + + world.playSoundAtEntity(player, "game.neutral.swim", 0.25F, 1.0F); + player.inventoryContainer.detectAndSendChanges(); + return true; + } + } + } else { + final AspectList phialContent = ((ItemEssence) ConfigItems.itemEssence).getAspects(heldItem); + if(phialContent != null && phialContent.size() == 1) { + final Aspect phialAspect = phialContent.getAspects()[0]; + if(jarTE.amount + 8 <= jarTE.maxAmount && jarTE.doesContainerAccept(phialAspect)) { + if (world.isRemote) { + player.swingItem(); + return false; + } + + if(jarTE.addToContainer(phialAspect, 8) == 0) { + world.markBlockForUpdate(x, y, z); + jarTE.markDirty(); + heldItem.stackSize--; + // Drop on ground if there's no inventory space + if (!player.inventory.addItemStackToInventory(new ItemStack(ConfigItems.itemEssence, 1, 0))) { + world.spawnEntityInWorld(new EntityItem(world, (float)x + 0.5F, (float)y + 0.5F, (float)z + 0.5F, new ItemStack(ConfigItems.itemEssence, 1, 0))); + } + + world.playSoundAtEntity(player, "game.neutral.swim", 0.25F, 1.0F); + player.inventoryContainer.detectAndSendChanges(); + return true; + } + } + } + } + + return true; + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block par5, int par6) { + final TileEntity te = world.getTileEntity(x, y, z); + if(te instanceof TE_IchorJar) { + final TE_IchorJar ite = (TE_IchorJar) te; + breakBlockWarpy(world, x, y, z, ite.amount, 200, 6.0F); + } else if(te instanceof TE_IchorVoidJar) { + final TE_IchorVoidJar ite = (TE_IchorVoidJar) te; + breakBlockWarpy(world, x, y, z, ite.amount, 200, 6.0F); + } + super.breakBlock(world, x, y, z, par5, par6); + } + + private void breakBlockWarpy(World world, int x, int y, int z, int fillAmount, int iterations, float explosionStrength){ + if(fillAmount > 0) { + // Create a decent explosion in the center of the block (TNT has strength 4.0F) + world.createExplosion(null, x + 0.5D, y + 0.5D, z + 0.5D, explosionStrength, false); + + // Place a lot of Flux in the area + final int limit = fillAmount / 16; + int created = 0; + for(int i = 0; i < iterations; i++) { + final int xf = x + world.rand.nextInt(7) - world.rand.nextInt(7); + final int yf = x + world.rand.nextInt(7) - world.rand.nextInt(7); + final int zf = x + world.rand.nextInt(7) - world.rand.nextInt(7); + if(world.isAirBlock(xf, yf, zf)) { + if(yf > y) { + world.setBlock(xf, yf, zf, ConfigBlocks.blockFluxGas, 8, 3); + } else { + world.setBlock(xf, yf, zf, ConfigBlocks.blockFluxGoo, 8, 3); + } + + if(created++ > limit) { + break; + } + } + } + } + } + + @Override + public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int meta, int fortune) { + return new ArrayList<>(Collections.singleton(new ItemStack(this, 1, (meta == 3) ? 3 : 0))); + } + + @Override + public void onBlockHarvested(World par1World, int par2, int par3, int par4, int par5, EntityPlayer par6EntityPlayer) { + } + + @Override + public boolean canDropFromExplosion(Explosion e) { + return false; + } +} diff --git a/src/main/java/common/blocks/Block_ItemProxyCable.java b/src/main/java/common/blocks/Block_ItemProxyCable.java new file mode 100644 index 0000000000..ce2f1e9820 --- /dev/null +++ b/src/main/java/common/blocks/Block_ItemProxyCable.java @@ -0,0 +1,66 @@ +package common.blocks; + +import common.itemBlocks.IB_ItemProxyCable; +import common.tileentities.TE_ItemProxyCable; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import client.renderer.ConduitRenderer; + +public class Block_ItemProxyCable extends Block { + + private static Block_ItemProxyCable instance = new Block_ItemProxyCable(); + + private Block_ItemProxyCable() { + super(Material.glass); + } + + public static Block registerBlock() { + final String blockName = "kekztech_itemproxycable_block"; + instance.setBlockName(blockName); + instance.setCreativeTab(CreativeTabs.tabMisc); + instance.setBlockTextureName(KekzCore.MODID + ":" + "TFFTCasing"); + instance.setHardness(3.0f); + instance.setResistance(2.0f); + GameRegistry.registerBlock(instance, IB_ItemProxyCable.class, blockName); + + return instance; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public TileEntity createTileEntity(World world, int p_149915_2_) { + return new TE_ItemProxyCable(); + } + + @Override + public boolean hasTileEntity(int metadata) { + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass() { + return 1; + } + + @Override + public int getRenderType() { + return ConduitRenderer.RID; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } +} diff --git a/src/main/java/common/blocks/Block_ItemProxyEndpoint.java b/src/main/java/common/blocks/Block_ItemProxyEndpoint.java new file mode 100644 index 0000000000..00e0426250 --- /dev/null +++ b/src/main/java/common/blocks/Block_ItemProxyEndpoint.java @@ -0,0 +1,61 @@ +package common.blocks; + +import common.itemBlocks.IB_ItemProxyEndpoint; +import common.tileentities.TE_ItemProxyEndpoint; +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.GuiHandler; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class Block_ItemProxyEndpoint extends Block { + + private static final Block_ItemProxyEndpoint instance = new Block_ItemProxyEndpoint(); + + private Block_ItemProxyEndpoint() { + super(Material.glass); + } + + public static Block registerBlock() { + final String blockName = "kekztech_itemproxyendpoint_block"; + instance.setBlockName(blockName); + instance.setCreativeTab(CreativeTabs.tabMisc); + instance.setBlockTextureName(KekzCore.MODID + ":" + "ItemProxyEndpoint"); + instance.setHardness(3.0f); + instance.setResistance(2.0f); + instance.setHarvestLevel("wrench", 2); + GameRegistry.registerBlock(instance, IB_ItemProxyEndpoint.class, blockName); + + return instance; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float lx, float ly, float lz) { + if(world.isRemote) { + return true; + } + + final TileEntity te = world.getTileEntity(x, y, z); + if(te instanceof TE_ItemProxyEndpoint) { + player.openGui(KekzCore.instance, GuiHandler.ITEM_PROXY_ENDPOINT, world, x, y, z); + return true; + } else { + return false; + } + } + + @Override + public TileEntity createTileEntity(World world, int p_149915_2_) { + return new TE_ItemProxyEndpoint(); + } + + @Override + public boolean hasTileEntity(int metadata) { + return true; + } + +}
\ No newline at end of file diff --git a/src/main/java/common/blocks/Block_ItemProxySource.java b/src/main/java/common/blocks/Block_ItemProxySource.java new file mode 100644 index 0000000000..7291c15e6f --- /dev/null +++ b/src/main/java/common/blocks/Block_ItemProxySource.java @@ -0,0 +1,61 @@ +package common.blocks; + +import common.itemBlocks.IB_ItemProxySource; +import common.tileentities.TE_ItemProxySource; +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.GuiHandler; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class Block_ItemProxySource extends Block { + + private static final Block_ItemProxySource instance = new Block_ItemProxySource(); + + private Block_ItemProxySource() { + super(Material.glass); + } + + public static Block registerBlock() { + final String blockName = "kekztech_itemproxysource_block"; + instance.setBlockName(blockName); + instance.setCreativeTab(CreativeTabs.tabMisc); + instance.setBlockTextureName(KekzCore.MODID + ":" + "ItemProxySource"); + instance.setHardness(3.0f); + instance.setResistance(2.0f); + instance.setHarvestLevel("wrench", 2); + GameRegistry.registerBlock(instance, IB_ItemProxySource.class, blockName); + + return instance; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float lx, float ly, float lz) { + if(world.isRemote) { + return true; + } + + final TileEntity te = world.getTileEntity(x, y, z); + if(te instanceof TE_ItemProxySource) { + player.openGui(KekzCore.instance, GuiHandler.ITEM_PROXY_SOURCE, world, x, y, z); + return true; + } else { + return false; + } + } + + @Override + public TileEntity createTileEntity(World world, int p_149915_2_) { + return new TE_ItemProxySource(); + } + + @Override + public boolean hasTileEntity(int metadata) { + return true; + } + +} diff --git a/src/main/java/blocks/Block_ItemServerDrive.java b/src/main/java/common/blocks/Block_ItemServerDrive.java index 14a9e97d3e..63747a8598 100644 --- a/src/main/java/blocks/Block_ItemServerDrive.java +++ b/src/main/java/common/blocks/Block_ItemServerDrive.java @@ -1,7 +1,7 @@ -package blocks; +package common.blocks; +import common.itemBlocks.IB_ItemServerDrive; import cpw.mods.fml.common.registry.GameRegistry; -import itemBlocks.IB_ItemServerDrive; import kekztech.KekzCore; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -9,28 +9,25 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.util.IIcon; -public class Block_ItemServerDrive extends Block{ +public class Block_ItemServerDrive extends BaseGTUpdateableBlock{ private static Block_ItemServerDrive instance = new Block_ItemServerDrive(); private IIcon[] faces = new IIcon[6]; private Block_ItemServerDrive() { - // I am a singleton super(Material.iron); } - public static Block_ItemServerDrive getInstance() { - return instance; - } - - public void registerBlock() { + public static Block registerBlock() { final String blockName = "kekztech_itemserverdrive_block"; - super.setBlockName(blockName); - super.setCreativeTab(CreativeTabs.tabMisc); - super.setHardness(5.0f); - super.setResistance(6.0f); - GameRegistry.registerBlock(getInstance(), IB_ItemServerDrive.class, blockName); + instance.setBlockName(blockName); + instance.setCreativeTab(CreativeTabs.tabMisc); + instance.setHardness(5.0f); + instance.setResistance(6.0f); + GameRegistry.registerBlock(instance, IB_ItemServerDrive.class, blockName); + + return instance; } @Override diff --git a/src/main/java/common/blocks/Block_ItemServerIOPort.java b/src/main/java/common/blocks/Block_ItemServerIOPort.java new file mode 100644 index 0000000000..6af90b6e42 --- /dev/null +++ b/src/main/java/common/blocks/Block_ItemServerIOPort.java @@ -0,0 +1,43 @@ +package common.blocks; + +import common.itemBlocks.IB_ItemServerIOPort; +import common.tileentities.TE_ItemServerIOPort; +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class Block_ItemServerIOPort extends BaseGTUpdateableBlock { + + private static Block_ItemServerIOPort instance = new Block_ItemServerIOPort(); + + private Block_ItemServerIOPort() { + super(Material.iron); + } + + public static Block registerBlock() { + final String blockName = "kekztech_itemserverioport_block"; + instance.setBlockName(blockName); + instance.setCreativeTab(CreativeTabs.tabMisc); + instance.setBlockTextureName(KekzCore.MODID + ":" + "ItemServerIOPort"); + instance.setHardness(5.0f); + instance.setResistance(6.0f); + GameRegistry.registerBlock(instance, IB_ItemServerIOPort.class, blockName); + + return instance; + } + + @Override + public boolean hasTileEntity(int metadata) { + return true; + } + + @Override + public TileEntity createTileEntity(World world, int metadata) { + return new TE_ItemServerIOPort(); + } + +} diff --git a/src/main/java/common/blocks/Block_ItemServerRackCasing.java b/src/main/java/common/blocks/Block_ItemServerRackCasing.java new file mode 100644 index 0000000000..db0ec9c3e6 --- /dev/null +++ b/src/main/java/common/blocks/Block_ItemServerRackCasing.java @@ -0,0 +1,30 @@ +package common.blocks; + +import common.itemBlocks.IB_ItemServerRackCasing; +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; + +public class Block_ItemServerRackCasing extends BaseGTUpdateableBlock { + + private static Block_ItemServerRackCasing instance = new Block_ItemServerRackCasing(); + + private Block_ItemServerRackCasing() { + super(Material.iron); + } + + public static Block registerBlock() { + final String blockName = "kekztech_itemserverrackcasing_block"; + instance.setBlockName(blockName); + instance.setCreativeTab(CreativeTabs.tabMisc); + instance.setBlockTextureName(KekzCore.MODID + ":" + "ItemServerRackCasing"); + instance.setHardness(5.0f); + instance.setResistance(6.0f); + GameRegistry.registerBlock(instance, IB_ItemServerRackCasing.class, blockName); + + return instance; + } + +} diff --git a/src/main/java/common/blocks/Block_LapotronicEnergyUnit.java b/src/main/java/common/blocks/Block_LapotronicEnergyUnit.java new file mode 100644 index 0000000000..9a6aad0b5b --- /dev/null +++ b/src/main/java/common/blocks/Block_LapotronicEnergyUnit.java @@ -0,0 +1,93 @@ +package common.blocks; + +import java.util.List; + +import common.itemBlocks.IB_LapotronicEnergyUnit; +import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +public class Block_LapotronicEnergyUnit extends BaseGTUpdateableBlock { + + private static final Block_LapotronicEnergyUnit instance = new Block_LapotronicEnergyUnit(); + + private IIcon iconBaseSide; + private IIcon iconBaseTop; + + private IIcon iconLapoIVSide; + private IIcon iconLapoIVTop; + private IIcon iconLapoLuVSide; + private IIcon iconLapoLuVTop; + private IIcon iconLapoZPMSide; + private IIcon iconLapoZPMTop; + private IIcon iconLapoUVSide; + private IIcon iconLapoUVTop; + private IIcon iconUltimateSide; + private IIcon iconUltimateTop; + + private Block_LapotronicEnergyUnit() { + super(Material.iron); + } + + public static Block registerBlock() { + final String blockName = "kekztech_lapotronicenergyunit_block"; + instance.setBlockName(blockName); + instance.setCreativeTab(CreativeTabs.tabMisc); + instance.setHardness(5.0f); + instance.setResistance(6.0f); + GameRegistry.registerBlock(instance, IB_LapotronicEnergyUnit.class, blockName); + + return instance; + } + + @Override + public void registerBlockIcons(IIconRegister ir) { + iconBaseSide = ir.registerIcon("kekztech:LSCBase_side"); + iconBaseTop = ir.registerIcon("kekztech:LSCBase_top"); + + iconLapoIVSide = ir.registerIcon("kekztech:LapotronicEnergyUnit1_side"); + iconLapoIVTop = ir.registerIcon("kekztech:LapotronicEnergyUnit1_top"); + iconLapoLuVSide = ir.registerIcon("kekztech:LapotronicEnergyUnit2_side"); + iconLapoLuVTop = ir.registerIcon("kekztech:LapotronicEnergyUnit2_top"); + iconLapoZPMSide = ir.registerIcon("kekztech:LapotronicEnergyUnit3_side"); + iconLapoZPMTop = ir.registerIcon("kekztech:LapotronicEnergyUnit3_top"); + iconLapoUVSide = ir.registerIcon("kekztech:LapotronicEnergyUnit4_side"); + iconLapoUVTop = ir.registerIcon("kekztech:LapotronicEnergyUnit4_top"); + + iconUltimateSide = ir.registerIcon("kekztech:UltimateEnergyUnit_side"); + iconUltimateTop = ir.registerIcon("kekztech:UltimateEnergyUnit_top"); + } + + @Override + @SuppressWarnings({"unchecked" }) + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { + // Multi casing + par3List.add(new ItemStack(par1, 1, 0)); + // Lapo units IV - UV + par3List.add(new ItemStack(par1, 1, 1)); + par3List.add(new ItemStack(par1, 1, 2)); + par3List.add(new ItemStack(par1, 1, 3)); + par3List.add(new ItemStack(par1, 1, 4)); + // Ultimate battery + par3List.add(new ItemStack(par1, 1, 5)); + } + + @Override + public IIcon getIcon(int side, int meta) { + switch(meta) { + case 0: return (side < 2) ? iconBaseTop : iconBaseSide; + case 1: return (side < 2) ? iconLapoIVTop : iconLapoIVSide; + case 2: return (side < 2) ? iconLapoLuVTop : iconLapoLuVSide; + case 3: return (side < 2) ? iconLapoZPMTop : iconLapoZPMSide; + case 4: return (side < 2) ? iconLapoUVTop : iconLapoUVSide; + case 5: return (side < 2) ? iconUltimateTop : iconUltimateSide; + default: return iconUltimateTop; + } + } + +} diff --git a/src/main/java/blocks/Block_ReactorChamber_OFF.java b/src/main/java/common/blocks/Block_ReactorChamber_OFF.java index effe7aa9b4..e6a5b3c3b3 100644 --- a/src/main/java/blocks/Block_ReactorChamber_OFF.java +++ b/src/main/java/common/blocks/Block_ReactorChamber_OFF.java @@ -1,4 +1,4 @@ -package blocks; +package common.blocks; import cpw.mods.fml.common.registry.GameRegistry; import kekztech.KekzCore; @@ -6,7 +6,7 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; -public class Block_ReactorChamber_OFF extends Block { +public class Block_ReactorChamber_OFF extends BaseGTUpdateableBlock { private static Block_ReactorChamber_OFF instance = new Block_ReactorChamber_OFF(); @@ -14,18 +14,16 @@ public class Block_ReactorChamber_OFF extends Block { super(Material.iron); } - public static Block_ReactorChamber_OFF getInstance() { - return instance; - } - - public void registerBlock() { + public static Block registerBlock() { final String blockName = "kekztech_reactorchamberoff_block"; - super.setBlockName(blockName); - super.setCreativeTab(CreativeTabs.tabMisc); - super.setBlockTextureName(KekzCore.MODID + ":" + "ReactorChamber_OFF"); - super.setHardness(10.0f); - super.setResistance(16.0f); - GameRegistry.registerBlock(getInstance(), blockName); + instance.setBlockName(blockName); + instance.setCreativeTab(CreativeTabs.tabMisc); + instance.setBlockTextureName(KekzCore.MODID + ":" + "ReactorChamber_OFF"); + instance.setHardness(10.0f); + instance.setResistance(16.0f); + GameRegistry.registerBlock(instance, blockName); + + return instance; } } diff --git a/src/main/java/blocks/Block_ReactorChamber_ON.java b/src/main/java/common/blocks/Block_ReactorChamber_ON.java index 26004e0753..0c7e230a11 100644 --- a/src/main/java/blocks/Block_ReactorChamber_ON.java +++ b/src/main/java/common/blocks/Block_ReactorChamber_ON.java @@ -1,4 +1,4 @@ -package blocks; +package common.blocks; import cpw.mods.fml.common.registry.GameRegistry; import kekztech.KekzCore; @@ -6,7 +6,7 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; -public class Block_ReactorChamber_ON extends Block { +public class Block_ReactorChamber_ON extends BaseGTUpdateableBlock { private static Block_ReactorChamber_ON instance = new Block_ReactorChamber_ON(); @@ -14,18 +14,16 @@ public class Block_ReactorChamber_ON extends Block { super(Material.iron); } - public static Block_ReactorChamber_ON getInstance() { - return instance; - } - - public void registerBlock() { + public static Block registerBlock() { final String blockName = "kekztech_reactorchamberon_block"; - super.setBlockName(blockName); - super.setCreativeTab(CreativeTabs.tabMisc); - super.setBlockTextureName(KekzCore.MODID + ":" + "ReactorChamber_ON"); - super.setHardness(-1.0f); - super.setResistance(16.0f); - GameRegistry.registerBlock(getInstance(), blockName); + instance.setBlockName(blockName); + instance.setCreativeTab(CreativeTabs.tabMisc); + instance.setBlockTextureName(KekzCore.MODID + ":" + "ReactorChamber_ON"); + instance.setHardness(-1.0f); + instance.setResistance(16.0f); + GameRegistry.registerBlock(instance, blockName); + + return instance; } @Override diff --git a/src/main/java/common/blocks/Block_SpaceElevator.java b/src/main/java/common/blocks/Block_SpaceElevator.java new file mode 100644 index 0000000000..524f34ba46 --- /dev/null +++ b/src/main/java/common/blocks/Block_SpaceElevator.java @@ -0,0 +1,61 @@ +package common.blocks; + +import common.itemBlocks.IB_SpaceElevator; +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +import java.util.List; + +public class Block_SpaceElevator extends BaseGTUpdateableBlock { + + private static final Block_SpaceElevator INSTANCE = new Block_SpaceElevator(); + + private IIcon baseTop; + private IIcon baseSide; + private IIcon coilHolder; + + private Block_SpaceElevator() { + super(Material.iron); + } + + public static Block registerBlock() { + final String blockName = "kekztech_spaceelevator_block"; + INSTANCE.setBlockName(blockName); + INSTANCE.setCreativeTab(CreativeTabs.tabMisc); + INSTANCE.setHardness(7.0f); + INSTANCE.setResistance(10.0f); + GameRegistry.registerBlock(INSTANCE, IB_SpaceElevator.class, blockName); + + return INSTANCE; + } + + @Override + public void registerBlockIcons(IIconRegister ir) { + baseTop = ir.registerIcon("kekztech:SpaceElevatorBase_top"); + baseSide = ir.registerIcon("kekztech:SpaceElevatorBase_side"); + coilHolder = ir.registerIcon("kekztech:CoilHolder"); + } + + @Override + @SuppressWarnings({"unchecked" }) + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { + par3List.add(new ItemStack(par1, 1, 0)); + par3List.add(new ItemStack(par1, 1, 1)); + } + + @Override + public IIcon getIcon(int side, int meta) { + if(meta == 0) { + return (side < 2) ? baseTop : baseSide; + } else { + return coilHolder; + } + } +} diff --git a/src/main/java/common/blocks/Block_SpaceElevatorCapacitor.java b/src/main/java/common/blocks/Block_SpaceElevatorCapacitor.java new file mode 100644 index 0000000000..509c8a681d --- /dev/null +++ b/src/main/java/common/blocks/Block_SpaceElevatorCapacitor.java @@ -0,0 +1,80 @@ +package common.blocks; + +import common.itemBlocks.IB_SpaceElevatorCapacitor; +import common.tileentities.TE_SpaceElevatorCapacitor; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class Block_SpaceElevatorCapacitor extends BaseGTUpdateableBlock { + + private static final Block_SpaceElevatorCapacitor INSTANCE = new Block_SpaceElevatorCapacitor(); + + private IIcon top; + private IIcon side; + + private Block_SpaceElevatorCapacitor() { + super(Material.iron); + } + + public static Block registerBlock() { + final String blockName = "kekztech_spaceelevatorcapacitor_block"; + INSTANCE.setBlockName(blockName); + INSTANCE.setCreativeTab(CreativeTabs.tabMisc); + INSTANCE.setHardness(5.0f); + INSTANCE.setResistance(3.0f); + GameRegistry.registerBlock(INSTANCE, IB_SpaceElevatorCapacitor.class, blockName); + + return INSTANCE; + } + + @Override + public void registerBlockIcons(IIconRegister ir) { + top = ir.registerIcon("kekztech:SpaceElevatorCapacitor_top_fullbase"); + side = ir.registerIcon("kekztech:SpaceElevatorCapacitor_side_fullbase"); + } + + @Override + public IIcon getIcon(int side, int meta) { + return (side < 2) ? this.top : this.side; + } + + @Override + public TileEntity createTileEntity(World world, int p_149915_2_) { + return new TE_SpaceElevatorCapacitor(); + } + + @Override + public boolean hasTileEntity(int metadata) { + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass() { + return 0; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { + return false; + } + + @Override + public int getLightValue() { + return 2; + } +} diff --git a/src/main/java/common/blocks/Block_SpaceElevatorTether.java b/src/main/java/common/blocks/Block_SpaceElevatorTether.java new file mode 100644 index 0000000000..3031cd8a12 --- /dev/null +++ b/src/main/java/common/blocks/Block_SpaceElevatorTether.java @@ -0,0 +1,70 @@ +package common.blocks; + +import common.tileentities.TE_ItemProxyCable; +import common.tileentities.TE_SpaceElevatorTether; +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class Block_SpaceElevatorTether extends BaseGTUpdateableBlock { + + private static final Block_SpaceElevatorTether INSTANCE = new Block_SpaceElevatorTether(); + + private IIcon top; + private IIcon side; + + private Block_SpaceElevatorTether() { + super(Material.glass); + } + + public static Block registerBlock() { + final String blockName = "kekztech_spaceelevatortether_block"; + INSTANCE.setBlockName(blockName); + INSTANCE.setCreativeTab(CreativeTabs.tabMisc); + INSTANCE.setHardness(15.0f); + INSTANCE.setResistance(15.0f); + GameRegistry.registerBlock(INSTANCE, blockName); + + return INSTANCE; + } + + @Override + public void registerBlockIcons(IIconRegister ir) { + top = ir.registerIcon("kekztech:Tether_top"); + side = ir.registerIcon("kekztech:Tether_side"); + } + + @Override + public IIcon getIcon(int side, int meta) { + return (side < 2) ? this.top : this.side; + } + + @Override + public TileEntity createTileEntity(World world, int p_149915_2_) { + return new TE_SpaceElevatorTether(); + } + + @Override + public boolean hasTileEntity(int metadata) { + return true; + } + + @Override + public boolean isOpaqueCube() + { + return false; + } + + @Override + public boolean renderAsNormalBlock() + { + return false; + } + +} diff --git a/src/main/java/common/blocks/Block_TFFTCasing.java b/src/main/java/common/blocks/Block_TFFTCasing.java new file mode 100644 index 0000000000..5815a75862 --- /dev/null +++ b/src/main/java/common/blocks/Block_TFFTCasing.java @@ -0,0 +1,28 @@ +package common.blocks;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import kekztech.KekzCore;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.creativetab.CreativeTabs;
+
+public class Block_TFFTCasing extends BaseGTUpdateableBlock {
+
+ private static Block_TFFTCasing instance = new Block_TFFTCasing();
+
+ private Block_TFFTCasing() {
+ super(Material.iron);
+ }
+
+ public static Block registerBlock() {
+ final String blockName = "kekztech_tfftcasingblock_block";
+ instance.setBlockName(blockName);
+ instance.setCreativeTab(CreativeTabs.tabMisc);
+ instance.setBlockTextureName(KekzCore.MODID + ":" + "TFFTCasing");
+ instance.setHardness(5.0f);
+ instance.setResistance(6.0f);
+ GameRegistry.registerBlock(instance, blockName);
+
+ return instance;
+ }
+}
diff --git a/src/main/java/common/blocks/Block_TFFTMultiHatch.java b/src/main/java/common/blocks/Block_TFFTMultiHatch.java new file mode 100644 index 0000000000..be7b588fa5 --- /dev/null +++ b/src/main/java/common/blocks/Block_TFFTMultiHatch.java @@ -0,0 +1,65 @@ +package common.blocks; + +import common.itemBlocks.IB_TFFTMultiHatch; +import common.tileentities.TE_TFFTMultiHatch; +import cpw.mods.fml.common.registry.GameRegistry; +import gregtech.api.GregTech_API; +import gregtech.api.util.GT_ModHandler; +import gregtech.api.util.GT_Utility; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class Block_TFFTMultiHatch extends BaseGTUpdateableBlock { + + private static Block_TFFTMultiHatch instance = new Block_TFFTMultiHatch(); + + private Block_TFFTMultiHatch() { + super(Material.iron); + } + + public static Block registerBlock() { + final String blockName = "kekztech_tfftmultihatch_block"; + instance.setBlockName(blockName); + instance.setCreativeTab(CreativeTabs.tabMisc); + instance.setBlockTextureName(KekzCore.MODID + ":" + "TFFTMultiHatch"); + instance.setHardness(5.0f); + instance.setResistance(6.0f); + GameRegistry.registerBlock(instance, IB_TFFTMultiHatch.class, blockName); + + return instance; + } + + @Override + public TileEntity createTileEntity(World world, int p_149915_2_) { + return new TE_TFFTMultiHatch(); + } + + @Override + public boolean hasTileEntity(int metadata) { + return true; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) { + // Code block taken from GregTech's BaseMetaTileEntity.class + if (GT_Utility.isStackInList(player.getHeldItem(), GregTech_API.sScrewdriverList)) { + if (GT_ModHandler.damageOrDechargeItem(player.getHeldItem(), 1, 200, player)) { + final TileEntity te = world.getTileEntity(x, y, z); + if(te instanceof TE_TFFTMultiHatch) { + ((TE_TFFTMultiHatch) te).toggleAutoOutput(); + GT_Utility.sendSoundToPlayers(world, GregTech_API.sSoundList.get(100), 1.0F, -1.0F, x, y, z); + // Give chat feedback + GT_Utility.sendChatToPlayer(player, ((TE_TFFTMultiHatch) te).isOutputting() ? "Auto-output enabled" : "Auto-output disabled"); + + } + } + return true; + } + return false; + } +} diff --git a/src/main/java/common/blocks/Block_TFFTStorageFieldBlockT1.java b/src/main/java/common/blocks/Block_TFFTStorageFieldBlockT1.java new file mode 100644 index 0000000000..f7554c4724 --- /dev/null +++ b/src/main/java/common/blocks/Block_TFFTStorageFieldBlockT1.java @@ -0,0 +1,38 @@ +package common.blocks;
+
+import common.itemBlocks.IB_TFFTStorageFieldBlockT1;
+import cpw.mods.fml.common.registry.GameRegistry;
+import kekztech.KekzCore;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.creativetab.CreativeTabs;
+
+public class Block_TFFTStorageFieldBlockT1 extends BaseGTUpdateableBlock {
+
+ private static Block_TFFTStorageFieldBlockT1 instance;
+
+ private Block_TFFTStorageFieldBlockT1() {
+ super(Material.iron);
+ }
+
+ public static int getCapacity() {
+ return 500000;
+ }
+
+ public static Block registerBlock() {
+ if(instance == null) {
+ instance = new Block_TFFTStorageFieldBlockT1();
+ }
+
+ final String blockName = "kekztech_tfftstoragefieldblock1_block";
+ instance.setBlockName(blockName);
+ instance.setCreativeTab(CreativeTabs.tabMisc);
+ instance.setBlockTextureName(KekzCore.MODID + ":" + "TFFTStorageFieldBlock1");
+ instance.setHardness(5.0f);
+ instance.setResistance(6.0f);
+ GameRegistry.registerBlock(instance, IB_TFFTStorageFieldBlockT1.class, blockName);
+
+ return instance;
+ }
+
+}
diff --git a/src/main/java/common/blocks/Block_TFFTStorageFieldBlockT2.java b/src/main/java/common/blocks/Block_TFFTStorageFieldBlockT2.java new file mode 100644 index 0000000000..394fbcf90f --- /dev/null +++ b/src/main/java/common/blocks/Block_TFFTStorageFieldBlockT2.java @@ -0,0 +1,37 @@ +package common.blocks;
+
+import common.itemBlocks.IB_TFFTStorageFieldBlockT2;
+import cpw.mods.fml.common.registry.GameRegistry;
+import kekztech.KekzCore;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.creativetab.CreativeTabs;
+
+public class Block_TFFTStorageFieldBlockT2 extends BaseGTUpdateableBlock {
+
+ private static Block_TFFTStorageFieldBlockT2 instance;
+
+ private Block_TFFTStorageFieldBlockT2() {
+ super(Material.iron);
+ }
+
+ public static int getCapacity() {
+ return 4000000;
+ }
+
+ public static Block registerBlock() {
+ if(instance == null) {
+ instance = new Block_TFFTStorageFieldBlockT2();
+ }
+
+ final String blockName = "kekztech_tfftstoragefieldblock2_block";
+ instance.setBlockName(blockName);
+ instance.setCreativeTab(CreativeTabs.tabMisc);
+ instance.setBlockTextureName(KekzCore.MODID + ":" + "TFFTStorageFieldBlock2");
+ instance.setHardness(5.0f);
+ instance.setResistance(6.0f);
+ GameRegistry.registerBlock(instance, IB_TFFTStorageFieldBlockT2.class, blockName);
+
+ return instance;
+ }
+}
diff --git a/src/main/java/common/blocks/Block_TFFTStorageFieldBlockT3.java b/src/main/java/common/blocks/Block_TFFTStorageFieldBlockT3.java new file mode 100644 index 0000000000..0b2123ae87 --- /dev/null +++ b/src/main/java/common/blocks/Block_TFFTStorageFieldBlockT3.java @@ -0,0 +1,37 @@ +package common.blocks;
+
+import common.itemBlocks.IB_TFFTStorageFieldBlockT3;
+import cpw.mods.fml.common.registry.GameRegistry;
+import kekztech.KekzCore;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.creativetab.CreativeTabs;
+
+public class Block_TFFTStorageFieldBlockT3 extends BaseGTUpdateableBlock {
+
+ private static Block_TFFTStorageFieldBlockT3 instance;
+
+ private Block_TFFTStorageFieldBlockT3() {
+ super(Material.iron);
+ }
+
+ public static int getCapacity() {
+ return 16000000;
+ }
+
+ public static Block registerBlock() {
+ if(instance == null) {
+ instance = new Block_TFFTStorageFieldBlockT3();
+ }
+
+ final String blockName = "kekztech_tfftstoragefieldblock3_block";
+ instance.setBlockName(blockName);
+ instance.setCreativeTab(CreativeTabs.tabMisc);
+ instance.setBlockTextureName(KekzCore.MODID + ":" + "TFFTStorageFieldBlock3");
+ instance.setHardness(5.0f);
+ instance.setResistance(6.0f);
+ GameRegistry.registerBlock(instance, IB_TFFTStorageFieldBlockT3.class, blockName);
+
+ return instance;
+ }
+}
diff --git a/src/main/java/common/blocks/Block_TFFTStorageFieldBlockT4.java b/src/main/java/common/blocks/Block_TFFTStorageFieldBlockT4.java new file mode 100644 index 0000000000..138c66ac0c --- /dev/null +++ b/src/main/java/common/blocks/Block_TFFTStorageFieldBlockT4.java @@ -0,0 +1,37 @@ +package common.blocks;
+
+import common.itemBlocks.IB_TFFTStorageFieldBlockT4;
+import cpw.mods.fml.common.registry.GameRegistry;
+import kekztech.KekzCore;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.creativetab.CreativeTabs;
+
+public class Block_TFFTStorageFieldBlockT4 extends BaseGTUpdateableBlock {
+
+ private static Block_TFFTStorageFieldBlockT4 instance;
+
+ private Block_TFFTStorageFieldBlockT4() {
+ super(Material.iron);
+ }
+
+ public static int getCapacity() {
+ return 64000000;
+ }
+
+ public static Block registerBlock() {
+ if(instance == null) {
+ instance = new Block_TFFTStorageFieldBlockT4();
+ }
+
+ final String blockName = "kekztech_tfftstoragefieldblock4_block";
+ instance.setBlockName(blockName);
+ instance.setCreativeTab(CreativeTabs.tabMisc);
+ instance.setBlockTextureName(KekzCore.MODID + ":" + "TFFTStorageFieldBlock4");
+ instance.setHardness(5.0f);
+ instance.setResistance(6.0f);
+ GameRegistry.registerBlock(instance, IB_TFFTStorageFieldBlockT4.class, blockName);
+
+ return instance;
+ }
+}
diff --git a/src/main/java/common/blocks/Block_TFFTStorageFieldBlockT5.java b/src/main/java/common/blocks/Block_TFFTStorageFieldBlockT5.java new file mode 100644 index 0000000000..7e30695804 --- /dev/null +++ b/src/main/java/common/blocks/Block_TFFTStorageFieldBlockT5.java @@ -0,0 +1,37 @@ +package common.blocks; + +import common.itemBlocks.IB_TFFTStorageFieldBlockT5; +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; + +public class Block_TFFTStorageFieldBlockT5 extends BaseGTUpdateableBlock { + + private static Block_TFFTStorageFieldBlockT5 instance; + + private Block_TFFTStorageFieldBlockT5() { + super(Material.iron); + } + + public static int getCapacity() { + return 256000000; + } + + public static Block registerBlock() { + if(instance == null) { + instance = new Block_TFFTStorageFieldBlockT5(); + } + + final String blockName = "kekztech_tfftstoragefieldblock5_block"; + instance.setBlockName(blockName); + instance.setCreativeTab(CreativeTabs.tabMisc); + instance.setBlockTextureName(KekzCore.MODID + ":" + "TFFTStorageFieldBlock5"); + instance.setHardness(5.0f); + instance.setResistance(6.0f); + GameRegistry.registerBlock(instance, IB_TFFTStorageFieldBlockT5.class, blockName); + + return instance; + } +}
\ No newline at end of file diff --git a/src/main/java/common/blocks/Block_ThaumiumReinforcedJar.java b/src/main/java/common/blocks/Block_ThaumiumReinforcedJar.java new file mode 100644 index 0000000000..61ca0e2390 --- /dev/null +++ b/src/main/java/common/blocks/Block_ThaumiumReinforcedJar.java @@ -0,0 +1,244 @@ +package common.blocks; + +import common.itemBlocks.IB_ThaumiumReinforcedJar; +import common.tileentities.TE_ThaumiumReinforcedJar; +import common.tileentities.TE_ThaumiumReinforcedVoidJar; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.Explosion; +import net.minecraft.world.World; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.common.blocks.BlockJar; +import thaumcraft.common.config.ConfigBlocks; +import thaumcraft.common.config.ConfigItems; +import thaumcraft.common.items.ItemEssence; +import thaumcraft.common.tiles.TileJarFillable; + +import java.util.ArrayList; +import java.util.List; + +public class Block_ThaumiumReinforcedJar extends BlockJar { + + private static final Block_ThaumiumReinforcedJar instance = new Block_ThaumiumReinforcedJar(); + + private Block_ThaumiumReinforcedJar() { + super(); + + super.setHardness(6.0F); + super.setResistance(6.0F); + } + + public static Block registerBlock() { + final String blockName = "kekztech_thaumiumreinforcedjar_block"; + instance.setBlockName(blockName); + GameRegistry.registerBlock(instance, IB_ThaumiumReinforcedJar.class, blockName); + + return instance; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister ir) { + super.iconLiquid = ir.registerIcon("thaumcraft:animatedglow"); + super.iconJarSide = ir.registerIcon("kekztech:thaumreinforced_jar_side"); + super.iconJarTop = ir.registerIcon("kekztech:thaumreinforced_jar_top"); + super.iconJarTopVoid = ir.registerIcon("kekztech:thaumreinforced_jar_top_void"); + super.iconJarSideVoid = ir.registerIcon("kekztech:thaumreinforced_jar_side_void"); + super.iconJarBottom = ir.registerIcon("kekztech:thaumreinforced_jar_bottom"); + } + + @Override + @SideOnly(Side.CLIENT) + @SuppressWarnings({"unchecked"}) + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { + par3List.add(new ItemStack(par1, 1, 0)); // Normal jar + par3List.add(new ItemStack(par1, 1, 3)); // Void jar + } + + @Override + public TileEntity createTileEntity(World world, int meta) { + if(meta == 3) { + return new TE_ThaumiumReinforcedVoidJar(); + } else { + return new TE_ThaumiumReinforcedJar(); + } + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block par5, int par6) { + final TileEntity te = world.getTileEntity(x, y, z); + if(te instanceof TE_ThaumiumReinforcedJar) { + final TE_ThaumiumReinforcedJar ite = (TE_ThaumiumReinforcedJar) te; + breakBlockWarpy(world, x, y, z, ite.amount, 50, 1.0F); + } else if(te instanceof TE_ThaumiumReinforcedVoidJar) { + final TE_ThaumiumReinforcedVoidJar ite = (TE_ThaumiumReinforcedVoidJar) te; + breakBlockWarpy(world, x, y, z, ite.amount, 50, 1.0F); + } + super.breakBlock(world, x, y, z, par5, par6); + } + + private void breakBlockWarpy(World world, int x, int y, int z, int fillAmount, int iterations, float explosionStrength){ + if(fillAmount > 0) { + // Create a decent explosion in the center of the block (TNT has strength 4.0F) + world.createExplosion(null, x + 0.5D, y + 0.5D, z + 0.5D, explosionStrength, false); + + // Place a lot of Flux in the area + final int limit = fillAmount / 16; + int created = 0; + for(int i = 0; i < iterations; i++) { + final int xf = x + world.rand.nextInt(7) - world.rand.nextInt(7); + final int yf = x + world.rand.nextInt(7) - world.rand.nextInt(7); + final int zf = x + world.rand.nextInt(7) - world.rand.nextInt(7); + if(world.isAirBlock(xf, yf, zf)) { + if(yf > y) { + world.setBlock(xf, yf, zf, ConfigBlocks.blockFluxGas, 8, 3); + } else { + world.setBlock(xf, yf, zf, ConfigBlocks.blockFluxGoo, 8, 3); + } + + if(created++ > limit) { + break; + } + } + } + } + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float f1, float f2, float f3) { + // Call parent method to handle jar emptying, labels stuff etc + super.onBlockActivated(world, x, y, z, player, side, f1, f2, f3); + // Interact with Essentia Phials if the player holds one + final ItemStack heldItem = player.getHeldItem(); + if(heldItem != null && heldItem.getItem() == ConfigItems.itemEssence) { + final TileEntity te = world.getTileEntity(x, y, z); + if(te instanceof TE_ThaumiumReinforcedJar) { + return dealWithPhial(world, player, x, y, z); + } else if(te instanceof TE_ThaumiumReinforcedVoidJar) { + return dealWithPhial(world, player, x, y, z); + } + } + + return true; + } + + /** + * Handle compatibility with Essentia Phials + * @param world + * Pass through from onBlockActivated() + * @param player + * Pass through from onBlockActivated() + * @param x + * Pass through from onBlockActivated() + * @param y + * Pass through from onBlockActivated() + * @param z + * Pass through from onBlockActivated() + * @return Not sure tbh + */ + private boolean dealWithPhial(World world, EntityPlayer player, int x, int y, int z) { + final TileJarFillable kte = (TileJarFillable) world.getTileEntity(x, y, z); + final ItemStack heldItem = player.getHeldItem(); + // Check whether to fill or to drain the phial + if(heldItem.getItemDamage() == 0) { + if(kte.amount >= 8){ + if (world.isRemote) { + player.swingItem(); + return false; + } + + final Aspect jarAspect = Aspect.getAspect(kte.aspect.getTag()); + if(kte.takeFromContainer(jarAspect, 8)) { + // Take an empty phial from the player's inventory + heldItem.stackSize--; + // Fill a new phial + final ItemStack filledPhial = new ItemStack(ConfigItems.itemEssence, 1, 1); + final AspectList phialContent = new AspectList().add(jarAspect, 8); + ((ItemEssence) ConfigItems.itemEssence).setAspects(filledPhial, phialContent); + // Drop on ground if there's no inventory space + if (!player.inventory.addItemStackToInventory(filledPhial)) { + world.spawnEntityInWorld(new EntityItem(world, (float)x + 0.5F, (float)y + 0.5F, (float)z + 0.5F, filledPhial)); + } + + world.playSoundAtEntity(player, "game.neutral.swim", 0.25F, 1.0F); + player.inventoryContainer.detectAndSendChanges(); + return true; + } + } + } else { + final AspectList phialContent = ((ItemEssence) ConfigItems.itemEssence).getAspects(heldItem); + if(phialContent != null && phialContent.size() == 1) { + final Aspect phialAspect = phialContent.getAspects()[0]; + if(kte.amount + 8 <= kte.maxAmount && kte.doesContainerAccept(phialAspect)) { + if (world.isRemote) { + player.swingItem(); + return false; + } + + if(kte.addToContainer(phialAspect, 8) == 0) { + world.markBlockForUpdate(x, y, z); + kte.markDirty(); + heldItem.stackSize--; + // Drop on ground if there's no inventory space + if (!player.inventory.addItemStackToInventory(new ItemStack(ConfigItems.itemEssence, 1, 0))) { + world.spawnEntityInWorld(new EntityItem(world, (float)x + 0.5F, (float)y + 0.5F, (float)z + 0.5F, new ItemStack(ConfigItems.itemEssence, 1, 0))); + } + + world.playSoundAtEntity(player, "game.neutral.swim", 0.25F, 1.0F); + player.inventoryContainer.detectAndSendChanges(); + return true; + } + } + } + } + + return true; + } + + @Override + public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int meta, int fortune) { + final ArrayList<ItemStack> drops = new ArrayList<>(); + drops.add(new ItemStack(this, 1, (meta == 3) ? 3 : 0)); + final TileEntity te = world.getTileEntity(x, y, z); + if(te instanceof TE_ThaumiumReinforcedJar) { + final TE_ThaumiumReinforcedJar ite = (TE_ThaumiumReinforcedJar) te; + if(ite.aspectFilter != null){ + final ItemStack droppedLabel = new ItemStack(ConfigItems.itemResource, 1, 13); + droppedLabel.setTagCompound(new NBTTagCompound()); + final AspectList aspect = new AspectList().add(ite.aspectFilter,0); + aspect.writeToNBT(droppedLabel.getTagCompound()); + drops.add(droppedLabel); + } + } else if(te instanceof TE_ThaumiumReinforcedVoidJar) { + final TE_ThaumiumReinforcedVoidJar ite = (TE_ThaumiumReinforcedVoidJar) te; + if(ite.aspectFilter != null) { + final ItemStack droppedLabel = new ItemStack(ConfigItems.itemResource, 1, 13); + droppedLabel.setTagCompound(new NBTTagCompound()); + final AspectList aspect = new AspectList().add(ite.aspectFilter,0); + aspect.writeToNBT(droppedLabel.getTagCompound()); + drops.add(droppedLabel); + } + } + return drops; + } + + @Override + public void onBlockHarvested(World par1World, int par2, int par3, int par4, int par5, EntityPlayer par6EntityPlayer) { + } + + @Override + public boolean canDropFromExplosion(Explosion e) { + return false; + } +} diff --git a/src/main/java/common/blocks/Block_YSZUnit.java b/src/main/java/common/blocks/Block_YSZUnit.java new file mode 100644 index 0000000000..fad48dd1b2 --- /dev/null +++ b/src/main/java/common/blocks/Block_YSZUnit.java @@ -0,0 +1,28 @@ +package common.blocks;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import kekztech.KekzCore;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.creativetab.CreativeTabs;
+
+public class Block_YSZUnit extends BaseGTUpdateableBlock {
+
+ private static Block_YSZUnit instance = new Block_YSZUnit();
+
+ private Block_YSZUnit() {
+ super(Material.iron);
+ }
+
+ public static Block registerBlock() {
+ final String blockName = "kekztech_yszceramicelectrolyteunit_block";
+ instance.setBlockName(blockName);
+ instance.setCreativeTab(CreativeTabs.tabMisc);
+ instance.setBlockTextureName(KekzCore.MODID + ":" + "YSZCeramicElectrolyteUnit");
+ instance.setHardness(5.0f);
+ instance.setResistance(6.0f);
+ GameRegistry.registerBlock(instance, blockName);
+
+ return instance;
+ }
+}
diff --git a/src/main/java/container/Container_ItemProxyEndpoint.java b/src/main/java/common/container/Container_ItemProxyEndpoint.java index 5718943efe..63f836e001 100644 --- a/src/main/java/container/Container_ItemProxyEndpoint.java +++ b/src/main/java/common/container/Container_ItemProxyEndpoint.java @@ -1,4 +1,4 @@ -package container; +package common.container; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/container/Container_ItemProxySource.java b/src/main/java/common/container/Container_ItemProxySource.java index 50facb4bf2..2f59b97b73 100644 --- a/src/main/java/container/Container_ItemProxySource.java +++ b/src/main/java/common/container/Container_ItemProxySource.java @@ -1,4 +1,4 @@ -package container; +package common.container; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/container/Container_ModularNuclearReactor.java b/src/main/java/common/container/Container_ModularNuclearReactor.java index ec6270d705..f5430351e5 100644 --- a/src/main/java/container/Container_ModularNuclearReactor.java +++ b/src/main/java/common/container/Container_ModularNuclearReactor.java @@ -1,4 +1,4 @@ -package container;
+package common.container;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import net.minecraft.entity.player.EntityPlayer;
@@ -43,36 +43,27 @@ public class Container_ModularNuclearReactor extends Container { nextSlotID++;
return nextSlotID - 1;
}
-
+
@Override
- public ItemStack transferStackInSlot(EntityPlayer player, int slotRaw)
- {
+ public ItemStack transferStackInSlot(EntityPlayer player, int slotRaw) {
ItemStack stack = null;
- Slot slot = (Slot)inventorySlots.get(slotRaw);
-
- if (slot != null && slot.getHasStack())
- {
- ItemStack stackInSlot = slot.getStack();
+ final Slot slot = (Slot) inventorySlots.get(slotRaw);
+
+ if (slot != null && slot.getHasStack()) {
+ final ItemStack stackInSlot = slot.getStack();
stack = stackInSlot.copy();
-
- if (slotRaw < 3 * 9)
- {
- if (!mergeItemStack(stackInSlot, 3 * 9, inventorySlots.size(), true))
- {
+
+ if (slotRaw < 3 * 9) {
+ if (!mergeItemStack(stackInSlot, 3 * 9, inventorySlots.size(), true)) {
return null;
}
- }
- else if (!mergeItemStack(stackInSlot, 0, 3 * 9, false))
- {
+ } else if (!mergeItemStack(stackInSlot, 0, 3 * 9, false)) {
return null;
}
-
- if (stackInSlot.stackSize == 0)
- {
- slot.putStack((ItemStack)null);
- }
- else
- {
+
+ if (stackInSlot.stackSize == 0) {
+ slot.putStack(null);
+ } else {
slot.onSlotChanged();
}
}
diff --git a/src/main/java/common/itemBlocks/IB_IchorJar.java b/src/main/java/common/itemBlocks/IB_IchorJar.java new file mode 100644 index 0000000000..11d63c4432 --- /dev/null +++ b/src/main/java/common/itemBlocks/IB_IchorJar.java @@ -0,0 +1,26 @@ +package common.itemBlocks; + + import net.minecraft.block.Block; + import net.minecraft.item.ItemBlock; + import net.minecraft.item.ItemStack; + +public class IB_IchorJar extends ItemBlock { + + public IB_IchorJar(Block block) { super(block); } + + @Override + public int getMetadata(int meta) { + return meta; + } + + @Override + public boolean getHasSubtypes() { + return true; + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName() + "." + stack.getItemDamage(); + } +} + diff --git a/src/main/java/itemBlocks/IB_ItemProxyCable.java b/src/main/java/common/itemBlocks/IB_ItemProxyCable.java index 590cb98285..e4ae431c55 100644 --- a/src/main/java/itemBlocks/IB_ItemProxyCable.java +++ b/src/main/java/common/itemBlocks/IB_ItemProxyCable.java @@ -1,4 +1,4 @@ -package itemBlocks; +package common.itemBlocks; import java.util.List; @@ -6,6 +6,7 @@ import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; public class IB_ItemProxyCable extends ItemBlock { @@ -13,10 +14,9 @@ public class IB_ItemProxyCable extends ItemBlock { super(block); } - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings({"unchecked"}) @Override public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { - lines.add("Connects Item Distribution Nodes"); - lines.add("Wired networks do not require a controller"); + lines.add(StatCollector.translateToLocal("tile.kekztech_itemproxycable_block.0.desc")); } } diff --git a/src/main/java/itemBlocks/IB_ItemProxyEndpoint.java b/src/main/java/common/itemBlocks/IB_ItemProxyEndpoint.java index 90d683c226..b0a1a558a9 100644 --- a/src/main/java/itemBlocks/IB_ItemProxyEndpoint.java +++ b/src/main/java/common/itemBlocks/IB_ItemProxyEndpoint.java @@ -1,4 +1,4 @@ -package itemBlocks; +package common.itemBlocks; import java.util.List; @@ -6,6 +6,7 @@ import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; public class IB_ItemProxyEndpoint extends ItemBlock { @@ -13,10 +14,10 @@ public class IB_ItemProxyEndpoint extends ItemBlock { super(block); } - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings({"unchecked"}) @Override public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { - lines.add("Point the marked side to where you want to provide an inventory proxy to."); - lines.add("Insert an Integrated Circuit to set the network channel."); + lines.add(StatCollector.translateToLocal("tile.kekztech_itemproxyendpoint_block.0.desc")); + lines.add(StatCollector.translateToLocal("tile.kekztech_itemproxyendpoint_block.1.desc")); } } diff --git a/src/main/java/itemBlocks/IB_ItemProxySource.java b/src/main/java/common/itemBlocks/IB_ItemProxySource.java index cc937b3b33..68ab1b00ff 100644 --- a/src/main/java/itemBlocks/IB_ItemProxySource.java +++ b/src/main/java/common/itemBlocks/IB_ItemProxySource.java @@ -1,4 +1,4 @@ -package itemBlocks; +package common.itemBlocks; import java.util.List; @@ -6,6 +6,7 @@ import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; public class IB_ItemProxySource extends ItemBlock { @@ -13,11 +14,11 @@ public class IB_ItemProxySource extends ItemBlock { super(block); } - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings({"unchecked"}) @Override public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { - lines.add("Point to an inventory to act as source for the item proxy network."); - lines.add("Insert an Integrated Circuit to set the network channel."); - lines.add("Only one source can use one channel on the same network."); + lines.add(StatCollector.translateToLocal("tile:kekztech_itemproxysource_block.0.desc")); + lines.add(StatCollector.translateToLocal("tile:kekztech_itemproxysource_block.1.desc")); + lines.add(StatCollector.translateToLocal("tile:kekztech_itemproxysource_block.2.desc")); } } diff --git a/src/main/java/itemBlocks/IB_ItemServerDrive.java b/src/main/java/common/itemBlocks/IB_ItemServerDrive.java index cf492d1b18..a937230da5 100644 --- a/src/main/java/itemBlocks/IB_ItemServerDrive.java +++ b/src/main/java/common/itemBlocks/IB_ItemServerDrive.java @@ -1,4 +1,4 @@ -package itemBlocks; +package common.itemBlocks; import java.util.List; @@ -6,6 +6,7 @@ import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; public class IB_ItemServerDrive extends ItemBlock { @@ -13,9 +14,9 @@ public class IB_ItemServerDrive extends ItemBlock { super(block); } - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings({"unchecked"}) @Override public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { - lines.add("Item Server Storage Drive"); + lines.add(StatCollector.translateToLocal("tile.kekztech_itemserverdrive_block.0.desc")); } } diff --git a/src/main/java/itemBlocks/IB_ItemServerIOPort.java b/src/main/java/common/itemBlocks/IB_ItemServerIOPort.java index bbfaca3065..10803af14c 100644 --- a/src/main/java/itemBlocks/IB_ItemServerIOPort.java +++ b/src/main/java/common/itemBlocks/IB_ItemServerIOPort.java @@ -1,4 +1,4 @@ -package itemBlocks; +package common.itemBlocks; import java.util.List; @@ -6,6 +6,7 @@ import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; public class IB_ItemServerIOPort extends ItemBlock { @@ -13,9 +14,9 @@ public class IB_ItemServerIOPort extends ItemBlock { super(block); } - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings({"unchecked"}) @Override public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { - lines.add("I/O Port for interfacing with an Item Server."); + lines.add(StatCollector.translateToLocal("tile.kekztech_itemserverioport_block.0.desc")); } } diff --git a/src/main/java/itemBlocks/IB_ItemServerRackCasing.java b/src/main/java/common/itemBlocks/IB_ItemServerRackCasing.java index 52a586d8df..f1da1fcb5e 100644 --- a/src/main/java/itemBlocks/IB_ItemServerRackCasing.java +++ b/src/main/java/common/itemBlocks/IB_ItemServerRackCasing.java @@ -1,4 +1,4 @@ -package itemBlocks; +package common.itemBlocks; import java.util.List; @@ -6,6 +6,7 @@ import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; public class IB_ItemServerRackCasing extends ItemBlock { @@ -13,9 +14,9 @@ public class IB_ItemServerRackCasing extends ItemBlock { super(block); } - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings({"unchecked"}) @Override public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { - lines.add("Shiny new server rack"); + lines.add(StatCollector.translateToLocal("tile.kekztech_itemserverrackcasing_block.0.desc=")); } } diff --git a/src/main/java/common/itemBlocks/IB_LapotronicEnergyUnit.java b/src/main/java/common/itemBlocks/IB_LapotronicEnergyUnit.java new file mode 100644 index 0000000000..7891be8ea1 --- /dev/null +++ b/src/main/java/common/itemBlocks/IB_LapotronicEnergyUnit.java @@ -0,0 +1,44 @@ +package common.itemBlocks; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; + +public class IB_LapotronicEnergyUnit extends ItemBlock { + + public IB_LapotronicEnergyUnit(Block block) { + super(block); + } + + @Override + public int getMetadata(int meta) { + return meta; + } + + @Override + public boolean getHasSubtypes() { + return true; + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName() + "." + stack.getItemDamage(); + } + + @SuppressWarnings("unchecked") + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { + lines.add(StatCollector.translateToLocal("tile.kekztech_lapotronicenergyunit_block.desc")); + switch(stack.getItemDamage()) { + case 1: lines.add("Capacity: 100,000,000 EU"); break; + case 2: lines.add("Capacity: 1,000,000,000 EU"); break; + case 3: lines.add("Capacity: 10,000,000,000 EU"); break; + case 4: lines.add("Capacity: 100,000,000,000 EU"); break; + case 5: lines.add("Capacity: 9,223,372,036,854,775,807 EU"); break; + } + } +} diff --git a/src/main/java/common/itemBlocks/IB_SpaceElevator.java b/src/main/java/common/itemBlocks/IB_SpaceElevator.java new file mode 100644 index 0000000000..e2cceda494 --- /dev/null +++ b/src/main/java/common/itemBlocks/IB_SpaceElevator.java @@ -0,0 +1,35 @@ +package common.itemBlocks; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; + +import java.util.List; + +public class IB_SpaceElevator extends ItemBlock { + + public IB_SpaceElevator(Block block) { super(block); } + + @Override + public int getMetadata(int meta) { + return meta; + } + + @Override + public boolean getHasSubtypes() { + return true; + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName() + "." + stack.getItemDamage(); + } + + @SuppressWarnings("unchecked") + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { + lines.add(StatCollector.translateToLocal("tile.kekztech_spaceelevator_block.desc")); + } +} diff --git a/src/main/java/common/itemBlocks/IB_SpaceElevatorCapacitor.java b/src/main/java/common/itemBlocks/IB_SpaceElevatorCapacitor.java new file mode 100644 index 0000000000..053cb2c567 --- /dev/null +++ b/src/main/java/common/itemBlocks/IB_SpaceElevatorCapacitor.java @@ -0,0 +1,22 @@ +package common.itemBlocks; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; + +import java.util.List; + +public class IB_SpaceElevatorCapacitor extends ItemBlock { + + public IB_SpaceElevatorCapacitor(Block block) { + super(block); + } + + @SuppressWarnings("unchecked") + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { + lines.add(StatCollector.translateToLocal("tile.kekztech_spaceelevatorcapacitor_block.desc")); + } +} diff --git a/src/main/java/common/itemBlocks/IB_TFFTMultiHatch.java b/src/main/java/common/itemBlocks/IB_TFFTMultiHatch.java new file mode 100644 index 0000000000..38b8997f0f --- /dev/null +++ b/src/main/java/common/itemBlocks/IB_TFFTMultiHatch.java @@ -0,0 +1,25 @@ +package common.itemBlocks; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; + +public class IB_TFFTMultiHatch extends ItemBlock { + + public IB_TFFTMultiHatch(Block block) { + super(block); + } + + @SuppressWarnings({"unchecked"}) + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { + lines.add(StatCollector.translateToLocal("tile.kekztech_tfftmultihatch_block.0.desc")); + lines.add(StatCollector.translateToLocal("tile.kekztech_tfftmultihatch_block.1.desc")); + lines.add(StatCollector.translateToLocal("tile.kekztech_tfftmultihatch_block.2.desc")); + lines.add(StatCollector.translateToLocal("tile.kekztech_tfftmultihatch_block.3.desc")); + } +} diff --git a/src/main/java/itemBlocks/IB_TFFTStorageFieldBlockT1.java b/src/main/java/common/itemBlocks/IB_TFFTStorageFieldBlockT1.java index 783db3ec00..13e6e06f50 100644 --- a/src/main/java/itemBlocks/IB_TFFTStorageFieldBlockT1.java +++ b/src/main/java/common/itemBlocks/IB_TFFTStorageFieldBlockT1.java @@ -1,12 +1,13 @@ -package itemBlocks; +package common.itemBlocks; import java.util.List; -import blocks.Block_TFFTStorageFieldBlockT1; +import common.blocks.Block_TFFTStorageFieldBlockT1; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; public class IB_TFFTStorageFieldBlockT1 extends ItemBlock { @@ -14,12 +15,12 @@ public class IB_TFFTStorageFieldBlockT1 extends ItemBlock { super(block); } - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings({"unchecked"}) @Override public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { - lines.add("This is not a fluid tank"); + lines.add(StatCollector.translateToLocal("tile.kekztech_tfftstoragefieldblock1_block.0.desc")); lines.add("Capacity: " + Block_TFFTStorageFieldBlockT1.getCapacity() + "L"); - lines.add("Power Draw: 0.5EU/t"); + lines.add("Power Draw: +0.5EU/t"); } } diff --git a/src/main/java/itemBlocks/IB_TFFTStorageFieldBlockT2.java b/src/main/java/common/itemBlocks/IB_TFFTStorageFieldBlockT2.java index b9fee22647..e6a680f1f6 100644 --- a/src/main/java/itemBlocks/IB_TFFTStorageFieldBlockT2.java +++ b/src/main/java/common/itemBlocks/IB_TFFTStorageFieldBlockT2.java @@ -1,12 +1,13 @@ -package itemBlocks; +package common.itemBlocks; import java.util.List; -import blocks.Block_TFFTStorageFieldBlockT2; +import common.blocks.Block_TFFTStorageFieldBlockT2; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; public class IB_TFFTStorageFieldBlockT2 extends ItemBlock { @@ -14,12 +15,12 @@ public class IB_TFFTStorageFieldBlockT2 extends ItemBlock { super(block); } - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings({"unchecked"}) @Override public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { - lines.add("This is not a fluid tank"); + lines.add(StatCollector.translateToLocal("tile.kekztech_tfftstoragefieldblock1_block.0.desc")); lines.add("Capacity: " + Block_TFFTStorageFieldBlockT2.getCapacity() + "L"); - lines.add("Power Draw: 1EU/t"); + lines.add("Power Draw: +1EU/t"); } } diff --git a/src/main/java/itemBlocks/IB_TFFTStorageFieldBlockT3.java b/src/main/java/common/itemBlocks/IB_TFFTStorageFieldBlockT3.java index 889470644d..847e43f8ab 100644 --- a/src/main/java/itemBlocks/IB_TFFTStorageFieldBlockT3.java +++ b/src/main/java/common/itemBlocks/IB_TFFTStorageFieldBlockT3.java @@ -1,12 +1,13 @@ -package itemBlocks; +package common.itemBlocks; import java.util.List; -import blocks.Block_TFFTStorageFieldBlockT3; +import common.blocks.Block_TFFTStorageFieldBlockT3; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; public class IB_TFFTStorageFieldBlockT3 extends ItemBlock { @@ -14,12 +15,12 @@ public class IB_TFFTStorageFieldBlockT3 extends ItemBlock { super(block); } - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings({"unchecked"}) @Override public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { - lines.add("This is not a fluid tank"); + lines.add(StatCollector.translateToLocal("tile.kekztech_tfftstoragefieldblock1_block.0.desc")); lines.add("Capacity: " + Block_TFFTStorageFieldBlockT3.getCapacity() + "L"); - lines.add("Power Draw: 2EU/t"); + lines.add("Power Draw: +2EU/t"); } } diff --git a/src/main/java/itemBlocks/IB_TFFTStorageFieldBlockT4.java b/src/main/java/common/itemBlocks/IB_TFFTStorageFieldBlockT4.java index 960dee7f6b..ce35f9c4d4 100644 --- a/src/main/java/itemBlocks/IB_TFFTStorageFieldBlockT4.java +++ b/src/main/java/common/itemBlocks/IB_TFFTStorageFieldBlockT4.java @@ -1,12 +1,13 @@ -package itemBlocks; +package common.itemBlocks; import java.util.List; -import blocks.Block_TFFTStorageFieldBlockT4; +import common.blocks.Block_TFFTStorageFieldBlockT4; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; public class IB_TFFTStorageFieldBlockT4 extends ItemBlock { @@ -14,12 +15,12 @@ public class IB_TFFTStorageFieldBlockT4 extends ItemBlock { super(block); } - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings({"unchecked"}) @Override public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { - lines.add("This is not a fluid tank"); + lines.add(StatCollector.translateToLocal("tile.kekztech_tfftstoragefieldblock1_block.0.desc")); lines.add("Capacity: " + Block_TFFTStorageFieldBlockT4.getCapacity() + "L"); - lines.add("Power Draw: 4EU/t"); + lines.add("Power Draw: +4EU/t"); } } diff --git a/src/main/java/itemBlocks/IB_TFFTStorageFieldBlockT5.java b/src/main/java/common/itemBlocks/IB_TFFTStorageFieldBlockT5.java index caef257f93..b7c8e8190c 100644 --- a/src/main/java/itemBlocks/IB_TFFTStorageFieldBlockT5.java +++ b/src/main/java/common/itemBlocks/IB_TFFTStorageFieldBlockT5.java @@ -1,12 +1,13 @@ -package itemBlocks; +package common.itemBlocks; import java.util.List; -import blocks.Block_TFFTStorageFieldBlockT5; +import common.blocks.Block_TFFTStorageFieldBlockT5; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; public class IB_TFFTStorageFieldBlockT5 extends ItemBlock { @@ -14,12 +15,12 @@ public class IB_TFFTStorageFieldBlockT5 extends ItemBlock { super(block); } - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings({"unchecked"}) @Override public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { - lines.add("This is not a fluid tank"); + lines.add(StatCollector.translateToLocal("tile.kekztech_tfftstoragefieldblock1_block.0.desc")); lines.add("Capacity: " + Block_TFFTStorageFieldBlockT5.getCapacity() + "L"); - lines.add("Power Draw: 0.5EU/t"); + lines.add("Power Draw: +8EU/t"); } }
\ No newline at end of file diff --git a/src/main/java/common/itemBlocks/IB_ThaumiumReinforcedJar.java b/src/main/java/common/itemBlocks/IB_ThaumiumReinforcedJar.java new file mode 100644 index 0000000000..30b44f962c --- /dev/null +++ b/src/main/java/common/itemBlocks/IB_ThaumiumReinforcedJar.java @@ -0,0 +1,25 @@ +package common.itemBlocks; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; + +public class IB_ThaumiumReinforcedJar extends ItemBlock { + + public IB_ThaumiumReinforcedJar(Block block) { super(block); } + + @Override + public int getMetadata(int meta) { + return meta; + } + + @Override + public boolean getHasSubtypes() { + return true; + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName() + "." + stack.getItemDamage(); + } +} diff --git a/src/main/java/tileentities/GTMTE_FluidMultiStorage.java b/src/main/java/common/tileentities/GTMTE_FluidMultiStorage.java index 945309ad80..1c32525c4e 100644 --- a/src/main/java/tileentities/GTMTE_FluidMultiStorage.java +++ b/src/main/java/common/tileentities/GTMTE_FluidMultiStorage.java @@ -1,18 +1,5 @@ -package tileentities;
+package common.tileentities;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import org.lwjgl.input.Keyboard;
-
-import blocks.Block_TFFTCasing;
-import blocks.Block_TFFTMultiHatch;
-import blocks.Block_TFFTStorageFieldBlockT1;
-import blocks.Block_TFFTStorageFieldBlockT2;
-import blocks.Block_TFFTStorageFieldBlockT3;
-import blocks.Block_TFFTStorageFieldBlockT4;
-import blocks.Block_TFFTStorageFieldBlockT5;
import gregtech.api.enums.Textures.BlockIcons;
import gregtech.api.gui.GT_GUIContainer_MultiMachine;
import gregtech.api.interfaces.ITexture;
@@ -32,29 +19,36 @@ import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import org.lwjgl.input.Keyboard;
+
+import common.Blocks;
+import common.blocks.*;
import util.MultiBlockTooltipBuilder;
import util.Vector3i;
import util.Vector3ic;
+import java.util.ArrayList;
+import java.util.HashSet;
+
public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase {
- private final String glassNameAE2 = "tile.appliedenergistics2.BlockQuartzGlass";
- private final String glassNameStained = "tile.stainedGlass";
- private final Block CASING = Block_TFFTCasing.getInstance();
- private final Block_TFFTStorageFieldBlockT1 STORAGE_FIELD1 = Block_TFFTStorageFieldBlockT1.getInstance();
- private final Block_TFFTStorageFieldBlockT2 STORAGE_FIELD2 = Block_TFFTStorageFieldBlockT2.getInstance();
- private final Block_TFFTStorageFieldBlockT3 STORAGE_FIELD3 = Block_TFFTStorageFieldBlockT3.getInstance();
- private final Block_TFFTStorageFieldBlockT4 STORAGE_FIELD4 = Block_TFFTStorageFieldBlockT4.getInstance();
- private final Block_TFFTStorageFieldBlockT5 STORAGE_FIELD5 = Block_TFFTStorageFieldBlockT5.getInstance();
- private final Block MULTI_HATCH = Block_TFFTMultiHatch.getInstance();
- private final int CASING_TEXTURE_ID = 176;
-
+ private final static String glassNameIC2Reinforced = "blockAlloyGlass";
+ private final static Block CASING = Blocks.tfftCasing;
+ private final static Block_TFFTStorageFieldBlockT1 STORAGE_FIELD1 = (Block_TFFTStorageFieldBlockT1) Blocks.tfftStorageField1;
+ private final static Block_TFFTStorageFieldBlockT2 STORAGE_FIELD2 = (Block_TFFTStorageFieldBlockT2) Blocks.tfftStorageField2;
+ private final static Block_TFFTStorageFieldBlockT3 STORAGE_FIELD3 = (Block_TFFTStorageFieldBlockT3) Blocks.tfftStorageField3;
+ private final static Block_TFFTStorageFieldBlockT4 STORAGE_FIELD4 = (Block_TFFTStorageFieldBlockT4) Blocks.tfftStorageField4;
+ private final static Block_TFFTStorageFieldBlockT5 STORAGE_FIELD5 = (Block_TFFTStorageFieldBlockT5) Blocks.tfftStorageField5;
+ private final static Block MULTI_HATCH = Blocks.tfftMultiHatch;
+ private final static int CASING_TEXTURE_ID = 176;
+
private MultiFluidHandler mfh;
private HashSet<TE_TFFTMultiHatch> multiHatches = new HashSet<>();
private int runningCost = 0;
private boolean doVoidExcess = false;
-
+ private byte fluidSelector = 0;
+
public GTMTE_FluidMultiStorage(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
}
@@ -62,7 +56,7 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { public GTMTE_FluidMultiStorage(String aName) {
super(aName);
}
-
+
@Override
public IMetaTileEntity newMetaEntity(IGregTechTileEntity var1) {
return new GTMTE_FluidMultiStorage(super.mName);
@@ -73,7 +67,7 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { final MultiBlockTooltipBuilder b = new MultiBlockTooltipBuilder();
b.addInfo("High-Tech fluid tank that can hold up to 25 different fluids!")
.addInfo("Has 1/25th of the total capacity as capacity for each fluid.")
- .addInfo("Rightclicking the controller with a screwdriver will turn on excess voiding.")
+ .addInfo("Right clicking the controller with a screwdriver will turn on excess voiding.")
.addInfo("Fluid storage amount and running cost depends on the storage field blocks used.")
.addSeparator()
.addInfo("Note on hatch locking:")
@@ -83,11 +77,12 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { .beginStructureBlock(5, 9, 5)
.addController("Top Center")
.addEnergyHatch("Any top or bottom casing")
- .addOtherStructurePart("Inner 3x7x3 tube", "Storage Field Blocks")
- .addOtherStructurePart("Outer 5x7x5 glass shell", "AE2 Quartz Glass of Vanilla Stained Glass")
- .addIOHatches("Instead of any casing or glass, have to touch storage field. True for the Multi-Hatch as well.")
+ .addOtherStructurePart("Inner 3x7x3 solid pillar", "Storage Field Blocks")
+ .addOtherStructurePart("Outer 5x7x5 glass shell", "IC2 Reinforced Glass")
+ .addMaintenanceHatch("Any top or bottom casing")
+ .addIOHatches("Instead of any casing or glass, have to touch storage field.")
.signAndFinalize("Kekzdealer");
- if(!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
+ if (!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
return b.getInformation();
} else {
return b.getStructureInformation();
@@ -96,12 +91,12 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { @Override
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex,
- boolean aActive, boolean aRedstone) {
+ boolean aActive, boolean aRedstone) {
return aSide == aFacing
? new ITexture[]{BlockIcons.casingTexturePages[1][48],
- new GT_RenderedTexture(aActive
- ? BlockIcons.OVERLAY_FRONT_LARGE_CHEMICAL_REACTOR_ACTIVE
- : BlockIcons.OVERLAY_FRONT_LARGE_CHEMICAL_REACTOR)}
+ new GT_RenderedTexture(aActive
+ ? BlockIcons.OVERLAY_FRONT_LARGE_CHEMICAL_REACTOR_ACTIVE
+ : BlockIcons.OVERLAY_FRONT_LARGE_CHEMICAL_REACTOR)}
: new ITexture[]{BlockIcons.casingTexturePages[1][48]};
}
@@ -117,45 +112,41 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { @Override
public boolean checkRecipe(ItemStack guiSlotItem) {
-
- this.mEfficiency = 10000 - (this.getIdealStatus() - this.getRepairStatus()) * 1000;
- this.mEfficiencyIncrease = 10000;
- this.mEUt = runningCost;
+
+ super.mEfficiency = 10000 - (super.getIdealStatus() - super.getRepairStatus()) * 1000;
+ super.mEfficiencyIncrease = 10000;
+ super.mEUt = runningCost;
super.mMaxProgresstime = 10;
+ if(guiSlotItem != null && guiSlotItem.getUnlocalizedName().equals("gt.integrated_circuit")) {
+ this.fluidSelector = (byte) guiSlotItem.getItemDamage();
+ }
+
// If there are no basic I/O hatches, let multi hatches handle it and skip a lot of code!
- if(multiHatches.size() > 0 && super.mInputHatches.size() == 0 && super.mOutputHatches.size() == 0) {
+ if (multiHatches.size() > 0 && super.mInputHatches.size() == 0 && super.mOutputHatches.size() == 0) {
return true;
}
-
+
// Suck in fluids
final ArrayList<FluidStack> inputHatchFluids = super.getStoredFluids();
- if(inputHatchFluids.size() > 0) {
-
- for(FluidStack fluidStack : inputHatchFluids) {
-
+ if (inputHatchFluids.size() > 0) {
+
+ for (FluidStack fluidStack : inputHatchFluids) {
+
final int pushed = mfh.pushFluid(fluidStack, true);
final FluidStack toDeplete = fluidStack.copy();
toDeplete.amount = pushed;
- super.depleteInput(toDeplete);
- }
-
- // Void excess if that is turned on
- if(doVoidExcess) {
- for(GT_MetaTileEntity_Hatch_Input inputHatch : super.mInputHatches) {
- inputHatch.setDrainableStack(null);
- }
+ super.depleteInput(toDeplete);
}
}
-
+
// Push out fluids
- if(guiSlotItem != null && guiSlotItem.getUnlocalizedName().equals("gt.integrated_circuit")) {
- final int config = guiSlotItem.getItemDamage();
- final FluidStack storedFluid = mfh.getFluid(config);
+ if (guiSlotItem != null && guiSlotItem.getUnlocalizedName().equals("gt.integrated_circuit")) {
+ final FluidStack storedFluid = mfh.getFluid(fluidSelector);
// Sum available output capacity
int possibleOutput = 0;
- for(GT_MetaTileEntity_Hatch_Output outputHatch : super.mOutputHatches) {
- if(outputHatch.isFluidLocked() && outputHatch.getLockedFluidName().equals(storedFluid.getUnlocalizedName())) {
+ for (GT_MetaTileEntity_Hatch_Output outputHatch : super.mOutputHatches) {
+ if (outputHatch.isFluidLocked() && outputHatch.getLockedFluidName().equals(storedFluid.getUnlocalizedName())) {
possibleOutput += outputHatch.getCapacity() - outputHatch.getFluidAmount();
} else if (outputHatch.getFluid() != null && outputHatch.getFluid().getUnlocalizedName().equals(storedFluid.getUnlocalizedName())) {
possibleOutput += outputHatch.getCapacity() - outputHatch.getFluidAmount();
@@ -166,17 +157,15 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { // Output as much as possible
final FluidStack tempStack = storedFluid.copy();
tempStack.amount = possibleOutput;
- tempStack.amount = mfh.pullFluid(tempStack, config, true);
+ tempStack.amount = mfh.pullFluid(tempStack, fluidSelector, true);
super.addOutput(tempStack);
-
+
} else {
- final Iterator<FluidStack> storageIterator = mfh.getFluids().iterator();
- while(storageIterator.hasNext()) {
- FluidStack storedFluid = storageIterator.next();
+ for (FluidStack storedFluid : mfh.getFluids()) {
// Sum available output capacity
int possibleOutput = 0;
- for(GT_MetaTileEntity_Hatch_Output outputHatch : super.mOutputHatches) {
- if(outputHatch.isFluidLocked() && outputHatch.getLockedFluidName().equals(storedFluid.getUnlocalizedName())) {
+ for (GT_MetaTileEntity_Hatch_Output outputHatch : super.mOutputHatches) {
+ if (outputHatch.isFluidLocked() && outputHatch.getLockedFluidName().equals(storedFluid.getUnlocalizedName())) {
possibleOutput += outputHatch.getCapacity() - outputHatch.getFluidAmount();
} else if (outputHatch.getFluid() != null && outputHatch.getFluid().getUnlocalizedName().equals(storedFluid.getUnlocalizedName())) {
possibleOutput += outputHatch.getCapacity() - outputHatch.getFluidAmount();
@@ -192,66 +181,56 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { super.addOutput(tempStack);
}
}
-
+
return true;
}
-
+
@Override
public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
super.onPostTick(aBaseMetaTileEntity, aTick);
-
- if(mfh != null) {
+
+ if (mfh != null) {
mfh.setLock(!super.getBaseMetaTileEntity().isActive());
+ mfh.setFluidSelector(fluidSelector);
+ mfh.setDoVoidExcess(doVoidExcess);
}
}
-
+
public Vector3ic rotateOffsetVector(Vector3ic forgeDirection, int x, int y, int z) {
final Vector3i offset = new Vector3i();
-
+
// either direction on z-axis
- if(forgeDirection.x() == 0 && forgeDirection.z() == -1) {
+ if (forgeDirection.x() == 0 && forgeDirection.z() == -1) {
offset.x = x;
offset.y = y;
offset.z = z;
}
- if(forgeDirection.x() == 0 && forgeDirection.z() == 1) {
+ if (forgeDirection.x() == 0 && forgeDirection.z() == 1) {
offset.x = -x;
offset.y = y;
offset.z = -z;
}
// either direction on x-axis
- if(forgeDirection.x() == -1 && forgeDirection.z() == 0) {
+ if (forgeDirection.x() == -1 && forgeDirection.z() == 0) {
offset.x = z;
offset.y = y;
offset.z = -x;
}
- if(forgeDirection.x() == 1 && forgeDirection.z() == 0) {
+ if (forgeDirection.x() == 1 && forgeDirection.z() == 0) {
offset.x = -z;
offset.y = y;
offset.z = x;
}
// either direction on y-axis
- if(forgeDirection.y() == -1) {
+ if (forgeDirection.y() == -1) {
offset.x = x;
offset.y = z;
offset.z = y;
}
-
+
return offset;
}
-
- /**
- * Checks structural integrity and registers machine parts.
- * Appears to often not run but can be jump started by forcing a block update on the controller.
- * (Place a piece of dirt on the front face and remove it again. Dirty fix lol.)
- *
- * @param thisController
- * Object reference to this controller block's Tile Entity.
- * @param guiSlotItem
- * References the item stack that can be placed in that GUI slot
- * in the top right.
- */
- @SuppressWarnings("static-access")
+
@Override
public boolean checkMachine(IGregTechTileEntity thisController, ItemStack guiSlotItem) {
// Figure out the vector for the direction the back face of the controller is facing
@@ -259,55 +238,56 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { ForgeDirection.getOrientation(thisController.getBackFacing()).offsetX,
ForgeDirection.getOrientation(thisController.getBackFacing()).offsetY,
ForgeDirection.getOrientation(thisController.getBackFacing()).offsetZ
- );
- int minCasingAmount = 20;
- boolean formationChecklist = true; // if this is still true at the end, machine is good to go :)
+ );
+ int minCasingAmount = 20;
+ boolean formationChecklist = true; // If this is still true at the end, machine is good to go :)
float runningCostAcc = 0;
double fluidCapacityAcc = 0;
-
+
multiHatches.clear();
-
- // Front slice
- for(int X = -2; X <= 2; X++) {
- for(int Y = -2; Y <= 2; Y++) {
- if(X == 0 && Y == 0) {
- continue; // is controller
+
+ // Front segment
+ for (int X = -2; X <= 2; X++) {
+ for (int Y = -2; Y <= 2; Y++) {
+ if (X == 0 && Y == 0) {
+ continue; // Skip controller
}
-
+
// Get next TE
final Vector3ic offset = rotateOffsetVector(forgeDirection, X, Y, 0);
- IGregTechTileEntity currentTE =
+ final IGregTechTileEntity currentTE =
thisController.getIGregTechTileEntityOffset(offset.x(), offset.y(), offset.z());
-
+
// Fluid hatches should touch the storage field.
// Maintenance/Energy hatch can go anywhere
- if(X > -2 && X < 2 && Y > -2 && Y < 2) {
+ if (X > -2 && X < 2 && Y > -2 && Y < 2) {
if (!super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID)
&& !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID)
&& !super.addOutputToMachineList(currentTE, CASING_TEXTURE_ID)
&& !super.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID)) {
-
+
+ final Block b = thisController.getBlockOffset(offset.x(), offset.y(), offset.z());
+
// If it's not a hatch, is it the right casing for this machine? Check block and block meta.
// Also check for multi hatch
- if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) {
+ if (b == CASING) {
// Seems to be valid casing. Decrement counter.
minCasingAmount--;
- } else if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == MULTI_HATCH) {
- final TE_TFFTMultiHatch mh =
+ } else if (b == MULTI_HATCH) {
+ final TE_TFFTMultiHatch mh =
(TE_TFFTMultiHatch) thisController.getWorld().getTileEntity(
- thisController.getXCoord() + offset.x(),
+ thisController.getXCoord() + offset.x(),
thisController.getYCoord() + offset.y(),
thisController.getZCoord() + offset.z());
multiHatches.add(mh);
- }
- else {
+ } else {
formationChecklist = false;
}
}
} else {
if (!super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID)
&& !super.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID)) {
-
+
// If it's not a hatch, is it the right casing for this machine? Check block and block meta.
if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) {
// Seems to be valid casing. Decrement counter.
@@ -319,72 +299,67 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { }
}
}
-
- // Middle three slices
- for(int X = -2; X <= 2; X++) {
- for(int Y = -2; Y <= 2; Y++) {
- for(int Z = -1; Z >= -7; Z--) {
+
+ // Middle seven long segment
+ for (int X = -2; X <= 2; X++) {
+ for (int Y = -2; Y <= 2; Y++) {
+ for (int Z = -1; Z >= -7; Z--) {
final Vector3ic offset = rotateOffsetVector(forgeDirection, X, Y, Z);
- if(X > -2 && X < 2 && Y > -2 && Y < 2) {
- if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName()
+ if (X > -2 && X < 2 && Y > -2 && Y < 2) {
+ if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName()
.equals(STORAGE_FIELD1.getUnlocalizedName())) {
runningCostAcc += 0.5f;
- fluidCapacityAcc += (float) STORAGE_FIELD1.getCapacity();
- } else if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName()
+ fluidCapacityAcc += (float) Block_TFFTStorageFieldBlockT1.getCapacity();
+ } else if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName()
.equals(STORAGE_FIELD2.getUnlocalizedName())) {
runningCostAcc += 1.0f;
- fluidCapacityAcc += (float) STORAGE_FIELD2.getCapacity();
- } else if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName()
+ fluidCapacityAcc += (float) Block_TFFTStorageFieldBlockT2.getCapacity();
+ } else if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName()
.equals(STORAGE_FIELD3.getUnlocalizedName())) {
runningCostAcc += 2.0f;
- fluidCapacityAcc += (float) STORAGE_FIELD3.getCapacity();
- } else if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName()
+ fluidCapacityAcc += (float) Block_TFFTStorageFieldBlockT3.getCapacity();
+ } else if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName()
.equals(STORAGE_FIELD4.getUnlocalizedName())) {
runningCostAcc += 4.0f;
- fluidCapacityAcc += (float) STORAGE_FIELD4.getCapacity();
- } else if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName()
- .equals(STORAGE_FIELD4.getUnlocalizedName())) {
+ fluidCapacityAcc += (float) Block_TFFTStorageFieldBlockT4.getCapacity();
+ } else if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName()
+ .equals(STORAGE_FIELD5.getUnlocalizedName())) {
runningCostAcc += 8.0f;
- fluidCapacityAcc += (float) STORAGE_FIELD5.getCapacity();
+ fluidCapacityAcc += (float) Block_TFFTStorageFieldBlockT5.getCapacity();
} else {
formationChecklist = false;
}
continue;
}
-
+
// Get next TE
- IGregTechTileEntity currentTE =
- thisController.getIGregTechTileEntityOffset(offset.x(), offset.y(), offset.z());// x, y ,z
-
- // Corner allows only glass or casings
- if(X == -2 && Y == -2 || X == 2 && Y == 2 || X == -2 && Y == 2 || X == 2 && Y == -2) {
- if(!(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName().equals(glassNameAE2)
- || thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName().equals(glassNameStained)
- || thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING)) {
- formationChecklist = false; // do nothing yet
+ final IGregTechTileEntity currentTE =
+ thisController.getIGregTechTileEntityOffset(offset.x(), offset.y(), offset.z());
+
+ // Corner allows only glass
+ if (X == -2 && Y == -2 || X == 2 && Y == 2 || X == -2 && Y == 2 || X == 2 && Y == -2) {
+ if (!(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName().equals(glassNameIC2Reinforced))) {
+ formationChecklist = false;
}
} else {
// Tries to add TE as either of those kinds of hatches.
// The number is the texture index number for the texture that needs to be painted over the hatch texture (TAE for GT++)
- if ( !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID)
- && !super.addOutputToMachineList(currentTE, CASING_TEXTURE_ID)) {
-
+ if (!super.addInputToMachineList(currentTE, CASING_TEXTURE_ID)
+ && !super.addOutputToMachineList(currentTE, CASING_TEXTURE_ID)) {
+
// If it's not a hatch, is it the right casing for this machine? Check block and block meta.
// Also check for multi hatch
if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) {
// Seems to be valid casing. Decrement counter.
minCasingAmount--;
- } else if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == MULTI_HATCH) {
- final TE_TFFTMultiHatch mh =
+ } else if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == MULTI_HATCH) {
+ final TE_TFFTMultiHatch mh =
(TE_TFFTMultiHatch) thisController.getWorld().getTileEntity(
- thisController.getXCoord() + offset.x(),
+ thisController.getXCoord() + offset.x(),
thisController.getYCoord() + offset.y(),
thisController.getZCoord() + offset.z());
multiHatches.add(mh);
- } else if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName().equals(glassNameAE2)
- || thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName().equals(glassNameStained)) {
- // do nothing lol
- } else {
+ } else if (!thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName().equals(glassNameIC2Reinforced)) {
formationChecklist = false;
}
}
@@ -392,31 +367,31 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { }
}
}
-
- // Back slice
- for(int X = -2; X <= 2; X++) {
- for(int Y = -2; Y <= 2; Y++) {
+
+ // Back segment
+ for (int X = -2; X <= 2; X++) {
+ for (int Y = -2; Y <= 2; Y++) {
// Get next TE
final Vector3ic offset = rotateOffsetVector(forgeDirection, X, Y, -8);
- IGregTechTileEntity currentTE =
+ final IGregTechTileEntity currentTE =
thisController.getIGregTechTileEntityOffset(offset.x(), offset.y(), offset.z());
-
+
// Fluid hatches should touch the storage field.
// Maintenance/Energy hatch can go anywhere
- if(X > -2 && X < 2 && Y > -2 && Y < 2) {
+ if (X > -2 && X < 2 && Y > -2 && Y < 2) {
if (!super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID)
&& !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID)
&& !super.addOutputToMachineList(currentTE, CASING_TEXTURE_ID)
&& !super.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID)) {
-
+
// If it's not a hatch, is it the right casing for this machine? Check block and block meta.
if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) {
// Seems to be valid casing. Decrement counter.
minCasingAmount--;
- } else if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == MULTI_HATCH) {
- final TE_TFFTMultiHatch mh =
+ } else if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == MULTI_HATCH) {
+ final TE_TFFTMultiHatch mh =
(TE_TFFTMultiHatch) thisController.getWorld().getTileEntity(
- thisController.getXCoord() + offset.x(),
+ thisController.getXCoord() + offset.x(),
thisController.getYCoord() + offset.y(),
thisController.getZCoord() + offset.z());
multiHatches.add(mh);
@@ -427,7 +402,7 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { } else {
if (!super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID)
&& !super.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID)) {
-
+
// If it's not a hatch, is it the right casing for this machine? Check block and block meta.
if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) {
// Seems to be valid casing. Decrement counter.
@@ -439,96 +414,96 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { }
}
}
-
- if(this.mEnergyHatches.size() < 1) {
- System.out.println("At least one energy hatch is required!");
+
+ if (this.mEnergyHatches.size() < 1) {
formationChecklist = false;
}
-
- if(this.mMaintenanceHatches.size() < 1) {
- System.out.println("You need a maintenance hatch to do maintenance.");
+
+ if (this.mMaintenanceHatches.size() < 1) {
formationChecklist = false;
}
-
- if(minCasingAmount > 0) {
+
+ if (minCasingAmount > 0) {
formationChecklist = false;
}
-
- if(formationChecklist) {
- runningCost = (int) Math.round(-runningCostAcc);
+
+ if (formationChecklist) {
+ runningCost = Math.round(-runningCostAcc);
// Update MultiFluidHandler in case storage cells have been changed
final int capacityPerFluid = (int) Math.round(fluidCapacityAcc / 25.0f);
- if(mfh == null) {
+ if (mfh == null) {
mfh = new MultiFluidHandler(capacityPerFluid);
} else {
- if(mfh.getCapacity() != capacityPerFluid) {
+ if (mfh.getCapacity() != capacityPerFluid) {
mfh = new MultiFluidHandler(capacityPerFluid, mfh.getFluids());
}
}
- for(TE_TFFTMultiHatch mh : multiHatches) {
+ for (TE_TFFTMultiHatch mh : multiHatches) {
mh.setMultiFluidHandler(mfh);
}
}
-
+
return formationChecklist;
}
-
+
@Override
public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
- if(doVoidExcess) {
+ if (doVoidExcess) {
doVoidExcess = false;
aPlayer.addChatComponentMessage(new ChatComponentText("Auto-voiding turned off"));
} else {
doVoidExcess = true;
aPlayer.addChatComponentMessage(new ChatComponentText("Auto-voiding turned on"));
- }
+ }
}
-
+
@Override
public String[] getInfoData() {
final ArrayList<String> ll = mfh.getInfoData();
-
+
ll.add(EnumChatFormatting.YELLOW + "Operational Data:" + EnumChatFormatting.RESET);
ll.add("Auto-voiding: " + doVoidExcess);
ll.add("Per-Fluid Capacity: " + mfh.getCapacity() + "L");
- ll.add("Running Cost: " + (-super.mEUt) + "EU/t");
- ll.add("Maintenance Status: " + ((super.getRepairStatus() == super.getIdealStatus())
- ? EnumChatFormatting.GREEN + "Working perfectly" + EnumChatFormatting.RESET
- : EnumChatFormatting.RED + "Has Problems" + EnumChatFormatting.RESET));
+ ll.add("Running Cost: "
+ // mEUt does not naturally reflect efficiency status. Do that here.
+ + ((-super.mEUt) * 10000 / Math.max(1000, super.mEfficiency)) + "EU/t");
+ ll.add("Maintenance Status: " + ((super.getRepairStatus() == super.getIdealStatus())
+ ? EnumChatFormatting.GREEN + "Working perfectly" + EnumChatFormatting.RESET
+ : EnumChatFormatting.RED + "Has Problems" + EnumChatFormatting.RESET));
ll.add("---------------------------------------------");
-
+
final String[] a = new String[ll.size()];
return ll.toArray(a);
}
-
+
@Override
public void saveNBTData(NBTTagCompound nbt) {
nbt = (nbt == null) ? new NBTTagCompound() : nbt;
-
+
nbt.setInteger("runningCost", runningCost);
nbt.setBoolean("doVoidExcess", doVoidExcess);
nbt.setInteger("capacityPerFluid", mfh.getCapacity());
nbt.setTag("fluids", mfh.saveNBTData(new NBTTagCompound()));
-
+
super.saveNBTData(nbt);
}
-
+
@Override
public void loadNBTData(NBTTagCompound nbt) {
nbt = (nbt == null) ? new NBTTagCompound() : nbt;
-
+
runningCost = nbt.getInteger("runningCost");
doVoidExcess = nbt.getBoolean("doVoidExcess");
-
+
mfh = new MultiFluidHandler();
mfh.loadNBTData(nbt);
- for(TE_TFFTMultiHatch mh : multiHatches) {
+ for (TE_TFFTMultiHatch mh : multiHatches) {
mh.setMultiFluidHandler(mfh);
}
super.loadNBTData(nbt);
}
-
+
@Override
public boolean isGivingInformation() {
return true;
@@ -553,4 +528,4 @@ public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { public boolean explodesOnComponentBreak(ItemStack var1) {
return false;
}
-}
+}
\ No newline at end of file diff --git a/src/main/java/tileentities/GTMTE_ItemServer.java b/src/main/java/common/tileentities/GTMTE_ItemServer.java index 9b4d50c5d4..cfff360ce4 100644 --- a/src/main/java/tileentities/GTMTE_ItemServer.java +++ b/src/main/java/common/tileentities/GTMTE_ItemServer.java @@ -1,13 +1,14 @@ -package tileentities; +package common.tileentities; import java.util.ArrayList; import java.util.HashSet; import org.lwjgl.input.Keyboard; -import blocks.Block_ItemServerDrive; -import blocks.Block_ItemServerIOPort; -import blocks.Block_ItemServerRackCasing; +import common.Blocks; +import common.blocks.Block_ItemServerDrive; +import common.blocks.Block_ItemServerIOPort; +import common.blocks.Block_ItemServerRackCasing; import gregtech.api.enums.Textures.BlockIcons; import gregtech.api.gui.GT_GUIContainer_MultiMachine; import gregtech.api.interfaces.ITexture; @@ -27,14 +28,15 @@ import util.Vector3ic; public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { - private static final int BASE_SLICE_ENERGY_COST = 1; + private static final int BASE_SEGMENT_ENERGY_COST = 1; private static final int BASE_PER_ITEM_CAPACITY = 1024; - private static final int BASE_ITEM_TYPES_PER_SLICE = 128; + private static final int BASE_ITEM_TYPES_PER_SEGMENT = 4; - private final Block_ItemServerDrive DRIVE = Block_ItemServerDrive.getInstance(); - private final Block_ItemServerRackCasing CASING = Block_ItemServerRackCasing.getInstance(); - private final Block_ItemServerIOPort IO_PORT = Block_ItemServerIOPort.getInstance(); - private final String ALU_FRAME_BOX_NAME = "gt.blockmachines.gt_frame_aluminium"; + private final Block_ItemServerDrive DRIVE = (Block_ItemServerDrive) Blocks.itemServerDrive; + private final Block_ItemServerRackCasing CASING = (Block_ItemServerRackCasing) Blocks.itemServerRackCasing; + private final Block_ItemServerIOPort IO_PORT = (Block_ItemServerIOPort) Blocks.itemServerIOPort; + private final String ALU_FRAME_BOX_NAME = "gt.blockmachines"; + private final int ALU_FRAME_BOX_META = 6; private final int CASING_TEXTURE_ID = 176; private MultiItemHandler mih; @@ -57,9 +59,10 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { @Override public String[] getDescription() { final MultiBlockTooltipBuilder b = new MultiBlockTooltipBuilder(); - b.addInfo("High-Tech item storage!") + b.addInfo("[W.I.P - Probably doesn't work]") + .addInfo("High-Tech item storage!") .addInfo("Variable length: Slices 2-4 can be repeated as long as the total length does not exceed 16 blocks.") - .addInfo("Each slice offers storage for 128 item types") + .addInfo("Each segment offers storage for 128 item types") .addInfo("Storage capacity per item depends on the controller configuration.") .addInfo("Insert an Integrated Circuit into the controller with your desired configuration.") .addInfo("The base configuration (0) is 1024 items per type. For each higher level, the capacity quadruples.") @@ -74,7 +77,6 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { .addOtherStructurePart("2nd and 3rd slice, top", "3x1x1 Item Server Rack Casing") .addOtherStructurePart("2nd and 3rd slice, sides", "2x 1x4x1 Item Server Drive") .addOtherStructurePart("Back slice", "3x5x1 Item Server Rack Casing") - .addInputBus("Instead of any casing") .signAndFinalize("Kekzdealer"); if(!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { return b.getInformation(); @@ -111,8 +113,8 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { this.mEfficiency = 10000 - (this.getIdealStatus() - this.getRepairStatus()) * 1000; this.mEfficiencyIncrease = 10000; - this.mEUt = (int) (BASE_SLICE_ENERGY_COST * sliceCount * Math.pow(2, config)); - super.mMaxProgresstime = 10; + this.mEUt = (int) -(BASE_SEGMENT_ENERGY_COST * sliceCount * Math.pow(2, config)); + super.mMaxProgresstime = 20; mih.setPerTypeCapacity((int) (BASE_PER_ITEM_CAPACITY * Math.pow(4, config))); @@ -169,7 +171,7 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { // Front slice for(int X = -1; X <= 1; X++) { - for(int Y = 0; Y < 5; Y++) { + for(int Y = 0; Y <= 4; Y++) { if(X == 0 && Y == 0) { continue; // is controller } @@ -180,13 +182,11 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { thisController.getIGregTechTileEntityOffset(offset.x(), offset.y(), offset.z()); if(!super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID) && !super.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID)) { - // If it's not a hatch, is it the right casing for this machine? - // TODO: Also check IO port + // Is casing or IO port? if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) { - // yay + // Is casing, but there's no casing requirements } else if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == IO_PORT) { final TE_ItemServerIOPort port = (TE_ItemServerIOPort) thisController.getWorld().getTileEntity( @@ -202,22 +202,26 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { } // Check slices - int slicesFound = 0; - int zOffset = 1; - for(int s = 0; s < slicesFound; s++) { - final Vector3ic probe = rotateOffsetVector(forgeDirection, 1, 0, zOffset); - // Probe if another slice might exist - if(thisController.getBlockOffset(probe.x(), probe.y(), probe.z()) == DRIVE) { - formationChecklist = checkSlice(thisController, zOffset); - if(!formationChecklist) { - break; - } else { - slicesFound++; - zOffset += 2; - } + int segmentsFound = 0; + int zOffset = -1; // -1 is the first slice after the front one. It goes in negative direction. + + while(segmentsFound < 5) { + if(checkSegment(thisController, forgeDirection, zOffset)) { + segmentsFound++; + zOffset -= 3; // Each segment is 3 blocks long, so progress Z by -3 + + System.out.println("Item Server segment approved: " + segmentsFound); + } else { + System.out.println("Item Server segment rejected: " + (segmentsFound + 1)); + break; } } + if(segmentsFound < 1) { + System.out.println("At least one slice required for storage"); + formationChecklist = false; + } + if(this.mEnergyHatches.size() < 1) { System.out.println("At least one energy hatch is required!"); formationChecklist = false; @@ -229,12 +233,13 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { } if(formationChecklist) { - slicesFound = sliceCount; + sliceCount = segmentsFound; if(mih == null) { mih = new MultiItemHandler(); - mih.setItemTypeCapacity(slicesFound * BASE_ITEM_TYPES_PER_SLICE); + mih.setItemTypeCapacity(segmentsFound * BASE_ITEM_TYPES_PER_SEGMENT); } + System.out.println("Configuring " + ioPorts.size() + " ports"); for(TE_ItemServerIOPort port : ioPorts) { port.setMultiItemHandler(mih); } @@ -243,36 +248,28 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { return formationChecklist; } - public boolean checkSlice(IGregTechTileEntity thisController, int zOffset) { - // Figure out the vector for the direction the back face of the controller is facing - final Vector3ic forgeDirection = new Vector3i( - ForgeDirection.getOrientation(thisController.getBackFacing()).offsetX, - ForgeDirection.getOrientation(thisController.getBackFacing()).offsetY, - ForgeDirection.getOrientation(thisController.getBackFacing()).offsetZ - ); + public boolean checkSegment(IGregTechTileEntity thisController, Vector3ic forgeDirection, int zOffset) { boolean formationChecklist = true; - - for(int Z = 0; Z <= 2; Z++) { - if(Z != 2) { + // Slice by slice + for(int Z = 0; Z >= -2; Z--) { + // Is not back slice + if(Z != -2) { + // Left to right for(int X = -1; X <= 1; X++) { - for(int Y = 0; Y < 5; Y++) { + // Bottom to top + for(int Y = 0; Y <= 4; Y++) { final Vector3ic offset = rotateOffsetVector(forgeDirection, X, Y, zOffset + Z); - // Server rack roof is casings + // Server rack roof if(Y == 4) { - // Get next TE - - IGregTechTileEntity currentTE = + final IGregTechTileEntity currentTE = thisController.getIGregTechTileEntityOffset(offset.x(), offset.y(), offset.z()); if(!super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID) && !super.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID)) { - - // If it's not a hatch, is it the right casing for this machine? - // TODO: Also check IO port + // Is casing or IO port? if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) { - // yay + // Is casing, but there's no casing requirements } else if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == IO_PORT) { final TE_ItemServerIOPort port = (TE_ItemServerIOPort) thisController.getWorld().getTileEntity( @@ -287,14 +284,15 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { } // Middle wall is aluminium frame boxes - else if(Y < 4 && X == 0) { - if(!(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName().equals(ALU_FRAME_BOX_NAME))) { + else if(Y <= 3 && X == 0) { + if(!(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName().equals(ALU_FRAME_BOX_NAME)) + || !(thisController.getMetaIDOffset(offset.x(), offset.y(), offset.z()) == ALU_FRAME_BOX_META)) { formationChecklist = false; } } // Side walls are item server drives - else if(Y < 4 && X != 0) { + else if(Y <= 3 && X != 0) { if(!(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == DRIVE)) { formationChecklist = false; } @@ -304,38 +302,27 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { } else { // Back slice for(int X = -1; X <= 1; X++) { - for(int Y = 0; Y < 5; Y++) { + for(int Y = 0; Y <= 4; Y++) { - // Get next TE final Vector3ic offset = rotateOffsetVector(forgeDirection, X, Y, zOffset + Z); IGregTechTileEntity currentTE = thisController.getIGregTechTileEntityOffset(offset.x(), offset.y(), offset.z()); - // Disallow nonsensical hatches in the middle of the structure - if(Y < 4 && Y > 0 && X == 0) { - if(!(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING)) { + if(!super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) + && !super.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID)) { + // Is casing or IO port? + if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) { + // Is casing, but there's no casing requirements + } else if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == IO_PORT) { + final TE_ItemServerIOPort port = + (TE_ItemServerIOPort) thisController.getWorld().getTileEntity( + thisController.getXCoord() + offset.x(), + thisController.getYCoord() + offset.y(), + thisController.getZCoord() + offset.z()); + ioPorts.add(port); + } else { formationChecklist = false; } - } else { - if(!super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID)) { - - // If it's not a hatch, is it the right casing for this machine? - // TODO: Also check IO port - if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) { - // yay - } else if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == IO_PORT) { - final TE_ItemServerIOPort port = - (TE_ItemServerIOPort) thisController.getWorld().getTileEntity( - thisController.getXCoord() + offset.x(), - thisController.getYCoord() + offset.y(), - thisController.getZCoord() + offset.z()); - ioPorts.add(port); - } else { - formationChecklist = false; - } - } } } } @@ -351,8 +338,11 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { final ArrayList<String> ll = new ArrayList<>();//mfh.getInfoData(); ll.add(EnumChatFormatting.YELLOW + "Operational Data:" + EnumChatFormatting.RESET); - ll.add("Per-Fluid Capacity: " + BASE_PER_ITEM_CAPACITY); - ll.add("Running Cost: " + (-super.mEUt) + "EU/t"); + ll.add("Per-Item Capacity: " + mih.getPerTypeCapacity()); + ll.add("Item-Type Capacity: " + BASE_ITEM_TYPES_PER_SEGMENT * sliceCount); + ll.add("Running Cost: " + // mEUt does not naturally reflect efficiency status. Do that here. + + ((-super.mEUt) * 10000 / Math.max(1000, super.mEfficiency)) + "EU/t"); ll.add("Maintenance Status: " + ((super.getRepairStatus() == super.getIdealStatus()) ? EnumChatFormatting.GREEN + "Working perfectly" + EnumChatFormatting.RESET : EnumChatFormatting.RED + "Has Problems" + EnumChatFormatting.RESET)); diff --git a/src/main/java/common/tileentities/GTMTE_LapotronicSuperCapacitor.java b/src/main/java/common/tileentities/GTMTE_LapotronicSuperCapacitor.java new file mode 100644 index 0000000000..fc743a56d3 --- /dev/null +++ b/src/main/java/common/tileentities/GTMTE_LapotronicSuperCapacitor.java @@ -0,0 +1,558 @@ +package common.tileentities; + +import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_DynamoMulti; +import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_DynamoTunnel; +import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyMulti; +import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyTunnel; +import common.Blocks; +import gregtech.api.enums.Dyes; +import gregtech.api.enums.Textures.BlockIcons; +import gregtech.api.gui.GT_GUIContainer_MultiMachine; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Dynamo; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; +import gregtech.api.objects.GT_RenderedTexture; +import net.minecraft.block.Block; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.common.util.ForgeDirection; +import org.lwjgl.input.Keyboard; +import util.MultiBlockTooltipBuilder; +import util.Vector3i; +import util.Vector3ic; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +public class GTMTE_LapotronicSuperCapacitor extends GT_MetaTileEntity_MultiBlockBase { + + private final static String glassNameBorosilicate = "BW_GlasBlocks"; + private static final Block LSC_PART = Blocks.lscLapotronicEnergyUnit; + private static final int CASING_META = 0; + private static final int CASING_TEXTURE_ID = 62; + + private static final BigInteger MAX_LONG = BigInteger.valueOf(Long.MAX_VALUE); + private static final BigDecimal PASSIVE_DISCHARGE_FACTOR_PER_TICK = + BigDecimal.valueOf(0.01D / 1728000.0D); // The magic number is ticks per 24 hours + + private final Set<GT_MetaTileEntity_Hatch_EnergyMulti> mEnergyHatchesTT = new HashSet<>(); + private final Set<GT_MetaTileEntity_Hatch_DynamoMulti> mDynamoHatchesTT = new HashSet<>(); + private final Set<GT_MetaTileEntity_Hatch_EnergyTunnel> mEnergyTunnelsTT = new HashSet<>(); + private final Set<GT_MetaTileEntity_Hatch_DynamoTunnel> mDynamoTunnelsTT = new HashSet<>(); + // Count the amount of capacitors of each tier in each slot (translate with meta - 1) + private final int[] capacitors = new int[5]; + private BigInteger capacity = BigInteger.ZERO; + private BigInteger stored = BigInteger.ZERO; + private BigInteger passiveDischargeAmount = BigInteger.ZERO; + private BigInteger intputLastTick = BigInteger.ZERO; + private BigInteger outputLastTick = BigInteger.ZERO; + private int repairStatusCache = 0; + + public GTMTE_LapotronicSuperCapacitor(int aID, String aName, String aNameRegional) { + super(aID, aName, aNameRegional); + } + + public GTMTE_LapotronicSuperCapacitor(String aName) { + super(aName); + } + + @Override + public IMetaTileEntity newMetaEntity(IGregTechTileEntity var1) { + return new GTMTE_LapotronicSuperCapacitor(super.mName); + } + + @Override + public String[] getDescription() { + final MultiBlockTooltipBuilder b = new MultiBlockTooltipBuilder(); + b.addInfo("Power storage structure!") + .addInfo("Looses energy equal to 1% of the total capacity every 24 hours.") + .addInfo("EXCEPTION: Ultimate Capacitors only count as Lapotronic Capacitors (UV) for the") + .addInfo("purpose of passive loss calculation. The full capacity is counted towards the actual power capacity.") + .addSeparator() + .addInfo("Glass shell has to be Tier - 2 of the highest capacitor tier") + .addInfo("UV-Tier glass required for TecTech Laser Hatches") + .addInfo("Modular height of 4 to 18 blocks.") + .addSeparator() + .beginStructureBlock(5, 4, 5) + .addController("Front Bottom Center") + .addDynamoHatch("Instead of any casing") + .addEnergyHatch("Instead of any casing") + .addOtherStructurePart("Lapotronic Capacitor Base", "5x2x5 base (at least 17x)") + .addOtherStructurePart("Lapotronic Capacitor, (Really) Ultimate Capacitor", "Center 3x(1-15)x3 above base (9-135 blocks)") + .addOtherStructurePart("Borosilicate Glass", "41-265x, Encase capacitor pillar") + .addMaintenanceHatch("Instead of any casing") + .signAndFinalize("Kekzdealer"); + if(!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { + return b.getInformation(); + } else { + return b.getStructureInformation(); + } + } + + @Override + public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, + boolean aActive, boolean aRedstone) { + ITexture[] sTexture = new ITexture[]{new GT_RenderedTexture(BlockIcons.MACHINE_CASING_FUSION_GLASS, + Dyes.getModulation(-1, Dyes._NULL.mRGBa))}; + if (aSide == aFacing && aActive) { + sTexture = new ITexture[]{new GT_RenderedTexture(BlockIcons.MACHINE_CASING_FUSION_GLASS_YELLOW, + Dyes.getModulation(-1, Dyes._NULL.mRGBa))}; + } + return sTexture; + } + + public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { + return new GT_GUIContainer_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, this.getLocalName(), + "MultiblockDisplay.png"); + } + + @Override + public boolean isCorrectMachinePart(ItemStack stack) { + return true; + } + + @Override + public boolean checkRecipe(ItemStack stack) { + this.mProgresstime = 1; + this.mMaxProgresstime = 1; + this.mEUt = 0; + this.mEfficiencyIncrease = 10000; + return true; + } + + public Vector3ic rotateOffsetVector(Vector3ic forgeDirection, int x, int y, int z) { + final Vector3i offset = new Vector3i(); + + // either direction on z-axis + if (forgeDirection.x() == 0 && forgeDirection.z() == -1) { + offset.x = x; + offset.y = y; + offset.z = z; + } + if (forgeDirection.x() == 0 && forgeDirection.z() == 1) { + offset.x = -x; + offset.y = y; + offset.z = -z; + } + // either direction on x-axis + if (forgeDirection.x() == -1 && forgeDirection.z() == 0) { + offset.x = z; + offset.y = y; + offset.z = -x; + } + if (forgeDirection.x() == 1 && forgeDirection.z() == 0) { + offset.x = -z; + offset.y = y; + offset.z = x; + } + // either direction on y-axis + if (forgeDirection.y() == -1) { + offset.x = x; + offset.y = z; + offset.z = y; + } + + return offset; + } + + @Override + public boolean checkMachine(IGregTechTileEntity thisController, ItemStack guiSlotItem) { + // Figure out the vector for the direction the back face of the controller is facing + final Vector3ic forgeDirection = new Vector3i( + ForgeDirection.getOrientation(thisController.getBackFacing()).offsetX, + ForgeDirection.getOrientation(thisController.getBackFacing()).offsetY, + ForgeDirection.getOrientation(thisController.getBackFacing()).offsetZ + ); + boolean formationChecklist = true; + int minCasingAmount = 16; + int firstGlassMeta = -1; + // Reset capacitor counts + Arrays.fill(capacitors, 0); + // Clear TT hatches + mEnergyHatchesTT.clear(); + mDynamoHatchesTT.clear(); + mEnergyTunnelsTT.clear(); + mDynamoTunnelsTT.clear(); + // Temp var for loss calculation + BigInteger tempCapacity = BigInteger.ZERO; + + // Capacitor base + for(int Y = 0; Y <= 1; Y++) { + for(int X = -2; X <= 2; X++) { + for(int Z = 0; Z >= -4; Z--) { + if(X == 0 && Y == 0 && Z == 0) { + continue; // Skip controller + } + + final Vector3ic offset = rotateOffsetVector(forgeDirection, X, Y, Z); + final IGregTechTileEntity currentTE = + thisController.getIGregTechTileEntityOffset(offset.x(), offset.y(), offset.z()); + + // Tries to add TE as either of those kinds of hatches. + // The number is the texture index number for the texture that needs to be painted over the hatch texture + if ( !super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) + && !this.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID) + && !this.addDynamoToMachineList(currentTE, CASING_TEXTURE_ID)) { + + // If it's not a hatch, is it the right casing for this machine? Check block and block meta. + if ((thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == LSC_PART) + && (thisController.getMetaIDOffset(offset.x(), offset.y(), offset.z()) == CASING_META)) { + // Seems to be valid casing. Decrement counter. + minCasingAmount--; + } else { + formationChecklist = false; + } + } + } + } + } + // Capacitor units + int firstGlassHeight = 3; // Initialize at basic height (-1 because it's an offset) + for(int X = -1; X <= 1; X++) { + for(int Z = -1; Z >= -3; Z--) { + // Y has to be the innermost loop to properly deal with the dynamic height. + // This way each "pillar" of capacitors is checked from bottom to top until it hits glass. + for(int Y = 2; Y <= 17; Y++) { + final Vector3ic offset = rotateOffsetVector(forgeDirection, X, Y, Z); + + final int meta = thisController.getMetaIDOffset(offset.x(), offset.y(), offset.z()); + if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == LSC_PART && (meta > 0)) { + // Add capacity + if(meta <= 4){ + final long c = (long) (100000000L * Math.pow(10, meta - 1)); + tempCapacity = tempCapacity.add(BigInteger.valueOf(c)); + capacity = capacity.add(BigInteger.valueOf(c)); + } else if(meta <= 5){ + tempCapacity = tempCapacity.add(BigInteger.valueOf((long) (100000000L * Math.pow(10, 3)))); + capacity = capacity.add(MAX_LONG); + } + capacitors[meta - 1]++; + } else if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName().equals(glassNameBorosilicate)){ + firstGlassHeight = Y; + break; + } else { + formationChecklist = false; + } + } + } + } + // Glass shell + // Make Y the outermost loop, so each layer is checked completely before moving up + for(int Y = 2; Y <= firstGlassHeight; Y++) { + for(int X = -2; X <= 2; X++) { + for(int Z = 0; Z >= -4; Z--) { + final Vector3ic offset = rotateOffsetVector(forgeDirection, X, Y, Z); + final String blockNameAt = thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName(); + final int meta = thisController.getMetaIDOffset(offset.x(), offset.y(), offset.z()); + // Check only outer ring, except when on roof height + if((Y < firstGlassHeight)){ + if(X == -2 || X == 2 || Z == 0 || Z == 4){ + if(glassNameBorosilicate.equals(blockNameAt)) { + if(firstGlassMeta == -1) { + firstGlassMeta = meta; + } else if(meta != firstGlassMeta) { + formationChecklist = false; + } + } else { + formationChecklist = false; + } + } + } else { + if (glassNameBorosilicate.equals(blockNameAt)) { + if(meta != firstGlassMeta) { + formationChecklist = false; + } + } else { + formationChecklist = false; + } + } + } + } + } + + if(minCasingAmount > 0){ + formationChecklist = false; + } + + // Make sure glass tier is T-2 of the highest tier capacitor in the structure + // Count down from the highest tier until an entry is found + // Borosilicate glass after 5 are just recolours of 0 + final int colourCorrectedMeta = firstGlassMeta > 5 ? 0 : firstGlassMeta; + for(int highestCapacitor = capacitors.length - 1; highestCapacitor >= 0; highestCapacitor--){ + if(capacitors[highestCapacitor] > 0){ + if(colourCorrectedMeta < highestCapacitor){ + formationChecklist = false; + } + break; + } + } + + // Glass has to be at least UV-tier to allow TT Laser hatches + if(colourCorrectedMeta < 5) { + if(mEnergyTunnelsTT.size() > 0 || mDynamoTunnelsTT.size() > 0) { + formationChecklist = false; + } + mEnergyTunnelsTT.clear(); + mDynamoTunnelsTT.clear(); + + } + + // Calculate total capacity + capacity = BigInteger.ZERO; + for(int i = 0; i < capacitors.length; i++){ + if(i <= 3){ + final long c = (long) (100000000L * Math.pow(10, i)); + capacity = capacity.add( + BigInteger.valueOf(c).multiply(BigInteger.valueOf(capacitors[i]))); + } else { + capacity = capacity.add( + MAX_LONG.multiply(BigInteger.valueOf(capacitors[i]))); + } + } + // Calculate how much energy to void each tick + passiveDischargeAmount = new BigDecimal(tempCapacity).multiply(PASSIVE_DISCHARGE_FACTOR_PER_TICK).toBigInteger(); + passiveDischargeAmount = recalculateLossWithMaintenance(super.getRepairStatus()); + return formationChecklist; + } + + @Override + public boolean addEnergyInputToMachineList(IGregTechTileEntity te, int aBaseCasingIndex) { + if (te == null) { + return false; + } else { + final IMetaTileEntity mte = te.getMetaTileEntity(); + if (mte instanceof GT_MetaTileEntity_Hatch_Energy) { + // Add GT hatches + ((GT_MetaTileEntity_Hatch) mte).updateTexture(aBaseCasingIndex); + return super.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy) mte); + } else if(mte instanceof GT_MetaTileEntity_Hatch_EnergyTunnel) { + // Add TT Laser hatches + return mEnergyTunnelsTT.add((GT_MetaTileEntity_Hatch_EnergyTunnel) mte); + } else if(mte instanceof GT_MetaTileEntity_Hatch_EnergyMulti) { + // Add TT hatches + ((GT_MetaTileEntity_Hatch) mte).updateTexture(aBaseCasingIndex); + return mEnergyHatchesTT.add((GT_MetaTileEntity_Hatch_EnergyMulti) mte); + } else { + return false; + } + } + } + + @Override + public boolean addDynamoToMachineList(IGregTechTileEntity te, int aBaseCasingIndex) { + if (te == null) { + return false; + } else { + final IMetaTileEntity mte = te.getMetaTileEntity(); + if (mte instanceof GT_MetaTileEntity_Hatch_Dynamo) { + // Add GT hatches + ((GT_MetaTileEntity_Hatch) mte).updateTexture(aBaseCasingIndex); + return super.mDynamoHatches.add((GT_MetaTileEntity_Hatch_Dynamo) mte); + } else if(mte instanceof GT_MetaTileEntity_Hatch_DynamoTunnel) { + // Add TT Laser hatches + return mDynamoTunnelsTT.add((GT_MetaTileEntity_Hatch_DynamoTunnel) mte); + } else if(mte instanceof GT_MetaTileEntity_Hatch_DynamoMulti) { + // Add TT hatches + ((GT_MetaTileEntity_Hatch) mte).updateTexture(aBaseCasingIndex); + return mDynamoHatchesTT.add((GT_MetaTileEntity_Hatch_DynamoMulti) mte); + } else { + return false; + } + } + } + + @Override + public boolean onRunningTick(ItemStack stack){ + // Reset I/O cache + intputLastTick = BigInteger.ZERO; + outputLastTick = BigInteger.ZERO; + + // Draw energy from GT hatches + for(GT_MetaTileEntity_Hatch_Energy eHatch : super.mEnergyHatches) { + if(eHatch == null || eHatch.getBaseMetaTileEntity().isInvalidTileEntity()) { + continue; + } + final long power = getPowerToDraw(eHatch.maxEUInput() * eHatch.maxAmperesIn()); + if(eHatch.getEUVar() >= power) { + eHatch.setEUVar(eHatch.getEUVar() - power); + stored = stored.add(BigInteger.valueOf(power)); + intputLastTick = intputLastTick.add(BigInteger.valueOf(power)); + } + } + // Output energy to GT hatches + for(GT_MetaTileEntity_Hatch_Dynamo eDynamo : super.mDynamoHatches){ + if(eDynamo == null || eDynamo.getBaseMetaTileEntity().isInvalidTileEntity()){ + continue; + } + final long power = getPowerToPush(eDynamo.maxEUOutput() * eDynamo.maxAmperesOut()); + if(power <= eDynamo.maxEUStore() - eDynamo.getEUVar()) { + eDynamo.setEUVar(eDynamo.getEUVar() + power); + stored = stored.subtract(BigInteger.valueOf(power)); + outputLastTick = outputLastTick.add(BigInteger.valueOf(power)); + } + } + // Draw energy from TT hatches + for(GT_MetaTileEntity_Hatch_EnergyMulti eHatch : mEnergyHatchesTT) { + if(eHatch == null || eHatch.getBaseMetaTileEntity().isInvalidTileEntity()) { + continue; + } + final long power = getPowerToDraw(eHatch.maxEUInput() * eHatch.maxAmperesIn()); + if(eHatch.getEUVar() >= power) { + eHatch.setEUVar(eHatch.getEUVar() - power); + stored = stored.add(BigInteger.valueOf(power)); + intputLastTick = intputLastTick.add(BigInteger.valueOf(power)); + } + } + // Output energy to TT hatches + for(GT_MetaTileEntity_Hatch_DynamoMulti eDynamo : mDynamoHatchesTT){ + if(eDynamo == null || eDynamo.getBaseMetaTileEntity().isInvalidTileEntity()){ + continue; + } + final long power = getPowerToPush(eDynamo.maxEUOutput() * eDynamo.maxAmperesOut()); + if(power <= eDynamo.maxEUStore() - eDynamo.getEUVar()) { + eDynamo.setEUVar(eDynamo.getEUVar() + power); + stored = stored.subtract(BigInteger.valueOf(power)); + outputLastTick = outputLastTick.add(BigInteger.valueOf(power)); + } + } + // Draw energy from TT Laser hatches + for(GT_MetaTileEntity_Hatch_EnergyTunnel eHatch : mEnergyTunnelsTT) { + if(eHatch == null || eHatch.getBaseMetaTileEntity().isInvalidTileEntity()) { + continue; + } + final long ttLaserWattage = eHatch.maxEUInput() * eHatch.Amperes - (eHatch.Amperes / 20); + final long power = getPowerToDraw(ttLaserWattage); + if(eHatch.getEUVar() >= power) { + eHatch.setEUVar(eHatch.getEUVar() - power); + stored = stored.add(BigInteger.valueOf(power)); + intputLastTick = intputLastTick.add(BigInteger.valueOf(power)); + } + } + // Output energy to TT Laser hatches + for(GT_MetaTileEntity_Hatch_DynamoTunnel eDynamo : mDynamoTunnelsTT){ + if(eDynamo == null || eDynamo.getBaseMetaTileEntity().isInvalidTileEntity()){ + continue; + } + final long ttLaserWattage = eDynamo.maxEUOutput() * eDynamo.Amperes - (eDynamo.Amperes / 20); + final long power = getPowerToPush(ttLaserWattage); + if(power <= eDynamo.maxEUStore() - eDynamo.getEUVar()) { + eDynamo.setEUVar(eDynamo.getEUVar() + power); + stored = stored.subtract(BigInteger.valueOf(power)); + outputLastTick = outputLastTick.add(BigInteger.valueOf(power)); + } + } + // Loose some energy + // Recalculate if the repair status changed + if(super.getRepairStatus() != repairStatusCache) { + passiveDischargeAmount = recalculateLossWithMaintenance(super.getRepairStatus()); + } + stored = stored.subtract(passiveDischargeAmount); + stored = (stored.compareTo(BigInteger.ZERO) <= 0) ? BigInteger.ZERO : stored; + + return true; + } + + /** + * To be called whenever the maintenance status changes or the capacity was recalculated + * @param repairStatus + * This machine's repair status + * @return new BigInteger instance for passiveDischargeAmount + */ + private BigInteger recalculateLossWithMaintenance(int repairStatus) { + repairStatusCache = repairStatus; + return new BigDecimal(passiveDischargeAmount) + .multiply(BigDecimal.valueOf(1.0D + 0.2D * repairStatus)).toBigInteger(); + } + + /** + * Calculate how much EU to draw from an Energy Hatch + * @param hatchWatts + * Hatch amperage * voltage + * @return EU amount + */ + private long getPowerToDraw(long hatchWatts){ + final BigInteger remcapActual = capacity.subtract(stored); + final BigInteger recampLimited = (MAX_LONG.compareTo(remcapActual) > 0) ? remcapActual : MAX_LONG; + return Math.min(hatchWatts, recampLimited.longValue()); + } + + /** + * Calculate how much EU to push into a Dynamo Hatch + * @param hatchWatts + * Hatch amperage * voltage + * @return EU amount + */ + private long getPowerToPush(long hatchWatts){ + final BigInteger remStoredLimited = (MAX_LONG.compareTo(stored) > 0) ? stored : MAX_LONG; + return Math.min(hatchWatts, remStoredLimited.longValue()); + } + + @Override + public String[] getInfoData() { + final ArrayList<String> ll = new ArrayList<>(); + ll.add(EnumChatFormatting.YELLOW + "Operational Data:" + EnumChatFormatting.RESET); + ll.add("Used Capacity: " + NumberFormat.getNumberInstance().format(stored) + "EU"); + ll.add("Total Capacity: " + NumberFormat.getNumberInstance().format(capacity) + "EU"); + ll.add("Passive Loss: " + NumberFormat.getNumberInstance().format(passiveDischargeAmount) + "EU/t"); + ll.add("EU IN: " + NumberFormat.getNumberInstance().format(intputLastTick) + "EU/t"); + ll.add("EU OUT: " + NumberFormat.getNumberInstance().format(outputLastTick) + "EU/t"); + ll.add("Maintenance Status: " + ((super.getRepairStatus() == super.getIdealStatus()) + ? EnumChatFormatting.GREEN + "Working perfectly" + EnumChatFormatting.RESET + : EnumChatFormatting.RED + "Has Problems" + EnumChatFormatting.RESET)); + ll.add("---------------------------------------------"); + + final String[] a = new String[ll.size()]; + return ll.toArray(a); + } + + @Override + public void saveNBTData(NBTTagCompound nbt) { + nbt = (nbt == null) ? new NBTTagCompound() : nbt; + + nbt.setByteArray("capacity", capacity.toByteArray()); + nbt.setByteArray("stored", stored.toByteArray()); + nbt.setByteArray("passiveDischargeAmount", passiveDischargeAmount.toByteArray()); + + super.saveNBTData(nbt); + } + + @Override + public void loadNBTData(NBTTagCompound nbt) { + nbt = (nbt == null) ? new NBTTagCompound() : nbt; + + capacity = new BigInteger(nbt.getByteArray("capacity")); + stored = new BigInteger(nbt.getByteArray("stored")); + passiveDischargeAmount = new BigInteger(nbt.getByteArray("passiveDischargeAmount")); + + super.loadNBTData(nbt); + } + + @Override + public boolean isGivingInformation() { + return true; + } + + @Override + public int getMaxEfficiency(ItemStack stack) { return 10000; } + + @Override + public int getPollutionPerTick(ItemStack stack) { return 0; } + + @Override + public int getDamageToComponent(ItemStack stack) { return 0; } + + @Override + public boolean explodesOnComponentBreak(ItemStack stack) { return false; } + +} diff --git a/src/main/java/tileentities/GTMTE_ModularNuclearReactor.java b/src/main/java/common/tileentities/GTMTE_ModularNuclearReactor.java index 14941e489d..5e0b86ed69 100644 --- a/src/main/java/tileentities/GTMTE_ModularNuclearReactor.java +++ b/src/main/java/common/tileentities/GTMTE_ModularNuclearReactor.java @@ -1,15 +1,12 @@ -package tileentities;
+package common.tileentities;
import org.joml.Vector3i;
import org.lwjgl.input.Keyboard;
-import blocks.Block_ControlRod;
-import blocks.Block_ReactorChamber_OFF;
-import blocks.Block_ReactorChamber_ON;
-import container.GUIContainer_ModularNuclearReactor;
+import client.gui.GUIContainer_ModularNuclearReactor;
+import common.Blocks;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Textures;
-import gregtech.api.gui.GT_GUIContainer_MultiMachine;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
@@ -27,9 +24,9 @@ public class GTMTE_ModularNuclearReactor extends GT_MetaTileEntity_MultiBlockBas private final int CASING_META = 12;
private final int CASING_TEXTURE_ID = 44;
- private final Block CHAMBER_OFF = Block_ReactorChamber_OFF.getInstance();
- private final Block CHAMBER_ON = Block_ReactorChamber_ON.getInstance();
- private final Block CONTROL_ROD = Block_ControlRod.getInstance();
+ private final Block CHAMBER_OFF = Blocks.reactorChamberOFF;
+ private final Block CHAMBER_ON = Blocks.reactorChamberON;
+ private final Block CONTROL_ROD = Blocks.reactorControlRod;
private boolean euMode = true;
diff --git a/src/main/java/tileentities/GTMTE_SOFuelCellMK1.java b/src/main/java/common/tileentities/GTMTE_SOFuelCellMK1.java index 9aa0a5c01d..76536f0e50 100644 --- a/src/main/java/tileentities/GTMTE_SOFuelCellMK1.java +++ b/src/main/java/common/tileentities/GTMTE_SOFuelCellMK1.java @@ -1,4 +1,4 @@ -package tileentities;
+package common.tileentities;
import java.util.ArrayList;
import java.util.Collection;
@@ -6,7 +6,7 @@ import java.util.Iterator; import org.lwjgl.input.Keyboard;
-import blocks.Block_YSZUnit;
+import common.Blocks;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
import gregtech.api.enums.Textures;
@@ -35,9 +35,9 @@ public class GTMTE_SOFuelCellMK1 extends GT_MetaTileEntity_MultiBlockBase { private final int CASING_META = 1;
private final int CASING_TEXTURE_ID = 49;
- private final int OXYGEN_PER_TICK = 20;
+ private final int OXYGEN_PER_SEC = 400;
private final int EU_PER_TICK = 1024;
- private final int STEAM_PER_TICK = 900;
+ private final int STEAM_PER_SEC = 18000;
public GTMTE_SOFuelCellMK1(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -60,8 +60,8 @@ public class GTMTE_SOFuelCellMK1 extends GT_MetaTileEntity_MultiBlockBase { b.addInfo("Oxidizes gas fuels to generate electricity without polluting the environment")
.addInfo("Consumes 29,480EU worth of fuel with up to 97% efficiency each second")
.addInfo("Steam production requires the SOFC to heat up completely first")
- .addInfo("Outputs " + EU_PER_TICK + "EU/t and " + STEAM_PER_TICK + "L/t Steam")
- .addInfo("Additionally requires " + OXYGEN_PER_TICK + "L/t Oxygen gas")
+ .addInfo("Outputs " + EU_PER_TICK + "EU/t and " + STEAM_PER_SEC + "L/s Steam")
+ .addInfo("Additionally requires " + OXYGEN_PER_SEC + "L/s Oxygen gas")
.addSeparator()
.beginStructureBlock(3, 3, 5)
.addController("Front Center")
@@ -119,22 +119,21 @@ public class GTMTE_SOFuelCellMK1 extends GT_MetaTileEntity_MultiBlockBase { if((liquid = GT_Utility.getFluidForFilledItem(aFuel.getRepresentativeInput(0), true)) != null
&& hatchFluid.isFluidEqual(liquid)) {
- liquid.amount = EU_PER_TICK / aFuel.mSpecialValue;
+ liquid.amount = Math.round((EU_PER_TICK * 20) / aFuel.mSpecialValue);
if(super.depleteInput(liquid)) {
- if(!super.depleteInput(Materials.Oxygen.getGas(OXYGEN_PER_TICK))) {
+ if(!super.depleteInput(Materials.Oxygen.getGas(OXYGEN_PER_SEC))) {
super.mEUt = 0;
super.mEfficiency = 0;
return false;
}
super.mEUt = EU_PER_TICK;
- super.mProgresstime = 1;
- super.mMaxProgresstime = 1;
- super.mEfficiencyIncrease = 5;
+ super.mMaxProgresstime = 20;
+ super.mEfficiencyIncrease = 40;
if(super.mEfficiency == getMaxEfficiency(null)) {
- super.addOutput(GT_ModHandler.getSteam(STEAM_PER_TICK));
+ super.addOutput(GT_ModHandler.getSteam(STEAM_PER_SEC));
}
return true;
}
@@ -231,7 +230,7 @@ public class GTMTE_SOFuelCellMK1 extends GT_MetaTileEntity_MultiBlockBase { final Vector3ic offset = rotateOffsetVector(forgeDirection, X, Y, Z);
if(X == 0 && Y == 0) {
if(!thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName()
- .equals(Block_YSZUnit.getInstance().getUnlocalizedName())) {
+ .equals(Blocks.yszUnit.getUnlocalizedName())) {
formationChecklist = false;
}
continue;
diff --git a/src/main/java/tileentities/GTMTE_SOFuelCellMK2.java b/src/main/java/common/tileentities/GTMTE_SOFuelCellMK2.java index 3ecba204ce..fb3fb7e9c7 100644 --- a/src/main/java/tileentities/GTMTE_SOFuelCellMK2.java +++ b/src/main/java/common/tileentities/GTMTE_SOFuelCellMK2.java @@ -1,4 +1,4 @@ -package tileentities;
+package common.tileentities;
import java.util.ArrayList;
import java.util.Collection;
@@ -6,7 +6,7 @@ import java.util.Iterator; import org.lwjgl.input.Keyboard;
-import blocks.Block_GDCUnit;
+import common.Blocks;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
import gregtech.api.enums.Textures;
@@ -35,9 +35,9 @@ public class GTMTE_SOFuelCellMK2 extends GT_MetaTileEntity_MultiBlockBase { final int CASING_META = 0;
final int CASING_TEXTURE_ID = 48;
- private final int OXYGEN_PER_TICK = 100;
+ private final int OXYGEN_PER_SEC = 2000;
private final int EU_PER_TICK = 24576; // 100% Efficiency, 3A IV
- private final int STEAM_PER_TICK = 4800; // SH Steam (10,800EU/t @ 150% Efficiency)
+ private final int STEAM_PER_SEC = 96000; // SH Steam (10,800EU/t @ 150% Efficiency)
public GTMTE_SOFuelCellMK2(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -60,8 +60,8 @@ public class GTMTE_SOFuelCellMK2 extends GT_MetaTileEntity_MultiBlockBase { b.addInfo("Oxidizes gas fuels to generate electricity without polluting the environment")
.addInfo("Consumes 442,200EU worth of fuel with up to 97% efficiency each second")
.addInfo("Steam production requires the SOFC to heat up completely first")
- .addInfo("Outputs " + EU_PER_TICK + "EU/t and " + STEAM_PER_TICK + "L/t Steam")
- .addInfo("Additionally requires " + OXYGEN_PER_TICK + "L/t Oxygen gas")
+ .addInfo("Outputs " + EU_PER_TICK + "EU/t and " + STEAM_PER_SEC + "L/s Steam")
+ .addInfo("Additionally requires " + OXYGEN_PER_SEC + "L/s Oxygen gas")
.addSeparator()
.beginStructureBlock(3, 3, 5)
.addController("Front Center")
@@ -119,22 +119,21 @@ public class GTMTE_SOFuelCellMK2 extends GT_MetaTileEntity_MultiBlockBase { if((liquid = GT_Utility.getFluidForFilledItem(aFuel.getRepresentativeInput(0), true)) != null
&& hatchFluid.isFluidEqual(liquid)) {
- liquid.amount = EU_PER_TICK / aFuel.mSpecialValue;
+ liquid.amount = Math.round((EU_PER_TICK * 20) / aFuel.mSpecialValue);
if(super.depleteInput(liquid)) {
- if(!super.depleteInput(Materials.Oxygen.getGas(OXYGEN_PER_TICK))) {
+ if(!super.depleteInput(Materials.Oxygen.getGas(OXYGEN_PER_SEC))) {
super.mEUt = 0;
super.mEfficiency = 0;
return false;
}
super.mEUt = EU_PER_TICK;
- super.mProgresstime = 1;
- super.mMaxProgresstime = 1;
- super.mEfficiencyIncrease = 20;
+ super.mMaxProgresstime = 20;
+ super.mEfficiencyIncrease = 80;
if(super.mEfficiency == getMaxEfficiency(null)) {
- super.addOutput(FluidRegistry.getFluidStack("ic2superheatedsteam", STEAM_PER_TICK));
+ super.addOutput(FluidRegistry.getFluidStack("ic2superheatedsteam", STEAM_PER_SEC));
}
return true;
}
@@ -231,7 +230,7 @@ public class GTMTE_SOFuelCellMK2 extends GT_MetaTileEntity_MultiBlockBase { final Vector3ic offset = rotateOffsetVector(forgeDirection, X, Y, Z);
if(X == 0 && Y == 0) {
if(!thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName()
- .equals(Block_GDCUnit.getInstance().getUnlocalizedName())) {
+ .equals(Blocks.gdcUnit.getUnlocalizedName())) {
formationChecklist = false;
}
continue;
diff --git a/src/main/java/common/tileentities/GTMTE_SpaceElevator.java b/src/main/java/common/tileentities/GTMTE_SpaceElevator.java new file mode 100644 index 0000000000..8f7827f4be --- /dev/null +++ b/src/main/java/common/tileentities/GTMTE_SpaceElevator.java @@ -0,0 +1,265 @@ +package common.tileentities; + +import common.Blocks; +import gregtech.api.enums.Dyes; +import gregtech.api.enums.Textures; +import gregtech.api.gui.GT_GUIContainer_MultiMachine; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; +import gregtech.api.objects.GT_RenderedTexture; +import net.minecraft.block.Block; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.common.util.ForgeDirection; +import org.lwjgl.input.Keyboard; +import util.MultiBlockTooltipBuilder; +import util.Vector3i; +import util.Vector3ic; + +import java.util.ArrayList; +import java.util.HashSet; + +public class GTMTE_SpaceElevator extends GT_MetaTileEntity_MultiBlockBase { + + private static final Block BASE_BLOCK = Blocks.spaceElevatorStructure; + private static final Block CAP_BLOCK = Blocks.spaceElevatorCapacitor; + private static final Block TETHER_BLOCK = Blocks.spaceElevatorTether; + private static final int BASE_META = 0; + private static final int COIL_HOLDER_META = 1; + private final static String glassNameBorosilicate = "BW_GlasBlocks"; + private static final int HATCH_OVERLAY_ID = 16; + + // Scan positions for capacitor banks + // Start with top left bank, clockwise + // Start with top middle pillar within bank, clockwise, middle last + private static final int[] bankOffsetsX = {-7, 5, 5, -7}; + private static final int[] bankOffsetsY = {-7, -7, 5, 5}; + private static final int[] scanOffsetsX = {1, 2, 1, 0, 1}; + private static final int[] scanOffsetsY = {0, 1, 2, 1, 1}; + + private final HashSet<TE_SpaceElevatorCapacitor> capacitors = new HashSet<>(); + private long lastLaunchEUCost = 0; + + public GTMTE_SpaceElevator(int aID, String aName, String aNameRegional) { + super(aID, aName, aNameRegional); + } + + public GTMTE_SpaceElevator(String aName) { super(aName); } + + @Override + public IMetaTileEntity newMetaEntity(IGregTechTileEntity var1) { + return new GTMTE_SpaceElevator((super.mName)); + } + + @Override + public String[] getDescription() { + final MultiBlockTooltipBuilder b = new MultiBlockTooltipBuilder(); + b.addInfo("Access for your Space Station!") + .addInfo("Check out the wiki on my github if you are having trouble with the structure") + .addInfo("Regenerative Breaking will recover up to X% of the energy spent on launch") + .addInfo("Energy recovered depends on coil tier: +10% per coil tier, up to 90%") + .addSeparator() + .beginStructureBlock(15, 11, 15) + .addController("Bottom Center") + .addEnergyHatch("Instead of any casing in the bottom floor") + .addMaintenanceHatch("Instead of any casing in the bottom floor") + .addCasingInfo("Solid Steel Machine Casing", 320) + .addOtherStructurePart("Any EBF coil", "40x, have to be all the same") + .addOtherStructurePart("Space Elevator Tether", "4x") + .addOtherStructurePart("Space Elevator Cabin Block", "42x") + .addOtherStructurePart("Space Elevator Cabin Guide", "8x") + .signAndFinalize("Kekzdealer"); + if(!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { + return b.getInformation(); + } else { + return b.getStructureInformation(); + } + } + + @Override + public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, + boolean aActive, boolean aRedstone) { + ITexture[] sTexture = new ITexture[]{new GT_RenderedTexture(Textures.BlockIcons.MACHINE_CASING_FUSION_GLASS, + Dyes.getModulation(-1, Dyes._NULL.mRGBa))}; + if (aSide == aFacing && aActive) { + sTexture = new ITexture[]{new GT_RenderedTexture(Textures.BlockIcons.MACHINE_CASING_FUSION_GLASS_YELLOW, + Dyes.getModulation(-1, Dyes._NULL.mRGBa))}; + } + return sTexture; + } + + public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { + return new GT_GUIContainer_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, this.getLocalName(), + "MultiblockDisplay.png"); + } + + @Override + public boolean isCorrectMachinePart(ItemStack stack) { + return true; + } + + @Override + public boolean checkRecipe(ItemStack stack) { + this.mProgresstime = 1; + this.mMaxProgresstime = 1; + this.mEUt = 0; + this.mEfficiencyIncrease = 10000; + return true; + } + + public Vector3ic rotateOffsetVector(Vector3ic forgeDirection, int x, int y, int z) { + final Vector3i offset = new Vector3i(0, 0, 0); + // either direction on y-axis + if (forgeDirection.y() == -1) { + offset.x = x; + offset.y = z; + offset.z = y; + } + + return offset; + } + + @Override + public boolean checkMachine(IGregTechTileEntity thisController, ItemStack guiSlotItem) { + // Make sure the controller is either facing up or down + if(thisController.getFrontFacing() > 1) { + return false; + } + + // Figure out the vector for the direction the back face of the controller is facing + final Vector3ic forgeDirection = new Vector3i( + ForgeDirection.getOrientation(thisController.getBackFacing()).offsetX, + ForgeDirection.getOrientation(thisController.getBackFacing()).offsetY, + ForgeDirection.getOrientation(thisController.getBackFacing()).offsetZ + ); + boolean formationChecklist = true; + int minCasingAmount = 320; + int firstCoilMeta = -1; + + // Base floor + for(int X = -7; X <= 7; X++){ + for(int Y = -7; Y <= 7; Y++){ + if(X == 0 && Y == 0){ + continue; // Skip controller + } + + final Vector3ic offset = rotateOffsetVector(forgeDirection, X, Y, 0); + final IGregTechTileEntity currentTE = + thisController.getIGregTechTileEntityOffset(offset.x(), offset.y(), offset.z()); + + // Tries to add TE as either of those kinds of hatches. + // The number is the texture index number for the texture that needs to be painted over the hatch texture + if ( !super.addMaintenanceToMachineList(currentTE, HATCH_OVERLAY_ID) + && !this.addEnergyInputToMachineList(currentTE, HATCH_OVERLAY_ID)) { + + // If it's not a hatch, is it the right casing for this machine? Check block and block meta. + if ((thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == BASE_BLOCK) + && (thisController.getMetaIDOffset(offset.x(), offset.y(), offset.z()) == BASE_META)) { + // Seems to be valid casing. Decrement counter. + minCasingAmount--; + } else { + formationChecklist = false; + } + } + } + } + System.out.println(""); + // Capacitor banks + for(int bank = 0; bank < 4; bank++) { + for(int Z = 1; Z <= 5; Z++) { + for(int scan = 0; scan < 5; scan++){ + final Vector3ic offset = rotateOffsetVector(forgeDirection, + bankOffsetsX[bank] + scanOffsetsX[scan], + bankOffsetsY[bank] + scanOffsetsY[scan], + Z); + if(Z == 1 || Z == 5) { + // Check for casings + if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == BASE_BLOCK + && thisController.getMetaIDOffset(offset.x(), offset.y(), offset.z()) == BASE_META) { + minCasingAmount--; + } else { + formationChecklist = false; + } + } else { + if(scan == 4){ + // Check for capacitors + final TileEntity te = thisController.getTileEntityOffset(offset.x(), offset.y(), offset.z()); + if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CAP_BLOCK + && te instanceof TE_SpaceElevatorCapacitor) { + capacitors.add((TE_SpaceElevatorCapacitor) te); + } else { + formationChecklist = false; + } + } else { + // Check for Glass + if(!thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName().equals(glassNameBorosilicate)) { + formationChecklist = false; + } + } + } + } + } + } + // Anchor + + // Coil holders + + // Coils + + if(minCasingAmount > 0) { + formationChecklist = false; + } + + return formationChecklist; + } + + @Override + public String[] getInfoData() { + final ArrayList<String> ll = new ArrayList<>(); + ll.add(EnumChatFormatting.YELLOW + "Operational Data:" + EnumChatFormatting.RESET); + + ll.add("Maintenance Status: " + ((super.getRepairStatus() == super.getIdealStatus()) + ? EnumChatFormatting.GREEN + "Working perfectly" + EnumChatFormatting.RESET + : EnumChatFormatting.RED + "Has Problems" + EnumChatFormatting.RESET)); + ll.add("---------------------------------------------"); + + final String[] a = new String[ll.size()]; + return ll.toArray(a); + } + + @Override + public void saveNBTData(NBTTagCompound nbt) { + nbt = (nbt == null) ? new NBTTagCompound() : nbt; + + super.saveNBTData(nbt); + } + + @Override + public void loadNBTData(NBTTagCompound nbt) { + nbt = (nbt == null) ? new NBTTagCompound() : nbt; + + super.loadNBTData(nbt); + } + + @Override + public boolean isGivingInformation() { + return true; + } + + @Override + public int getMaxEfficiency(ItemStack stack) { return 10000; } + + @Override + public int getPollutionPerTick(ItemStack stack) { return 0; } + + @Override + public int getDamageToComponent(ItemStack stack) { return 0; } + + @Override + public boolean explodesOnComponentBreak(ItemStack stack) { return false; } +} diff --git a/src/main/java/common/tileentities/TE_IchorJar.java b/src/main/java/common/tileentities/TE_IchorJar.java new file mode 100644 index 0000000000..1baa06a969 --- /dev/null +++ b/src/main/java/common/tileentities/TE_IchorJar.java @@ -0,0 +1,10 @@ +package common.tileentities; + +import thaumcraft.common.tiles.TileJarFillable; + +public class TE_IchorJar extends TileJarFillable { + + public TE_IchorJar() { + super.maxAmount = 4096; + } +} diff --git a/src/main/java/common/tileentities/TE_IchorVoidJar.java b/src/main/java/common/tileentities/TE_IchorVoidJar.java new file mode 100644 index 0000000000..6644461a88 --- /dev/null +++ b/src/main/java/common/tileentities/TE_IchorVoidJar.java @@ -0,0 +1,10 @@ +package common.tileentities; + +import thaumcraft.common.tiles.TileJarFillableVoid; + +public class TE_IchorVoidJar extends TileJarFillableVoid { + + public TE_IchorVoidJar() { + super.maxAmount = 4096; + } +} diff --git a/src/main/java/common/tileentities/TE_ItemProxyCable.java b/src/main/java/common/tileentities/TE_ItemProxyCable.java new file mode 100644 index 0000000000..f4caab3d36 --- /dev/null +++ b/src/main/java/common/tileentities/TE_ItemProxyCable.java @@ -0,0 +1,121 @@ +package common.tileentities; + +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; + +public class TE_ItemProxyCable extends TileEntity { + + private static final float THICKNESS = 0.5F; + private byte connections = 0; + private byte connectionAllowed = 63; + private String idCache = null; + + public TE_ItemProxyCable() { + + } + + @Override + public void updateEntity() { + // Check all 6 sides and connect the conduit if it is allowed to + for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { + final TileEntity te = super.getWorldObj().getTileEntity( + super.xCoord + side.offsetX, + super.yCoord + side.offsetY, + super.zCoord + side.offsetZ); + if(te instanceof TE_ItemProxyCable) { + final TE_ItemProxyCable cable = (TE_ItemProxyCable) te; + setConnection(side, cable.isConnectionAllowed(side.getOpposite())); + } else { + setConnection(side, false); + } + } + } + + public static float getThickness() { + return THICKNESS; + } + + /** + * Builds a simple unique identifier for this TileEntity by appending + * the x, y, and z coordinates in a string. + * + * @return unique identifier for this TileEntity + */ + public String getIdentifier() { + if(idCache == null) { + idCache = "" + super.xCoord + super.yCoord + super.zCoord; + return idCache; + } else { + return idCache; + } + } + + /** + * 0 0 0 0 0 0 0 0 = 0 -> no connection </br> + * 0 0 0 0 0 0 0 1 = 1 -> down </br> + * 0 0 0 0 0 0 1 0 = 2 -> up </br> + * 0 0 0 0 0 1 0 0 = 4 -> north </br> + * 0 0 0 0 1 0 0 0 = 8 -> south </br> + * 0 0 0 1 0 0 0 0 = 16 -> west </br> + * 0 0 1 0 0 0 0 0 = 32 -> east </br> + * + * @param side + * The side for which to set the connection status. + * @param connected + * Whether this side should be connected or not + * @return + * True if the connection was allowed + */ + public boolean setConnection(ForgeDirection side, boolean connected) { + if(isConnectionAllowed(side)){ + switch(side) { + case DOWN: connections = (byte) ((connected) ? connections | 1 : connections ^ 1); break; + case UP: connections = (byte) ((connected) ? connections | 2 : connections ^ 2); break; + case NORTH: connections = (byte) ((connected) ? connections | 4 : connections ^ 4); break; + case SOUTH: connections = (byte) ((connected) ? connections | 8 : connections ^ 8); break; + case WEST: connections = (byte) ((connected) ? connections | 16 : connections ^ 16); break; + case EAST: connections = (byte) ((connected) ? connections | 32 : connections ^ 32); break; + default: return false; + } + return true; + } else { + return false; + } + } + + public boolean isConnected(ForgeDirection side) { + switch(side) { + case DOWN: return (connections & 1) == 1; + case UP: return (connections & 2) == 2; + case NORTH: return (connections & 4) == 4; + case SOUTH: return (connections & 8) == 8; + case WEST: return (connections & 16) == 16; + case EAST: return (connections & 32) == 32; + default: return false; + } + } + + public void setConnectionAllowed(ForgeDirection side, boolean allowed) { + switch(side) { + case DOWN: connectionAllowed = (byte) ((allowed) ? connectionAllowed | 1 : connectionAllowed ^ 1); break; + case UP: connectionAllowed = (byte) ((allowed) ? connectionAllowed | 2 : connectionAllowed ^ 2); break; + case NORTH: connectionAllowed = (byte) ((allowed) ? connectionAllowed | 4 : connectionAllowed ^ 4); break; + case SOUTH: connectionAllowed = (byte) ((allowed) ? connectionAllowed | 8 : connectionAllowed ^ 8); break; + case WEST: connectionAllowed = (byte) ((allowed) ? connectionAllowed | 16 : connectionAllowed ^ 16); break; + case EAST: connectionAllowed = (byte) ((allowed) ? connectionAllowed | 32 : connectionAllowed ^ 32); break; + default: break; + } + } + + public boolean isConnectionAllowed(ForgeDirection side) { + switch(side) { + case DOWN: return (connectionAllowed & 1) == 1; + case UP: return (connectionAllowed & 2) == 2; + case NORTH: return (connectionAllowed & 4) == 4; + case SOUTH: return (connectionAllowed & 8) == 8; + case WEST: return (connectionAllowed & 16) == 16; + case EAST: return (connectionAllowed & 32) == 32; + default: return false; + } + } +} diff --git a/src/main/java/tileentities/TE_ItemProxyEndpoint.java b/src/main/java/common/tileentities/TE_ItemProxyEndpoint.java index 1fe32c9687..1eca1ff3df 100644 --- a/src/main/java/tileentities/TE_ItemProxyEndpoint.java +++ b/src/main/java/common/tileentities/TE_ItemProxyEndpoint.java @@ -1,7 +1,6 @@ -package tileentities; +package common.tileentities; import java.util.HashSet; -import java.util.UUID; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; @@ -11,45 +10,33 @@ import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; public class TE_ItemProxyEndpoint extends TileEntity implements ISidedInventory { - - private UUID channel = null; - private int subChannel = -1; + + private byte channel = -1; private IInventory proxyInventory = null; private int tickCounter = 0; - private ItemStack[] slots = new ItemStack[2]; - - public void setChannel(UUID channel) { - this.channel = channel; + + public TE_ItemProxyEndpoint() { + channel = 0; } - - public void setSubChannel(int subChannel) { - this.subChannel = subChannel; + + public void setChannel(byte channel) { + this.channel = channel; } + + public int getChannel() { return channel; } @Override public void updateEntity() { if(tickCounter == 20) { - - if(slots[1] == null || !slots[1].getUnlocalizedName().equals("gt.integrated_circuit") || slots[1].getItemDamage() >= 16) { - setSubChannel(-1); - } - - if(slots[1] != null && slots[1].getUnlocalizedName().equals("gt.integrated_circuit") && slots[1].getItemDamage() < 16) { - setSubChannel(slots[1].getItemDamage()); - } - - if(channel != null && subChannel != -1) { - TE_ItemProxySource source = searchSource(channel); - if(source != null) { - proxyInventory = source; - } + if(channel != -1) { + proxyInventory = searchSource(); } tickCounter = 0; } tickCounter++; } - public TE_ItemProxySource searchSource(UUID channel) { + private TE_ItemProxySource searchSource() { final HashSet<TE_ItemProxySource> sources = new HashSet<>(); final HashSet<String> visited = new HashSet<>(); @@ -62,7 +49,7 @@ public class TE_ItemProxyEndpoint extends TileEntity implements ISidedInventory if(te instanceof TE_ItemProxyCable) { final TE_ItemProxyCable cable = (TE_ItemProxyCable) te; if(cable.isConnected(next.getOpposite())) { - searchSourceRecursive(sources, visited, next.getOpposite(), cable, channel); + searchSourceRecursive(sources, visited, next.getOpposite(), cable); } } } @@ -76,30 +63,24 @@ public class TE_ItemProxyEndpoint extends TileEntity implements ISidedInventory } private void searchSourceRecursive(HashSet<TE_ItemProxySource> sources, HashSet<String> visited, - ForgeDirection from, TE_ItemProxyCable nextTarget, UUID channel) { + ForgeDirection from, TE_ItemProxyCable nextTarget) { - if(visited.contains(nextTarget.getIdentifier())) { - return; - } else { + if(!visited.contains(nextTarget.getIdentifier())) { visited.add(nextTarget.getIdentifier()); - + for(ForgeDirection next : ForgeDirection.VALID_DIRECTIONS) { - if(next == from || !nextTarget.isConnected(next)) { - continue; - } - final TileEntity te = super.getWorldObj().getTileEntity( - nextTarget.xCoord + next.offsetX, - nextTarget.yCoord + next.offsetY, - nextTarget.zCoord + next.offsetZ); - if(te instanceof TE_ItemProxyCable) { - final TE_ItemProxyCable cable = (TE_ItemProxyCable) te; - if(cable.isConnected(next.getOpposite())) { - searchSourceRecursive(sources, visited, next.getOpposite(), cable, channel); - } - } else if (te instanceof TE_ItemProxySource) { - final TE_ItemProxySource source = (TE_ItemProxySource) te; - if(source.getChannel().equals(channel)) { - sources.add((TE_ItemProxySource) te); + if(next != from) { + final TileEntity te = super.getWorldObj().getTileEntity( + nextTarget.xCoord + next.offsetX, + nextTarget.yCoord + next.offsetY, + nextTarget.zCoord + next.offsetZ); + if(te instanceof TE_ItemProxyCable) { + final TE_ItemProxyCable cable = (TE_ItemProxyCable) te; + if(cable.isConnected(next.getOpposite())) { + searchSourceRecursive(sources, visited, next.getOpposite(), cable); + } + } else if (te instanceof TE_ItemProxySource) { + sources.add((TE_ItemProxySource) te); } } } @@ -108,47 +89,42 @@ public class TE_ItemProxyEndpoint extends TileEntity implements ISidedInventory @Override public int getSizeInventory() { - return slots.length; + return 1; } @Override public ItemStack getStackInSlot(int slot) { - if(slot == 0) { - return (proxyInventory != null) ? proxyInventory.getStackInSlot(subChannel) : null; + if(proxyInventory != null && slot == 0) { + return proxyInventory.getStackInSlot(channel); } else { - return slots[slot]; + return null; } } @Override public ItemStack decrStackSize(int slot, int amount) { - if(slot == 0) { - return (proxyInventory != null) ? proxyInventory.decrStackSize(subChannel, amount) : null; + if(proxyInventory != null && slot == 0) { + return proxyInventory.decrStackSize(channel, amount); } else { - final ItemStack copy = slots[1].copy(); - slots[1] = null; - super.markDirty(); - return copy; + return null; } } @Override public ItemStack getStackInSlotOnClosing(int slot) { - return (proxyInventory != null) ? proxyInventory.getStackInSlotOnClosing(subChannel) : null; + return (proxyInventory != null) ? proxyInventory.getStackInSlotOnClosing(channel) : null; } @Override public void setInventorySlotContents(int slot, ItemStack itemStack) { - if(slot == 0 && proxyInventory != null) { - proxyInventory.setInventorySlotContents(subChannel, itemStack); - } else { - slots[slot] = itemStack; + if(proxyInventory != null && slot == 0) { + proxyInventory.setInventorySlotContents(channel, itemStack); } } @Override public String getInventoryName() { - return (proxyInventory != null) ? "Connected Proxy" : "Untethered Proxy"; + return (proxyInventory != null) ? "Connected: " + proxyInventory.getInventoryName() : "Untethered Proxy"; } @Override @@ -158,7 +134,7 @@ public class TE_ItemProxyEndpoint extends TileEntity implements ISidedInventory @Override public int getInventoryStackLimit() { - return (proxyInventory != null) ? proxyInventory.getInventoryStackLimit() : 1; + return (proxyInventory != null) ? proxyInventory.getInventoryStackLimit() : 0; } @Override @@ -178,17 +154,16 @@ public class TE_ItemProxyEndpoint extends TileEntity implements ISidedInventory @Override public boolean isItemValidForSlot(int slot, ItemStack itemStack) { - if(slot == 0 && proxyInventory != null) { - return proxyInventory.isItemValidForSlot(subChannel, itemStack); + if(proxyInventory != null && slot == 0) { + return proxyInventory.isItemValidForSlot(channel, itemStack); } else { - return itemStack != null && itemStack.getUnlocalizedName().equals("gt.integrated_circuit"); + return false; } } @Override public int[] getAccessibleSlotsFromSide(int side) { - final int[] as = {0}; - return as; + return new int[]{0}; } @Override @@ -198,7 +173,7 @@ public class TE_ItemProxyEndpoint extends TileEntity implements ISidedInventory @Override public boolean canExtractItem(int slot, ItemStack itemStack, int side) { - return (slot == 0) ? true : false; + return slot == 0; } } diff --git a/src/main/java/tileentities/TE_ItemProxySource.java b/src/main/java/common/tileentities/TE_ItemProxySource.java index 15ffba3090..a960a7b914 100644 --- a/src/main/java/tileentities/TE_ItemProxySource.java +++ b/src/main/java/common/tileentities/TE_ItemProxySource.java @@ -1,4 +1,4 @@ -package tileentities; +package common.tileentities; import java.util.UUID; @@ -8,12 +8,23 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; public class TE_ItemProxySource extends TileEntity implements IInventory { - - private final UUID channel = UUID.randomUUID(); + private ItemStack[] slots = new ItemStack[16]; - - public UUID getChannel() { - return channel; + private String idCache = null; + + /** + * Builds a simple unique identifier for this TileEntity by appending + * the x, y, and z coordinates in a string. + * + * @return unique identifier for this TileEntity + */ + public String getIdentifier() { + if(idCache == null) { + idCache = "" + super.xCoord + super.yCoord + super.zCoord; + return idCache; + } else { + return idCache; + } } @Override @@ -66,7 +77,7 @@ public class TE_ItemProxySource extends TileEntity implements IInventory { @Override public String getInventoryName() { - return "Item Proxy Network Source"; + return "Item Proxy Source"; } @Override diff --git a/src/main/java/tileentities/TE_ItemServerIOPort.java b/src/main/java/common/tileentities/TE_ItemServerIOPort.java index a8c0f25b83..0e96ff75b9 100644 --- a/src/main/java/tileentities/TE_ItemServerIOPort.java +++ b/src/main/java/common/tileentities/TE_ItemServerIOPort.java @@ -1,23 +1,36 @@ -package tileentities; +package common.tileentities; import kekztech.MultiItemHandler; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -public class TE_ItemServerIOPort extends TileEntity implements IInventory { +public class TE_ItemServerIOPort extends TileEntity implements ISidedInventory { private MultiItemHandler mih; + private int tickCounter = 0; + public void setMultiItemHandler(MultiItemHandler mih) { - System.out.println("MIH set"); this.mih = mih; } @Override + public void updateEntity() { + if(mih != null) { + + tickCounter++; + if(tickCounter >= 40) { + mih.debugPrint(); + tickCounter = 0; + } + } + } + + @Override public int getSizeInventory() { - return (mih != null) ? mih.getItemTypeCapacity() : 9; + return (mih != null) ? mih.getItemTypeCapacity() : 0; } @Override @@ -36,8 +49,9 @@ public class TE_ItemServerIOPort extends TileEntity implements IInventory { } else { return null; } + } else { + return null; } - return null; } @Override @@ -47,26 +61,26 @@ public class TE_ItemServerIOPort extends TileEntity implements IInventory { @Override public void setInventorySlotContents(int slot, ItemStack itemStack) { - System.out.println("Set slot, MIH: " + mih); + System.out.println("Set slot: " + slot); if(mih != null) { - if(itemStack == null || !itemStack.isItemEqual(mih.getStackInSlot(slot))) { + if(itemStack == null) { return; } else { - if(mih.getStackInSlot(slot) == null) { - System.out.println("Set slot: Allocate new"); - mih.insertStackInSlot(slot, itemStack); - } else { - final int change = itemStack.stackSize - mih.getStackInSlot(slot).stackSize; - if(change < 0) { - System.out.println("Set slot: reduce"); - mih.reduceStackInSlot(slot, change); + if(!mih.insertStackInSlot(slot, itemStack)) { + final int delta = itemStack.stackSize - mih.getStackInSlot(slot).stackSize; + if(delta < 0) { + System.out.println("Set slot reduce: " + itemStack.getDisplayName()); + mih.reduceStackInSlot(slot, delta); } else { - System.out.println("Set slot: increase"); - mih.increaseStackInSlot(slot, change); - } + System.out.println("Set slot increase: " + itemStack.getDisplayName()); + mih.increaseStackInSlot(slot, delta); + } + + } else { + System.out.println("Allocated new slot for: " + itemStack.getDisplayName()); } super.markDirty(); - } + } } } @@ -105,4 +119,27 @@ public class TE_ItemServerIOPort extends TileEntity implements IInventory { return (mih != null) ? (mih.getStackInSlot(slot).isItemEqual(itemStack) || mih.getStackInSlot(slot) == null) : false; } + @Override + public int[] getAccessibleSlotsFromSide(int side) { + if(mih != null) { + final int[] as = new int[mih.getItemTypeCapacity()]; + for(int i = 0; i < mih.getItemTypeCapacity(); i++) { + as[i] = i; + } + return as; + } else { + return new int[1]; + } + } + + @Override + public boolean canInsertItem(int slot, ItemStack itemStack, int side) { + return isItemValidForSlot(slot, itemStack); + } + + @Override + public boolean canExtractItem(int slot, ItemStack itemStack, int side) { + return (mih != null) ? true : false; + } + } diff --git a/src/main/java/common/tileentities/TE_SpaceElevatorCapacitor.java b/src/main/java/common/tileentities/TE_SpaceElevatorCapacitor.java new file mode 100644 index 0000000000..a8de775f98 --- /dev/null +++ b/src/main/java/common/tileentities/TE_SpaceElevatorCapacitor.java @@ -0,0 +1,54 @@ +package common.tileentities; + +import net.minecraft.tileentity.TileEntity; + +public class TE_SpaceElevatorCapacitor extends TileEntity { + + private float chargeLevel = 0.0F; + private boolean isDamaged = true; + + /** + * Called by {@link GTMTE_SpaceElevator} while charging + * @param charge + * Current elevator charge + * @param maxCharge + * Charge level it is trying to reach + */ + public void updateChargeLevel(int charge, int maxCharge) { + chargeLevel = ((float) charge) / ((float) maxCharge); + } + + /** + * Called by {@link client.renderer.TESR_SECapacitor} to calculate the block's colour saturation + * @return + * Charge level from 0.0F to 1.0F + */ + public float getChargeLevel() { + return chargeLevel; + } + + /** + * Called by {@link GTMTE_SpaceElevator} in case of power loss + */ + public void resetChargeLevel() { + chargeLevel = 0.0F; + } + + /** + * Called by {@link GTMTE_SpaceElevator} in case of maintenance issues + * @param isDamaged + * has maintenance issue + */ + public void setIsDamaged(boolean isDamaged) { + this.isDamaged = isDamaged; + } + + /** + * Called by {@link client.renderer.TESR_SECapacitor} to check whether the block should be rendered red + * @return + * should be rendered red + */ + public boolean isDamaged() { + return isDamaged; + } +} diff --git a/src/main/java/common/tileentities/TE_SpaceElevatorTether.java b/src/main/java/common/tileentities/TE_SpaceElevatorTether.java new file mode 100644 index 0000000000..c4df059563 --- /dev/null +++ b/src/main/java/common/tileentities/TE_SpaceElevatorTether.java @@ -0,0 +1,23 @@ +package common.tileentities; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; + +public class TE_SpaceElevatorTether extends TileEntity { + + @SideOnly(Side.CLIENT) + @Override + public double getMaxRenderDistanceSquared() { + // 4k is standard, 65k is what the vanilla beacon uses + return 65536.0D; + } + + @Override + @SideOnly(Side.CLIENT) + public AxisAlignedBB getRenderBoundingBox() { + // Make it so the beam is still rendered even when the source block is out of sight + return INFINITE_EXTENT_AABB; + } +} diff --git a/src/main/java/common/tileentities/TE_TFFTMultiHatch.java b/src/main/java/common/tileentities/TE_TFFTMultiHatch.java new file mode 100644 index 0000000000..c4f9451478 --- /dev/null +++ b/src/main/java/common/tileentities/TE_TFFTMultiHatch.java @@ -0,0 +1,222 @@ +package common.tileentities; + +import java.util.Iterator; +import java.util.List; + +import common.Blocks; +import kekztech.MultiFluidHandler; +import net.minecraft.block.Block; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTankInfo; +import net.minecraftforge.fluids.IFluidHandler; + +public class TE_TFFTMultiHatch extends TileEntity implements IFluidHandler { + + private static final int OUTPUT_PER_SECOND = 1000; // L/s + + private MultiFluidHandler mfh; + private int tickCounter = 0; + private boolean autoOutput = false; + + public void setMultiFluidHandler(MultiFluidHandler mfh) { + this.mfh = mfh; + } + + public void toggleAutoOutput() { + autoOutput = !autoOutput; + } + + public boolean isOutputting() { + return autoOutput; + } + + @Override + public void updateEntity() { + if(!autoOutput || mfh == null) { + return; + } + + tickCounter++; + if(tickCounter >= 20) { + + final ForgeDirection d = getOutwardsFacingDirection(); + if(d == ForgeDirection.UNKNOWN) { + return; + } + final TileEntity t = this.getWorldObj().getTileEntity( + this.xCoord + d.offsetX, + this.yCoord + d.offsetY, + this.zCoord + d.offsetZ); + + if(t instanceof IFluidHandler) { + + final IFluidHandler fh = (IFluidHandler) t; + + // Cycle through fluids + final Iterator<FluidStack> volumes = mfh.getFluids().iterator(); + while(volumes.hasNext()) { + final FluidStack volume = volumes.next(); + + // Remember for later + final int oVolume = volume.amount; + + // Use API methods + if(fh.canFill(d.getOpposite(), volume.getFluid())) { + + // Test how much can be output + final FluidStack copy = volume.copy(); + copy.amount = Math.min(copy.amount, OUTPUT_PER_SECOND); + + // How much is drawn + copy.amount = mfh.pullFluid(copy, false); + + // Test how much can be filled (and fill if possible) + copy.amount = fh.fill(d.getOpposite(), copy, true); + + // Actually deplete storage + mfh.pullFluid(copy, true); + + // Prevent ConcurrentModificationException + if(copy.amount >= oVolume) { + break; + } + } + } + } + + tickCounter = 0; + } + } + + private ForgeDirection getOutwardsFacingDirection() { + // TODO Revisit this once the hatch has a facing side + // Look up which side has the storage field block and choose the other side. + // This is important so the tank doesn't output into itself in case + // there is another hatch next to this one. + for(ForgeDirection direction : ForgeDirection.values()) { + + final Block b = this.getWorldObj().getBlock(this.xCoord + direction.offsetX, this.yCoord + direction.offsetY, this.zCoord + direction.offsetZ); + if(b != null && ( + b.equals(Blocks.tfftStorageField1) + || b.equals(Blocks.tfftStorageField2) + || b.equals(Blocks.tfftStorageField3) + || b.equals(Blocks.tfftStorageField4) + || b.equals(Blocks.tfftStorageField5))) { + return direction.getOpposite(); + } + } + return ForgeDirection.UNKNOWN; + } + + @Override + public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { + return (mfh != null) ? mfh.pushFluid(resource, doFill) : 0; + } + + @Override + public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) { + return (mfh != null) ? new FluidStack(resource.getFluid(), mfh.pullFluid(resource, doDrain)) : null; + } + + /** + * Drains fluid out of 0th internal tank. + * If the TFFT Controller contains an Integrated Circuit, drain fluid + * from the slot equal to the circuit configuration. + * + * @param from + * Orientation the fluid is drained to. + * @param maxDrain + * Maximum amount of fluid to drain. + * @param doDrain + * If false, drain will only be simulated. + * @return FluidStack representing the Fluid and amount that was (or would have been, if + * simulated) drained. + */ + @Override + public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { + if(mfh != null) { + final FluidStack drain = mfh.getFluid(0); + if(drain != null) { + // If there's no integrated circuit in the T.F.F.T. controller, output slot 0 + final byte selectedSlot = (mfh.getSelectedFluid() == -1) ? 0 : mfh.getSelectedFluid(); + + return new FluidStack( + drain.getFluid(), + mfh.pullFluid(new FluidStack(drain.getFluid(), maxDrain), selectedSlot, doDrain) + ); + } + } + return null; + } + + @Override + public boolean canFill(ForgeDirection from, Fluid fluid) { + return (mfh != null) && mfh.couldPush(new FluidStack(fluid, 1)); + } + + @Override + public boolean canDrain(ForgeDirection from, Fluid fluid) { + return (mfh != null) && mfh.contains(new FluidStack(fluid, 1)); + } + + @Override + public FluidTankInfo[] getTankInfo(ForgeDirection from) { + if(mfh == null) { + return null; + } + final List<FluidStack> fluids = mfh.getFluids(); + final FluidTankInfo[] tankInfo = new FluidTankInfo[fluids.size()]; + for(int i = 0; i < tankInfo.length; i++) { + tankInfo[i] = new FluidTankInfo(fluids.get(i), mfh.getCapacity()); + } + return tankInfo; + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + nbt = (nbt == null) ? new NBTTagCompound() : nbt; + + nbt.setBoolean("autoOutput", autoOutput); + + super.writeToNBT(nbt); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + nbt = (nbt == null) ? new NBTTagCompound() : nbt; + + autoOutput = nbt.getBoolean("autoOutput"); + + super.readFromNBT(nbt); + } + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/src/main/java/common/tileentities/TE_ThaumiumReinforcedJar.java b/src/main/java/common/tileentities/TE_ThaumiumReinforcedJar.java new file mode 100644 index 0000000000..23b19495ae --- /dev/null +++ b/src/main/java/common/tileentities/TE_ThaumiumReinforcedJar.java @@ -0,0 +1,10 @@ +package common.tileentities; + +import thaumcraft.common.tiles.TileJarFillable; + +public class TE_ThaumiumReinforcedJar extends TileJarFillable { + + public TE_ThaumiumReinforcedJar() { + super.maxAmount = 256; + } +} diff --git a/src/main/java/common/tileentities/TE_ThaumiumReinforcedVoidJar.java b/src/main/java/common/tileentities/TE_ThaumiumReinforcedVoidJar.java new file mode 100644 index 0000000000..c648d4be00 --- /dev/null +++ b/src/main/java/common/tileentities/TE_ThaumiumReinforcedVoidJar.java @@ -0,0 +1,10 @@ +package common.tileentities; + +import thaumcraft.common.tiles.TileJarFillableVoid; + +public class TE_ThaumiumReinforcedVoidJar extends TileJarFillableVoid { + + public TE_ThaumiumReinforcedVoidJar() { + super.maxAmount = 256; + } +} diff --git a/src/main/java/itemBlocks/IB_TFFTMultiHatch.java b/src/main/java/itemBlocks/IB_TFFTMultiHatch.java deleted file mode 100644 index 2dca3e95be..0000000000 --- a/src/main/java/itemBlocks/IB_TFFTMultiHatch.java +++ /dev/null @@ -1,22 +0,0 @@ -package itemBlocks; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class IB_TFFTMultiHatch extends ItemBlock { - - public IB_TFFTMultiHatch(Block block) { - super(block); - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - @Override - public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { - lines.add("Special hatch for the T.F.F.T"); - lines.add("Allows for automated interaction with all stored fluids in a single place"); - } -} diff --git a/src/main/java/items/Item_Configurator.java b/src/main/java/items/Item_Configurator.java deleted file mode 100644 index ed319eb37e..0000000000 --- a/src/main/java/items/Item_Configurator.java +++ /dev/null @@ -1,43 +0,0 @@ -package items; - -import java.util.List; - -import cpw.mods.fml.common.registry.GameRegistry; -import kekztech.KekzCore; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -public class Item_Configurator extends Item { - - private static final Item_Configurator instance = new Item_Configurator(); - - private Item_Configurator() { - // I am a singleton - } - - public static Item_Configurator getInstance() { - return instance; - } - - public void registerItem() { - super.setHasSubtypes(false); - final String unlocalizedName = "kekztech_configurator"; - super.setUnlocalizedName(unlocalizedName); - super.setCreativeTab(CreativeTabs.tabMisc); - super.setMaxStackSize(1); - super.setTextureName(KekzCore.MODID + ":" + "DiamondHeatPipe"); - GameRegistry.registerItem(getInstance(), unlocalizedName); - } - - @SuppressWarnings({"unchecked", "rawtypes"}) - @Override - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean b) { - list.add("Used to configure Item Proxy Networks"); - if(stack.hasTagCompound() && stack.getTagCompound().hasKey("config")) { - list.add("Channel: " + stack.getTagCompound().getString("config")); - } - } - -} diff --git a/src/main/java/kekztech/GuiHandler.java b/src/main/java/kekztech/GuiHandler.java index 439baff31f..97d4350b71 100644 --- a/src/main/java/kekztech/GuiHandler.java +++ b/src/main/java/kekztech/GuiHandler.java @@ -1,9 +1,9 @@ package kekztech; -import container.Container_ItemProxyEndpoint; -import container.Container_ItemProxySource; -import container.Gui_ItemProxyEndpoint; -import container.Gui_ItemProxySource; +import client.gui.Gui_ItemProxyEndpoint; +import client.gui.Gui_ItemProxySource; +import common.container.Container_ItemProxyEndpoint; +import common.container.Container_ItemProxySource; import cpw.mods.fml.common.network.IGuiHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; diff --git a/src/main/java/kekztech/KekzCore.java b/src/main/java/kekztech/KekzCore.java index 247131c7f7..7574c1f399 100644 --- a/src/main/java/kekztech/KekzCore.java +++ b/src/main/java/kekztech/KekzCore.java @@ -1,55 +1,23 @@ package kekztech;
-import blocks.Block_ControlRod;
-import blocks.Block_GDCUnit;
-import blocks.Block_ItemProxyCable;
-import blocks.Block_ItemProxyEndpoint;
-import blocks.Block_ItemProxySource;
-import blocks.Block_ItemServerDrive;
-import blocks.Block_ItemServerIOPort;
-import blocks.Block_ItemServerRackCasing;
-import blocks.Block_ReactorChamber_OFF;
-import blocks.Block_ReactorChamber_ON;
-import blocks.Block_TFFTCasing;
-import blocks.Block_TFFTMultiHatch;
-import blocks.Block_TFFTStorageFieldBlockT1;
-import blocks.Block_TFFTStorageFieldBlockT2;
-import blocks.Block_TFFTStorageFieldBlockT3;
-import blocks.Block_TFFTStorageFieldBlockT4;
-import blocks.Block_YSZUnit;
+import client.renderer.TESR_SECapacitor;
+import client.renderer.TESR_SETether;
+import common.Blocks;
+import common.Recipes;
+import common.Researches;
+import common.tileentities.*;
import cpw.mods.fml.client.registry.ClientRegistry;
-import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
-import gregtech.api.enums.GT_Values;
-import gregtech.api.enums.ItemList;
-import gregtech.api.enums.Materials;
-import gregtech.api.enums.OrePrefixes;
-import gregtech.api.util.GT_ModHandler;
-import gregtech.api.util.GT_OreDictUnificator;
-import gregtech.api.util.GT_Utility;
import items.ErrorItem;
-import items.Item_Configurator;
import items.MetaItem_CraftingComponent;
import items.MetaItem_ReactorComponent;
-import net.minecraft.item.ItemStack;
-import net.minecraftforge.fluids.FluidRegistry;
-import render.ConduitRenderer;
-import tileentities.GTMTE_FluidMultiStorage;
-import tileentities.GTMTE_ItemServer;
-import tileentities.GTMTE_ModularNuclearReactor;
-import tileentities.GTMTE_SOFuelCellMK1;
-import tileentities.GTMTE_SOFuelCellMK2;
-import tileentities.TE_ItemProxyCable;
-import tileentities.TE_ItemProxyEndpoint;
-import tileentities.TE_ItemProxySource;
-import tileentities.TE_ItemServerIOPort;
-import tileentities.TE_TFFTMultiHatch;
-import util.Util;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* My GT-Meta-IDs are: 13101 - 13500
@@ -59,25 +27,32 @@ import util.Util; */
@Mod(modid = KekzCore.MODID, name = KekzCore.NAME, version = KekzCore.VERSION,
dependencies =
- "required-after:IC2; "
+ "required-after:IC2;"
+ "required-after:gregtech;"
- + "after:bartworks"
+ + "required-after:tectech;"
+ + "required-after:Thaumcraft;"
+ + "required-after:ThaumicTinkerer;"
+ + "after:bartworks;"
+ + "after:dreamcraft"
)
public class KekzCore {
public static final String NAME = "KekzTech";
public static final String MODID = "kekztech";
- public static final String VERSION = "0.2.2";
-
+ public static final String VERSION = "0.4.5";
+
+ public static final Logger LOGGER = LogManager.getLogger(NAME);
+
@Mod.Instance("kekztech")
public static KekzCore instance;
- private GTMTE_SOFuelCellMK1 sofc1;
- private GTMTE_SOFuelCellMK2 sofc2;
- @SuppressWarnings("unused")
- private GTMTE_ModularNuclearReactor mdr;
- private GTMTE_FluidMultiStorage fms;
- private GTMTE_ItemServer is;
+ public static GTMTE_SOFuelCellMK1 sofc1;
+ public static GTMTE_SOFuelCellMK2 sofc2;
+ public static GTMTE_ModularNuclearReactor mdr;
+ public static GTMTE_FluidMultiStorage fms;
+ public static GTMTE_ItemServer is;
+ public static GTMTE_LapotronicSuperCapacitor lsc;
+ public static GTMTE_SpaceElevator se;
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
@@ -85,350 +60,46 @@ public class KekzCore { ErrorItem.getInstance().registerItem();
MetaItem_ReactorComponent.getInstance().registerItem();
MetaItem_CraftingComponent.getInstance().registerItem();
- Item_Configurator.getInstance().registerItem();
Items.registerOreDictNames();
- // Blocks
- Block_YSZUnit.getInstance().registerBlock();
- Block_GDCUnit.getInstance().registerBlock();
- Block_TFFTCasing.getInstance().registerBlock();
- Block_TFFTStorageFieldBlockT1.getInstance().registerBlock();
- Block_TFFTStorageFieldBlockT2.getInstance().registerBlock();
- Block_TFFTStorageFieldBlockT3.getInstance().registerBlock();
- Block_TFFTStorageFieldBlockT4.getInstance().registerBlock();
- Block_TFFTMultiHatch.getInstance().registerBlock();
- Block_ReactorChamber_OFF.getInstance().registerBlock();
- Block_ReactorChamber_ON.getInstance().registerBlock();
- Block_ControlRod.getInstance().registerBlock();
- Block_ItemServerDrive.getInstance().registerBlock();
- Block_ItemServerRackCasing.getInstance().registerBlock();
- Block_ItemServerIOPort.getInstance().registerBlock();
- Block_ItemProxyCable.getInstance().registerBlock();
- Block_ItemProxySource.getInstance().registerBlock();
- Block_ItemProxyEndpoint.getInstance().registerBlock();
+
+ Blocks.preInit();
+
// Register TileEntities
GameRegistry.registerTileEntity(TE_TFFTMultiHatch.class, "kekztech_tfftmultihatch_tile");
- GameRegistry.registerTileEntity(TE_ItemServerIOPort.class, "kekztech_itemserverioport_tile");
+ //GameRegistry.registerTileEntity(TE_ItemServerIOPort.class, "kekztech_itemserverioport_tile");
GameRegistry.registerTileEntity(TE_ItemProxyCable.class, "kekztech_itemproxycable_tile");
GameRegistry.registerTileEntity(TE_ItemProxySource.class, "kekztech_itemproxysource_tile");
GameRegistry.registerTileEntity(TE_ItemProxyEndpoint.class, "kekztech_itemproxyendpoint_tile");
+ GameRegistry.registerTileEntity(TE_ThaumiumReinforcedJar.class, "kekztech_thaumiumreinforcedjar");
+ GameRegistry.registerTileEntity(TE_IchorJar.class, "kekztech_ichorjar");
// Register guis
NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler());
+
+ // Register TESR
+ ClientRegistry.bindTileEntitySpecialRenderer(TE_SpaceElevatorTether.class, new TESR_SETether());
+ ClientRegistry.bindTileEntitySpecialRenderer(TE_SpaceElevatorCapacitor.class, new TESR_SECapacitor());
+
+ Researches.preInit();
}
@Mod.EventHandler
- public void init(FMLInitializationEvent event ) {
+ public void init(FMLInitializationEvent event) {
// Multiblock controllers
sofc1 = new GTMTE_SOFuelCellMK1(13101, "multimachine.fuelcellmk1", "Solid-Oxide Fuel Cell Mk I");
sofc2 = new GTMTE_SOFuelCellMK2(13102, "multimachine.fuelcellmk2", "Solid-Oxide Fuel Cell Mk II");
mdr = new GTMTE_ModularNuclearReactor(13103, "multimachine.nuclearreactor", "Nuclear Reactor");
fms = new GTMTE_FluidMultiStorage(13104, "multimachine.tf_fluidtank", "T.F.F.T");
- is = new GTMTE_ItemServer(13105, "multimachine.itemserver", "Item Server");
+ //is = new GTMTE_ItemServer(13105, "multimachine.itemserver", "Item Server");
+ lsc = new GTMTE_LapotronicSuperCapacitor(13106, "multimachine.supercapacitor", "Lapotronic Supercapacitor");
+ se = new GTMTE_SpaceElevator(13107, "multimachine.spaceelevator", "Space Elevator");
// Register renderer
- ConduitRenderer.getInstance().registerRenderer();
+ //RenderingRegistry.registerBlockHandler(ConduitRenderer.getInstance());
}
@Mod.EventHandler
public void postInit(FMLPostInitializationEvent event) {
- System.out.println("Registering KekzTech recipes...");
-
- final MetaItem_CraftingComponent craftingItem = MetaItem_CraftingComponent.getInstance();
-
- // Multiblock Controllers
- final Object[] mk1_recipe = {
- "CCC", "PHP", "FBL",
- 'C', OrePrefixes.circuit.get(Materials.Advanced),
- 'P', ItemList.Electric_Pump_HV.get(1L),
- 'H', ItemList.Hull_HV.get(1L),
- 'F', GT_OreDictUnificator.get(OrePrefixes.pipeSmall, Materials.StainlessSteel, 1),
- 'B', GT_OreDictUnificator.get(OrePrefixes.cableGt02, Materials.Gold, 1),
- 'L', GT_OreDictUnificator.get(OrePrefixes.pipeLarge, Materials.StainlessSteel, 1)
- };
- GT_ModHandler.addCraftingRecipe(sofc1.getStackForm(1), mk1_recipe);
- final Object[] mk2_recipe = {
- "CCC", "PHP", "FBL",
- 'C', OrePrefixes.circuit.get(Materials.Master),
- 'P', ItemList.Electric_Pump_IV.get(1L),
- 'H', ItemList.Hull_IV.get(1L),
- 'F', GT_OreDictUnificator.get(OrePrefixes.pipeSmall, Materials.Ultimate, 1),
- 'B', Util.getStackofAmountFromOreDict("wireGt04SuperconductorEV", 1),
- 'L', GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Ultimate, 1)
- };
- GT_ModHandler.addCraftingRecipe(sofc2.getStackForm(1), mk2_recipe);
- final Object[] tfft_recipe = {
- "HFH", "PVP", "CFC",
- 'H', OrePrefixes.pipeMedium.get(Materials.StainlessSteel),
- 'F', ItemList.Field_Generator_MV.get(1L),
- 'P', ItemList.Electric_Pump_HV.get(1L),
- 'V', OrePrefixes.rotor.get(Materials.VibrantAlloy),
- 'C', OrePrefixes.circuit.get(Materials.Data)
- };
- GT_ModHandler.addCraftingRecipe(fms.getStackForm(1), tfft_recipe);
- final Object[] is_recipe = {
- "FRF", "CGC", "PZP",
- 'F', GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.TungstenSteel, 1),
- 'R', GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.TungstenSteel, 1),
- 'C', ItemList.Conveyor_Module_LuV.get(1L),
- 'G', ItemList.Field_Generator_EV.get(1L),
- 'P', GT_OreDictUnificator.get(OrePrefixes.cableGt04, Materials.VanadiumGallium, 1),
- 'Z', GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Master, 1)
- };
- GT_ModHandler.addCraftingRecipe(is.getStackForm(1), is_recipe);
-
-
- // Ceramic Electrolyte Units
- final ItemStack[] yszUnit = {
- GT_Utility.getIntegratedCircuit(6),
- craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicPlate.getMetaID(), 4),
- GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Yttrium, 1),
- GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.StainlessSteel, 1),
- ItemList.Electric_Motor_HV.get(1L),
- };
- GT_Values.RA.addAssemblerRecipe(
- yszUnit,
- Materials.Hydrogen.getGas(4000),
- new ItemStack(Block_YSZUnit.getInstance(), 1),
- 1200, 480);
- final ItemStack[] gdcUnit = {
- GT_Utility.getIntegratedCircuit(6),
- craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicPlate.getMetaID(), 8),
- GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Gadolinium, new ItemStack(ErrorItem.getInstance(), 1), 1),
- GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Desh, new ItemStack(ErrorItem.getInstance(), 1), 1),
- ItemList.Electric_Motor_IV.get(1L),
- };
- GT_Values.RA.addAssemblerRecipe(
- gdcUnit,
- Materials.Hydrogen.getGas(16000),
- new ItemStack(Block_GDCUnit.getInstance(), 1),
- 2400, 1920);
-
- // Item Server Structure blocks
- final Object[] is_rack_recipe = {
- "BRB", "CFC", "BRB",
- 'B', GT_OreDictUnificator.get(OrePrefixes.plate, Materials.BlueSteel, 1),
- 'R', GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Aluminium, 1),
- 'C', GT_OreDictUnificator.get(OrePrefixes.cableGt01, Materials.Platinum, 1),
- 'F', GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.TungstenSteel, 1),
- };
- GT_ModHandler.addCraftingRecipe(new ItemStack(Block_ItemServerRackCasing.getInstance()), is_rack_recipe);
- final ItemStack[] is_ioport = {
- GT_Utility.getIntegratedCircuit(6),
- new ItemStack(Block_ItemServerRackCasing.getInstance()),
- GT_OreDictUnificator.get(OrePrefixes.bolt, Materials.Platinum, 16),
- GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Platinum, 2),
- ItemList.Field_Generator_HV.get(1L),
- ItemList.Robot_Arm_EV.get(4L)
- };
- GT_Values.RA.addAssemblerRecipe(
- is_ioport,
- FluidRegistry.getFluidStack("molten.polytetrafluoroethylene", 144),
- new ItemStack(Block_ItemServerIOPort.getInstance(), 1),
- 200, 7680);
- final Object[] is_blade = {
- "CRC", "CMC", "HPH",
- 'C', GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Elite, 1),
- 'R', GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Aluminium, 1),
- 'P', GT_OreDictUnificator.get(OrePrefixes.cableGt08, Materials.Platinum, 1),
- 'M', ItemList.Electric_Motor_EV.get(1L),
- 'H', craftingItem.getStackFromDamage(Items.BoronArsenideHeatPipe.getMetaID()),
- };
- GT_ModHandler.addCraftingRecipe(craftingItem.getStackOfAmountFromDamage(Items.ItemServerBlade.getMetaID(), 8), is_blade);
- final ItemStack[] is_drive = {
- GT_Utility.getIntegratedCircuit(6),
- craftingItem.getStackOfAmountFromDamage(Items.ItemServerBlade.getMetaID(), 8),
- GT_OreDictUnificator.get(OrePrefixes.plate, Materials.BlueSteel, 4),
- GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Aluminium, 1),
- GT_OreDictUnificator.get(OrePrefixes.screw, Materials.Aluminium, 16)
- };
- GT_Values.RA.addAssemblerRecipe(
- is_drive,
- FluidRegistry.getFluidStack("molten.polyethylene", 1152),
- new ItemStack(Block_ItemServerDrive.getInstance(), 1),
- 200, 7680);
-
- // T.F.F.T Structure blocks
- final ItemStack[] tfftcasing = {
- GT_Utility.getIntegratedCircuit(6),
- GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DarkSteel, 3),
- GT_OreDictUnificator.get(OrePrefixes.plate, Materials.EnderPearl, 3),
- GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.StainlessSteel, 1),
- };
- GT_Values.RA.addAssemblerRecipe(
- tfftcasing,
- FluidRegistry.getFluidStack("molten.polytetrafluoroethylene", 144),
- new ItemStack(Block_TFFTCasing.getInstance(), 1),
- 200, 256);
- final ItemStack[] tfftstoragefield1 = {
- GT_Utility.getIntegratedCircuit(6),
- GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Advanced, 1),
- GT_OreDictUnificator.get(OrePrefixes.plate, Materials.PulsatingIron, 1),
- GT_OreDictUnificator.get(OrePrefixes.pipeLarge, Materials.Steel, 1),
- ItemList.Electric_Pump_LV.get(1L)
- };
- GT_Values.RA.addAssemblerRecipe(
- tfftstoragefield1,
- FluidRegistry.getFluidStack("molten.glass", 144),
- new ItemStack(Block_TFFTStorageFieldBlockT1.getInstance(), 1),
- 200, 256);
- final ItemStack[] tfftstoragefield2 = {
- GT_Utility.getIntegratedCircuit(6),
- GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Advanced, 2),
- GT_OreDictUnificator.get(OrePrefixes.plate, Materials.PulsatingIron, 4),
- GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.StainlessSteel, 1),
- ItemList.Electric_Pump_MV.get(1L)
- };
- GT_Values.RA.addAssemblerRecipe(
- tfftstoragefield2,
- FluidRegistry.getFluidStack("molten.plastic", 576),
- new ItemStack(Block_TFFTStorageFieldBlockT2.getInstance(), 1),
- 200, 480);
- final ItemStack[] tfftstoragefield3 = {
- GT_Utility.getIntegratedCircuit(6),
- GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Data, 4),
- GT_OreDictUnificator.get(OrePrefixes.plate, Materials.VibrantAlloy, 2),
- GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Titanium, 1),
- ItemList.Field_Generator_MV.get(1L),
- ItemList.Electric_Pump_HV.get(2L)
- };
- GT_Values.RA.addAssemblerRecipe(
- tfftstoragefield3,
- FluidRegistry.getFluidStack("molten.epoxid", 576),
- new ItemStack(Block_TFFTStorageFieldBlockT3.getInstance(), 1),
- 300, 1920);
- final ItemStack[] tfftstoragefield4 = {
- GT_Utility.getIntegratedCircuit(6),
- GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Elite, 4),
- GT_OreDictUnificator.get(OrePrefixes.plateTriple, Materials.NiobiumTitanium, 1),
- GT_OreDictUnificator.get(OrePrefixes.pipeHuge, Materials.TungstenSteel, 1),
- ItemList.Field_Generator_HV.get(1L),
- ItemList.Electric_Pump_EV.get(1L)
- };
- GT_Values.RA.addAssemblerRecipe(
- tfftstoragefield4,
- FluidRegistry.getFluidStack("molten.epoxid", 1152),
- new ItemStack(Block_TFFTStorageFieldBlockT4.getInstance(), 1),
- 400, 4098);
- final Object[] multi_hatch = {
- "PRP", "UFU", "PRP",
- 'P', GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.NiobiumTitanium, 1),
- 'R', GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.StainlessSteel, 1),
- 'U', ItemList.Electric_Pump_IV.get(1L),
- 'F', ItemList.Field_Generator_HV.get(1L)
- };
- GT_ModHandler.addCraftingRecipe(new ItemStack(Block_TFFTMultiHatch.getInstance()), multi_hatch);
-
- // Reactor structure blocks
- final ItemStack[] controlrod = {
- GT_Utility.getIntegratedCircuit(6),
- GT_OreDictUnificator.get(OrePrefixes.pipeHuge, Materials.Lead, 1),
- GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Steel, 4),
- GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Carbon, 64)
- };
- GT_Values.RA.addAssemblerRecipe(
- controlrod,
- null,
- new ItemStack(Block_ControlRod.getInstance(), 1),
- 800, 480);
- final ItemStack[] reactorchamber = {
- GT_Utility.getIntegratedCircuit(6),
- GT_OreDictUnificator.get(OrePrefixes.pipeHuge, Materials.Lead, 1),
- GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.Lead, 9),
- GT_OreDictUnificator.get(OrePrefixes.ring, Materials.TungstenSteel, 18),
- GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Steel, 2),
- };
- GT_Values.RA.addAssemblerRecipe(
- reactorchamber,
- FluidRegistry.getFluidStack("wet.concrete", 144),
- new ItemStack(Block_ReactorChamber_OFF.getInstance(), 1),
- 1600, 480);
-
- // Ceramic plates
- GT_Values.RA.addAlloySmelterRecipe(
- craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicDust.getMetaID(), Loader.isModLoaded("bartworks") ? 3 : 10),
- ItemList.Shape_Mold_Plate.get(1),
- craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicPlate.getMetaID(), 1),
- 400, 480);
- GT_Values.RA.addFormingPressRecipe(
- craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicDust.getMetaID(), 10),
- ItemList.Shape_Mold_Plate.get(1),
- craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicPlate.getMetaID(), 1),
- 800, 480);
-
- // Dusts
- GT_Values.RA.addMixerRecipe(Materials.Boron.getDust(1), Materials.Arsenic.getDust(1), GT_Utility.getIntegratedCircuit(6), null,
- null, null, craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideDust.getMetaID(), 2),
- 100, 1920);
- GT_Values.RA.addChemicalRecipe(
- Materials.Ammonia.getCells(2),
- Materials.CarbonDioxide.getCells(1),
- null,
- null,
- craftingItem.getStackOfAmountFromDamage(Items.AmineCarbamiteDust.getMetaID(), 1),
- Util.getStackofAmountFromOreDict("cellEmpty", 3),
- 400, 30);
- GT_Values.RA.addChemicalRecipe(
- craftingItem.getStackOfAmountFromDamage(Items.AmineCarbamiteDust.getMetaID(), 1),
- Materials.Diamond.getDust(16),
- Materials.CarbonDioxide.getGas(1000),
- null,
- craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondDust.getMetaID(), 1),
- null, 1200, 480);
- if (!Loader.isModLoaded("bartworks")) {
- GT_Values.RA.addChemicalRecipe(
- Materials.Yttrium.getDust(1), GT_Utility.getIntegratedCircuit(6), Materials.Oxygen.getGas(3000),
- null, craftingItem.getStackOfAmountFromDamage(Items.YttriaDust.getMetaID(), 1), null,
- 400, 30);
- GT_Values.RA.addChemicalRecipe(
- Util.getStackofAmountFromOreDict("dustZirconium", 1), GT_Utility.getIntegratedCircuit(6), Materials.Oxygen.getGas(2000),
- null, craftingItem.getStackOfAmountFromDamage(Items.ZirconiaDust.getMetaID(), 1), null,
- 400, 30);
- }
- GT_Values.RA.addChemicalRecipe(
- Materials.Cerium.getDust(2), GT_Utility.getIntegratedCircuit(6), Materials.Oxygen.getGas(3000),
- null, craftingItem.getStackOfAmountFromDamage(Items.CeriaDust.getMetaID(), 2), null,
- 400, 30);
- GT_Values.RA.addMixerRecipe(
- Items.YttriaDust.getOreDictedItemStack(1),
- Items.ZirconiaDust.getOreDictedItemStack(5),
- GT_Utility.getIntegratedCircuit(6), null, null, null,
- craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicDust.getMetaID(), 6),
- 400, 96);
- GT_Values.RA.addMixerRecipe(
- GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Gadolinium, new ItemStack(ErrorItem.getInstance(), 1), 1),
- craftingItem.getStackOfAmountFromDamage(Items.CeriaDust.getMetaID(), 9),
- GT_Utility.getIntegratedCircuit(6), null, null, null,
- craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicDust.getMetaID(), 10),
- 400, 1920);
-
- // Crystals
- GT_Values.RA.addAutoclaveRecipe(
- craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondDust.getMetaID(), 4),
- Materials.CarbonDioxide.getGas(16000),
- craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondCrystal.getMetaID(), 1), 10000, 2400, 7680);
- GT_Values.RA.addAutoclaveRecipe(
- craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideDust.getMetaID(), 4),
- Materials.Nitrogen.getGas(4000),
- craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideCrystal.getMetaID(), 1), 10000, 2400, 1920);
-
- // Heat Pipes
- GT_Values.RA.addLatheRecipe(
- GT_OreDictUnificator.get(OrePrefixes.stick, Materials.AnnealedCopper, 1),
- craftingItem.getStackFromDamage(Items.CopperHeatPipe.getMetaID()),
- null, 120, 120);
- GT_Values.RA.addLatheRecipe(
- GT_OreDictUnificator.get(OrePrefixes.stick, Materials.Silver, 1),
- craftingItem.getStackFromDamage(Items.SilverHeatPipe.getMetaID()),
- null, 120, 480);
- GT_Values.RA.addLatheRecipe(
- craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideCrystal.getMetaID(), 4),
- craftingItem.getStackFromDamage(Items.BoronArsenideHeatPipe.getMetaID()),
- null, 1200, 1920);
- GT_Values.RA.addLatheRecipe(
- craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondCrystal.getMetaID(), 4),
- craftingItem.getStackFromDamage(Items.DiamondHeatPipe.getMetaID()),
- null, 1200, 7680);
-
- System.out.println("...done");
+ Recipes.postInit();
+ Researches.postInit();
}
-
}
diff --git a/src/main/java/kekztech/MultiFluidHandler.java b/src/main/java/kekztech/MultiFluidHandler.java index a96094a8f0..f1a527b2c0 100644 --- a/src/main/java/kekztech/MultiFluidHandler.java +++ b/src/main/java/kekztech/MultiFluidHandler.java @@ -15,6 +15,8 @@ public class MultiFluidHandler { private int capacityPerFluid; private boolean locked = true; + private boolean doVoidExcess = false; + private byte fluidSelector = -1; public MultiFluidHandler() { @@ -38,6 +40,28 @@ public class MultiFluidHandler { public void setLock(boolean state) { locked = state; } + + public void setDoVoidExcess(boolean doVoidExcess) { this.doVoidExcess = doVoidExcess; } + + /** + * Used to tell the MFH if a fluid is selected by + * an Integrated Circuit in the controller. + * + * @param fluidSelector + * Selected fluid or -1 if no fluid is selected + */ + public void setFluidSelector(byte fluidSelector) { + this.fluidSelector = fluidSelector; + } + + /** + * + * @return + * Selected fluid or -1 if no fluid is selected + */ + public byte getSelectedFluid() { + return fluidSelector; + } public boolean contains(FluidStack fluid) { return !locked && fluids.contains(fluid); @@ -48,7 +72,7 @@ public class MultiFluidHandler { } public List<FluidStack> getFluids(){ - return (!locked) ? fluids : new ArrayList<FluidStack>(); + return (!locked) ? fluids : new ArrayList<>(); } public FluidStack getFluid(int slot) { @@ -110,24 +134,25 @@ public class MultiFluidHandler { return 0; } if(fluids.size() == MAX_DISTINCT_FLUIDS && !contains(push)) { + // Already contains 25 fluids and this isn't one of them return 0; } else if (fluids.size() < MAX_DISTINCT_FLUIDS && !contains(push)) { // Add new fluid - final int remcap = getCapacity(); - final int fit = Math.min(remcap, push.amount); + final int fit = Math.min(getCapacity(), push.amount); if(doPush) { fluids.add(new FluidStack(push.getFluid(), fit)); } - return fit; + // If doVoidExcess, pretend all of it fit + return doVoidExcess ? push.amount : fit; } else { // Add to existing fluid - final FluidStack fs = fluids.get(fluids.indexOf(push)); - final int remcap = getCapacity() - fs.amount; - final int fit = Math.min(remcap, push.amount); + final FluidStack existing = fluids.get(fluids.indexOf(push)); + final int fit = Math.min(getCapacity() - existing.amount, push.amount); if(doPush) { - fs.amount += fit; + existing.amount += fit; } - return fit; + // If doVoidExcess, pretend all of it fit + return doVoidExcess ? push.amount : fit; } } @@ -147,18 +172,21 @@ public class MultiFluidHandler { return 0; } if(slot < 0 || slot >= MAX_DISTINCT_FLUIDS) { + // Invalid slot return 0; } - if(!fluids.get(slot).equals(push)) { + if((fluids.get(slot) != null) && !fluids.get(slot).equals(push)) { + // Selected slot is taken by a non-matching fluid return 0; } else { - final FluidStack fs = fluids.get(slot); - final int remcap = getCapacity() - fs.amount; - final int fit = Math.min(remcap, push.amount); + // Add to existing fluid + final FluidStack existing = fluids.get(slot); + final int fit = Math.min(getCapacity() - existing.amount, push.amount); if(doPush) { - fs.amount += fit; + existing.amount += fit; } - return fit; + // If doVoidExcess, pretend all of it fit + return doVoidExcess ? push.amount : fit; } } @@ -172,18 +200,15 @@ public class MultiFluidHandler { * @return Amount of fluid that was (or would have been, if simulated) pulled. */ public int pullFluid(FluidStack pull, boolean doPull) { - if(locked) { - return 0; - } - if(!contains(pull)) { + if (locked || !contains(pull)) { return 0; } else { final FluidStack src = fluids.get(fluids.indexOf(pull)); final int rec = Math.min(pull.amount, src.amount); - if(doPull) { + if (doPull) { src.amount -= rec; } - if(src.amount == 0) { + if (src.amount == 0) { fluids.remove(src); } return rec; @@ -211,13 +236,13 @@ public class MultiFluidHandler { if(!fluids.get(slot).equals(pull)) { return 0; } else { - final FluidStack pulled = fluids.get(slot); - final int rec = Math.min(pull.amount, pulled.amount); + final FluidStack src = fluids.get(slot); + final int rec = Math.min(pull.amount, src.amount); if(doPull) { - pulled.amount -= rec; + src.amount -= rec; } - if(pulled.amount == 0) { - fluids.remove(pulled); + if(src.amount == 0) { + fluids.remove(src); } return rec; } @@ -239,7 +264,7 @@ public class MultiFluidHandler { return Math.min(getCapacity(), push.amount) > 0; } else { final int remcap = getCapacity() - fluids.get(fluids.indexOf(push)).amount; - return Math.min(remcap, push.amount) > 0; + return doVoidExcess ? true : (Math.min(remcap, push.amount) > 0); } } } diff --git a/src/main/java/kekztech/MultiItemHandler.java b/src/main/java/kekztech/MultiItemHandler.java index 766abbbb93..27d936efec 100644 --- a/src/main/java/kekztech/MultiItemHandler.java +++ b/src/main/java/kekztech/MultiItemHandler.java @@ -1,6 +1,7 @@ package kekztech; import java.util.ArrayList; +import java.util.List; import net.minecraft.item.ItemStack; @@ -10,31 +11,58 @@ public class MultiItemHandler { private boolean locked = true; - private final ArrayList<ItemStack> items = new ArrayList<>(); + private ItemStack[] items; public MultiItemHandler() { } - /** - * Tries to adapt the internal storage to match structure changes. - * Structure should turn off and give a warning if this returns false. - * Otherwise items might unavailable. + public List<String> debugPrint() { + if(items == null) { + return new ArrayList<String>(); + } + final ArrayList<String> slots = new ArrayList<>(); + + for(int i = 0; i < items.length; i++) { + slots.add("Slot " + i + " contains " + items[i].stackSize + " " + items[i].getDisplayName()); + } + + return slots; + } + + /** + * Adapts the internal storage to structure changes. + * In the event of structure down-sizing, all excess items + * will be dropped on the ground. * * @param itemTypeCapacity - * New item array length to adapt to. - * @return Success status of the operation. */ - public boolean setItemTypeCapacity(int itemTypeCapacity) { - if(items.size() > itemTypeCapacity) { - System.out.println("WARNING: ITEM SERVER STRUCTURE WAS DOWNSIZED TOO FAR! LOCKING FOR SAFETY."); - setLock(true); - return false; + public void setItemTypeCapacity(int itemTypeCapacity) { + System.out.println("Configuring type capacity"); + if(items.length > itemTypeCapacity) { + // Generate new smaller backing array + final ItemStack[] newItems = new ItemStack[itemTypeCapacity]; + for(int i = 0; i < newItems.length; i++) { + newItems[i] = items[i]; + } + // Sort out item overflow + final ItemStack[] toDrop = new ItemStack[items.length - itemTypeCapacity]; + for(int i = 0; i < toDrop.length; i++) { + toDrop[i] = items[i + newItems.length - 1]; + } + // TODO drop overflow items to the ground + + // Swap array + items = newItems; } else { - items.ensureCapacity(itemTypeCapacity); - // If the lock was engaged, it should only be disengaged by turning - // the structure back on after fixing the above warning. - return true; + // Generate new larger backing array + final ItemStack[] newItems = new ItemStack[itemTypeCapacity]; + for(int i = 0; i < items.length; i++) { + newItems[i] = items[i]; + } + + // Swap array + items = newItems; } } @@ -44,7 +72,6 @@ public class MultiItemHandler { /** * Lock internal storage in case Item Server is not running. - * May also be engaged in case of item safety issues. * * @param state * Lock state. @@ -54,60 +81,101 @@ public class MultiItemHandler { } public int getItemTypeCapacity() { - return items.size(); + return items != null ? items.length : 0; } public int getPerTypeCapacity() { return perTypeCapacity; } + /** + * Returns the ItemStack from the specified slot. + * + * @param slot + * Storage slot number. Zero indexed. + * @return + * ItemStack from storage or null if + * storage is locked or invalid slot parameter. + */ public ItemStack getStackInSlot(int slot) { System.out.println("Stack in slot " + slot + " requested"); - if(locked || slot >= items.size()) { + if(locked || slot >= items.length) { return null; } else { - return items.get(slot); + return items[slot]; } } - public void insertStackInSlot(int slot, ItemStack itemStack) { + /** + * Inserts a new ItemStack into storage, + * but only if the slot is still unassigned. + * + * @param slot + * Storage slot number. Zero indexed. + * @param itemStack + * ItemStack to insert. + * @return + * Operation success state. + */ + public boolean insertStackInSlot(int slot, ItemStack itemStack) { System.out.println("Inserting " + itemStack.getDisplayName() + " into " + slot); if(itemStack == null - || items.get(slot) != null + || items[slot] != null || locked - || slot >= items.size()) { - return; + || slot >= items.length) { + return false; } else { - items.set(slot, itemStack); + items[slot] = itemStack; + return true; } } + /** + * Tries to increase the item amount in a specified slot. + * + * @param slot + * Storage slot number. Zero indexed. + * @param amount + * Amount to increase by. + * @return + * Actual amount the item amount was increased by. + */ public int increaseStackInSlot(int slot, int amount) { System.out.println("Increasing item in slot " + slot + " by " + amount); - if(slot >= items.size() + if(slot >= items.length || locked || amount <= 0) { return 0; } else { - final int space = perTypeCapacity - items.get(slot).stackSize; + final int space = perTypeCapacity - items[slot].stackSize; final int fit = Math.min(space, amount); - items.get(slot).stackSize += fit; + items[slot].stackSize += fit; return fit; } } + /** + * Tries to reduce the item amount in a specified slot. + * + * @param slot + * Storage slot number. Zero indexed. + * @param amount + * Amount to decrease by. + * @return + * Actual amount the item amount was decreased by. + */ public int reduceStackInSlot(int slot, int amount) { System.out.println("Reducing item in slot " + slot + " by " + amount); - if(slot >= items.size() + if(slot >= items.length || locked || amount <= 0) { return 0; } else { - final int available = items.get(slot).stackSize; + final int available = items[slot].stackSize; final int take = Math.min(available, amount); - items.get(slot).stackSize -= take; + items[slot].stackSize -= take; if(take == available) { - items.set(slot, null); + items[slot] = null; } return take; } diff --git a/src/main/java/render/ConduitRenderer.java b/src/main/java/render/ConduitRenderer.java deleted file mode 100644 index 241dd18647..0000000000 --- a/src/main/java/render/ConduitRenderer.java +++ /dev/null @@ -1,83 +0,0 @@ -package render; - -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import cpw.mods.fml.client.registry.RenderingRegistry; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; -import net.minecraftforge.common.util.ForgeDirection; -import tileentities.TE_ItemProxyCable; - -public class ConduitRenderer implements ISimpleBlockRenderingHandler { - - private static final ConduitRenderer instance = new ConduitRenderer(); - private final int renderID = RenderingRegistry.getNextAvailableRenderId(); - - private ConduitRenderer() { - - } - - public static ConduitRenderer getInstance() { - return instance; - } - - public void registerRenderer() { - RenderingRegistry.registerBlockHandler(this); - } - - @Override - public int getRenderId() { - return renderID; - } - - @Override - public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { - - } - - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, - RenderBlocks renderer) { - System.out.println("custom renderer"); - final TileEntity te = world.getTileEntity(x, y, z); - if(te instanceof TE_ItemProxyCable) { - final TE_ItemProxyCable cable = (TE_ItemProxyCable) te; - - final float thickness = TE_ItemProxyCable.getThickness(); - final float space = (1.0f - thickness) / 2.0f; - - if(cable.getConnections() == 63) { // No need to render a center cube if it's hidden anyways - block.setBlockBounds(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f); - renderer.setRenderBounds(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f); - } else if (cable.getConnections() == 0) { // Only center cube required - block.setBlockBounds(space, space, space, space + thickness, space + thickness, space + thickness); - renderer.setRenderBounds(space, space, space, space + thickness, space + thickness, space + thickness); - } - - final Tessellator f = Tessellator.instance; - f.startDrawingQuads(); - IIcon icon = block.getIcon(0, 0); - // South face - if(cable.isConnected(ForgeDirection.SOUTH)) { - System.out.println("tesselating"); - f.addVertexWithUV(x + space + thickness, y + space, z + 1, icon.getMaxU(), icon.getMaxV()); - f.addVertexWithUV(x + space + thickness, y + space + thickness, z + 1, icon.getMaxU(), icon.getMinV()); - f.addVertexWithUV(x + space, y + space + thickness, z + 1, icon.getMinU(), icon.getMinV()); - f.addVertexWithUV(x + space, y + space, z + 1, icon.getMinU(), icon.getMaxV()); - } - - f.draw(); - } - - return false; - } - - @Override - public boolean shouldRender3DInInventory(int modelId) { - return false; - } - -} diff --git a/src/main/java/tileentities/TE_ItemProxyCable.java b/src/main/java/tileentities/TE_ItemProxyCable.java deleted file mode 100644 index 43ebc07b13..0000000000 --- a/src/main/java/tileentities/TE_ItemProxyCable.java +++ /dev/null @@ -1,77 +0,0 @@ -package tileentities; - -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; - -public class TE_ItemProxyCable extends TileEntity { - - private static final float THICKNESS = 0.3f; - private byte connections; - private String idCache = null; - - public TE_ItemProxyCable() { - connections = 63; // set all connections active until I have something actually control connections - } - - public static float getThickness() { - return THICKNESS; - } - - /** - * Builds a simple unique identifier for this TileEntity by appending - * the x, y, and z coordinates in a string. - * - * @return unique identifier for this TileEntity - */ - public String getIdentifier() { - if(idCache == null) { - idCache = "" + super.xCoord + super.yCoord + super.zCoord; - return idCache; - } else { - return idCache; - } - } - - /** - * 0 0 0 0 0 0 0 0 = 0 -> no connection </br> - * 0 0 0 0 0 0 0 1 = 1 -> down </br> - * 0 0 0 0 0 0 1 0 = 2 -> up </br> - * 0 0 0 0 0 1 0 0 = 4 -> north </br> - * 0 0 0 0 1 0 0 0 = 8 -> south </br> - * 0 0 0 1 0 0 0 0 = 16 -> west </br> - * 0 0 1 0 0 0 0 0 = 32 -> east </br> - * - * @param side - * The side for which to set the connection status. - * @param connected - * Whether this side should be connected or not - */ - public void setConnection(ForgeDirection side, boolean connected) { - switch(side) { - case DOWN: connections = (byte) ((connected) ? connections | 1 : connections ^ 1); break; - case UP: connections = (byte) ((connected) ? connections | 2 : connections ^ 2); break; - case NORTH: connections = (byte) ((connected) ? connections | 4 : connections ^ 4); break; - case SOUTH: connections = (byte) ((connected) ? connections | 8 : connections ^ 8); break; - case WEST: connections = (byte) ((connected) ? connections | 16 : connections ^ 16); break; - case EAST: connections = (byte) ((connected) ? connections | 32 : connections ^ 32); break; - default: break; - } - } - - public boolean isConnected(ForgeDirection side) { - switch(side) { - case DOWN: return (connections & 1) == connections; - case UP: return (connections & 2) == connections; - case NORTH: return (connections & 4) == connections; - case SOUTH: return (connections & 8) == connections; - case WEST: return (connections & 16) == connections; - case EAST: return (connections & 32) == connections; - default: return false; - } - } - - public byte getConnections() { - return connections; - } - -} diff --git a/src/main/java/tileentities/TE_TFFTMultiHatch.java b/src/main/java/tileentities/TE_TFFTMultiHatch.java deleted file mode 100644 index 94d7d9283a..0000000000 --- a/src/main/java/tileentities/TE_TFFTMultiHatch.java +++ /dev/null @@ -1,120 +0,0 @@ -package tileentities; - -import java.util.List; - -import kekztech.MultiFluidHandler; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTankInfo; -import net.minecraftforge.fluids.IFluidHandler; - -public class TE_TFFTMultiHatch extends TileEntity implements IFluidHandler { - - private MultiFluidHandler mfh; - - public void setMultiFluidHandler(MultiFluidHandler mfh) { - this.mfh = mfh; - } - - @Override - public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { - return (mfh != null) ? mfh.pushFluid(resource, doFill) : 0; - } - - @Override - public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) { - return (mfh != null) ? new FluidStack(resource.getFluid(), mfh.pullFluid(resource, doDrain)) : null; - } - - /** - * Drains fluid out of 0th internal tank. - * - * @param from - * Orientation the fluid is drained to. - * @param maxDrain - * Maximum amount of fluid to drain. - * @param doDrain - * If false, drain will only be simulated. - * @return FluidStack representing the Fluid and amount that was (or would have been, if - * simulated) drained. - */ - @Override - public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { - if(mfh != null) { - final FluidStack drain = mfh.getFluid(0); - if(drain != null) { - return new FluidStack( - drain.getFluid(), - mfh.pullFluid(new FluidStack(drain.getFluid(), maxDrain), 0, doDrain) - ); - } - } - return null; - } - - @Override - public boolean canFill(ForgeDirection from, Fluid fluid) { - return (mfh != null) ? mfh.couldPush(new FluidStack(fluid, 1)) : false; - } - - @Override - public boolean canDrain(ForgeDirection from, Fluid fluid) { - return (mfh != null) ? mfh.contains(new FluidStack(fluid, 1)) : false; - } - - @Override - public FluidTankInfo[] getTankInfo(ForgeDirection from) { - if(mfh == null) { - return null; - } - final List<FluidStack> fluids = mfh.getFluids(); - final FluidTankInfo[] tankInfo = new FluidTankInfo[fluids.size()]; - for(int i = 0; i < tankInfo.length; i++) { - tankInfo[i] = new FluidTankInfo(fluids.get(i), mfh.getCapacity()); - } - return tankInfo; - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - nbt = (nbt == null) ? new NBTTagCompound() : nbt; - - super.writeToNBT(nbt); - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - nbt = (nbt == null) ? new NBTTagCompound() : nbt; - - super.readFromNBT(nbt); - } - - - - - - - - - - - - - - - - - - - - - - - - - - -} diff --git a/src/main/java/util/MultiBlockTooltipBuilder.java b/src/main/java/util/MultiBlockTooltipBuilder.java index 329220272a..c0573667ab 100644 --- a/src/main/java/util/MultiBlockTooltipBuilder.java +++ b/src/main/java/util/MultiBlockTooltipBuilder.java @@ -4,6 +4,7 @@ import java.util.LinkedList; import java.util.List; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; /** * Have you ever felt like your tooltips just aren't enterprise enough? Use this! @@ -14,22 +15,42 @@ import net.minecraft.util.EnumChatFormatting; public class MultiBlockTooltipBuilder { private static final String TAB = " "; + private static final String COLON = ": "; private final List<String> iLines; private final List<String> sLines; private String[] iArray; private String[] sArray; - + + // Localized keywords + private static final String KW_dimensions = StatCollector.translateToLocal("mbdesc.beginStructureBlock.Dimensions"); + private static final String KW_structure = StatCollector.translateToLocal("mbdesc.beginStructureBlock.Structure"); + private static final String KW_controller = StatCollector.translateToLocal("mbdesc.addController.Controller"); + private static final String KW_atleast = StatCollector.translateToLocal("mbdesc.addCasing.atleast"); + private static final String KW_energyhatch = StatCollector.translateToLocal("mbdesc.addEnergyHatch.EnergyHatch"); + private static final String KW_dynamohatch = StatCollector.translateToLocal("mbdesc.addDynamoHatch.DynamoHatch"); + private static final String KW_maintenancehatch = StatCollector.translateToLocal("mbdesc.addMaintenanceHatch.MaintenanceHatch"); + private static final String KW_iohatches = StatCollector.translateToLocal("mbdesc.addIOHatches.IOHatches"); + private static final String KW_inputbus = StatCollector.translateToLocal("mbdesc.addInputBus.InputBus"); + private static final String KW_inputhatch = StatCollector.translateToLocal("mbdesc.addInputHatch.InputHatch"); + private static final String KW_outputbus = StatCollector.translateToLocal("mbdesc.addOutputBus.OutputBus"); + private static final String KW_outputhatch = StatCollector.translateToLocal("mbdesc.addOutputHatch.OutputHatch"); + private static final String KW_hold = StatCollector.translateToLocal("mbdesc.signAndFinalize.Hold"); + private static final String KW_todisplay = StatCollector.translateToLocal("mbdesc.signAndFinalize.todisplay"); + private static final String KW_createdby = StatCollector.translateToLocal("mbdesc.signAndFinalize.createdby"); + public MultiBlockTooltipBuilder() { iLines = new LinkedList<>(); sLines = new LinkedList<>(); + + } /** * Add a basic line of information about this structure * - * @param line + * @param info * The line to be added. * @return Instance this method was called on. */ @@ -62,58 +83,58 @@ public class MultiBlockTooltipBuilder { * @return Instance this method was called on. */ public MultiBlockTooltipBuilder beginStructureBlock(int w, int h, int l) { - sLines.add("Dimensions: " + w + "x" + h + "x" + l + " (WxHxL)"); - sLines.add("Structure:"); + sLines.add(KW_dimensions + COLON + w + "x" + h + "x" + l + " (WxHxL)"); + sLines.add(KW_structure + COLON); return this; } public MultiBlockTooltipBuilder addController(String info) { - sLines.add(TAB + "Controller: " + info); + sLines.add(TAB + KW_controller + COLON + info); return this; } public MultiBlockTooltipBuilder addCasingInfo(String casingName, int minCount) { - sLines.add(TAB + minCount +"x " + casingName + " (at least)"); + sLines.add(TAB + minCount +"x " + casingName + " " + KW_atleast); return this; } public MultiBlockTooltipBuilder addEnergyHatch(String info) { - sLines.add(TAB + "Energy Hatch: " + info); + sLines.add(TAB + KW_energyhatch + COLON + info); return this; } public MultiBlockTooltipBuilder addDynamoHatch(String info) { - sLines.add(TAB + "Dynamo Hatch: " + info); + sLines.add(TAB + KW_dynamohatch + COLON + info); return this; } public MultiBlockTooltipBuilder addMaintenanceHatch(String info) { - sLines.add(TAB + "Maintenance Hatch: " + info); + sLines.add(TAB + KW_maintenancehatch + COLON + info); return this; } public MultiBlockTooltipBuilder addIOHatches(String info) { - sLines.add(TAB + "I/O Hatches: " + info); + sLines.add(TAB + KW_iohatches + COLON + info); return this; } public MultiBlockTooltipBuilder addInputBus(String info) { - sLines.add(TAB + "Input Bus/ses: " + info); + sLines.add(TAB + KW_inputbus + COLON + info); return this; } public MultiBlockTooltipBuilder addInputHatch(String info) { - sLines.add(TAB + "Input Hatch/es: " + info); + sLines.add(TAB + KW_inputhatch + COLON + info); return this; } public MultiBlockTooltipBuilder addOutputBus(String info) { - sLines.add(TAB + "Output Bus/ses: " + info); + sLines.add(TAB + KW_outputbus + COLON + info); return this; } public MultiBlockTooltipBuilder addOutputHatch(String info) { - sLines.add(TAB + "Output Hatch/es: " + info); + sLines.add(TAB + KW_outputhatch + COLON + info); return this; } @@ -127,7 +148,7 @@ public class MultiBlockTooltipBuilder { * @return Instance this method was called on. */ public MultiBlockTooltipBuilder addOtherStructurePart(String name, String info) { - sLines.add(TAB + name + ": " + info); + sLines.add(TAB + name + COLON + info); return this; } @@ -138,12 +159,10 @@ public class MultiBlockTooltipBuilder { * * @param author * Name of the creator of this Machine - * - * @return The result of all build calls. */ public void signAndFinalize(String author) { - iLines.add("Hold " + EnumChatFormatting.BOLD + "[LSHIFT]" + EnumChatFormatting.RESET + EnumChatFormatting.GRAY + " to display structure guidelines"); - iLines.add("Created by " + author); + iLines.add(KW_hold + " " + EnumChatFormatting.BOLD + "[LSHIFT]" + EnumChatFormatting.RESET + EnumChatFormatting.GRAY + " " + KW_todisplay); + iLines.add(KW_createdby + " " + author); iArray = new String[iLines.size()]; sArray = new String[sLines.size()]; iLines.toArray(iArray); diff --git a/src/main/resources/assets/kekztech/lang/en_US.lang b/src/main/resources/assets/kekztech/lang/en_US.lang index d21ed0462e..b86fe84543 100644 --- a/src/main/resources/assets/kekztech/lang/en_US.lang +++ b/src/main/resources/assets/kekztech/lang/en_US.lang @@ -1,5 +1,29 @@ item.kekztech_error_item.name=KekzTech Error Coin
+# -------- Multiblock Tooltip Builder Keywords
+# -------- Context can be found in the class util.MultiBlockTooltipBuilder
+mbdesc.beginStructureBlock.Dimensions=Dimensions
+mbdesc.beginStructureBlock.Structure=Structure
+mbdesc.addController.Controller=Controller
+mbdesc.addCasing.atleast=(at least)
+mbdesc.addEnergyHatch.EnergyHatch=Energy Hatch
+mbdesc.addDynamoHatch.DynamoHatch=Dynamo Hatch
+mbdesc.addMaintenanceHatch.MaintenanceHatch=Maintenance Hatch
+mbdesc.addIOHatches.IOHatches=I/O Hatches
+mbdesc.addInputBus.InputBus=Input Bus/ses
+mbdesc.addInputHatch.InputHatch=Input Hatch/es
+mbdesc.addOutputBus.OutputBus=Output Bus/ses
+mbdesc.addOutputHatch.OutputHatch=Output Hatch/es
+mbdesc.signAndFinalize.Hold=Hold
+mbdesc.signAndFinalize.todisplay=to display structure guidelines
+mbdesc.signAndFinalize.createdby=Created by
+
+# -------- Reactor: Structure Blocks
+tile.kekztech_controlrod_block.name=Nuclear Reactor Control Rod
+tile.kekztech_reactorchamberoff_block.name=Nuclear Reactor Chamber (OFF)
+tile.kekztech_reactorchamberon_block.name=Nuclear Reactor Chamber (ON)
+
+# -------- Reactor: Heat Vents
item.kekztech_reactor_item.0.name=Weak Heat Vent
item.kekztech_reactor_item.1.name=Basic Heat Vent
item.kekztech_reactor_item.2.name=Advanced Heat Vent
@@ -13,11 +37,13 @@ item.kekztech_reactor_item.9.name=Basic Overclocked Heat Vent item.kekztech_reactor_item.10.name=Advanced Overclocked Heat Vent
item.kekztech_reactor_item.11.name=High-Tech Overclocked Heat Vent
+# -------- Reactor: Heat Exchangers
item.kekztech_reactor_item.12.name=Weak Heat Exchanger
item.kekztech_reactor_item.13.name=Basic Heat Exchanger
item.kekztech_reactor_item.14.name=Advanced Heat Exchanger
item.kekztech_reactor_item.15.name=High-Tech Heat Exchanger
+# -------- Reactor: Fuel Rods
item.kekztech_reactor_item.16.name=Fuel Rod (Enriched Uranium)
item.kekztech_reactor_item.17.name=Dual Fuel Rod (Enriched Uranium)
item.kekztech_reactor_item.18.name=Quad Fuel Rod (Enriched Uranium)
@@ -34,6 +60,7 @@ item.kekztech_reactor_item.28.name=Fuel Rod (Thorium MOX) item.kekztech_reactor_item.29.name=Dual Fuel Rod (Thorium MOX)
item.kekztech_reactor_item.30.name=Quad Fuel Rod (Thorium MOX)
+# -------- Reactor: Fuel Rods (Depleted)
item.kekztech_reactor_item.31.name=Depleted Fuel Rod (Enriched Uranium)
item.kekztech_reactor_item.32.name=Depleted Dual Fuel Rod (Enriched Uranium)
item.kekztech_reactor_item.33.name=Depleted Quad Fuel Rod (Enriched Uranium)
@@ -50,12 +77,15 @@ item.kekztech_reactor_item.43.name=Depleted Fuel Rod (Thorium MOX) item.kekztech_reactor_item.44.name=Depleted Fuel Rod (Thorium MOX)
item.kekztech_reactor_item.45.name=Depleted Fuel Rod (Thorium MOX)
+# -------- Reactor: Neutron Reflectors
item.kekztech_reactor_item.46.name=Neutron Reflector
item.kekztech_reactor_item.47.name=Neutron Supermirror (Unbreakable)
+# -------- Reactor: Coolant Cells
item.kekztech_reactor_item.48.name=Helium Coolant Cell
item.kekztech_reactor_item.49.name=NaK Coolant Cell
+# -------- Reactor: Crafting Components
item.kekztech_crafting_item.0.name=Copper Heat Pipe
item.kekztech_crafting_item.1.name=Silver Heat Pipe
item.kekztech_crafting_item.2.name=Boron Arsenide Heat Pipe
@@ -65,6 +95,12 @@ item.kekztech_crafting_item.5.name=Isotopically Pure Diamond Dust item.kekztech_crafting_item.6.name=Amine Carbamate Dust
item.kekztech_crafting_item.7.name=Boron Arsenide Crystal
item.kekztech_crafting_item.8.name=Isotopically Pure Diamond Crystal
+
+# -------- Fuel Cell: Structure Blocks
+tile.kekztech_gdcceramicelectrolyteunit_block.name=GDC Ceramic Electrolyte Unit
+tile.kekztech_yszceramicelectrolyteunit_block.name=YSZ Ceramic Electrolyte Unit
+
+# -------- Fuel Cell: Crafting Components
item.kekztech_crafting_item.9.name=YSZ Ceramic Dust
item.kekztech_crafting_item.10.name=GDC Ceramic Dust
item.kekztech_crafting_item.11.name=Yttria Dust
@@ -72,26 +108,78 @@ item.kekztech_crafting_item.12.name=Zirconia Dust item.kekztech_crafting_item.13.name=Ceria Dust
item.kekztech_crafting_item.14.name=YSZ Ceramic Plate
item.kekztech_crafting_item.15.name=GDC Ceramic Plate
-item.kekztech_crafting_item.16.name=Item Server Blade
-
-tile.kekztech_gdcceramicelectrolyteunit_block.name=GDC Ceramic Electrolyte Unit
-tile.kekztech_yszceramicelectrolyteunit_block.name=YSZ Ceramic Electrolyte Unit
+# -------- TFFT: Structure Blocks
tile.kekztech_tfftcasingblock_block.name=T.F.F.T Casing
tile.kekztech_tfftstoragefieldblock1_block.name=T.F.F.T Storage Field Block (Tier I)
+tile.kekztech_tfftstoragefieldblock1_block.0.desc=This is not a fluid tank
tile.kekztech_tfftstoragefieldblock2_block.name=T.F.F.T Storage Field Block (Tier II)
tile.kekztech_tfftstoragefieldblock3_block.name=T.F.F.T Storage Field Block (Tier III)
tile.kekztech_tfftstoragefieldblock4_block.name=T.F.F.T Storage Field Block (Tier IV)
+tile.kekztech_tfftstoragefieldblock5_block.name=T.F.F.T Storage Field Block (Tier V)
tile.kekztech_tfftmultihatch_block.name=T.F.F.T Multi-Fluid I/O Hatch
+tile.kekztech_tfftmultihatch_block.0.desc=Special hatch for the T.F.F.T
+tile.kekztech_tfftmultihatch_block.1.desc=Allows for automated interaction with all stored fluids in a single place
+tile.kekztech_tfftmultihatch_block.2.desc=Right-click with screwdriver to activate auto-output
+tile.kekztech_tfftmultihatch_block.3.desc=Auto-output will try to output fluids into adjacent tanks at a rate of 1000L/s per fluid
-tile.kekztech_controlrod_block.name=Nuclear Reactor Control Rod
-tile.kekztech_reactorchamberoff_block.name=Nuclear Reactor Chamber (OFF)
-tile.kekztech_reactorchamberon_block.name=Nuclear Reactor Chamber (ON)
+# -------- Item Server: Structure Blocks
+tile.kekztech_itemserverdrive_block.name=Item Server Drive
+tile.kekztech_itemserverdrive_block.0.desc=Item Server Storage Drive
+tile.kekztech_itemserverrackcasing_block.name=Item Server Rack Casing
+tile.kekztech_itemserverrackcasing_block.0.desc=Shiny new server rack
+tile.kekztech_itemserverioport_block.name=Item Server I/O Port
+tile.kekztech_itemserverioport_block.0.desc=I/O Port for interfacing with an Item Server
+# -------- Item Server: Crafting Components
+item.kekztech_crafting_item.16.name=Item Server Blade
+
+# -------- Item Proxy: Structure Blocks
tile.kekztech_itemproxycable_block.name=Item Proxy Network Cable
+tile.kekztech_itemproxycable_block.0.desc=Connects Item Proxy Nodes
tile.kekztech_itemproxysource_block.name=Item Proxy Network Source
+tile.kekztech_itemproxysource_block.0.desc=Point to an inventory to act as source for the item proxy network
+tile.kekztech_itemproxysource_block.1.desc=Insert an Integrated Circuit to set the network channel
+tile.kekztech_itemproxysource_block.2.desc=Only one source can use one channel on the same network
tile.kekztech_itemproxyendpoint_block.name=Item Proxy Network Endpoint
-tile.kekztech_itemserverdrive_block.name=Item Server Drive
-tile.kekztech_itemserverrackcasing_block.name=Item Server Rack Casing
-tile.kekztech_itemserverioport_block.name=Item Server I/O Port
+tile.kekztech_itemproxyendpoint_block.0.desc=Point the marked side to where you want to provide an inventory proxy to
+tile.kekztech_itemproxyendpoint_block.1.desc=Insert an Integrated Circuit to set the network channel
+
+# -------- Lapotronic Super Capacitor: Structure Blocks
+tile.kekztech_lapotronicenergyunit_block.0.name=Lapotronic Super Capacitor Casing
+tile.kekztech_lapotronicenergyunit_block.1.name=Lapotronic Capacitor (IV)
+tile.kekztech_lapotronicenergyunit_block.2.name=Lapotronic Capacitor (LuV)
+tile.kekztech_lapotronicenergyunit_block.3.name=Lapotronic Capacitor (ZPM)
+tile.kekztech_lapotronicenergyunit_block.4.name=Lapotronic Capacitor (UV)
+tile.kekztech_lapotronicenergyunit_block.5.name=Ultimate Capacitor (UHV)
+tile.kekztech_lapotronicenergyunit_block.desc=Part of the Lapotronic Super Capacitor
+
+# -------- Thaumium Reinforced Jar: Block
+tile.kekztech_thaumiumreinforcedjar_block.0.name=Thaumium Reinforced Jar
+tile.kekztech_thaumiumreinforcedjar_block.3.name=Thaumium Reinforced Void Jar
+
+# -------- Thaumium Reinforced Jar: Research
+# This is the name of the research
+tc.research_name.THAUMIUMREINFORCEDJAR=Thaumium Reinforced Jars
+# This is the subtext for the research note
+tc.research_text.THAUMIUMREINFORCEDJAR=Slightly better jars
+# Lore text for the research pages
+kekztech.research_page.THAUMIUMREINFORCEDJAR.0=You have heard your fellow Thaumaturges talk about the benefits of digitized Essentia Storage.<BR><BR>Storing enough Essentia for your advanced infusions has indeed been an issue for you too. However those jars are simply too pleasing to look at to even consider the idea of replacing them with some compact technological construct.<BR><BR>Thanks to this new discovery, you have managed to quadruple the capacity of your jars by improving them with a thick Thaumium lining. This should buy you some more time to come up with a better solution.
+kekztech.research_page.THAUMIUMREINFORCEDJAR.1=Compressing this much Essentia in such a tiny space causes some volatility. Picking up reinforced jars is probably a bad idea...<BR><BR>You imagine that you could get even more out of your jars if only you had some kind of material harder than even diamond or any of the other magical metal you have seen so far.
+
+# -------- Ichor Jar: Block
+tile.kekztech_ichorjar_block.0.name=Ichor Jar
+tile.kekztech_ichorjar_block.3.name=Ichor Void Jar
+
+# -------- Ichor Jar: Research
+tc.research_name.ICHORJAR=Ichor Jars
+tc.research_text.ICHORJAR=Much better jars
+kekztech.research_page.ICHORJAR.0=This is it!<BR><BR>By infusing a jar with just a single piece of Ichor you have created something to rival digitized Essentia storage without sacrificing any of the beauty of Warded Jars.<BR><BR>Ichor Jars can hold an astounding 4096 Essentia and fit nicely into your recently aquired set of Ichor based achievements.<BR><BR>You definitely don't want to disturb these jars. Luckily Ichor is resilient enough to make accidentially destroying one unlikely.
+# -------- Space Elevator: Block
+tile.kekztech_spaceelevator_block.0.name=Space Elevator Base
+tile.kekztech_spaceelevator_block.1.name=Space Elevator Coil Holder
+tile.kekztech_spaceelevator_block.desc=Part of the Space Elevator Base Station
+tile.kekztech_spaceelevatorcapacitor_block.name=Space Elevator Capacitor
+tile.kekztech_spaceelevatorcapacitor_block.desc=The see-through is good for your FPS!
+tile.kekztech_spaceelevatortether_block.name=Space Elevator Tether
\ No newline at end of file diff --git a/src/main/resources/assets/kekztech/textures/blocks/CoilHolder.png b/src/main/resources/assets/kekztech/textures/blocks/CoilHolder.png Binary files differnew file mode 100644 index 0000000000..12f87ce0f8 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/CoilHolder.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/ItemServer3.png b/src/main/resources/assets/kekztech/textures/blocks/ItemServer3.png Binary files differdeleted file mode 100644 index b808381ba3..0000000000 --- a/src/main/resources/assets/kekztech/textures/blocks/ItemServer3.png +++ /dev/null diff --git a/src/main/resources/assets/kekztech/textures/blocks/ItemServer3_BOTTOM.png b/src/main/resources/assets/kekztech/textures/blocks/ItemServer3_BOTTOM.png Binary files differdeleted file mode 100644 index dfab69b87e..0000000000 --- a/src/main/resources/assets/kekztech/textures/blocks/ItemServer3_BOTTOM.png +++ /dev/null diff --git a/src/main/resources/assets/kekztech/textures/blocks/ItemServer3_TOP.png b/src/main/resources/assets/kekztech/textures/blocks/ItemServer3_TOP.png Binary files differdeleted file mode 100644 index 5f6767a820..0000000000 --- a/src/main/resources/assets/kekztech/textures/blocks/ItemServer3_TOP.png +++ /dev/null diff --git a/src/main/resources/assets/kekztech/textures/blocks/LSCBase_side.png b/src/main/resources/assets/kekztech/textures/blocks/LSCBase_side.png Binary files differnew file mode 100644 index 0000000000..97e08ea590 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/LSCBase_side.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/LSCBase_top.png b/src/main/resources/assets/kekztech/textures/blocks/LSCBase_top.png Binary files differnew file mode 100644 index 0000000000..0442310031 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/LSCBase_top.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit1_side.png b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit1_side.png Binary files differnew file mode 100644 index 0000000000..852873db1d --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit1_side.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit1_top.png b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit1_top.png Binary files differnew file mode 100644 index 0000000000..1c99201a9f --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit1_top.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit2_side.png b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit2_side.png Binary files differnew file mode 100644 index 0000000000..a8894d382e --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit2_side.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit2_top.png b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit2_top.png Binary files differnew file mode 100644 index 0000000000..96d56ac6a6 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit2_top.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit3_side.png b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit3_side.png Binary files differnew file mode 100644 index 0000000000..3827b174c0 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit3_side.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit3_top.png b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit3_top.png Binary files differnew file mode 100644 index 0000000000..68e03929d8 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit3_top.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit4_side.png b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit4_side.png Binary files differnew file mode 100644 index 0000000000..d462a774a1 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit4_side.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit4_top.png b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit4_top.png Binary files differnew file mode 100644 index 0000000000..2f1f4299eb --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/LapotronicEnergyUnit4_top.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/ReallyUltimateEnergyUnit_side.png b/src/main/resources/assets/kekztech/textures/blocks/ReallyUltimateEnergyUnit_side.png Binary files differnew file mode 100644 index 0000000000..15a89994a1 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/ReallyUltimateEnergyUnit_side.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/ReallyUltimateEnergyUnit_top.png b/src/main/resources/assets/kekztech/textures/blocks/ReallyUltimateEnergyUnit_top.png Binary files differnew file mode 100644 index 0000000000..ff2f1e826d --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/ReallyUltimateEnergyUnit_top.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorBase_side.png b/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorBase_side.png Binary files differnew file mode 100644 index 0000000000..876c26f8cb --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorBase_side.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorBase_top.png b/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorBase_top.png Binary files differnew file mode 100644 index 0000000000..05afd9318a --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorBase_top.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorCapacitor_side_0.png b/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorCapacitor_side_0.png Binary files differnew file mode 100644 index 0000000000..4715a813ed --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorCapacitor_side_0.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorCapacitor_side_fullbase.png b/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorCapacitor_side_fullbase.png Binary files differnew file mode 100644 index 0000000000..84f5909b9e --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorCapacitor_side_fullbase.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorCapacitor_side_renderbase.png b/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorCapacitor_side_renderbase.png Binary files differnew file mode 100644 index 0000000000..32aee141d9 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorCapacitor_side_renderbase.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorCapacitor_top_fullbase.png b/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorCapacitor_top_fullbase.png Binary files differnew file mode 100644 index 0000000000..f1c045b5af --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/SpaceElevatorCapacitor_top_fullbase.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock6.png b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock6.png Binary files differdeleted file mode 100644 index 8d574fa07c..0000000000 --- a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock6.png +++ /dev/null diff --git a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock7.png b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock7.png Binary files differdeleted file mode 100644 index 7930bdc26b..0000000000 --- a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock7.png +++ /dev/null diff --git a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock8.png b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock8.png Binary files differdeleted file mode 100644 index 1032805d02..0000000000 --- a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock8.png +++ /dev/null diff --git a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock9.png b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock9.png Binary files differdeleted file mode 100644 index 21e3d34156..0000000000 --- a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock9.png +++ /dev/null diff --git a/src/main/resources/assets/kekztech/textures/blocks/Tether_side.png b/src/main/resources/assets/kekztech/textures/blocks/Tether_side.png Binary files differnew file mode 100644 index 0000000000..b98c084e74 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/Tether_side.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/Tether_top.png b/src/main/resources/assets/kekztech/textures/blocks/Tether_top.png Binary files differnew file mode 100644 index 0000000000..fe1e8e2dd9 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/Tether_top.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/UltimateEnergyUnit_side.png b/src/main/resources/assets/kekztech/textures/blocks/UltimateEnergyUnit_side.png Binary files differnew file mode 100644 index 0000000000..53443e6c9a --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/UltimateEnergyUnit_side.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/UltimateEnergyUnit_top.png b/src/main/resources/assets/kekztech/textures/blocks/UltimateEnergyUnit_top.png Binary files differnew file mode 100644 index 0000000000..f71387ef03 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/UltimateEnergyUnit_top.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/ichor_jar_bottom.png b/src/main/resources/assets/kekztech/textures/blocks/ichor_jar_bottom.png Binary files differnew file mode 100644 index 0000000000..075e490985 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/ichor_jar_bottom.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/ichor_jar_side.png b/src/main/resources/assets/kekztech/textures/blocks/ichor_jar_side.png Binary files differnew file mode 100644 index 0000000000..002df614b8 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/ichor_jar_side.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/ichor_jar_side_void.png b/src/main/resources/assets/kekztech/textures/blocks/ichor_jar_side_void.png Binary files differnew file mode 100644 index 0000000000..9e5c7126c0 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/ichor_jar_side_void.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/ichor_jar_top.png b/src/main/resources/assets/kekztech/textures/blocks/ichor_jar_top.png Binary files differnew file mode 100644 index 0000000000..794995c9de --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/ichor_jar_top.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/ichor_jar_top_void.png b/src/main/resources/assets/kekztech/textures/blocks/ichor_jar_top_void.png Binary files differnew file mode 100644 index 0000000000..c11b12c968 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/ichor_jar_top_void.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/thaumreinforced_jar_bottom.png b/src/main/resources/assets/kekztech/textures/blocks/thaumreinforced_jar_bottom.png Binary files differnew file mode 100644 index 0000000000..08c88b06c8 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/thaumreinforced_jar_bottom.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/thaumreinforced_jar_side.png b/src/main/resources/assets/kekztech/textures/blocks/thaumreinforced_jar_side.png Binary files differnew file mode 100644 index 0000000000..16f5ae1946 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/thaumreinforced_jar_side.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/thaumreinforced_jar_side_void.png b/src/main/resources/assets/kekztech/textures/blocks/thaumreinforced_jar_side_void.png Binary files differnew file mode 100644 index 0000000000..bcf2fb8f6c --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/thaumreinforced_jar_side_void.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/thaumreinforced_jar_top.png b/src/main/resources/assets/kekztech/textures/blocks/thaumreinforced_jar_top.png Binary files differnew file mode 100644 index 0000000000..f7afb2e4b3 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/thaumreinforced_jar_top.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/thaumreinforced_jar_top_void.png b/src/main/resources/assets/kekztech/textures/blocks/thaumreinforced_jar_top_void.png Binary files differnew file mode 100644 index 0000000000..083e8a1d0b --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/thaumreinforced_jar_top_void.png diff --git a/src/main/resources/assets/kekztech/textures/effects/Tether_beam.png b/src/main/resources/assets/kekztech/textures/effects/Tether_beam.png Binary files differnew file mode 100644 index 0000000000..ca8274820b --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/effects/Tether_beam.png diff --git a/src/main/resources/assets/kekztech/textures/gui/ItemTech4by4.png b/src/main/resources/assets/kekztech/textures/gui/ItemTech4by4.png Binary files differindex b01d9b444f..60c9f99fff 100644 --- a/src/main/resources/assets/kekztech/textures/gui/ItemTech4by4.png +++ b/src/main/resources/assets/kekztech/textures/gui/ItemTech4by4.png diff --git a/src/main/resources/assets/kekztech/textures/gui/ItemTechReceiverNode.png b/src/main/resources/assets/kekztech/textures/gui/ItemTechReceiverNode.png Binary files differnew file mode 100644 index 0000000000..704fb39c96 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/gui/ItemTechReceiverNode.png |