Various
Finished implementing Personal Pockets -any pocket created from within a personal pocket retains personal status -exit doors cannot be used in any personal pockets -personal status is saved with dimData fixed a bug that let trapdoors get around locks fixed FoR not rendering properly -inventory and world
This commit is contained in:
parent
1410d4b251
commit
0f3d40ba60
5 changed files with 96 additions and 28 deletions
|
@ -18,8 +18,10 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
|||
import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action;
|
||||
import net.minecraftforge.event.terraingen.InitMapGenEvent;
|
||||
import net.minecraftforge.event.world.WorldEvent;
|
||||
import StevenDimDoors.mod_pocketDim.blocks.TransTrapdoor;
|
||||
import StevenDimDoors.mod_pocketDim.config.DDProperties;
|
||||
import StevenDimDoors.mod_pocketDim.core.DDTeleporter;
|
||||
import StevenDimDoors.mod_pocketDim.core.DimensionType;
|
||||
import StevenDimDoors.mod_pocketDim.core.NewDimData;
|
||||
import StevenDimDoors.mod_pocketDim.core.PocketManager;
|
||||
import StevenDimDoors.mod_pocketDim.items.ItemWarpDoor;
|
||||
|
@ -96,15 +98,12 @@ public class EventHookContainer
|
|||
if(stack.getItem() instanceof ItemWarpDoor)
|
||||
{
|
||||
NewDimData data = PocketManager.getDimensionData(world);
|
||||
while(data.depth()>0)
|
||||
|
||||
if(data.getDimensionType() == DimensionType.PERSONAL)
|
||||
{
|
||||
if(PocketManager.getPersonalPocketMapping().containsValue(data))
|
||||
{
|
||||
mod_pocketDim.sendChat(event.entityPlayer,("Something prevents the Warp Door from tunneling out here"));
|
||||
event.setCanceled(true);
|
||||
return;
|
||||
}
|
||||
data = data.parent();
|
||||
mod_pocketDim.sendChat(event.entityPlayer,("Something prevents the Warp Door from tunneling out here"));
|
||||
event.setCanceled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (mod_pocketDim.itemDimensionalDoor.tryToPlaceDoor(stack, event.entityPlayer, world,
|
||||
|
|
|
@ -50,7 +50,7 @@ public class TransTrapdoor extends BlockTrapDoor implements IDimDoor, ITileEntit
|
|||
|
||||
public boolean checkCanOpen(World world, int x, int y, int z, EntityPlayer player)
|
||||
{
|
||||
DimLink link = PocketManager.getLink( x, y,z, world);
|
||||
DimLink link = PocketManager.getLink( x, y, z, world);
|
||||
if(link==null||player==null)
|
||||
{
|
||||
return link==null;
|
||||
|
@ -78,7 +78,7 @@ public class TransTrapdoor extends BlockTrapDoor implements IDimDoor, ITileEntit
|
|||
|
||||
public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
|
||||
{
|
||||
if(this.checkCanOpen(par1World, par3, par3, par4, par5EntityPlayer))
|
||||
if(this.checkCanOpen(par1World, par2, par3, par4, par5EntityPlayer))
|
||||
{
|
||||
return super.onBlockActivated(par1World, par2, par3, par4, par5EntityPlayer, par6, par7, par8, par9);
|
||||
}
|
||||
|
@ -97,13 +97,13 @@ public class TransTrapdoor extends BlockTrapDoor implements IDimDoor, ITileEntit
|
|||
{
|
||||
if (!world.isRemote && isTrapdoorOpen(world.getBlockMetadata(x, y, z)))
|
||||
{
|
||||
this.onPoweredBlockChange(world, x, y, z, false);
|
||||
|
||||
DimLink link = PocketManager.getLink(x, y, z, world);
|
||||
if (link != null)
|
||||
{
|
||||
DDTeleporter.traverseDimDoor(world, link, entity,this);
|
||||
}
|
||||
super.onPoweredBlockChange(world, x, y, z, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -429,7 +429,14 @@ public class PocketManager
|
|||
return registerDimension(world.provider.dimensionId, null, DimensionType.ROOT);
|
||||
}
|
||||
|
||||
public static NewDimData registerPersonalPocket(NewDimData parent, String playerName)
|
||||
/**
|
||||
* method to register a new pocket with DD and with forge.
|
||||
* @param parent
|
||||
* @param type
|
||||
* @param playername
|
||||
* @return
|
||||
*/
|
||||
public static NewDimData registerPocket(NewDimData parent, DimensionType type, String playername)
|
||||
{
|
||||
if (parent == null)
|
||||
{
|
||||
|
@ -438,23 +445,38 @@ public class PocketManager
|
|||
|
||||
DDProperties properties = DDProperties.instance();
|
||||
int dimensionID = DimensionManager.getNextFreeDimId();
|
||||
DimensionManager.registerDimension(dimensionID, properties.PersonalPocketProviderID);
|
||||
NewDimData data = registerDimension(dimensionID, (InnerDimData) parent, DimensionType.PERSONAL);
|
||||
personalPocketsMapping.put(playerName, data);
|
||||
return data;
|
||||
|
||||
//register a personal pocket
|
||||
if(type == DimensionType.PERSONAL)
|
||||
{
|
||||
if(playername == null)
|
||||
{
|
||||
throw new IllegalArgumentException("A personal pocket must be attached to a playername");
|
||||
}
|
||||
DimensionManager.registerDimension(dimensionID, properties.PersonalPocketProviderID);
|
||||
NewDimData data = registerDimension(dimensionID, (InnerDimData) parent, type);
|
||||
personalPocketsMapping.put(playername, data);
|
||||
return data;
|
||||
}
|
||||
else
|
||||
{ //register a pocket as personal if its parents are personal, but without a mapping.
|
||||
if(parent.type == DimensionType.PERSONAL)
|
||||
{
|
||||
DimensionManager.registerDimension(dimensionID, properties.PersonalPocketProviderID);
|
||||
NewDimData data = registerDimension(dimensionID, (InnerDimData) parent, DimensionType.PERSONAL);
|
||||
return data;
|
||||
}
|
||||
|
||||
//register a standard pocket
|
||||
DimensionManager.registerDimension(dimensionID, properties.PocketProviderID);
|
||||
return registerDimension(dimensionID, (InnerDimData) parent, type);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static NewDimData registerPocket(NewDimData parent, DimensionType type)
|
||||
{
|
||||
if (parent == null)
|
||||
{
|
||||
throw new IllegalArgumentException("parent cannot be null. A pocket dimension must always have a parent dimension.");
|
||||
}
|
||||
|
||||
DDProperties properties = DDProperties.instance();
|
||||
int dimensionID = DimensionManager.getNextFreeDimId();
|
||||
DimensionManager.registerDimension(dimensionID, properties.PocketProviderID);
|
||||
return registerDimension(dimensionID, (InnerDimData) parent, type);
|
||||
return registerPocket(parent, type, null);
|
||||
}
|
||||
/**
|
||||
* Registers a dimension with DD but NOT with forge.
|
||||
|
|
|
@ -337,7 +337,7 @@ public class PocketBuilder
|
|||
{
|
||||
//Register a new dimension
|
||||
NewDimData parent = PocketManager.getDimensionData(link.source().getDimension());
|
||||
NewDimData dimension = PocketManager.registerPersonalPocket(parent, player.getEntityName());
|
||||
NewDimData dimension = PocketManager.registerPocket(parent, DimensionType.PERSONAL, player.getEntityName());
|
||||
|
||||
|
||||
//Load a world
|
||||
|
|
|
@ -15,15 +15,62 @@ public class PrivatePocketRender implements ISimpleBlockRenderingHandler
|
|||
|
||||
public PrivatePocketRender(int renderID)
|
||||
{
|
||||
super();
|
||||
PrivatePocketRender.renderID = renderID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer)
|
||||
{
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
|
||||
float f2;
|
||||
float f3;
|
||||
int k;
|
||||
block.setBlockBoundsForItemRender();
|
||||
renderer.setRenderBoundsFromBlock(block);
|
||||
GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, -1.0F, 0.0F);
|
||||
renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata));
|
||||
tessellator.draw();
|
||||
|
||||
}
|
||||
if (renderer.useInventoryTint)
|
||||
{
|
||||
k = block.getRenderColor(metadata);
|
||||
f2 = (float)(k >> 16 & 255) / 255.0F;
|
||||
f3 = (float)(k >> 8 & 255) / 255.0F;
|
||||
float f7 = (float)(k & 255) / 255.0F;
|
||||
//GL11.glColor4f(f2 * par3, f3 * par3, f7 * par3, 1.0F);
|
||||
}
|
||||
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 1.0F, 0.0F);
|
||||
renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata));
|
||||
tessellator.draw();
|
||||
|
||||
if (renderer.useInventoryTint)
|
||||
{
|
||||
// GL11.glColor4f(par3, par3, par3, 1.0F);
|
||||
}
|
||||
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 0.0F, -1.0F);
|
||||
renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 0.0F, 1.0F);
|
||||
renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(-1.0F, 0.0F, 0.0F);
|
||||
renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(1.0F, 0.0F, 0.0F);
|
||||
renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata));
|
||||
tessellator.draw();
|
||||
GL11.glTranslatef(0.5F, 0.5F, 0.5F); }
|
||||
|
||||
@Override
|
||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer)
|
||||
|
|
Loading…
Reference in a new issue