Made Rifts Check Block Hardness
Made rifts check block hardness while replacing blocks so that we can avoid destroying strong or indestructible blocks from other mods. Updated references throughout the code to use a function in BlockRift for this purpose.
This commit is contained in:
@@ -58,16 +58,15 @@ public class EventHookContainer
|
|||||||
{
|
{
|
||||||
for (LinkData link:dimHelper.instance.getDimData(world.provider.dimensionId).getLinksInDim())
|
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
|
if (!mod_pocketDim.blockRift.isBlockImmune(world, link.locXCoord, link.locYCoord, link.locZCoord))
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
linkCount++;
|
|
||||||
int blocktoReplace = world.getBlockId(link.locXCoord, link.locYCoord, link.locZCoord);
|
|
||||||
if (!mod_pocketDim.blocksImmuneToRift.contains(blocktoReplace))
|
|
||||||
{
|
{
|
||||||
dimHelper.getWorld(link.locDimID).setBlock(link.locXCoord, link.locYCoord, link.locZCoord, properties.RiftBlockID);
|
dimHelper.getWorld(link.locDimID).setBlock(link.locXCoord, link.locYCoord, link.locZCoord, properties.RiftBlockID);
|
||||||
}
|
}
|
||||||
|
linkCount++;
|
||||||
|
if (linkCount >= 100)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package StevenDimDoors.mod_pocketDim.blocks;
|
package StevenDimDoors.mod_pocketDim.blocks;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockContainer;
|
import net.minecraft.block.BlockContainer;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.client.renderer.texture.IconRegister;
|
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.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import StevenDimDoors.mod_pocketDim.DDProperties;
|
import StevenDimDoors.mod_pocketDim.DDProperties;
|
||||||
import StevenDimDoors.mod_pocketDim.PacketHandler;
|
|
||||||
import StevenDimDoors.mod_pocketDim.TileEntityRift;
|
import StevenDimDoors.mod_pocketDim.TileEntityRift;
|
||||||
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
|
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
|
||||||
import StevenDimDoors.mod_pocketDim.helpers.dimHelper;
|
import StevenDimDoors.mod_pocketDim.helpers.dimHelper;
|
||||||
@@ -24,24 +25,41 @@ import cpw.mods.fml.relauncher.SideOnly;
|
|||||||
|
|
||||||
public class BlockRift extends BlockContainer
|
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<Integer> blocksImmuneToRift;
|
||||||
|
|
||||||
|
public BlockRift(int i, int j, Material par2Material, DDProperties properties)
|
||||||
{
|
{
|
||||||
super(i, Material.air);
|
super(i, Material.air);
|
||||||
setTickRandomly(true);
|
this.setTickRandomly(true);
|
||||||
// this.setCreativeTab(CreativeTabs.tabBlock);
|
|
||||||
this.setLightOpacity(14);
|
this.setLightOpacity(14);
|
||||||
if (properties == null)
|
this.properties = properties;
|
||||||
properties = DDProperties.instance();
|
this.blocksImmuneToRift = new ArrayList<Integer>();
|
||||||
|
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)
|
public void registerIcons(IconRegister par1IconRegister)
|
||||||
{
|
{
|
||||||
this.blockIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2());
|
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)
|
//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)
|
public void onBlockAdded(World par1World, int par2, int par3, int par4)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -53,16 +71,18 @@ public class BlockRift extends BlockContainer
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
// this.updateTick(par1World, par2, par3, par4, new Random());
|
// this.updateTick(par1World, par2, par3, par4, new Random());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isCollidable()
|
public boolean isCollidable()
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void onBlockDestroyedByPlayer(World par1World, int par2, int par3, int par4, int par5) {}
|
public void onBlockDestroyedByPlayer(World par1World, int par2, int par3, int par4, int par5) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isOpaqueCube()
|
public boolean isOpaqueCube()
|
||||||
{
|
{
|
||||||
return false;
|
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
|
* Returns whether this block is collideable based on the arguments passed in Args: blockMetaData, unknownFlag
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public boolean canCollideCheck(int par1, boolean par2)
|
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
|
* 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
|
* 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)
|
public boolean isBlockSolid(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//this doesnt do anything yet.
|
//this doesnt do anything yet.
|
||||||
|
@Override
|
||||||
public int getRenderType()
|
public int getRenderType()
|
||||||
{
|
{
|
||||||
if(mod_pocketDim.isPlayerWearingGoogles)
|
if(mod_pocketDim.isPlayerWearingGoogles)
|
||||||
@@ -96,12 +120,12 @@ public class BlockRift extends BlockContainer
|
|||||||
return 8;
|
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
|
* 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
|
* coordinates. Args: blockAccess, x, y, z, side
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5)
|
public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5)
|
||||||
{
|
{
|
||||||
return true;
|
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
|
* 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)
|
* cleared to be reused)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
|
public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//function that regulates how many blocks it eats/ how fast it eates them.
|
//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)
|
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)
|
if(!world.isRemote&&dimHelper.instance.getLinkDataFromCoords(x, y, z, world.provider.dimensionId)!=null && properties.RiftGriefingEnabled)
|
||||||
{
|
{
|
||||||
TileEntityRift rift = (TileEntityRift) world.getBlockTileEntity(x, y, z);
|
TileEntityRift rift = (TileEntityRift) world.getBlockTileEntity(x, y, z);
|
||||||
if(rift.isNearRift)
|
if (rift.isNearRift)
|
||||||
{
|
{
|
||||||
|
//TODO: Fix this. Make it pretty. <20>_<EFBFBD> ~SenseiKiwi
|
||||||
int range=4;
|
int range=4;
|
||||||
|
|
||||||
float distance=range+range/4;
|
float distance=range+range/4;
|
||||||
int i=-range;
|
int i=-range;
|
||||||
int j=-range;
|
int j=-range;
|
||||||
@@ -137,7 +163,8 @@ public class BlockRift extends BlockContainer
|
|||||||
{
|
{
|
||||||
while (k<range&&flag)
|
while (k<range&&flag)
|
||||||
{
|
{
|
||||||
if(!mod_pocketDim.blocksImmuneToRift.contains(world.getBlockId(x+i, y+j, z+k))&&MathHelper.abs(i)+MathHelper.abs(j)+MathHelper.abs(k)<distance&&!world.isAirBlock(x+i, y+j, z+k))
|
if (!isBlockImmune(world, x+i, y+j, z+k) &&
|
||||||
|
MathHelper.abs(i)+MathHelper.abs(j)+MathHelper.abs(k)<distance&&!world.isAirBlock(x+i, y+j, z+k))
|
||||||
{
|
{
|
||||||
if(MathHelper.abs(i)+MathHelper.abs(j)+MathHelper.abs(k)!=0&&random.nextInt(2)==0)
|
if(MathHelper.abs(i)+MathHelper.abs(j)+MathHelper.abs(k)!=0&&random.nextInt(2)==0)
|
||||||
{
|
{
|
||||||
@@ -153,19 +180,16 @@ public class BlockRift extends BlockContainer
|
|||||||
|
|
||||||
}
|
}
|
||||||
j=-range;
|
j=-range;
|
||||||
i++;
|
i++;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* regulates the render effect, especially when multiple rifts start to link up. Has 3 main parts- Grows toward and away from nearest rft, bends toward it, and a randomization function
|
* regulates the render effect, especially when multiple rifts start to link up. Has 3 main parts- Grows toward and away from nearest rft, bends toward it, and a randomization function
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void randomDisplayTick(World par1World, int par2, int par3, int par4, Random rand)
|
public void randomDisplayTick(World par1World, int par2, int par3, int par4, Random rand)
|
||||||
{
|
{
|
||||||
@@ -186,8 +210,6 @@ public class BlockRift extends BlockContainer
|
|||||||
|
|
||||||
TileEntityRift tile = (TileEntityRift)par1World.getBlockTileEntity(par2, par3, par4);
|
TileEntityRift tile = (TileEntityRift)par1World.getBlockTileEntity(par2, par3, par4);
|
||||||
|
|
||||||
//the noise, ie, how far the rift particles are away from the intended location.
|
|
||||||
float offset=0;
|
|
||||||
float Xoffset=0;
|
float Xoffset=0;
|
||||||
float Yoffset=0;
|
float Yoffset=0;
|
||||||
float Zoffset=0;
|
float Zoffset=0;
|
||||||
@@ -250,7 +272,6 @@ public class BlockRift extends BlockContainer
|
|||||||
yChange=(float) ((yGrowth+yGrowthn)+rand.nextGaussian()*.05F);
|
yChange=(float) ((yGrowth+yGrowthn)+rand.nextGaussian()*.05F);
|
||||||
zChange=(float) ((zGrowth+zGrowthn)+rand.nextGaussian()*.05F);
|
zChange=(float) ((zGrowth+zGrowthn)+rand.nextGaussian()*.05F);
|
||||||
|
|
||||||
offset= (float) ((0.2F/(1+Math.abs(xChange)+Math.abs(yChange)+Math.abs(zChange))));
|
|
||||||
Xoffset= (float) ((0.25F/(1+Math.abs(xChange))));
|
Xoffset= (float) ((0.25F/(1+Math.abs(xChange))));
|
||||||
|
|
||||||
Yoffset= (float) ((0.25F/(1+Math.abs(yChange))));
|
Yoffset= (float) ((0.25F/(1+Math.abs(yChange))));
|
||||||
@@ -274,15 +295,27 @@ public class BlockRift extends BlockContainer
|
|||||||
FMLClientHandler.instance().getClient().effectRenderer.addEffect(new ClosingRiftFX(par1World,par2+.5, par3+.5, par4+.5, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, FMLClientHandler.instance().getClient().effectRenderer));
|
FMLClientHandler.instance().getClient().effectRenderer.addEffect(new ClosingRiftFX(par1World,par2+.5, par3+.5, par4+.5, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, FMLClientHandler.instance().getClient().effectRenderer));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isBlockImmune(World world, int x, int y, int z)
|
||||||
|
{
|
||||||
|
Block block = Block.blocksList[world.getBlockId(x, y, z)];
|
||||||
|
if (block != null)
|
||||||
|
{
|
||||||
|
float hardness = block.getBlockHardness(world, x, y, z);
|
||||||
|
return (hardness < 0 || hardness >= MIN_IMMUNE_HARDNESS || blocksImmuneToRift.contains(block.blockID));
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int idPicked(World par1World, int par2, int par3, int par4)
|
public int idPicked(World par1World, int par2, int par3, int par4)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int idDropped(int par1, Random par2Random, int par3)
|
public int idDropped(int par1, Random par2Random, int par3)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
@@ -290,12 +323,7 @@ public class BlockRift extends BlockContainer
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TileEntity createNewTileEntity(World var1)
|
public TileEntity createNewTileEntity(World var1)
|
||||||
|
|
||||||
{
|
{
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return new TileEntityRift();
|
return new TileEntityRift();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -42,7 +42,6 @@ import StevenDimDoors.mod_pocketDim.Point3D;
|
|||||||
import StevenDimDoors.mod_pocketDim.SchematicLoader;
|
import StevenDimDoors.mod_pocketDim.SchematicLoader;
|
||||||
import StevenDimDoors.mod_pocketDim.TileEntityRift;
|
import StevenDimDoors.mod_pocketDim.TileEntityRift;
|
||||||
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
|
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
|
||||||
import StevenDimDoors.mod_pocketDim.dungeon.DungeonSchematic;
|
|
||||||
import StevenDimDoors.mod_pocketDim.schematic.BlockRotator;
|
import StevenDimDoors.mod_pocketDim.schematic.BlockRotator;
|
||||||
import StevenDimDoors.mod_pocketDim.world.LimboProvider;
|
import StevenDimDoors.mod_pocketDim.world.LimboProvider;
|
||||||
import StevenDimDoors.mod_pocketDim.world.PocketProvider;
|
import StevenDimDoors.mod_pocketDim.world.PocketProvider;
|
||||||
@@ -272,16 +271,20 @@ public class dimHelper extends DimensionManager
|
|||||||
}
|
}
|
||||||
this.generateDoor(world,linkData);
|
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.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);
|
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);
|
entity.worldObj.setBlock(playerXCoord,playerYCoord,playerZCoord,0);
|
||||||
}
|
}
|
||||||
@@ -362,12 +365,12 @@ public class dimHelper extends DimensionManager
|
|||||||
link.isLocPocket=locationDimData.isPocket;
|
link.isLocPocket=locationDimData.isPocket;
|
||||||
locationDimData.addLinkToDim(link);
|
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.blockRift.isBlockImmune(world, link.locXCoord, link.locYCoord, link.locZCoord))
|
||||||
if(!mod_pocketDim.blocksImmuneToRift.contains(blocktoReplace))
|
|
||||||
{
|
{
|
||||||
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.
|
//Notifies other players that a link has been created.
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ import StevenDimDoors.mod_pocketDim.commands.CommandPrintDimensionData;
|
|||||||
import StevenDimDoors.mod_pocketDim.commands.CommandPruneDimensions;
|
import StevenDimDoors.mod_pocketDim.commands.CommandPruneDimensions;
|
||||||
import StevenDimDoors.mod_pocketDim.commands.CommandResetDungeons;
|
import StevenDimDoors.mod_pocketDim.commands.CommandResetDungeons;
|
||||||
import StevenDimDoors.mod_pocketDim.commands.CommandTeleportPlayer;
|
import StevenDimDoors.mod_pocketDim.commands.CommandTeleportPlayer;
|
||||||
import StevenDimDoors.mod_pocketDim.helpers.BlockRotationHelper;
|
|
||||||
import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper;
|
import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper;
|
||||||
import StevenDimDoors.mod_pocketDim.helpers.dimHelper;
|
import StevenDimDoors.mod_pocketDim.helpers.dimHelper;
|
||||||
import StevenDimDoors.mod_pocketDim.items.ItemBlockDimWall;
|
import StevenDimDoors.mod_pocketDim.items.ItemBlockDimWall;
|
||||||
@@ -104,12 +103,12 @@ public class mod_pocketDim
|
|||||||
public static Block transientDoor;
|
public static Block transientDoor;
|
||||||
public static Block ExitDoor;
|
public static Block ExitDoor;
|
||||||
public static Block chaosDoor;
|
public static Block chaosDoor;
|
||||||
public static Block blockRift;
|
|
||||||
public static Block blockLimbo;
|
public static Block blockLimbo;
|
||||||
public static Block dimDoor;
|
public static Block dimDoor;
|
||||||
public static Block blockDimWall;
|
public static Block blockDimWall;
|
||||||
public static Block dimHatch;
|
public static Block dimHatch;
|
||||||
public static Block blockDimWallPerm;
|
public static Block blockDimWallPerm;
|
||||||
|
public static BlockRift blockRift;
|
||||||
|
|
||||||
public static Item itemRiftBlade;
|
public static Item itemRiftBlade;
|
||||||
public static Item itemDimDoor;
|
public static Item itemDimDoor;
|
||||||
@@ -126,9 +125,7 @@ public class mod_pocketDim
|
|||||||
public static PlayerRespawnTracker tracker;
|
public static PlayerRespawnTracker tracker;
|
||||||
|
|
||||||
public static HashMap<String,ArrayList<EntityItem>> limboSpawnInventory = new HashMap<String,ArrayList<EntityItem>>();
|
public static HashMap<String,ArrayList<EntityItem>> limboSpawnInventory = new HashMap<String,ArrayList<EntityItem>>();
|
||||||
|
|
||||||
public static ArrayList<Integer> blocksImmuneToRift = new ArrayList<Integer>();
|
|
||||||
|
|
||||||
public static boolean hasInitDims = false;
|
public static boolean hasInitDims = false;
|
||||||
public static boolean isPlayerWearingGoogles = 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");
|
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");
|
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");
|
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));
|
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) );
|
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");
|
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
|
" 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();
|
DungeonHelper.initialize();
|
||||||
|
|
||||||
proxy.loadTextures();
|
proxy.loadTextures();
|
||||||
|
|||||||
@@ -43,27 +43,21 @@ public class RiftRegenerator implements IRegularTickReceiver {
|
|||||||
//actually gets the random rift based on the size of the list
|
//actually gets the random rift based on the size of the list
|
||||||
link = (LinkData) dimHelper.instance.getRandomLinkData(true);
|
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);
|
if (dimHelper.instance.getLinkDataFromCoords(link.locXCoord, link.locYCoord, link.locZCoord, link.locDimID) != null)
|
||||||
|
|
||||||
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)
|
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);
|
dimHelper.getWorld(link.locDimID).setBlockTileEntity(link.locXCoord, link.locYCoord, link.locZCoord, new TileEntityRift());
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
rift.hasGrownRifts = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -71,7 +65,7 @@ public class RiftRegenerator implements IRegularTickReceiver {
|
|||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
System.out.println("An exception occurred in RiftRegenerator.regenerate():");
|
System.err.println("An exception occurred in RiftRegenerator.regenerate():");
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user