diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java index 3233c6eb..824e2c6d 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java @@ -10,6 +10,7 @@ import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; import net.minecraft.util.MathHelper; @@ -27,13 +28,13 @@ import cpw.mods.fml.relauncher.SideOnly; public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEntityProvider { - protected final DDProperties properties; private Icon blockIconBottom; + protected final DDProperties properties; public BaseDimDoor(int blockID, Material material, DDProperties properties) { super(blockID, material); - + this.properties = properties; } @@ -229,60 +230,38 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn * their own) Args: x, y, z, neighbor blockID */ @Override - public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5) + public void onNeighborBlockChange(World world, int x, int y, int z, int neighborID) { - int var6 = par1World.getBlockMetadata(par2, par3, par4); - - if ((var6 & 8) == 0) + int metadata = world.getBlockMetadata(x, y, z); + if (!isUpperDoorBlock(metadata)) { - boolean var7 = false; - - if (par1World.getBlockId(par2, par3 + 1, par4) != this.blockID) + if (world.getBlockId(x, y - 1, z) != this.blockID) { - par1World.setBlock(par2, par3, par4, 0); - var7 = true; + world.setBlock(x, y, z, 0); } - - /** - if (!par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4)) - { - par1World.setBlockWithNotify(par2, par3, par4, 0); - var7 = true; - - if (par1World.getBlockId(par2, par3 + 1, par4) == this.blockID) - { - par1World.setBlockWithNotify(par2, par3 + 1, par4, 0); - } - } - **/ - - if (var7) + + if (neighborID > 0 && neighborID != this.blockID) { - if (!par1World.isRemote) - { - this.dropBlockAsItem(par1World, par2, par3, par4, properties.DimensionalDoorID, 0); - } - } - else - { - boolean var8 = par1World.isBlockIndirectlyGettingPowered(par2, par3, par4) || par1World.isBlockIndirectlyGettingPowered(par2, par3 + 1, par4); - - if ((var8 || par5 > 0 && Block.blocksList[par5].canProvidePower()) && par5 != this.blockID) - { - this.onPoweredBlockChange(par1World, par2, par3, par4, var8); - } + this.onNeighborBlockChange(world, x, y - 1, z, neighborID); } } else { - if (par1World.getBlockId(par2, par3 - 1, par4) != this.blockID) + if (world.getBlockId(x, y + 1, z) != this.blockID) { - par1World.setBlock(par2, par3, par4, 0); + world.setBlock(x, y, z, 0); + if (!world.isRemote) + { + this.dropBlockAsItem(world, x, y, z, metadata, 0); + } } - - if (par5 > 0 && par5 != this.blockID) + else { - this.onNeighborBlockChange(par1World, par2, par3 - 1, par4, par5); + boolean powered = world.isBlockIndirectlyGettingPowered(x, y, z) || world.isBlockIndirectlyGettingPowered(x, y + 1, z); + if ((powered || neighborID > 0 && Block.blocksList[neighborID].canProvidePower()) && neighborID != this.blockID) + { + this.onPoweredBlockChange(world, x, y, z, powered); + } } } } @@ -297,15 +276,12 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn return this.getDrops(); } - @Override - public int idDropped(int par1, Random par2Random, int par3) + /** + * Returns the ID of the items to drop on destruction. + */ + public int idDropped(int metadata, Random random, int fortune) { - //I have no idea, but sometimes this is returned as the blockID instead of metadata. - if(par1>100) - { - return this.getDrops(); - } - return (par1 & 8) != 0 ? 0 :getDrops(); + return isUpperDoorBlock(metadata) ? 0 : this.getDrops(); } /** @@ -375,9 +351,11 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn } @Override - public int getDrops() + public abstract int getDrops(); + + protected static boolean isUpperDoorBlock(int metadata) { - return this.blockID; + return (metadata & 8) != 0; } protected static boolean isDoorOpen(int metadata) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockDoorGold.java b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockDoorGold.java index 5b207797..41b45c0f 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockDoorGold.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockDoorGold.java @@ -45,7 +45,7 @@ public class BlockDoorGold extends BlockDoor @SideOnly(Side.CLIENT) public Icon getBlockTexture(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) { - if (par1IBlockAccess.getBlockId(par2, par3-1, par4) == this.blockID) + if (par1IBlockAccess.getBlockId(par2, par3 - 1, par4) == this.blockID) { return this.blockIcon; } diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockGoldDimDoor.java b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockGoldDimDoor.java index 7cd4e0c5..b4ffd219 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockGoldDimDoor.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockGoldDimDoor.java @@ -32,8 +32,8 @@ public class BlockGoldDimDoor extends BaseDimDoor dimension.createLink(x, y, z, LinkTypes.POCKET,world.getBlockMetadata(x, y - 1, z)); } } - } + @Override public int getDrops() { diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java index 0c005012..bac5c5dd 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java @@ -1,5 +1,11 @@ package StevenDimDoors.mod_pocketDim.blocks; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; import StevenDimDoors.mod_pocketDim.DDProperties; import StevenDimDoors.mod_pocketDim.core.DDTeleporter; import StevenDimDoors.mod_pocketDim.core.DimLink; @@ -7,14 +13,6 @@ import StevenDimDoors.mod_pocketDim.core.LinkTypes; import StevenDimDoors.mod_pocketDim.core.NewDimData; import StevenDimDoors.mod_pocketDim.core.PocketManager; -import net.minecraft.block.material.Material; -import net.minecraft.client.particle.EntityFX; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; - public class TransientDoor extends BaseDimDoor { public TransientDoor(int blockID, Material material, DDProperties properties)