aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/common/blocks
diff options
context:
space:
mode:
authorKiwi <42833050+Kiwi233@users.noreply.github.com>2020-05-22 20:23:55 +0800
committerGitHub <noreply@github.com>2020-05-22 20:23:55 +0800
commit56689ec7b67c46c882d49da4742770e3397a4e9f (patch)
tree879a3372906ec2c5f2a53a4ac46f7dde860a654f /src/main/java/common/blocks
parentbc19f3ab32c9bccbf936bbeffcc8ddad967ffffd (diff)
parent306a0822c27c59cdbd0a61698939a2dfc02068d2 (diff)
downloadGT5-Unofficial-56689ec7b67c46c882d49da4742770e3397a4e9f.tar.gz
GT5-Unofficial-56689ec7b67c46c882d49da4742770e3397a4e9f.tar.bz2
GT5-Unofficial-56689ec7b67c46c882d49da4742770e3397a4e9f.zip
Merge pull request #1 from kekzdealer/master
5/22
Diffstat (limited to 'src/main/java/common/blocks')
-rw-r--r--src/main/java/common/blocks/BaseGTUpdateableBlock.java58
-rw-r--r--src/main/java/common/blocks/Block_ControlRod.java28
-rw-r--r--src/main/java/common/blocks/Block_GDCUnit.java28
-rw-r--r--src/main/java/common/blocks/Block_IchorJar.java222
-rw-r--r--src/main/java/common/blocks/Block_ItemProxyCable.java66
-rw-r--r--src/main/java/common/blocks/Block_ItemProxyEndpoint.java61
-rw-r--r--src/main/java/common/blocks/Block_ItemProxySource.java61
-rw-r--r--src/main/java/common/blocks/Block_ItemServerDrive.java57
-rw-r--r--src/main/java/common/blocks/Block_ItemServerIOPort.java43
-rw-r--r--src/main/java/common/blocks/Block_ItemServerRackCasing.java30
-rw-r--r--src/main/java/common/blocks/Block_LapotronicEnergyUnit.java93
-rw-r--r--src/main/java/common/blocks/Block_ReactorChamber_OFF.java29
-rw-r--r--src/main/java/common/blocks/Block_ReactorChamber_ON.java34
-rw-r--r--src/main/java/common/blocks/Block_SpaceElevator.java61
-rw-r--r--src/main/java/common/blocks/Block_SpaceElevatorCapacitor.java80
-rw-r--r--src/main/java/common/blocks/Block_SpaceElevatorTether.java70
-rw-r--r--src/main/java/common/blocks/Block_TFFTCasing.java28
-rw-r--r--src/main/java/common/blocks/Block_TFFTMultiHatch.java65
-rw-r--r--src/main/java/common/blocks/Block_TFFTStorageFieldBlockT1.java38
-rw-r--r--src/main/java/common/blocks/Block_TFFTStorageFieldBlockT2.java37
-rw-r--r--src/main/java/common/blocks/Block_TFFTStorageFieldBlockT3.java37
-rw-r--r--src/main/java/common/blocks/Block_TFFTStorageFieldBlockT4.java37
-rw-r--r--src/main/java/common/blocks/Block_TFFTStorageFieldBlockT5.java37
-rw-r--r--src/main/java/common/blocks/Block_ThaumiumReinforcedJar.java244
-rw-r--r--src/main/java/common/blocks/Block_YSZUnit.java28
25 files changed, 1572 insertions, 0 deletions
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/common/blocks/Block_ItemServerDrive.java b/src/main/java/common/blocks/Block_ItemServerDrive.java
new file mode 100644
index 0000000000..63747a8598
--- /dev/null
+++ b/src/main/java/common/blocks/Block_ItemServerDrive.java
@@ -0,0 +1,57 @@
+package common.blocks;
+
+import common.itemBlocks.IB_ItemServerDrive;
+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.util.IIcon;
+
+public class Block_ItemServerDrive extends BaseGTUpdateableBlock{
+
+ private static Block_ItemServerDrive instance = new Block_ItemServerDrive();
+
+ private IIcon[] faces = new IIcon[6];
+
+ private Block_ItemServerDrive() {
+ super(Material.iron);
+ }
+
+ public static Block registerBlock() {
+ final String blockName = "kekztech_itemserverdrive_block";
+ 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
+ public void registerBlockIcons(IIconRegister reg) {
+ for(int i = 0; i < 6; i++) {
+ if(i == 0) {
+ faces[i] = reg.registerIcon(KekzCore.MODID + ":" + "ItemServerDrive_BOTTOM");
+ } else if(i == 1) {
+ faces[i] = reg.registerIcon(KekzCore.MODID + ":" + "ItemServerDrive_TOP");
+ } else {
+ faces[i] = reg.registerIcon(KekzCore.MODID + ":" + "ItemServerDrive");
+ }
+
+ }
+ }
+
+ @Override
+ public IIcon getIcon(int side, int meta) {
+ return faces[side];
+ }
+
+ @Override
+ public int getLightValue() {
+ return 7;
+ }
+
+}
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) ? icon