diff --git a/StevenDimDoors/mod_pocketDim/EventHookContainer.java b/StevenDimDoors/mod_pocketDim/EventHookContainer.java index aa41b8af..95742f3e 100644 --- a/StevenDimDoors/mod_pocketDim/EventHookContainer.java +++ b/StevenDimDoors/mod_pocketDim/EventHookContainer.java @@ -58,16 +58,15 @@ public class EventHookContainer { for (LinkData link:dimHelper.instance.getDimData(world.provider.dimensionId).getLinksInDim()) { - if(linkCount>100) //TODO: Wtf? wouldn't this cause some links to not load on servers with several links? Not sure what's going on here. ~SenseiKiwi - { - break; - } - linkCount++; - int blocktoReplace = world.getBlockId(link.locXCoord, link.locYCoord, link.locZCoord); - if (!mod_pocketDim.blocksImmuneToRift.contains(blocktoReplace)) + if (!mod_pocketDim.blockRift.isBlockImmune(world, link.locXCoord, link.locYCoord, link.locZCoord)) { dimHelper.getWorld(link.locDimID).setBlock(link.locXCoord, link.locYCoord, link.locZCoord, properties.RiftBlockID); } + linkCount++; + if (linkCount >= 100) + { + break; + } } } catch(Exception e) diff --git a/StevenDimDoors/mod_pocketDim/blocks/BlockRift.java b/StevenDimDoors/mod_pocketDim/blocks/BlockRift.java index bad02c57..ac34bf2c 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/BlockRift.java +++ b/StevenDimDoors/mod_pocketDim/blocks/BlockRift.java @@ -1,7 +1,9 @@ package StevenDimDoors.mod_pocketDim.blocks; +import java.util.ArrayList; import java.util.Random; +import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; @@ -11,7 +13,6 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.PacketHandler; import StevenDimDoors.mod_pocketDim.TileEntityRift; import StevenDimDoors.mod_pocketDim.mod_pocketDim; import StevenDimDoors.mod_pocketDim.helpers.dimHelper; @@ -24,24 +25,41 @@ import cpw.mods.fml.relauncher.SideOnly; public class BlockRift extends BlockContainer { - private static DDProperties properties = null; + private static final float MIN_IMMUNE_HARDNESS = 200.0F; - public BlockRift(int i, int j, Material par2Material) + private final DDProperties properties; + private final ArrayList blocksImmuneToRift; + + public BlockRift(int i, int j, Material par2Material, DDProperties properties) { super(i, Material.air); - setTickRandomly(true); - // this.setCreativeTab(CreativeTabs.tabBlock); + this.setTickRandomly(true); this.setLightOpacity(14); - if (properties == null) - properties = DDProperties.instance(); + this.properties = properties; + this.blocksImmuneToRift = new ArrayList(); + this.blocksImmuneToRift.add(properties.FabricBlockID); + this.blocksImmuneToRift.add(properties.PermaFabricBlockID); + this.blocksImmuneToRift.add(properties.DimensionalDoorID); + this.blocksImmuneToRift.add(properties.WarpDoorID); + this.blocksImmuneToRift.add(properties.TransTrapdoorID); + this.blocksImmuneToRift.add(properties.UnstableDoorID); + this.blocksImmuneToRift.add(properties.RiftBlockID); + this.blocksImmuneToRift.add(properties.TransientDoorID); + this.blocksImmuneToRift.add(Block.blockIron.blockID); + this.blocksImmuneToRift.add(Block.blockDiamond.blockID); + this.blocksImmuneToRift.add(Block.blockEmerald.blockID); + this.blocksImmuneToRift.add(Block.blockGold.blockID); + this.blocksImmuneToRift.add(Block.blockLapis.blockID); } + @Override public void registerIcons(IconRegister par1IconRegister) { this.blockIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()); } //sends a packet informing the client that there is a link present so it renders properly. (when placed) + @Override public void onBlockAdded(World par1World, int par2, int par3, int par4) { try @@ -53,16 +71,18 @@ public class BlockRift extends BlockContainer e.printStackTrace(); } // this.updateTick(par1World, par2, par3, par4, new Random()); - } + + @Override public boolean isCollidable() { return false; } - + + @Override public void onBlockDestroyedByPlayer(World par1World, int par2, int par3, int par4, int par5) {} - + @Override public boolean isOpaqueCube() { return false; @@ -71,6 +91,7 @@ public class BlockRift extends BlockContainer /** * Returns whether this block is collideable based on the arguments passed in Args: blockMetaData, unknownFlag */ + @Override public boolean canCollideCheck(int par1, boolean par2) { @@ -81,11 +102,14 @@ public class BlockRift extends BlockContainer * Returns Returns true if the given side of this block type should be rendered (if it's solid or not), if the * adjacent block is at the given coordinates. Args: blockAccess, x, y, z, side */ + @Override public boolean isBlockSolid(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) { return true; } + //this doesnt do anything yet. + @Override public int getRenderType() { if(mod_pocketDim.isPlayerWearingGoogles) @@ -96,12 +120,12 @@ public class BlockRift extends BlockContainer return 8; } - @SideOnly(Side.CLIENT) - /** * Returns true if the given side of this block type should be rendered, if the adjacent block is at the given * coordinates. Args: blockAccess, x, y, z, side */ + @Override + @SideOnly(Side.CLIENT) public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) { return true; @@ -111,21 +135,23 @@ public class BlockRift extends BlockContainer * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been * cleared to be reused) */ + @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { return null; } + //function that regulates how many blocks it eats/ how fast it eates them. + @Override public void updateTick(World world, int x, int y, int z, Random random) { if(!world.isRemote&&dimHelper.instance.getLinkDataFromCoords(x, y, z, world.provider.dimensionId)!=null && properties.RiftGriefingEnabled) { TileEntityRift rift = (TileEntityRift) world.getBlockTileEntity(x, y, z); - if(rift.isNearRift) + if (rift.isNearRift) { - + //TODO: Fix this. Make it pretty. õ_õ ~SenseiKiwi int range=4; - float distance=range+range/4; int i=-range; int j=-range; @@ -137,7 +163,8 @@ public class BlockRift extends BlockContainer { while (k= MIN_IMMUNE_HARDNESS || blocksImmuneToRift.contains(block.blockID)); + } + return false; + } + + @Override public int idPicked(World par1World, int par2, int par3, int par4) { return 0; } + @Override public int idDropped(int par1, Random par2Random, int par3) { return 0; @@ -290,12 +323,7 @@ public class BlockRift extends BlockContainer @Override public TileEntity createNewTileEntity(World var1) - { - // TODO Auto-generated method stub return new TileEntityRift(); } - - - -} +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/helpers/dimHelper.java b/StevenDimDoors/mod_pocketDim/helpers/dimHelper.java index 1cdf6bee..9f820488 100644 --- a/StevenDimDoors/mod_pocketDim/helpers/dimHelper.java +++ b/StevenDimDoors/mod_pocketDim/helpers/dimHelper.java @@ -42,7 +42,6 @@ import StevenDimDoors.mod_pocketDim.Point3D; import StevenDimDoors.mod_pocketDim.SchematicLoader; import StevenDimDoors.mod_pocketDim.TileEntityRift; import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.dungeon.DungeonSchematic; import StevenDimDoors.mod_pocketDim.schematic.BlockRotator; import StevenDimDoors.mod_pocketDim.world.LimboProvider; import StevenDimDoors.mod_pocketDim.world.PocketProvider; @@ -272,16 +271,20 @@ public class dimHelper extends DimensionManager } this.generateDoor(world,linkData); + //FIXME: Why are we checking blockList.length? Not necessary. getBlockId() can't return an ID past the end of the block list. + //Plus even if the check is necessary, it's still wrong since it should be less than, not less than or equal to. if(Block.blocksList.length>=entity.worldObj.getBlockId(playerXCoord,playerYCoord+1,playerZCoord)&&!entity.worldObj.isAirBlock(playerXCoord,playerYCoord+1,playerZCoord)) { - if(Block.blocksList[entity.worldObj.getBlockId(playerXCoord,playerYCoord+1,playerZCoord)].isOpaqueCube()&&!mod_pocketDim.blocksImmuneToRift.contains(entity.worldObj.getBlockId(playerXCoord,playerYCoord+1,playerZCoord))) + if(Block.blocksList[entity.worldObj.getBlockId(playerXCoord,playerYCoord+1,playerZCoord)].isOpaqueCube() && + !mod_pocketDim.blockRift.isBlockImmune(entity.worldObj, playerXCoord+1,playerYCoord,playerZCoord)) { entity.worldObj.setBlock(playerXCoord,playerYCoord+1,playerZCoord,0); } } - if(Block.blocksList.length>=entity.worldObj.getBlockId(playerXCoord,playerYCoord,playerZCoord)&&!entity.worldObj.isAirBlock(playerXCoord,playerYCoord,playerZCoord)) + if (Block.blocksList.length >= entity.worldObj.getBlockId(playerXCoord,playerYCoord,playerZCoord)&&!entity.worldObj.isAirBlock(playerXCoord,playerYCoord,playerZCoord)) { - if(Block.blocksList[entity.worldObj.getBlockId(playerXCoord,playerYCoord,playerZCoord)].isOpaqueCube()&&!mod_pocketDim.blocksImmuneToRift.contains(entity.worldObj.getBlockId(playerXCoord,playerYCoord,playerZCoord))) + if(Block.blocksList[entity.worldObj.getBlockId(playerXCoord,playerYCoord,playerZCoord)].isOpaqueCube() && + !mod_pocketDim.blockRift.isBlockImmune(entity.worldObj, playerXCoord,playerYCoord,playerZCoord)) { entity.worldObj.setBlock(playerXCoord,playerYCoord,playerZCoord,0); } @@ -362,12 +365,12 @@ public class dimHelper extends DimensionManager link.isLocPocket=locationDimData.isPocket; locationDimData.addLinkToDim(link); - if(dimHelper.getWorld(link.locDimID)!=null) + World world = dimHelper.getWorld(link.locDimID); + if (world != null) { - int blocktoReplace = dimHelper.getWorld(link.locDimID).getBlockId(link.locXCoord, link.locYCoord, link.locZCoord); - if(!mod_pocketDim.blocksImmuneToRift.contains(blocktoReplace)) + if (!mod_pocketDim.blockRift.isBlockImmune(world, link.locXCoord, link.locYCoord, link.locZCoord)) { - dimHelper.getWorld(link.locDimID).setBlock(link.locXCoord, link.locYCoord, link.locZCoord, properties.RiftBlockID); + world.setBlock(link.locXCoord, link.locYCoord, link.locZCoord, properties.RiftBlockID); } } //Notifies other players that a link has been created. diff --git a/StevenDimDoors/mod_pocketDim/mod_pocketDim.java b/StevenDimDoors/mod_pocketDim/mod_pocketDim.java index 253ae391..b2ca95ab 100644 --- a/StevenDimDoors/mod_pocketDim/mod_pocketDim.java +++ b/StevenDimDoors/mod_pocketDim/mod_pocketDim.java @@ -33,7 +33,6 @@ import StevenDimDoors.mod_pocketDim.commands.CommandPrintDimensionData; import StevenDimDoors.mod_pocketDim.commands.CommandPruneDimensions; import StevenDimDoors.mod_pocketDim.commands.CommandResetDungeons; import StevenDimDoors.mod_pocketDim.commands.CommandTeleportPlayer; -import StevenDimDoors.mod_pocketDim.helpers.BlockRotationHelper; import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; import StevenDimDoors.mod_pocketDim.helpers.dimHelper; import StevenDimDoors.mod_pocketDim.items.ItemBlockDimWall; @@ -104,12 +103,12 @@ public class mod_pocketDim public static Block transientDoor; public static Block ExitDoor; public static Block chaosDoor; - public static Block blockRift; public static Block blockLimbo; public static Block dimDoor; public static Block blockDimWall; public static Block dimHatch; public static Block blockDimWallPerm; + public static BlockRift blockRift; public static Item itemRiftBlade; public static Item itemDimDoor; @@ -126,9 +125,7 @@ public class mod_pocketDim public static PlayerRespawnTracker tracker; public static HashMap> limboSpawnInventory = new HashMap>(); - - public static ArrayList blocksImmuneToRift = new ArrayList(); - + public static boolean hasInitDims = false; public static boolean isPlayerWearingGoogles = false; @@ -191,7 +188,7 @@ public class mod_pocketDim blockDimWall = (new BlockDimWall(properties.FabricBlockID, 0, Material.iron)).setLightValue(1.0F).setHardness(0.1F).setUnlocalizedName("blockDimWall"); blockDimWallPerm = (new BlockDimWallPerm(properties.PermaFabricBlockID, 0, Material.iron)).setLightValue(1.0F).setBlockUnbreakable().setResistance(6000000.0F).setUnlocalizedName("blockDimWallPerm"); ExitDoor = (new ExitDoor(properties.WarpDoorID, Material.wood)).setHardness(1.0F) .setUnlocalizedName("dimDoorWarp"); - blockRift = (new BlockRift(properties.RiftBlockID, 0, Material.air).setHardness(1.0F) .setUnlocalizedName("rift")); + blockRift = (BlockRift) (new BlockRift(properties.RiftBlockID, 0, Material.air, properties).setHardness(1.0F) .setUnlocalizedName("rift")); blockLimbo = (new BlockLimbo(properties.LimboBlockID, 15, Material.iron, properties.LimboDimensionID, decay).setHardness(.2F).setUnlocalizedName("BlockLimbo").setLightValue(.0F)); chaosDoor = (new ChaosDoor(properties.UnstableDoorID, Material.iron).setHardness(.2F).setUnlocalizedName("chaosDoor").setLightValue(.0F) ); dimDoor = (new dimDoor(properties.DimensionalDoorID, Material.iron)).setHardness(1.0F).setResistance(2000.0F) .setUnlocalizedName("dimDoor"); @@ -378,22 +375,7 @@ public class mod_pocketDim " y ", "yxy", " y ", 'x', mod_pocketDim.itemLinkSignature, 'y', mod_pocketDim.itemStableFabric }); } - - mod_pocketDim.blocksImmuneToRift.add(properties.FabricBlockID); - mod_pocketDim.blocksImmuneToRift.add(properties.PermaFabricBlockID); - mod_pocketDim.blocksImmuneToRift.add(properties.DimensionalDoorID); - mod_pocketDim.blocksImmuneToRift.add(properties.WarpDoorID); - mod_pocketDim.blocksImmuneToRift.add(properties.TransTrapdoorID); - mod_pocketDim.blocksImmuneToRift.add(properties.UnstableDoorID); - mod_pocketDim.blocksImmuneToRift.add(properties.RiftBlockID); - mod_pocketDim.blocksImmuneToRift.add(properties.TransientDoorID); - mod_pocketDim.blocksImmuneToRift.add(Block.blockIron.blockID); - mod_pocketDim.blocksImmuneToRift.add(Block.blockDiamond.blockID); - mod_pocketDim.blocksImmuneToRift.add(Block.blockEmerald.blockID); - mod_pocketDim.blocksImmuneToRift.add(Block.blockGold.blockID); - mod_pocketDim.blocksImmuneToRift.add(Block.blockLapis.blockID); - mod_pocketDim.blocksImmuneToRift.add(Block.bedrock.blockID); - + DungeonHelper.initialize(); proxy.loadTextures(); diff --git a/StevenDimDoors/mod_pocketDim/ticking/RiftRegenerator.java b/StevenDimDoors/mod_pocketDim/ticking/RiftRegenerator.java index c358dd1a..386c73b9 100644 --- a/StevenDimDoors/mod_pocketDim/ticking/RiftRegenerator.java +++ b/StevenDimDoors/mod_pocketDim/ticking/RiftRegenerator.java @@ -43,27 +43,21 @@ public class RiftRegenerator implements IRegularTickReceiver { //actually gets the random rift based on the size of the list link = (LinkData) dimHelper.instance.getRandomLinkData(true); - if(link!=null) + if (link != null) { + World world = dimHelper.getWorld(link.locDimID); - if (dimHelper.getWorld(link.locDimID)!=null) + if (world != null && !mod_pocketDim.blockRift.isBlockImmune(world, link.locXCoord, link.locYCoord, link.locZCoord)) { - World world = dimHelper.getWorld(link.locDimID); - - int blocktoReplace = world.getBlockId(link.locXCoord, link.locYCoord, link.locZCoord); - - if(!mod_pocketDim.blocksImmuneToRift.contains(blocktoReplace))//makes sure the rift doesn't replace a door or something + if (dimHelper.instance.getLinkDataFromCoords(link.locXCoord, link.locYCoord, link.locZCoord, link.locDimID) != null) { - if(dimHelper.instance.getLinkDataFromCoords(link.locXCoord, link.locYCoord, link.locZCoord, link.locDimID) != null) + world.setBlock(link.locXCoord, link.locYCoord, link.locZCoord, properties.RiftBlockID); + TileEntityRift rift = (TileEntityRift) world.getBlockTileEntity(link.locXCoord, link.locYCoord, link.locZCoord); + if (rift == null) { - dimHelper.getWorld(link.locDimID).setBlock(link.locXCoord, link.locYCoord, link.locZCoord, properties.RiftBlockID); - TileEntityRift rift = TileEntityRift.class.cast(dimHelper.getWorld(link.locDimID).getBlockTileEntity(link.locXCoord, link.locYCoord, link.locZCoord)); - if(rift == null) - { - dimHelper.getWorld(link.locDimID).setBlockTileEntity(link.locXCoord, link.locYCoord, link.locZCoord, new TileEntityRift()); - } - rift.hasGrownRifts=true; + dimHelper.getWorld(link.locDimID).setBlockTileEntity(link.locXCoord, link.locYCoord, link.locZCoord, new TileEntityRift()); } + rift.hasGrownRifts = true; } } } @@ -71,7 +65,7 @@ public class RiftRegenerator implements IRegularTickReceiver { } catch (Exception e) { - System.out.println("An exception occurred in RiftRegenerator.regenerate():"); + System.err.println("An exception occurred in RiftRegenerator.regenerate():"); e.printStackTrace(); } }