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.entity.player.PlayerInteractEvent.Action;
|
||||||
import net.minecraftforge.event.terraingen.InitMapGenEvent;
|
import net.minecraftforge.event.terraingen.InitMapGenEvent;
|
||||||
import net.minecraftforge.event.world.WorldEvent;
|
import net.minecraftforge.event.world.WorldEvent;
|
||||||
|
import StevenDimDoors.mod_pocketDim.blocks.TransTrapdoor;
|
||||||
import StevenDimDoors.mod_pocketDim.config.DDProperties;
|
import StevenDimDoors.mod_pocketDim.config.DDProperties;
|
||||||
import StevenDimDoors.mod_pocketDim.core.DDTeleporter;
|
import StevenDimDoors.mod_pocketDim.core.DDTeleporter;
|
||||||
|
import StevenDimDoors.mod_pocketDim.core.DimensionType;
|
||||||
import StevenDimDoors.mod_pocketDim.core.NewDimData;
|
import StevenDimDoors.mod_pocketDim.core.NewDimData;
|
||||||
import StevenDimDoors.mod_pocketDim.core.PocketManager;
|
import StevenDimDoors.mod_pocketDim.core.PocketManager;
|
||||||
import StevenDimDoors.mod_pocketDim.items.ItemWarpDoor;
|
import StevenDimDoors.mod_pocketDim.items.ItemWarpDoor;
|
||||||
|
@ -96,16 +98,13 @@ public class EventHookContainer
|
||||||
if(stack.getItem() instanceof ItemWarpDoor)
|
if(stack.getItem() instanceof ItemWarpDoor)
|
||||||
{
|
{
|
||||||
NewDimData data = PocketManager.getDimensionData(world);
|
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"));
|
mod_pocketDim.sendChat(event.entityPlayer,("Something prevents the Warp Door from tunneling out here"));
|
||||||
event.setCanceled(true);
|
event.setCanceled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
data = data.parent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (mod_pocketDim.itemDimensionalDoor.tryToPlaceDoor(stack, event.entityPlayer, world,
|
if (mod_pocketDim.itemDimensionalDoor.tryToPlaceDoor(stack, event.entityPlayer, world,
|
||||||
event.x, event.y, event.z, event.face))
|
event.x, event.y, event.z, event.face))
|
||||||
|
|
|
@ -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)
|
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);
|
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)))
|
if (!world.isRemote && isTrapdoorOpen(world.getBlockMetadata(x, y, z)))
|
||||||
{
|
{
|
||||||
this.onPoweredBlockChange(world, x, y, z, false);
|
|
||||||
|
|
||||||
DimLink link = PocketManager.getLink(x, y, z, world);
|
DimLink link = PocketManager.getLink(x, y, z, world);
|
||||||
if (link != null)
|
if (link != null)
|
||||||
{
|
{
|
||||||
DDTeleporter.traverseDimDoor(world, link, entity,this);
|
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);
|
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)
|
if (parent == null)
|
||||||
{
|
{
|
||||||
|
@ -438,23 +445,38 @@ public class PocketManager
|
||||||
|
|
||||||
DDProperties properties = DDProperties.instance();
|
DDProperties properties = DDProperties.instance();
|
||||||
int dimensionID = DimensionManager.getNextFreeDimId();
|
int dimensionID = DimensionManager.getNextFreeDimId();
|
||||||
|
|
||||||
|
//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);
|
DimensionManager.registerDimension(dimensionID, properties.PersonalPocketProviderID);
|
||||||
NewDimData data = registerDimension(dimensionID, (InnerDimData) parent, DimensionType.PERSONAL);
|
NewDimData data = registerDimension(dimensionID, (InnerDimData) parent, DimensionType.PERSONAL);
|
||||||
personalPocketsMapping.put(playerName, data);
|
|
||||||
return data;
|
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)
|
public static NewDimData registerPocket(NewDimData parent, DimensionType type)
|
||||||
{
|
{
|
||||||
if (parent == null)
|
return registerPocket(parent, type, 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);
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Registers a dimension with DD but NOT with forge.
|
* Registers a dimension with DD but NOT with forge.
|
||||||
|
|
|
@ -337,7 +337,7 @@ public class PocketBuilder
|
||||||
{
|
{
|
||||||
//Register a new dimension
|
//Register a new dimension
|
||||||
NewDimData parent = PocketManager.getDimensionData(link.source().getDimension());
|
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
|
//Load a world
|
||||||
|
|
|
@ -15,16 +15,63 @@ public class PrivatePocketRender implements ISimpleBlockRenderingHandler
|
||||||
|
|
||||||
public PrivatePocketRender(int renderID)
|
public PrivatePocketRender(int renderID)
|
||||||
{
|
{
|
||||||
super();
|
|
||||||
PrivatePocketRender.renderID = renderID;
|
PrivatePocketRender.renderID = renderID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer)
|
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
|
@Override
|
||||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer)
|
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue