diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java index 7a2ed8bf..61d388d7 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java @@ -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, diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java index a8f774b9..52a0e9ed 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java @@ -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); } } diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java b/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java index 4cbca5f5..b609b70a 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java @@ -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. diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketBuilder.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketBuilder.java index 13bda158..5292c1f2 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketBuilder.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketBuilder.java @@ -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 diff --git a/src/main/java/StevenDimDoors/mod_pocketDimClient/PrivatePocketRender.java b/src/main/java/StevenDimDoors/mod_pocketDimClient/PrivatePocketRender.java index dde95061..08458ea7 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDimClient/PrivatePocketRender.java +++ b/src/main/java/StevenDimDoors/mod_pocketDimClient/PrivatePocketRender.java @@ -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)