Partial Dungeon Pack and Configurable Dungeon Chain Implementation #67
@@ -76,7 +76,7 @@ public class RiftGenerator implements IWorldGenerator
|
|||||||
//Otherwise, create a one-way link and connect to the destination of the first link.
|
//Otherwise, create a one-way link and connect to the destination of the first link.
|
||||||
if (link == null)
|
if (link == null)
|
||||||
{
|
{
|
||||||
link = new LinkData(world.provider.dimensionId, 0, x, y + 1, z, x, y + 1, z, true, random.nextInt(4));
|
link = new LinkData(world.provider.dimensionId, 0, x, y + 1, z, x, y + 1, z, true, 0);
|
||||||
link = dimHelper.instance.createPocket(link, true, true);
|
link = dimHelper.instance.createPocket(link, true, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -111,7 +111,7 @@ public class RiftGenerator implements IWorldGenerator
|
|||||||
{
|
{
|
||||||
//Create a two-way link between the upper block of the gateway and a pocket dimension
|
//Create a two-way link between the upper block of the gateway and a pocket dimension
|
||||||
//That pocket dimension is where we'll start a dungeon!
|
//That pocket dimension is where we'll start a dungeon!
|
||||||
link = new LinkData(world.provider.dimensionId, 0, x, y + 1, z, x, y + 1, z, true, random.nextInt(4));
|
link = new LinkData(world.provider.dimensionId, 0, x, y + 1, z, x, y + 1, z, true, 0);
|
||||||
link = dimHelper.instance.createPocket(link, true, true);
|
link = dimHelper.instance.createPocket(link, true, true);
|
||||||
|
|
||||||
//If the current dimension isn't Limbo, build a Rift Gateway out of Stone Bricks
|
//If the current dimension isn't Limbo, build a Rift Gateway out of Stone Bricks
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public class ExitDoor extends dimDoor
|
|||||||
int ExitDimID = dimData.exitDimLink.destDimID;
|
int ExitDimID = dimData.exitDimLink.destDimID;
|
||||||
if(dimHelper.instance.getDimData(par1World.provider.dimensionId).isPocket)
|
if(dimHelper.instance.getDimData(par1World.provider.dimensionId).isPocket)
|
||||||
{
|
{
|
||||||
int yCoord=yCoordHelper.getFirstUncovered(ExitDimID, par2, par3, par4);
|
int yCoord=yCoordHelper.getFirstUncovered(ExitDimID, par2, par3, par4)-1;
|
||||||
|
|
||||||
|
|
||||||
dimHelper.instance.createLink(locDimID, ExitDimID, par2, par3, par4, par2, yCoord, par4,par1World.getBlockMetadata(par2, par3-1, par4));
|
dimHelper.instance.createLink(locDimID, ExitDimID, par2, par3, par4, par2, yCoord, par4,par1World.getBlockMetadata(par2, par3-1, par4));
|
||||||
|
|||||||
@@ -250,11 +250,20 @@ public class dimHelper extends DimensionManager
|
|||||||
int playerXCoord=MathHelper.floor_double(entity.posX);
|
int playerXCoord=MathHelper.floor_double(entity.posX);
|
||||||
int playerYCoord=MathHelper.floor_double(entity.posY);
|
int playerYCoord=MathHelper.floor_double(entity.posY);
|
||||||
int playerZCoord=MathHelper.floor_double(entity.posZ);
|
int playerZCoord=MathHelper.floor_double(entity.posZ);
|
||||||
|
|
||||||
if(!entity.worldObj.isBlockOpaqueCube(playerXCoord, playerYCoord-1,playerZCoord )&&dimHelper.instance.getDimData(linkData.locDimID).isDimRandomRift&&!linkData.hasGennedDoor)
|
if(!entity.worldObj.isBlockOpaqueCube(playerXCoord, playerYCoord-1,playerZCoord )&&dimHelper.instance.getDimData(linkData.locDimID).isDimRandomRift&&!linkData.hasGennedDoor)
|
||||||
{
|
{
|
||||||
for(int count=0;count<20;count++)
|
for(int count=0;count<20;count++)
|
||||||
{
|
{
|
||||||
|
if(!entity.worldObj.isAirBlock(playerXCoord, playerYCoord-2-count,playerZCoord))
|
||||||
|
{
|
||||||
|
if(Block.blocksList[entity.worldObj.getBlockId(playerXCoord, playerYCoord-2-count,playerZCoord)].blockMaterial.isLiquid())
|
||||||
|
{
|
||||||
|
entity.worldObj.setBlock(playerXCoord, playerYCoord-1, playerZCoord, properties.FabricBlockID);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(entity.worldObj.isBlockOpaqueCube(playerXCoord, playerYCoord-1-count,playerZCoord))
|
if(entity.worldObj.isBlockOpaqueCube(playerXCoord, playerYCoord-1-count,playerZCoord))
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
@@ -265,15 +274,11 @@ public class dimHelper extends DimensionManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(entity.worldObj.getBlockId(playerXCoord, playerYCoord-1,playerZCoord )==Block.lavaStill.blockID)
|
|
||||||
{
|
|
||||||
entity.worldObj.setBlock(playerXCoord, playerYCoord-1, playerZCoord, properties.FabricBlockID);
|
|
||||||
}
|
|
||||||
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(!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() &&
|
if(Block.blocksList[entity.worldObj.getBlockId(playerXCoord,playerYCoord+1,playerZCoord)].isOpaqueCube() &&
|
||||||
!mod_pocketDim.blockRift.isBlockImmune(entity.worldObj, playerXCoord+1,playerYCoord,playerZCoord))
|
!mod_pocketDim.blockRift.isBlockImmune(entity.worldObj, playerXCoord+1,playerYCoord,playerZCoord))
|
||||||
@@ -281,7 +286,7 @@ public class dimHelper extends DimensionManager
|
|||||||
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 (!entity.worldObj.isAirBlock(playerXCoord,playerYCoord,playerZCoord))
|
||||||
{
|
{
|
||||||
if(Block.blocksList[entity.worldObj.getBlockId(playerXCoord,playerYCoord,playerZCoord)].isOpaqueCube() &&
|
if(Block.blocksList[entity.worldObj.getBlockId(playerXCoord,playerYCoord,playerZCoord)].isOpaqueCube() &&
|
||||||
!mod_pocketDim.blockRift.isBlockImmune(entity.worldObj, playerXCoord,playerYCoord,playerZCoord))
|
!mod_pocketDim.blockRift.isBlockImmune(entity.worldObj, playerXCoord,playerYCoord,playerZCoord))
|
||||||
@@ -291,14 +296,6 @@ public class dimHelper extends DimensionManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//FIXME: Wtf? This code is useless. It doesn't seem to do anything! If that's the case, it should be removed. ~SenseiKiwi
|
|
||||||
else if(!dimHelper.dimList.containsKey(world.provider.dimensionId))
|
|
||||||
{
|
|
||||||
if(!(world.provider instanceof PocketProvider ||world.provider instanceof LimboProvider))
|
|
||||||
{
|
|
||||||
DimData data = new DimData(world.provider.dimensionId, false, 0, 0, world.getSpawnPoint().posX, world.getSpawnPoint().posY, world.getSpawnPoint().posZ);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -67,6 +67,6 @@ public class yCoordHelper
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
material = block.blockMaterial;
|
material = block.blockMaterial;
|
||||||
return (!material.isLiquid() && !material.isReplaceable());
|
return (material.isLiquid() || !material.isReplaceable());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user