diff options
author | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2018-10-23 05:50:53 +0100 |
---|---|---|
committer | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2018-10-23 05:50:53 +0100 |
commit | 53408770c7a4dd6fa4c997d4601b7aba215bc9ab (patch) | |
tree | dc484060a98ae7664aa9c9065537c1a235b54aa6 /src/Java/gtPlusPlus/core/item | |
parent | 3dcd9e39f138315c903650c69f9a1a9782226cc4 (diff) | |
download | GT5-Unofficial-53408770c7a4dd6fa4c997d4601b7aba215bc9ab.tar.gz GT5-Unofficial-53408770c7a4dd6fa4c997d4601b7aba215bc9ab.tar.bz2 GT5-Unofficial-53408770c7a4dd6fa4c997d4601b7aba215bc9ab.zip |
$ Finished Work on custom auto-doors, now they just require recipes.
Diffstat (limited to 'src/Java/gtPlusPlus/core/item')
-rw-r--r-- | src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockDoor.java | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockDoor.java b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockDoor.java new file mode 100644 index 0000000000..a41a44c113 --- /dev/null +++ b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockDoor.java @@ -0,0 +1,92 @@ +package gtPlusPlus.core.item.base.itemblock; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +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.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class ItemBlockDoor extends ItemBlock { + @SideOnly(Side.CLIENT) + private IIcon field_150938_b; + + public ItemBlockDoor(Block p_i45328_1_) { + super(p_i45328_1_); + } + + /** + * Callback for item usage. If the item does something special on right + * clicking, he will have one of those. Return True if something happen and + * false if it don't. This is for ITEMS, not BLOCKS + */ + @Override + public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, + int par5, int par6, int par7, float par8, float par9, float par10) { + if (par7 != 1) { + return false; + } else { + ++par5; + Block block; + + block = field_150939_a; + + if (par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack) + && par2EntityPlayer.canPlayerEdit(par4, par5 + 1, par6, par7, par1ItemStack)) { + if (!block.canPlaceBlockAt(par3World, par4, par5, par6)) { + return false; + } else { + int i1 = MathHelper.floor_double( + (double) ((par2EntityPlayer.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; + byte b0 = 0; + byte b1 = 0; + + if (i1 == 0) { + b1 = 1; + } + + if (i1 == 1) { + b0 = -1; + } + + if (i1 == 2) { + b1 = -1; + } + + if (i1 == 3) { + b0 = 1; + } + + int i2 = (par3World.getBlock(par4 - b0, par5, par6 - b1).isNormalCube() ? 1 : 0) + + (par3World.getBlock(par4 - b0, par5 + 1, par6 - b1).isNormalCube() ? 1 : 0); + int j1 = (par3World.getBlock(par4 + b0, par5, par6 + b1).isNormalCube() ? 1 : 0) + + (par3World.getBlock(par4 + b0, par5 + 1, par6 + b1).isNormalCube() ? 1 : 0); + boolean flag = par3World.getBlock(par4 - b0, par5, par6 - b1) == block + || par3World.getBlock(par4 - b0, par5 + 1, par6 - b1) == block; + boolean flag1 = par3World.getBlock(par4 + b0, par5, par6 + b1) == block + || par3World.getBlock(par4 + b0, par5 + 1, par6 + b1) == block; + boolean flag2 = false; + + if (flag && !flag1) { + flag2 = true; + } else if (j1 > i2) { + flag2 = true; + } + + par3World.setBlock(par4, par5, par6, block, i1, 2); + par3World.setBlock(par4, par5 + 1, par6, block, 8 | (flag2 ? 1 : 0), 2); + par3World.notifyBlocksOfNeighborChange(par4, par5, par6, block); + par3World.notifyBlocksOfNeighborChange(par4, par5 + 1, par6, block); + + --par1ItemStack.stackSize; + return true; + } + } else { + return false; + } + } + } +}
\ No newline at end of file |