From 703ec03d294d5c07fb5ea422f32ec2d8c8161917 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Sat, 7 Sep 2013 21:25:38 -0400 Subject: [PATCH 01/13] Stopped Cluster/Gateway Generation in The End Added a condition preventing rift clusters and gateways from generating in The End. It's not really useful to do that right now and could actually cause some annoying side-effects. --- StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java b/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java index f7379d3..43efc21 100644 --- a/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java +++ b/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java @@ -30,6 +30,7 @@ public class GatewayGenerator implements IWorldGenerator private static final int NETHER_CHANCE_CORRECTION = 4; private static final int OVERWORLD_DIMENSION_ID = 0; private static final int NETHER_DIMENSION_ID = -1; + private static final int END_DIMENSION_ID = 1; private final DDProperties properties; @@ -43,8 +44,9 @@ public class GatewayGenerator implements IWorldGenerator { //Don't generate rifts or gateways if the rift generation flag is disabled, //the current world is a pocket dimension, or the world is remote. - if ((!properties.WorldRiftGenerationEnabled && !(world.provider instanceof LimboProvider)) || - world.provider instanceof PocketProvider || world.isRemote) + //Also don't generate anything in The End. + if (world.isRemote || (!properties.WorldRiftGenerationEnabled && !(world.provider instanceof LimboProvider)) || + (world.provider instanceof PocketProvider) || (world.provider.dimensionId == END_DIMENSION_ID)) { return; } -- 2.39.5 From b5d4df8f6a7f89b0cace96413312d49d3637ac9d Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Sat, 7 Sep 2013 21:35:15 -0400 Subject: [PATCH 02/13] Updated LimboDecay Updated LimboDecay to not affect certain blocks from DD. This matters in case we decide to start placing gateways in Limbo again. --- .../mod_pocketDim/ticking/LimboDecay.java | 37 +++++++++++++++---- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/StevenDimDoors/mod_pocketDim/ticking/LimboDecay.java b/StevenDimDoors/mod_pocketDim/ticking/LimboDecay.java index 999c813..31fc1fe 100644 --- a/StevenDimDoors/mod_pocketDim/ticking/LimboDecay.java +++ b/StevenDimDoors/mod_pocketDim/ticking/LimboDecay.java @@ -24,16 +24,27 @@ public class LimboDecay implements IRegularTickReceiver { //Provides a reversed list of the block IDs that blocks cycle through during decay. private final int[] decaySequence; - private Random random; - private DDProperties properties = null; + private final Random random; + private final DDProperties properties; + private final int[] blocksImmuneToDecay; public LimboDecay(IRegularTickSender tickSender, DDProperties properties) { decaySequence = new int[] { - properties.LimboBlockID, - Block.gravel.blockID, - Block.cobblestone.blockID, - Block.stone.blockID + properties.LimboBlockID, + Block.gravel.blockID, + Block.cobblestone.blockID, + Block.stone.blockID + }; + + blocksImmuneToDecay = new int[] { + properties.LimboBlockID, + properties.PermaFabricBlockID, + properties.TransientDoorID, + properties.DimensionalDoorID, + properties.WarpDoorID, + properties.RiftBlockID, + properties.UnstableDoorID }; this.properties = properties; @@ -151,12 +162,22 @@ public class LimboDecay implements IRegularTickReceiver { } /** - * Checks if a block can decay. We will not decay air, Unraveled Fabric, Eternal Fabric, or containers. + * Checks if a block can decay. We will not decay air, certain DD blocks, or containers. */ private boolean canDecayBlock(int blockID) { - if (blockID == 0 || blockID == properties.LimboBlockID || blockID == properties.PermaFabricBlockID) + if (blockID == 0) + { return false; + } + + for (int k = 0; k < blocksImmuneToDecay.length; k++) + { + if (blockID == blocksImmuneToDecay[k]) + { + return false; + } + } Block block = Block.blocksList[blockID]; return (block == null || !(block instanceof BlockContainer)); -- 2.39.5 From 7280b54c470e1fea0519758499991582880fd215 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Sat, 7 Sep 2013 22:16:47 -0400 Subject: [PATCH 03/13] Updated BlockRotator Updated BlockRotator to check if a block is an instance of DoorBlock instead of checking for BaseDimDoor - since we changed BaseDimDoor to derive from DoorBlock, the latter check is no longer needed. --- StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java | 5 ++--- StevenDimDoors/mod_pocketDim/schematic/BlockRotator.java | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java b/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java index c017fff..a0507fd 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java @@ -32,10 +32,8 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn { protected final DDProperties properties; private Icon blockIconBottom; - protected boolean isBlockContainer=true; + protected boolean isBlockContainer = true; private boolean isTileProvider = true; - - public BaseDimDoor(int blockID, Material material, DDProperties properties) { @@ -185,6 +183,7 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn tile.openOrClosed = this.isDoorOpen( par1World, par2, par3, par4); tile.orientation = this.getFullMetadata(par1World, par2, par3, par4) & 7; } + private void setDoorRotation(int par1) { float var2 = 0.1875F; diff --git a/StevenDimDoors/mod_pocketDim/schematic/BlockRotator.java b/StevenDimDoors/mod_pocketDim/schematic/BlockRotator.java index f32c0dc..4248fab 100644 --- a/StevenDimDoors/mod_pocketDim/schematic/BlockRotator.java +++ b/StevenDimDoors/mod_pocketDim/schematic/BlockRotator.java @@ -7,7 +7,6 @@ import net.minecraft.block.BlockRedstoneRepeater; import net.minecraft.block.BlockStairs; import StevenDimDoors.mod_pocketDim.Point3D; import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.blocks.BaseDimDoor; public class BlockRotator { @@ -379,7 +378,7 @@ public class BlockRotator break; } } - else if(Block.blocksList[blockID] instanceof BlockRedstoneRepeater || Block.blocksList[blockID] instanceof BlockDoor || Block.blocksList[blockID] instanceof BaseDimDoor || blockID== Block.tripWireSource.blockID || Block.blocksList[blockID] instanceof BlockComparator) + else if (Block.blocksList[blockID] instanceof BlockRedstoneRepeater || Block.blocksList[blockID] instanceof BlockDoor || blockID== Block.tripWireSource.blockID || Block.blocksList[blockID] instanceof BlockComparator) { switch (metadata) { -- 2.39.5 From f83841a142ed161ee4bdbe0983ce4926d9a6b7d0 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Sat, 7 Sep 2013 23:27:07 -0400 Subject: [PATCH 04/13] Fixed Transdimensional Trapdoor Got the Transdimensional Trapdoor working again. Renamed the file to TransTrapdoor and trimmed off unnecessary code - BlockTrapDoor implements a lot of the necessary logic. Implemented IDimDoor for clarity. --- StevenDimDoors/mod_pocketDim/DDLoot.java | 2 +- .../mod_pocketDim/blocks/BaseDimDoor.java | 6 -- .../mod_pocketDim/blocks/TransTrapdoor.java | 90 +++++++++++++++++++ .../mod_pocketDim/blocks/dimHatch.java | 69 -------------- .../mod_pocketDim/mod_pocketDim.java | 17 ++-- 5 files changed, 99 insertions(+), 85 deletions(-) create mode 100644 StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java delete mode 100644 StevenDimDoors/mod_pocketDim/blocks/dimHatch.java diff --git a/StevenDimDoors/mod_pocketDim/DDLoot.java b/StevenDimDoors/mod_pocketDim/DDLoot.java index a6be018..37da541 100644 --- a/StevenDimDoors/mod_pocketDim/DDLoot.java +++ b/StevenDimDoors/mod_pocketDim/DDLoot.java @@ -58,7 +58,7 @@ public class DDLoot { addContent(properties.DimensionalDoorLootEnabled, items, mod_pocketDim.itemDimDoor.itemID, UNCOMMON_LOOT_WEIGHT); addContent(properties.WarpDoorLootEnabled, items, mod_pocketDim.itemExitDoor.itemID, UNCOMMON_LOOT_WEIGHT); - addContent(properties.TransTrapdoorLootEnabled, items, mod_pocketDim.dimHatch.blockID, UNCOMMON_LOOT_WEIGHT); + addContent(properties.TransTrapdoorLootEnabled, items, mod_pocketDim.transTrapdoor.blockID, UNCOMMON_LOOT_WEIGHT); addContent(properties.RiftSignatureLootEnabled, items, mod_pocketDim.itemLinkSignature.itemID, UNCOMMON_LOOT_WEIGHT); addContent(properties.StableFabricLootEnabled, items, mod_pocketDim.itemStableFabric.itemID, UNCOMMON_LOOT_WEIGHT); addContent(properties.RiftRemoverLootEnabled, items, mod_pocketDim.itemRiftRemover.itemID, UNCOMMON_LOOT_WEIGHT); diff --git a/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java b/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java index a0507fd..851aaa9 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java @@ -3,7 +3,6 @@ package StevenDimDoors.mod_pocketDim.blocks; import java.util.Random; import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockDoor; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; @@ -11,11 +10,8 @@ import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Icon; import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import StevenDimDoors.mod_pocketDim.DDProperties; @@ -32,8 +28,6 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn { protected final DDProperties properties; private Icon blockIconBottom; - protected boolean isBlockContainer = true; - private boolean isTileProvider = true; public BaseDimDoor(int blockID, Material material, DDProperties properties) { diff --git a/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java b/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java new file mode 100644 index 0000000..c5bb7bc --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java @@ -0,0 +1,90 @@ +package StevenDimDoors.mod_pocketDim.blocks; + +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockTrapDoor; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.DDTeleporter; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.world.PocketProvider; + +public class TransTrapdoor extends BlockTrapDoor implements IDimDoor +{ + + public TransTrapdoor(int blockID, Material material) + { + super(blockID, material); + this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); + } + + @Override + public void registerIcons(IconRegister par1IconRegister) + { + this.blockIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()); + } + + //Teleports the player to the exit link of that dimension, assuming it is a pocket + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) + { + enterDimDoor(world, x, y, z, entity); + } + + @Override + public void enterDimDoor(World world, int x, int y, int z, Entity entity) + { + 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); + } + } + } + + @Override + public void onBlockAdded(World world, int x, int y, int z) + { + this.placeDimDoor(world, x, y, z); + //world.setBlockTileEntity(x, y, z, this.createNewTileEntity(world)); + //this.updateAttachedTile(world, x, y, z); + } + + + @Override + public void placeDimDoor(World world, int x, int y, int z) + { + if (!world.isRemote) + { + NewDimData dimension = PocketManager.getDimensionData(world); + DimLink link = dimension.getLink(x, y, z); + if (link == null && dimension.isPocketDimension()) + { + dimension.createLink(x, y, z, LinkTypes.UNSAFE_EXIT); + } + } + } + + @Override + public int idDropped(int metadata, Random random, int fortuneLevel) + { + return getDrops(); + } + + @Override + public int getDrops() + { + return Block.trapdoor.blockID; + } +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/blocks/dimHatch.java b/StevenDimDoors/mod_pocketDim/blocks/dimHatch.java deleted file mode 100644 index c4b528b..0000000 --- a/StevenDimDoors/mod_pocketDim/blocks/dimHatch.java +++ /dev/null @@ -1,69 +0,0 @@ -package StevenDimDoors.mod_pocketDim.blocks; - -import net.minecraft.block.BlockTrapDoor; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.world.PocketProvider; - -public class dimHatch extends BlockTrapDoor -{ - - public dimHatch(int par1,int par2, Material par2Material) - { - super(par1, Material.iron); - this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); - // this.setTextureFile("/PocketBlockTextures.png"); - // this.blockIndexInTexture = 16; - } - - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()); - - } - - public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) - { - - { - int var10 = par1World.getBlockMetadata(par2, par3, par4); - par1World.setBlockMetadataWithNotify(par2, par3, par4, var10 ^ 4,2); - par1World.playAuxSFXAtEntity(par5EntityPlayer, 1003, par2, par3, par4, 0); - return true; - } - } - - //Teleports the player to the exit link of that dimension, assuming it is a pocket - public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity) - { - int num = par1World.getBlockMetadata(par2, par3, par4); - - if (!par1World.isRemote&&(num>3&&num<8||num>11)&&par1World.provider instanceof PocketProvider) - { - this.onPoweredBlockChange(par1World, par2, par3, par4, false); - - /* FIXME: No point in fixing the following code when it's going to be rewritten later anyway. ~SenseiKiwi - - NewDimData newDimData = (NewDimData) dimHelper.PocketManager.dimList.get(par1World.provider.dimensionId); - ILinkData exitLink=newDimData.exitDimLink; - exitLink.locDimID=par1World.provider.dimensionId; - PocketManager.instance.traverseDimDoor(par1World, exitLink, par5Entity);*/ - } - } - - public void onPoweredBlockChange(World par1World, int par2, int par3, int par4, boolean par5) - { - int var6 = par1World.getBlockMetadata(par2, par3, par4); - boolean var7 = (var6 & 4) > 0; - - if (var7 != par5) - { - par1World.setBlockMetadataWithNotify(par2, par3, par4, var6 ^ 4,2); - par1World.playAuxSFXAtEntity((EntityPlayer)null, 1003, par2, par3, par4, 0); - } - } -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/mod_pocketDim.java b/StevenDimDoors/mod_pocketDim/mod_pocketDim.java index 0dd6474..fe576f2 100644 --- a/StevenDimDoors/mod_pocketDim/mod_pocketDim.java +++ b/StevenDimDoors/mod_pocketDim/mod_pocketDim.java @@ -20,7 +20,7 @@ import StevenDimDoors.mod_pocketDim.blocks.DimensionalDoor; import StevenDimDoors.mod_pocketDim.blocks.TransientDoor; import StevenDimDoors.mod_pocketDim.blocks.UnstableDoor; import StevenDimDoors.mod_pocketDim.blocks.WarpDoor; -import StevenDimDoors.mod_pocketDim.blocks.dimHatch; +import StevenDimDoors.mod_pocketDim.blocks.TransTrapdoor; import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; import StevenDimDoors.mod_pocketDim.items.ItemBlockDimWall; @@ -94,7 +94,7 @@ public class mod_pocketDim public static Block blockLimbo; public static DimensionalDoor dimensionalDoor; public static Block blockDimWall; - public static Block dimHatch; + public static Block transTrapdoor; public static Block blockDimWallPerm; public static BlockRift blockRift; @@ -167,9 +167,8 @@ public class mod_pocketDim blockLimbo = new BlockLimbo(properties.LimboBlockID, 15, Material.iron, properties.LimboDimensionID, decay).setHardness(.2F).setUnlocalizedName("BlockLimbo").setLightValue(.0F); unstableDoor = (new UnstableDoor(properties.UnstableDoorID, Material.iron, properties).setHardness(.2F).setUnlocalizedName("chaosDoor").setLightValue(.0F) ); dimensionalDoor = (DimensionalDoor) (new DimensionalDoor(properties.DimensionalDoorID, Material.iron, properties).setHardness(1.0F).setResistance(2000.0F) .setUnlocalizedName("dimDoor")); - dimHatch = (new dimHatch(properties.TransTrapdoorID, 84, Material.iron)).setHardness(1.0F) .setUnlocalizedName("dimHatch"); - // dimRail = (new DimRail(dimRailID, 88, false)).setHardness(.5F) .setUnlocalizedName("dimRail"); - + transTrapdoor = (new TransTrapdoor(properties.TransTrapdoorID, Material.wood)).setHardness(1.0F) .setUnlocalizedName("dimHatch"); + itemDimDoor = (new ItemDimensionalDoor(properties.DimensionalDoorItemID, Material.iron)).setUnlocalizedName("itemDimDoor"); itemExitDoor = (new ItemWarpDoor(properties.WarpDoorItemID, Material.wood)).setUnlocalizedName("itemDimDoorWarp"); itemLinkSignature = (new ItemRiftSignature(properties.RiftSignatureItemID)).setUnlocalizedName("itemLinkSignature"); @@ -189,7 +188,7 @@ public class mod_pocketDim GameRegistry.registerBlock(blockRift, "Rift"); GameRegistry.registerBlock(blockLimbo, "Unraveled Fabric"); GameRegistry.registerBlock(dimensionalDoor, "Dimensional Door"); - GameRegistry.registerBlock(dimHatch,"Transdimensional Trapdoor"); + GameRegistry.registerBlock(transTrapdoor,"Transdimensional Trapdoor"); GameRegistry.registerBlock(blockDimWallPerm, "Fabric of RealityPerm"); GameRegistry.registerBlock(transientDoor, "transientDoor"); @@ -207,7 +206,7 @@ public class mod_pocketDim LanguageRegistry.addName(blockDimWall , "Fabric of Reality"); LanguageRegistry.addName(blockDimWallPerm , "Eternal Fabric"); LanguageRegistry.addName(dimensionalDoor, "Dimensional Door"); - LanguageRegistry.addName(dimHatch, "Transdimensional Trapdoor"); + LanguageRegistry.addName(transTrapdoor, "Transdimensional Trapdoor"); LanguageRegistry.addName(itemExitDoor, "Warp Door"); LanguageRegistry.addName(itemLinkSignature , "Rift Signature"); @@ -271,12 +270,12 @@ public class mod_pocketDim } if(properties.CraftingTransTrapdoorAllowed) { - GameRegistry.addRecipe(new ItemStack(dimHatch, 1), new Object[] + GameRegistry.addRecipe(new ItemStack(transTrapdoor, 1), new Object[] { " y ", " x ", " y ", 'x', Item.enderPearl, 'y', Block.trapdoor }); - GameRegistry.addRecipe(new ItemStack(dimHatch, 1), new Object[] + GameRegistry.addRecipe(new ItemStack(transTrapdoor, 1), new Object[] { " y ", " x ", " y ", 'x', mod_pocketDim.itemStableFabric, 'y', Block.trapdoor }); -- 2.39.5 From 44b39be7b78ff327ed14693c7ff15c6916fbf4b5 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Sun, 8 Sep 2013 15:18:48 -0400 Subject: [PATCH 05/13] Modified RiftFX Classes Modifed the RiftFX classes so that their particles have noClip = true. This avoids rifts spamming the collision events of other blocks, including dimensional doors, and it should improve the performance of DD a little. --- StevenDimDoors/mod_pocketDimClient/ClosingRiftFX.java | 2 +- StevenDimDoors/mod_pocketDimClient/GoggleRiftFX.java | 2 +- StevenDimDoors/mod_pocketDimClient/RiftFX.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/StevenDimDoors/mod_pocketDimClient/ClosingRiftFX.java b/StevenDimDoors/mod_pocketDimClient/ClosingRiftFX.java index d252ba8..f1e409c 100644 --- a/StevenDimDoors/mod_pocketDimClient/ClosingRiftFX.java +++ b/StevenDimDoors/mod_pocketDimClient/ClosingRiftFX.java @@ -31,7 +31,7 @@ public class ClosingRiftFX extends EntityFX this.field_92047_az = par14EffectRenderer; this.particleScale *= .55F; this.particleMaxAge = 30 + this.rand.nextInt(16); - this.noClip = false; + this.noClip = true; } public void func_92045_e(boolean par1) diff --git a/StevenDimDoors/mod_pocketDimClient/GoggleRiftFX.java b/StevenDimDoors/mod_pocketDimClient/GoggleRiftFX.java index 2f8999f..339e002 100644 --- a/StevenDimDoors/mod_pocketDimClient/GoggleRiftFX.java +++ b/StevenDimDoors/mod_pocketDimClient/GoggleRiftFX.java @@ -31,7 +31,7 @@ public class GoggleRiftFX extends EntityFireworkSparkFX this.field_92047_az = par14EffectRenderer; this.particleScale *= .55F; this.particleMaxAge = 30 + this.rand.nextInt(16); - this.noClip = false; + this.noClip = true; } public void renderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) { diff --git a/StevenDimDoors/mod_pocketDimClient/RiftFX.java b/StevenDimDoors/mod_pocketDimClient/RiftFX.java index 69310f0..06a9c31 100644 --- a/StevenDimDoors/mod_pocketDimClient/RiftFX.java +++ b/StevenDimDoors/mod_pocketDimClient/RiftFX.java @@ -31,7 +31,7 @@ public class RiftFX extends EntityFX this.field_92047_az = par14EffectRenderer; this.particleScale *= 0.75F; this.particleMaxAge = 40 + this.rand.nextInt(26); - this.noClip = false; + this.noClip = true; } public void func_92045_e(boolean par1) -- 2.39.5 From 672c19b032a3231435d74fd0cfc476e461574cd2 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Sun, 8 Sep 2013 15:22:03 -0400 Subject: [PATCH 06/13] Improved Dim Door Collision Detection Improved our code for checking whether an entity in contact with a door should be teleported. Now the check works better, works for Minecarts, and is more readable. It also ignores particle effect entities. --- .../mod_pocketDim/blocks/BaseDimDoor.java | 57 +++++++++++++++---- .../mod_pocketDim/blocks/TransientDoor.java | 49 +++++++++++----- 2 files changed, 80 insertions(+), 26 deletions(-) diff --git a/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java b/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java index 851aaa9..a923bc7 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java @@ -6,8 +6,10 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockDoor; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; +import net.minecraft.client.particle.EntityFX; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; @@ -361,20 +363,39 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn @Override public void enterDimDoor(World world, int x, int y, int z, Entity entity) { - int var12 = (int) (MathHelper.floor_double((double) ((entity.rotationYaw + 90) * 4.0F / 360.0F) + 0.5D) & 3); - - int orientation = world.getBlockMetadata(x, y - 1, z); - if (!world.isRemote && (orientation >= 4 && orientation <= 7) && (orientation - 4) == var12 && - world.getBlockId(x, y - 1, z) == this.blockID) + // We need to ignore particle entities + if (world.isRemote || entity instanceof EntityFX) { - this.onPoweredBlockChange(world, x, y, z, false); - - DimLink link = PocketManager.getLink(x, y, z, world.provider.dimensionId); - if (link != null) + return; + } + + // Check that this is the top block of the door + if (world.getBlockId(x, y - 1, z) == this.blockID) + { + int metadata = world.getBlockMetadata(x, y - 1, z); + boolean canUse = isDoorOpen(metadata); + if (canUse && entity instanceof EntityLiving) { - DDTeleporter.traverseDimDoor(world, link, entity); + // Don't check for non-living entities since it might not work right + canUse = isEntityFacingDoor(metadata, (EntityLiving) entity); } - } + if (canUse) + { + // Teleport the entity through the link, if it exists + DimLink link = PocketManager.getLink(x, y, z, world.provider.dimensionId); + if (link != null) + { + DDTeleporter.traverseDimDoor(world, link, entity); + } + // Close the door only after the entity goes through + // so players don't have it slam in their faces. + this.onPoweredBlockChange(world, x, y, z, false); + } + } + else if (world.getBlockId(x, y + 1, z) == this.blockID) + { + enterDimDoor(world, x, y + 1, z, entity); + } } @Override @@ -382,4 +403,18 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn { return this.blockID; } + + protected static boolean isDoorOpen(int metadata) + { + return (metadata & 4) != 0; + } + + protected static boolean isEntityFacingDoor(int metadata, EntityLiving entity) + { + // Although any entity has the proper fields for this check, + // we should only apply it to living entities since things + // like Minecarts might come in backwards. + int direction = (int) (MathHelper.floor_double((double) ((entity.rotationYaw + 90) * 4.0F / 360.0F) + 0.5D) & 3); + return ((metadata & 3) == direction); + } } \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java b/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java index e0d7c1d..3bc59db 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java @@ -1,9 +1,10 @@ package StevenDimDoors.mod_pocketDim.blocks; import net.minecraft.block.material.Material; +import net.minecraft.client.particle.EntityFX; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.MathHelper; import net.minecraft.world.World; import StevenDimDoors.mod_pocketDim.DDProperties; import StevenDimDoors.mod_pocketDim.core.DDTeleporter; @@ -18,25 +19,43 @@ public class TransientDoor extends BaseDimDoor { super(blockID, material, properties); } - + @Override public void enterDimDoor(World world, int x, int y, int z, Entity entity) { - //TODO: Would it kill us to use REASONABLE variable names? <_< ~SenseiKiwi - int var12 = (int) (MathHelper.floor_double((double) ((entity.rotationYaw + 90) * 4.0F / 360.0F) + 0.5D) & 3); - - int orientation = world.getBlockMetadata(x, y - 1, z); - if (!world.isRemote && orientation == var12 && world.getBlockId(x, y - 1, z) == this.blockID) + // We need to ignore particle entities + if (world.isRemote || entity instanceof EntityFX) { - DimLink link = PocketManager.getLink(x, y, z, world.provider.dimensionId); - if (link != null) + return; + } + + // Check that this is the top block of the door + if (world.getBlockId(x, y - 1, z) == this.blockID) + { + boolean canUse = true; + int metadata = world.getBlockMetadata(x, y - 1, z); + if (canUse && entity instanceof EntityLiving) { - DDTeleporter.traverseDimDoor(world, link, entity); - //Turn the transient door into a rift AFTER teleporting the entity. - //The door's orientation may be needed for generating a room at the link's destination. - world.setBlock(x, y, z, properties.RiftBlockID); - world.setBlockToAir(x, y - 1, z); + // Don't check for non-living entities since it might not work right + canUse = BaseDimDoor.isEntityFacingDoor(metadata, (EntityLiving) entity); } + if (canUse) + { + // Teleport the entity through the link, if it exists + DimLink link = PocketManager.getLink(x, y, z, world.provider.dimensionId); + if (link != null) + { + DDTeleporter.traverseDimDoor(world, link, entity); + // Turn the door into a rift AFTER teleporting the player. + // The door's orientation may be necessary for the teleport. + world.setBlock(x, y, z, properties.RiftBlockID); + world.setBlockToAir(x, y - 1, z); + } + } + } + else if (world.getBlockId(x, y + 1, z) == this.blockID) + { + enterDimDoor(world, x, y + 1, z, entity); } } @@ -53,7 +72,7 @@ public class TransientDoor extends BaseDimDoor } } } - + @Override public int getDrops() { -- 2.39.5 From 72213de4377a3618fe827879b3c2e951c2ab2363 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Sun, 8 Sep 2013 15:22:19 -0400 Subject: [PATCH 07/13] Minor Change Removed unused import in TransTrapdoor --- StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java | 1 - 1 file changed, 1 deletion(-) diff --git a/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java b/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java index c5bb7bc..ee7e2c4 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java @@ -14,7 +14,6 @@ import StevenDimDoors.mod_pocketDim.core.DimLink; import StevenDimDoors.mod_pocketDim.core.LinkTypes; import StevenDimDoors.mod_pocketDim.core.NewDimData; import StevenDimDoors.mod_pocketDim.core.PocketManager; -import StevenDimDoors.mod_pocketDim.world.PocketProvider; public class TransTrapdoor extends BlockTrapDoor implements IDimDoor { -- 2.39.5 From 37b05106767d762db0588a9442b99f089ba03716 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Sun, 8 Sep 2013 15:23:14 -0400 Subject: [PATCH 08/13] Partially Improved Unsafe Exits Partially completed the code for unsafe exits (used for trapdoors) so that they drop players into air pockets. It's not complete yet, but I want to merge in other changes before continuing. --- .../mod_pocketDim/core/DDTeleporter.java | 27 +++++--- .../mod_pocketDim/helpers/yCoordHelper.java | 65 +++++++++++++++++++ 2 files changed, 82 insertions(+), 10 deletions(-) diff --git a/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java b/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java index 5f693c8..a6edec6 100644 --- a/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java +++ b/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java @@ -150,7 +150,7 @@ public class DDTeleporter { throw new IllegalStateException("The destination world should be loaded!"); } - + //Check if the block below that point is actually a door int blockID = world.getBlockId(door.getX(), door.getY() - 1, door.getZ()); if (blockID != properties.DimensionalDoorID && blockID != properties.WarpDoorID && @@ -436,9 +436,9 @@ public class DDTeleporter private static boolean generateUnsafeExit(DimLink link) { - // An unsafe exit teleports the user to exactly the same coordinates - // as the link source, except located at the dimension's root dimension. - // This is very risky, as we make no effort to clear an air pocket or + // An unsafe exit teleports the user to the first available air space + // in the pocket's root dimension. X and Z are kept roughly the same + // as the source location, but Y is set by searching down. We don't // place a platform at the destination. We also don't place a reverse // link at the destination, so it's a one-way trip. Good luck! @@ -449,13 +449,20 @@ public class DDTeleporter if (current.isPocketDimension()) { Point4D source = link.source(); - current.root().setDestination(link, source.getX(), source.getY(), source.getZ()); - return true; - } - else - { - return false; + World world = PocketManager.loadDimension(current.root().id()); + if (world == null) + { + return false; + } + + Point3D destination = yCoordHelper.findDropPoint(world, source.getX(), source.getY(), source.getZ()); + if (destination != null) + { + current.root().setDestination(link, source.getX(), source.getY(), source.getZ()); + return true; + } } + return false; } private static boolean generateSafeExit(DimLink link, DDProperties properties) diff --git a/StevenDimDoors/mod_pocketDim/helpers/yCoordHelper.java b/StevenDimDoors/mod_pocketDim/helpers/yCoordHelper.java index ec514e3..1ac8519 100644 --- a/StevenDimDoors/mod_pocketDim/helpers/yCoordHelper.java +++ b/StevenDimDoors/mod_pocketDim/helpers/yCoordHelper.java @@ -217,6 +217,71 @@ public class yCoordHelper } return target; } + + public static Point3D findDropPoint(World world, int x, int y, int z) + { + /*// Find a simple 2-block-high air gap + // Search across a 3x3 column + int localX = x < 0 ? (x % 16) + 16 : (x % 16); + int localZ = z < 0 ? (z % 16) + 16 : (z % 16); + int cornerX = x - localX; + int cornerZ = z - localZ; + localX = MathHelper.clamp_int(localX, 1, 14); + localZ = MathHelper.clamp_int(localZ, 1, 14); + + Chunk chunk = initializeChunkArea(world, x >> 4, z >> 4); + + int height = world.getActualHeight(); + int y, dx, dz, blockID; + boolean isSafe; + boolean hasBlocks; + Block block; + int layers = 0; + + // Check if a 3x3 layer of blocks is empty + // If we find a layer that contains replaceable blocks, it can + // serve as the base where we'll place the player and door. + for (y = Math.min(startY + 2, height - 1); y >= 0; y--) + { + isSafe = true; + hasBlocks = false; + for (dx = -1; dx <= 1 && isSafe; dx++) + { + for (dz = -1; dz <= 1 && isSafe; dz++) + { + blockID = chunk.getBlockID(localX + dx, y, localZ + dz); + if (blockID != 0) + { + block = Block.blocksList[blockID]; + if (!block.blockMaterial.isReplaceable()) + { + if (layers >= 3) + { + return new Point3D(localX + cornerX, y + 1, localZ + cornerZ); + } + isSafe = false; + } + hasBlocks = true; + } + } + } + if (isSafe) + { + layers++; + if (hasBlocks) + { + if (layers >= 3) + { + return new Point3D(localX + cornerX, y, localZ + cornerZ); + } + layers = 0; + } + } + } + return null;*/ + // Temporary measure to not break the build + return new Point3D(x, y - 2, z); + } public static int adjustDestinationY(int y, int worldHeight, int entranceY, int dungeonHeight) { -- 2.39.5 From 4501e9373f7249f7164480b8ccd391f623b29c07 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Sun, 8 Sep 2013 16:45:28 -0400 Subject: [PATCH 09/13] Finished Merging Changes to Trapdoor Merged together the different changes we had made to Transdimensional Trapdoors. Cleaned up the rendering and tile entity code a bit, it should be a little more understandable now. --- .../mod_pocketDim/blocks/TransTrapdoor.java | 35 ++++- .../mod_pocketDim/blocks/dimHatch.java | 128 ------------------ .../mod_pocketDim/mod_pocketDim.java | 8 +- .../tileentities/TileEntityTransTrapdoor.java | 91 +++++-------- .../mod_pocketDimClient/ClientProxy.java | 2 +- ...TrapDoor.java => RenderTransTrapdoor.java} | 81 +++++------ 6 files changed, 104 insertions(+), 241 deletions(-) delete mode 100644 StevenDimDoors/mod_pocketDim/blocks/dimHatch.java rename StevenDimDoors/mod_pocketDimClient/{RenderDimTrapDoor.java => RenderTransTrapdoor.java} (84%) diff --git a/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java b/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java index ee7e2c4..55eb613 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java @@ -4,9 +4,11 @@ import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.BlockTrapDoor; +import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.Entity; +import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import StevenDimDoors.mod_pocketDim.mod_pocketDim; import StevenDimDoors.mod_pocketDim.core.DDTeleporter; @@ -14,8 +16,9 @@ import StevenDimDoors.mod_pocketDim.core.DimLink; import StevenDimDoors.mod_pocketDim.core.LinkTypes; import StevenDimDoors.mod_pocketDim.core.NewDimData; import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityTransTrapdoor; -public class TransTrapdoor extends BlockTrapDoor implements IDimDoor +public class TransTrapdoor extends BlockTrapDoor implements IDimDoor, ITileEntityProvider { public TransTrapdoor(int blockID, Material material) @@ -56,10 +59,31 @@ public class TransTrapdoor extends BlockTrapDoor implements IDimDoor public void onBlockAdded(World world, int x, int y, int z) { this.placeDimDoor(world, x, y, z); - //world.setBlockTileEntity(x, y, z, this.createNewTileEntity(world)); - //this.updateAttachedTile(world, x, y, z); + world.setBlockTileEntity(x, y, z, this.createNewTileEntity(world)); + this.updateAttachedTile(world, x, y, z); + } + + public void updateTick(World world, int x, int y, int z, Random random) + { + TileEntityTransTrapdoor tile = (TileEntityTransTrapdoor) world.getBlockTileEntity(x, y, z); + tile.hasRift = PocketManager.getLink(x, y, z, world) != null; + } + + @Override + public TileEntity createNewTileEntity(World world) + { + return new TileEntityTransTrapdoor(); } + public void updateAttachedTile(World world, int x, int y, int z) + { + TileEntity tile = world.getBlockTileEntity(x, y, z); + if (tile instanceof TileEntityTransTrapdoor) + { + TileEntityTransTrapdoor trapdoorTile = (TileEntityTransTrapdoor) tile; + trapdoorTile.hasRift = (PocketManager.getLink(x, y, z, world) != null); + } + } @Override public void placeDimDoor(World world, int x, int y, int z) @@ -86,4 +110,9 @@ public class TransTrapdoor extends BlockTrapDoor implements IDimDoor { return Block.trapdoor.blockID; } + + public static boolean isTrapdoorOnBlock(int metadata) + { + return (metadata & 8) == 0; + } } \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/blocks/dimHatch.java b/StevenDimDoors/mod_pocketDim/blocks/dimHatch.java deleted file mode 100644 index c1f8551..0000000 --- a/StevenDimDoors/mod_pocketDim/blocks/dimHatch.java +++ /dev/null @@ -1,128 +0,0 @@ -package StevenDimDoors.mod_pocketDim.blocks; - -import java.util.Random; - -import net.minecraft.block.BlockTrapDoor; -import net.minecraft.block.ITileEntityProvider; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.core.PocketManager; -import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoor; -import StevenDimDoors.mod_pocketDim.tileentities.TileEntityTransTrapdoor; -import StevenDimDoors.mod_pocketDim.world.PocketProvider; - -public class dimHatch extends BlockTrapDoor implements IDimDoor, ITileEntityProvider -{ - - public dimHatch(int par1,int par2, Material par2Material) - { - super(par1, Material.iron); - this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); - // this.setTextureFile("/PocketBlockTextures.png"); - // this.blockIndexInTexture = 16; - } - - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()); - - } - - public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) - { - - { - int var10 = par1World.getBlockMetadata(par2, par3, par4); - par1World.setBlockMetadataWithNotify(par2, par3, par4, var10 ^ 4,2); - par1World.playAuxSFXAtEntity(par5EntityPlayer, 1003, par2, par3, par4, 0); - return true; - } - } - - //Teleports the player to the exit link of that dimension, assuming it is a pocket - public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity) - { - int num = par1World.getBlockMetadata(par2, par3, par4); - - if (!par1World.isRemote&&(num>3&&num<8||num>11)&&par1World.provider instanceof PocketProvider) - { - this.onPoweredBlockChange(par1World, par2, par3, par4, false); - - /* FIXME: No point in fixing the following code when it's going to be rewritten later anyway. ~SenseiKiwi - - NewDimData newDimData = (NewDimData) dimHelper.PocketManager.dimList.get(par1World.provider.dimensionId); - ILinkData exitLink=newDimData.exitDimLink; - exitLink.locDimID=par1World.provider.dimensionId; - PocketManager.instance.traverseDimDoor(par1World, exitLink, par5Entity);*/ - } - } - - public void onPoweredBlockChange(World par1World, int par2, int par3, int par4, boolean par5) - { - int var6 = par1World.getBlockMetadata(par2, par3, par4); - boolean var7 = (var6 & 4) > 0; - - if (var7 != par5) - { - par1World.setBlockMetadataWithNotify(par2, par3, par4, var6 ^ 4,2); - par1World.playAuxSFXAtEntity((EntityPlayer)null, 1003, par2, par3, par4, 0); - } - } - - public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) - { - TileEntityTransTrapdoor tile = (TileEntityTransTrapdoor) par1World.getBlockTileEntity(par2, par3, par4); - tile.hasRift = PocketManager.getLink(par2, par3, par4, par1World)!=null; - tile.metaData = par1World.getBlockMetadata(par2, par3, par4); - tile.isShut = this.isTrapdoorOpen(par4); - } - @Override - public TileEntity createNewTileEntity(World world) - { - - return new TileEntityTransTrapdoor(); - } - - public dimHatch updateAttachedTile(World world, int x, int y, int z) - { - TileEntity tile = world.getBlockTileEntity(x, y, z); - if (tile instanceof TileEntityTransTrapdoor) - { - TileEntityTransTrapdoor dimTile = (TileEntityTransTrapdoor) tile; - dimTile.hasRift = PocketManager.getLink(x, y, z, world)!=null; - dimTile.metaData = world.getBlockMetadata(x, y, z); - dimTile.isShut = this.isTrapdoorOpen( world.getBlockMetadata(x, y, z)); - } - return this; - } - @Override - public void enterDimDoor(World world, int x, int y, int z, Entity entity) { - // TODO Auto-generated method stub - - } - - @Override - public void placeDimDoor(World world, int x, int y, int z) { - // TODO Auto-generated method stub - - } - - @Override - public void onBlockAdded(World world, int x, int y, int z) - { - world.setBlockTileEntity(x, y, z, this.createNewTileEntity(world)); - this.updateAttachedTile(world, x, y, z); - } - @Override - public int getDrops() { - // TODO Auto-generated method stub - return 0; - } - - -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/mod_pocketDim.java b/StevenDimDoors/mod_pocketDim/mod_pocketDim.java index 8f061a0..c1335a6 100644 --- a/StevenDimDoors/mod_pocketDim/mod_pocketDim.java +++ b/StevenDimDoors/mod_pocketDim/mod_pocketDim.java @@ -17,10 +17,10 @@ import StevenDimDoors.mod_pocketDim.blocks.BlockDimWallPerm; import StevenDimDoors.mod_pocketDim.blocks.BlockLimbo; import StevenDimDoors.mod_pocketDim.blocks.BlockRift; import StevenDimDoors.mod_pocketDim.blocks.DimensionalDoor; +import StevenDimDoors.mod_pocketDim.blocks.TransTrapdoor; import StevenDimDoors.mod_pocketDim.blocks.TransientDoor; import StevenDimDoors.mod_pocketDim.blocks.UnstableDoor; import StevenDimDoors.mod_pocketDim.blocks.WarpDoor; -import StevenDimDoors.mod_pocketDim.blocks.TransTrapdoor; import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; import StevenDimDoors.mod_pocketDim.items.ItemBlockDimWall; @@ -38,8 +38,8 @@ import StevenDimDoors.mod_pocketDim.ticking.MobMonolith; import StevenDimDoors.mod_pocketDim.ticking.MonolithSpawner; import StevenDimDoors.mod_pocketDim.ticking.RiftRegenerator; import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoor; -import StevenDimDoors.mod_pocketDim.tileentities.TileEntityTransTrapdoor; import StevenDimDoors.mod_pocketDim.tileentities.TileEntityRift; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityTransTrapdoor; import StevenDimDoors.mod_pocketDim.world.BiomeGenLimbo; import StevenDimDoors.mod_pocketDim.world.BiomeGenPocket; import StevenDimDoors.mod_pocketDim.world.GatewayGenerator; @@ -95,7 +95,7 @@ public class mod_pocketDim public static Block blockLimbo; public static DimensionalDoor dimensionalDoor; public static Block blockDimWall; - public static Block transTrapdoor; + public static TransTrapdoor transTrapdoor; public static Block blockDimWallPerm; public static BlockRift blockRift; @@ -168,7 +168,7 @@ public class mod_pocketDim blockLimbo = new BlockLimbo(properties.LimboBlockID, 15, Material.iron, properties.LimboDimensionID, decay).setHardness(.2F).setUnlocalizedName("BlockLimbo").setLightValue(.0F); unstableDoor = (new UnstableDoor(properties.UnstableDoorID, Material.iron, properties).setHardness(.2F).setUnlocalizedName("chaosDoor").setLightValue(.0F) ); dimensionalDoor = (DimensionalDoor) (new DimensionalDoor(properties.DimensionalDoorID, Material.iron, properties).setHardness(1.0F).setResistance(2000.0F) .setUnlocalizedName("dimDoor")); - transTrapdoor = (new TransTrapdoor(properties.TransTrapdoorID, Material.wood)).setHardness(1.0F) .setUnlocalizedName("dimHatch"); + transTrapdoor = (TransTrapdoor) (new TransTrapdoor(properties.TransTrapdoorID, Material.wood).setHardness(1.0F) .setUnlocalizedName("dimHatch")); itemDimDoor = (new ItemDimensionalDoor(properties.DimensionalDoorItemID, Material.iron)).setUnlocalizedName("itemDimDoor"); itemExitDoor = (new ItemWarpDoor(properties.WarpDoorItemID, Material.wood)).setUnlocalizedName("itemDimDoorWarp"); diff --git a/StevenDimDoors/mod_pocketDim/tileentities/TileEntityTransTrapdoor.java b/StevenDimDoors/mod_pocketDim/tileentities/TileEntityTransTrapdoor.java index ad8dff1..f7a8791 100644 --- a/StevenDimDoors/mod_pocketDim/tileentities/TileEntityTransTrapdoor.java +++ b/StevenDimDoors/mod_pocketDim/tileentities/TileEntityTransTrapdoor.java @@ -7,72 +7,49 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class TileEntityTransTrapdoor extends TileEntity - { public boolean hasRift; - public boolean isShut; - public int metaData; - - - - + + @Override public boolean shouldRefresh(int oldID, int newID, int oldMeta, int newMeta, World world, int x, int y, int z) - { - if(newID==0&&PocketManager.getLink(x, y, z, world)!=null) + { + if (newID == 0 && PocketManager.getLink(x, y, z, world) != null) { world.setBlock(x, y, z, mod_pocketDim.blockRift.blockID); } - return true; - } - - public boolean canUpdate() - { - return true; - } - - public void updateEntity() - { - System.out.println(this.worldObj.getBlockMetadata(xCoord, yCoord, zCoord)); + return true; + } - } - - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - int i = nbt.getInteger(("Size")); + @Override + public boolean canUpdate() + { + return true; + } - try - { - this.hasRift = nbt.getBoolean("hasRift"); - this.isShut = nbt.getBoolean("isShut"); - - this.metaData = nbt.getInteger("metaData"); - - - + @Override + public void updateEntity() + { + + } - + @Override + public void readFromNBT(NBTTagCompound nbt) + { + super.readFromNBT(nbt); + try + { + this.hasRift = nbt.getBoolean("hasRift"); + } + catch (Exception e) + { - } - catch (Exception e) - { - - } - } + } + } - @Override - public void writeToNBT(NBTTagCompound nbt) - { - int i = 0; - super.writeToNBT(nbt); - nbt.setBoolean("hasRift", this.hasRift); - nbt.setBoolean("isShut", this.isShut); - - - nbt.setInteger("metaData", this.metaData); - - - - } + @Override + public void writeToNBT(NBTTagCompound nbt) + { + super.writeToNBT(nbt); + nbt.setBoolean("hasRift", this.hasRift); + } } diff --git a/StevenDimDoors/mod_pocketDimClient/ClientProxy.java b/StevenDimDoors/mod_pocketDimClient/ClientProxy.java index b4ef347..bfc4140 100644 --- a/StevenDimDoors/mod_pocketDimClient/ClientProxy.java +++ b/StevenDimDoors/mod_pocketDimClient/ClientProxy.java @@ -16,7 +16,7 @@ public class ClientProxy extends CommonProxy { //MinecraftForgeClient.preloadTexture(BLOCK_PNG); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDimDoor.class, new RenderDimDoor()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTransTrapdoor.class, new RenderDimTrapDoor()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTransTrapdoor.class, new RenderTransTrapdoor()); //This code activates the new rift rendering, as well as a bit of code in TileEntityRift //ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRift.class, new RenderRift()); diff --git a/StevenDimDoors/mod_pocketDimClient/RenderDimTrapDoor.java b/StevenDimDoors/mod_pocketDimClient/RenderTransTrapdoor.java similarity index 84% rename from StevenDimDoors/mod_pocketDimClient/RenderDimTrapDoor.java rename to StevenDimDoors/mod_pocketDimClient/RenderTransTrapdoor.java index 8d90e6e..7a8b8d9 100644 --- a/StevenDimDoors/mod_pocketDimClient/RenderDimTrapDoor.java +++ b/StevenDimDoors/mod_pocketDimClient/RenderTransTrapdoor.java @@ -12,33 +12,31 @@ import org.lwjgl.opengl.GL11; import StevenDimDoors.mod_pocketDim.DDProperties; import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.blocks.dimHatch; -import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoor; +import StevenDimDoors.mod_pocketDim.blocks.TransTrapdoor; import StevenDimDoors.mod_pocketDim.tileentities.TileEntityTransTrapdoor; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) -public class RenderDimTrapDoor extends TileEntitySpecialRenderer +public class RenderTransTrapdoor extends TileEntitySpecialRenderer { - FloatBuffer field_76908_a = GLAllocation.createDirectFloatBuffer(16); - - public RenderDimTrapDoor() + private FloatBuffer field_76908_a = GLAllocation.createDirectFloatBuffer(16); + private static DDProperties properties = null; + + public RenderTransTrapdoor() { if (properties == null) properties = DDProperties.instance(); } - - private static DDProperties properties = null; /** * Renders the dimdoor. */ - public void renderDimHatchTileEntity(TileEntityTransTrapdoor tile, double x, double y, double z, float par8) + public void renderTransTrapdoorTileEntity(TileEntityTransTrapdoor tile, double x, double y, double z, float par8) { try { - ( (dimHatch) mod_pocketDim.dimHatch).updateAttachedTile(tile.worldObj, tile.xCoord, tile.yCoord, tile.zCoord); + mod_pocketDim.transTrapdoor.updateAttachedTile(tile.worldObj, tile.xCoord, tile.yCoord, tile.zCoord); } catch(Exception e) { @@ -52,10 +50,8 @@ public class RenderDimTrapDoor extends TileEntitySpecialRenderer //float distance = (float) tile.getDistanceFrom(playerX, playerY, playerZ); GL11.glDisable(GL11.GL_LIGHTING); - Random rand = new Random(31100L); - float var13 = 0.75F; - - + Random random = new Random(31100L); + int metadata = tile.worldObj.getBlockMetadata(tile.xCoord, tile.yCoord, tile.zCoord); for (int count = 0; count < 16; ++count) { @@ -82,8 +78,6 @@ public class RenderDimTrapDoor extends TileEntitySpecialRenderer var16 = .5F; } - - GL11.glTranslatef( (float)(Minecraft.getSystemTime() % 200000L) / 200000.0F,0, 0.0F); GL11.glTranslatef(0, (float)(Minecraft.getSystemTime() % 200000L) / 200000.0F, 0.0F); @@ -115,13 +109,10 @@ public class RenderDimTrapDoor extends TileEntitySpecialRenderer GL11.glTranslatef(0.5F, 0.5F, 0.5F); GL11.glBegin(GL11.GL_QUADS); - - - - float var21 = rand.nextFloat() * 0.5F + 0.1F; - float var22 = rand.nextFloat() * 0.4F + 0.4F; - float var23 = rand.nextFloat() * 0.6F + 0.5F; + float var21 = random.nextFloat() * 0.5F + 0.1F; + float var22 = random.nextFloat() * 0.4F + 0.4F; + float var23 = random.nextFloat() * 0.6F + 0.5F; if (count == 0) { @@ -129,29 +120,9 @@ public class RenderDimTrapDoor extends TileEntitySpecialRenderer var22 = 1.0F; } GL11.glColor4d(var21 * var17, var22 * var17, var23 * var17, 1.0F); - if(tile.metaData>7) + if (TransTrapdoor.isTrapdoorOnBlock(metadata)) { - if(tile.isShut) - { - GL11.glVertex3d(x, y+0.85, z); - GL11.glVertex3d(x, y+0.85, z+1); - GL11.glVertex3d(x+1 , y+0.85 , z+1); - GL11.glVertex3d(x+1 , y+0.85 , z); - } - else - { - GL11.glVertex3d(x, y+0.95, z); - GL11.glVertex3d(x, y+0.95, z+1); - GL11.glVertex3d(x+1 , y+0.95 , z+1); - GL11.glVertex3d(x+1 , y+0.95 , z); - - } - - - } - else - { - if(tile.isShut) + if (TransTrapdoor.isTrapdoorOpen(metadata)) { GL11.glVertex3d(x, y+0.2, z); GL11.glVertex3d(x, y+0.2, z+1); @@ -165,11 +136,25 @@ public class RenderDimTrapDoor extends TileEntitySpecialRenderer GL11.glVertex3d(x+1 , y+0.15 , z+1); GL11.glVertex3d(x+1 , y+0.15 , z); } - } - + else + { + if (TransTrapdoor.isTrapdoorOpen(metadata)) + { + GL11.glVertex3d(x, y+0.95, z); + GL11.glVertex3d(x, y+0.95, z+1); + GL11.glVertex3d(x+1 , y+0.95 , z+1); + GL11.glVertex3d(x+1 , y+0.95 , z); + } + else + { + GL11.glVertex3d(x, y+0.85, z); + GL11.glVertex3d(x, y+0.85, z+1); + GL11.glVertex3d(x+1 , y+0.85 , z+1); + GL11.glVertex3d(x+1 , y+0.85 , z); + } + } GL11.glEnd(); - GL11.glPopMatrix(); GL11.glMatrixMode(GL11.GL_MODELVIEW); } @@ -194,7 +179,7 @@ public class RenderDimTrapDoor extends TileEntitySpecialRenderer { if (properties.DoorRenderingEnabled) { - this.renderDimHatchTileEntity((TileEntityTransTrapdoor)par1TileEntity, par2, par4, par6, par8); + this.renderTransTrapdoorTileEntity((TileEntityTransTrapdoor)par1TileEntity, par2, par4, par6, par8); } } } -- 2.39.5 From fc6dd635737495111aafccab775be0d09b7b2552 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Sun, 8 Sep 2013 16:48:16 -0400 Subject: [PATCH 10/13] Minor Change Renamed TransTrapdoor.isTrapdoorOnBlock() to TransTrapdoor.isTrapdoorSetLow() so it would be easier to understand what it indicates. --- StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java | 2 +- StevenDimDoors/mod_pocketDimClient/RenderTransTrapdoor.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java b/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java index 55eb613..e27e22c 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java @@ -111,7 +111,7 @@ public class TransTrapdoor extends BlockTrapDoor implements IDimDoor, ITileEntit return Block.trapdoor.blockID; } - public static boolean isTrapdoorOnBlock(int metadata) + public static boolean isTrapdoorSetLow(int metadata) { return (metadata & 8) == 0; } diff --git a/StevenDimDoors/mod_pocketDimClient/RenderTransTrapdoor.java b/StevenDimDoors/mod_pocketDimClient/RenderTransTrapdoor.java index 7a8b8d9..68fe35c 100644 --- a/StevenDimDoors/mod_pocketDimClient/RenderTransTrapdoor.java +++ b/StevenDimDoors/mod_pocketDimClient/RenderTransTrapdoor.java @@ -120,7 +120,7 @@ public class RenderTransTrapdoor extends TileEntitySpecialRenderer var22 = 1.0F; } GL11.glColor4d(var21 * var17, var22 * var17, var23 * var17, 1.0F); - if (TransTrapdoor.isTrapdoorOnBlock(metadata)) + if (TransTrapdoor.isTrapdoorSetLow(metadata)) { if (TransTrapdoor.isTrapdoorOpen(metadata)) { -- 2.39.5 From 156c61a772213d57dffed19d7fdd86685804b051 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Sun, 8 Sep 2013 21:01:38 -0400 Subject: [PATCH 11/13] Improved DDTeleporter Made a minor change to DDTeleporter - added a flag so that we can specify that entities must be teleported to the destination without trying to shift them around based on destination orientation. This is important for the trapdoor, since otherwise entities might get shoved into walls. Also cleaned up some code in DDTeleporter. It's much more readable now. These changes are in preparation for completing Trans Trapdoor destination selection. --- .../mod_pocketDim/EventHookContainer.java | 27 +-- .../blocks/BlockDimWallPerm.java | 2 +- .../mod_pocketDim/core/DDTeleporter.java | 160 +++++++++--------- .../mod_pocketDim/core/NewDimData.java | 4 + .../mod_pocketDim/ticking/MobMonolith.java | 2 +- 5 files changed, 102 insertions(+), 93 deletions(-) diff --git a/StevenDimDoors/mod_pocketDim/EventHookContainer.java b/StevenDimDoors/mod_pocketDim/EventHookContainer.java index 132a161..809e565 100644 --- a/StevenDimDoors/mod_pocketDim/EventHookContainer.java +++ b/StevenDimDoors/mod_pocketDim/EventHookContainer.java @@ -10,11 +10,11 @@ import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingFallEvent; import net.minecraftforge.event.world.WorldEvent; import StevenDimDoors.mod_pocketDim.core.DDTeleporter; +import StevenDimDoors.mod_pocketDim.core.NewDimData; import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.ticking.RiftRegenerator; import StevenDimDoors.mod_pocketDim.util.Point4D; import StevenDimDoors.mod_pocketDim.world.LimboProvider; -import StevenDimDoors.mod_pocketDim.world.PocketProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -69,19 +69,24 @@ public class EventHookContainer public boolean LivingDeathEvent(LivingDeathEvent event) { Entity entity = event.entity; - if (entity instanceof EntityPlayer && entity.worldObj.provider instanceof PocketProvider - && properties.LimboEnabled) + + if (entity instanceof EntityPlayer && properties.LimboEnabled) { - EntityPlayer player = (EntityPlayer) entity; - if (!properties.LimboReturnsInventoryEnabled) + NewDimData dimension = PocketManager.getDimensionData(entity.worldObj); + if (dimension.isDungeon()) { - player.inventory.clearInventory(-1, -1); + EntityPlayer player = (EntityPlayer) entity; + if (!properties.LimboReturnsInventoryEnabled) + { + player.inventory.clearInventory(-1, -1); + } + ChunkCoordinates coords = LimboProvider.getLimboSkySpawn(player.worldObj.rand); + Point4D destination = new Point4D(coords.posX, coords.posY, coords.posZ, mod_pocketDim.properties.LimboDimensionID); + DDTeleporter.teleportEntity(player, destination, false); + player.setEntityHealth(player.getMaxHealth()); + event.setCanceled(true); + return false; } - ChunkCoordinates coords = LimboProvider.getLimboSkySpawn(player.worldObj.rand); - DDTeleporter.teleportEntity(player, new Point4D(coords.posX, coords.posY, coords.posZ, mod_pocketDim.properties.LimboDimensionID)); - player.setEntityHealth(player.getMaxHealth()); - event.setCanceled(true); - return false; } return true; } diff --git a/StevenDimDoors/mod_pocketDim/blocks/BlockDimWallPerm.java b/StevenDimDoors/mod_pocketDim/blocks/BlockDimWallPerm.java index f5e34ae..c635b7f 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/BlockDimWallPerm.java +++ b/StevenDimDoors/mod_pocketDim/blocks/BlockDimWallPerm.java @@ -67,7 +67,7 @@ public class BlockDimWallPerm extends Block //FIXME: Shouldn't we make the player's destination safe BEFORE teleporting him?! //player.setPositionAndUpdate( x, y, z ); Point4D destination = new Point4D(destinationX, destinationY, destinationZ, 0); - DDTeleporter.teleportEntity(player, destination); + DDTeleporter.teleportEntity(player, destination, false); //player.setPositionAndUpdate( x, y, z ); diff --git a/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java b/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java index a6edec6..ccfa585 100644 --- a/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java +++ b/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java @@ -39,98 +39,98 @@ public class DDTeleporter private DDTeleporter() { } - private static void placeInPortal(Entity entity, WorldServer world, Point4D destination, DDProperties properties) + private static void placeInPortal(Entity entity, WorldServer world, Point4D destination, DDProperties properties, boolean checkOrientation) { int x = destination.getX(); int y = destination.getY(); int z = destination.getZ(); - int orientation = getDestinationOrientation(destination, properties); - + int orientation; + if (checkOrientation) + { + orientation = getDestinationOrientation(destination, properties); + entity.rotationYaw = (orientation * 90) + 90; + } + else + { + //Teleport the entity to the precise destination point + orientation = -1; + } + if (entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) entity; - player.rotationYaw=(orientation*90)+90; - if(orientation==2||orientation==6) + switch (orientation) { - player.setPositionAndUpdate( x+1.5, y-1, z+.5 ); - } - else if(orientation==3||orientation==7) - { - player.setPositionAndUpdate( x+.5, y-1, z+1.5 ); - } - else if(orientation==0||orientation==4) - { - player.setPositionAndUpdate(x-.5, y-1, z+.5); - } - else if(orientation==1||orientation==5) - { - player.setPositionAndUpdate(x+.5, y-1, z-.5); - } - else - { - player.setPositionAndUpdate(x, y-1, z); + case 0: + player.setPositionAndUpdate(x - 0.5, y - 1, z + 0.5); + break; + case 1: + player.setPositionAndUpdate(x + 0.5, y - 1, z - 0.5); + break; + case 2: + player.setPositionAndUpdate(x + 1.5, y - 1, z + 0.5); + break; + case 3: + player.setPositionAndUpdate(x + 0.5, y - 1, z + 1.5); + break; + default: + player.setPositionAndUpdate(x, y - 1, z); + break; } } else if (entity instanceof EntityMinecart) { - entity.motionX=0; - entity.motionZ=0; - entity.motionY=0; - entity.rotationYaw=(orientation*90)+90; + entity.motionX = 0; + entity.motionZ = 0; + entity.motionY = 0; - if(orientation==2||orientation==6) + switch (orientation) { - DDTeleporter.setEntityPosition(entity, x+1.5, y, z+.5 ); - entity.motionX =.39; - entity.worldObj.updateEntityWithOptionalForce(entity, false); - } - else if(orientation==3||orientation==7) - { - DDTeleporter.setEntityPosition(entity, x+.5, y, z+1.5 ); - entity.motionZ =.39; - entity.worldObj.updateEntityWithOptionalForce(entity, false); - } - else if(orientation==0||orientation==4) - { - DDTeleporter.setEntityPosition(entity,x-.5, y, z+.5); - entity.motionX =-.39; - entity.worldObj.updateEntityWithOptionalForce(entity, false); - } - else if(orientation==1||orientation==5) - { - DDTeleporter.setEntityPosition(entity,x+.5, y, z-.5); - entity.motionZ =-.39; - entity.worldObj.updateEntityWithOptionalForce(entity, false); - } - else - { - DDTeleporter.setEntityPosition(entity,x, y, z); + case 0: + DDTeleporter.setEntityPosition(entity, x - 0.5, y, z + 0.5); + entity.motionX = -0.39; + entity.worldObj.updateEntityWithOptionalForce(entity, false); + break; + case 1: + DDTeleporter.setEntityPosition(entity, x + 0.5, y, z - 0.5); + entity.motionZ = -0.39; + entity.worldObj.updateEntityWithOptionalForce(entity, false); + break; + case 2: + DDTeleporter.setEntityPosition(entity, x + 1.5, y, z + 0.5); + entity.motionX = 0.39; + entity.worldObj.updateEntityWithOptionalForce(entity, false); + break; + case 3: + DDTeleporter.setEntityPosition(entity, x + 0.5, y, z + 1.5 ); + entity.motionZ = 0.39; + entity.worldObj.updateEntityWithOptionalForce(entity, false); + break; + default: + DDTeleporter.setEntityPosition(entity, x, y, z); + break; } } - else if (entity instanceof Entity) + else { - entity.rotationYaw=(orientation*90)+90; - if(orientation==2||orientation==6) + switch (orientation) { - DDTeleporter.setEntityPosition(entity, x+1.5, y, z+.5 ); - } - else if(orientation==3||orientation==7) - { - - DDTeleporter.setEntityPosition(entity, x+.5, y, z+1.5 ); - } - else if(orientation==0||orientation==4) - { - DDTeleporter.setEntityPosition(entity,x-.5, y, z+.5); - } - else if(orientation==1||orientation==5) - { - DDTeleporter.setEntityPosition(entity,x+.5, y, z-.5); - } - else - { - DDTeleporter.setEntityPosition(entity,x, y, z); + case 0: + setEntityPosition(entity, x - 0.5, y, z + 0.5); + break; + case 1: + setEntityPosition(entity, x + 0.5, y, z - 0.5); + break; + case 2: + setEntityPosition(entity, x + 1.5, y, z + 0.5); + break; + case 3: + setEntityPosition(entity, x + 0.5, y, z + 1.5); + break; + default: + setEntityPosition(entity, x, y, z); + break; } } } @@ -164,7 +164,7 @@ public class DDTeleporter return world.getBlockMetadata(door.getX(), door.getY() - 1, door.getZ()) & 3; } - public static Entity teleportEntity(Entity entity, Point4D destination) + public static Entity teleportEntity(Entity entity, Point4D destination, boolean checkOrientation) { if (entity == null) { @@ -185,7 +185,7 @@ public class DDTeleporter // Is something riding? Handle it first. if (entity.riddenByEntity != null) { - return teleportEntity(entity.riddenByEntity, destination); + return teleportEntity(entity.riddenByEntity, destination, checkOrientation); } // Are we riding something? Dismount and tell the mount to go first. @@ -193,7 +193,7 @@ public class DDTeleporter if (cart != null) { entity.mountEntity(null); - cart = teleportEntity(cart, destination); + cart = teleportEntity(cart, destination, checkOrientation); // We keep track of both so we can remount them on the other side. } @@ -211,7 +211,7 @@ public class DDTeleporter // GreyMaria: What is this even accomplishing? We're doing the exact same thing at the end of this all. // TODO Check to see if this is actually vital. - DDTeleporter.placeInPortal(entity, newWorld, destination, properties); + DDTeleporter.placeInPortal(entity, newWorld, destination, properties, checkOrientation); if (difDest) // Are we moving our target to a new dimension? { @@ -306,7 +306,7 @@ public class DDTeleporter GameRegistry.onPlayerChangedDimension((EntityPlayer)entity); } - DDTeleporter.placeInPortal(entity, newWorld, destination, properties); + DDTeleporter.placeInPortal(entity, newWorld, destination, properties, checkOrientation); return entity; } @@ -355,13 +355,13 @@ public class DDTeleporter Point4D randomDestination = getRandomDestination(); if (randomDestination != null) { - entity = teleportEntity(entity, randomDestination); + entity = teleportEntity(entity, randomDestination, true); entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mob.endermen.portal", 1.0F, 1.0F); } } else { - entity = teleportEntity(entity, link.destination()); + entity = teleportEntity(entity, link.destination(), link.linkType() != LinkTypes.UNSAFE_EXIT); entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mob.endermen.portal", 1.0F, 1.0F); } } diff --git a/StevenDimDoors/mod_pocketDim/core/NewDimData.java b/StevenDimDoors/mod_pocketDim/core/NewDimData.java index 9e735aa..a480333 100644 --- a/StevenDimDoors/mod_pocketDim/core/NewDimData.java +++ b/StevenDimDoors/mod_pocketDim/core/NewDimData.java @@ -439,6 +439,10 @@ public abstract class NewDimData { throw new IllegalStateException("The dimension has already been initialized."); } + if (orientation < 0 || orientation > 3) + { + throw new IllegalArgumentException("orientation must be between 0 and 3, inclusive."); + } setDestination(incoming, originX, originY, originZ); this.origin = incoming.destination(); diff --git a/StevenDimDoors/mod_pocketDim/ticking/MobMonolith.java b/StevenDimDoors/mod_pocketDim/ticking/MobMonolith.java index 71ba77a..221ebba 100644 --- a/StevenDimDoors/mod_pocketDim/ticking/MobMonolith.java +++ b/StevenDimDoors/mod_pocketDim/ticking/MobMonolith.java @@ -150,7 +150,7 @@ public class MobMonolith extends EntityFlying implements IMob (int) this.posY + 500, (int) this.posZ + MathHelper.getRandomIntegerInRange(rand, -250, 250), properties.LimboDimensionID); - DDTeleporter.teleportEntity(entityPlayer, destination); + DDTeleporter.teleportEntity(entityPlayer, destination, false); this.aggro = 0; entityPlayer.worldObj.playSoundAtEntity(entityPlayer,"mods.DimDoors.sfx.crack",13, 1); -- 2.39.5 From 9fec41f906fe0991dd4d1afefa6b1e23d1508f46 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Sun, 8 Sep 2013 21:05:06 -0400 Subject: [PATCH 12/13] Minor Change Renamed IDimDoor.placeDimDoor() to placeLink(), since that's what it's actually being used for in our doors. Saying it places the door itself is confusing. --- StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java | 2 +- StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java | 2 +- StevenDimDoors/mod_pocketDim/blocks/IDimDoor.java | 2 +- StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java | 4 ++-- StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java | 2 +- StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java | 2 +- StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java b/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java index a923bc7..43d4ba5 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java @@ -133,7 +133,7 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn { //FIXME: We need to set door generation flags on the tile entities. Ignoring that for now. ~SenseiKiwi - this.placeDimDoor(world, x, y, z); + this.placeLink(world, x, y, z); world.setBlockTileEntity(x, y, z, this.createNewTileEntity(world)); this.updateAttachedTile(world, x, y, z); } diff --git a/StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java b/StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java index 9b59b8b..eea7b05 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java @@ -18,7 +18,7 @@ public class DimensionalDoor extends BaseDimDoor } @Override - public void placeDimDoor(World world, int x, int y, int z) + public void placeLink(World world, int x, int y, int z) { if (!world.isRemote && world.getBlockId(x, y - 1, z) == this.blockID) { diff --git a/StevenDimDoors/mod_pocketDim/blocks/IDimDoor.java b/StevenDimDoors/mod_pocketDim/blocks/IDimDoor.java index 6ebe012..39bfcd2 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/IDimDoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/IDimDoor.java @@ -7,7 +7,7 @@ public interface IDimDoor { public void enterDimDoor(World world, int x, int y, int z, Entity entity); - public void placeDimDoor(World world, int x, int y, int z); + public void placeLink(World world, int x, int y, int z); public int getDrops(); } diff --git a/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java b/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java index e27e22c..91bcf94 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java @@ -58,7 +58,7 @@ public class TransTrapdoor extends BlockTrapDoor implements IDimDoor, ITileEntit @Override public void onBlockAdded(World world, int x, int y, int z) { - this.placeDimDoor(world, x, y, z); + this.placeLink(world, x, y, z); world.setBlockTileEntity(x, y, z, this.createNewTileEntity(world)); this.updateAttachedTile(world, x, y, z); } @@ -86,7 +86,7 @@ public class TransTrapdoor extends BlockTrapDoor implements IDimDoor, ITileEntit } @Override - public void placeDimDoor(World world, int x, int y, int z) + public void placeLink(World world, int x, int y, int z) { if (!world.isRemote) { diff --git a/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java b/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java index 3bc59db..cdd54ee 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java @@ -60,7 +60,7 @@ public class TransientDoor extends BaseDimDoor } @Override - public void placeDimDoor(World world, int x, int y, int z) + public void placeLink(World world, int x, int y, int z) { if (!world.isRemote && world.getBlockId(x, y - 1, z) == this.blockID) { diff --git a/StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java b/StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java index 77d283d..8bcf00e 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java @@ -16,7 +16,7 @@ public class UnstableDoor extends BaseDimDoor } @Override - public void placeDimDoor(World world, int x, int y, int z) + public void placeLink(World world, int x, int y, int z) { if (!world.isRemote && world.getBlockId(x, y - 1, z) == this.blockID) { diff --git a/StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java b/StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java index 4e4c4b4..ef75d8b 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java @@ -17,7 +17,7 @@ public class WarpDoor extends BaseDimDoor } @Override - public void placeDimDoor(World world, int x, int y, int z) + public void placeLink(World world, int x, int y, int z) { if (!world.isRemote && world.getBlockId(x, y - 1, z) == this.blockID) { -- 2.39.5 From 7dbc6896b1f472b864e7dfa0522faf3fb3035908 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Mon, 9 Sep 2013 00:42:03 -0400 Subject: [PATCH 13/13] Minor Fixes Cleaned up obsolete code in PocketProvider and fixed the assignment of hasNoSky so that it actually applies. Also overloaded getActualHeight() so that we return 256 despite hasNoSky = true - the default MC behavior is that we would return 128 in that case. Also undid a previous change to EventHookContainer - players that die in pockets will respawn in Limbo, again. --- .../mod_pocketDim/EventHookContainer.java | 27 +++++++--------- .../mod_pocketDim/world/PocketProvider.java | 32 +++++++------------ 2 files changed, 23 insertions(+), 36 deletions(-) diff --git a/StevenDimDoors/mod_pocketDim/EventHookContainer.java b/StevenDimDoors/mod_pocketDim/EventHookContainer.java index 809e565..aeaa0d3 100644 --- a/StevenDimDoors/mod_pocketDim/EventHookContainer.java +++ b/StevenDimDoors/mod_pocketDim/EventHookContainer.java @@ -10,11 +10,11 @@ import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingFallEvent; import net.minecraftforge.event.world.WorldEvent; import StevenDimDoors.mod_pocketDim.core.DDTeleporter; -import StevenDimDoors.mod_pocketDim.core.NewDimData; import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.ticking.RiftRegenerator; import StevenDimDoors.mod_pocketDim.util.Point4D; import StevenDimDoors.mod_pocketDim.world.LimboProvider; +import StevenDimDoors.mod_pocketDim.world.PocketProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -70,23 +70,20 @@ public class EventHookContainer { Entity entity = event.entity; - if (entity instanceof EntityPlayer && properties.LimboEnabled) + if (entity instanceof EntityPlayer && properties.LimboEnabled && + entity.worldObj.provider instanceof PocketProvider) { - NewDimData dimension = PocketManager.getDimensionData(entity.worldObj); - if (dimension.isDungeon()) + EntityPlayer player = (EntityPlayer) entity; + if (!properties.LimboReturnsInventoryEnabled) { - EntityPlayer player = (EntityPlayer) entity; - if (!properties.LimboReturnsInventoryEnabled) - { - player.inventory.clearInventory(-1, -1); - } - ChunkCoordinates coords = LimboProvider.getLimboSkySpawn(player.worldObj.rand); - Point4D destination = new Point4D(coords.posX, coords.posY, coords.posZ, mod_pocketDim.properties.LimboDimensionID); - DDTeleporter.teleportEntity(player, destination, false); - player.setEntityHealth(player.getMaxHealth()); - event.setCanceled(true); - return false; + player.inventory.clearInventory(-1, -1); } + ChunkCoordinates coords = LimboProvider.getLimboSkySpawn(player.worldObj.rand); + Point4D destination = new Point4D(coords.posX, coords.posY, coords.posZ, mod_pocketDim.properties.LimboDimensionID); + DDTeleporter.teleportEntity(player, destination, false); + player.setEntityHealth(player.getMaxHealth()); + event.setCanceled(true); + return false; } return true; } diff --git a/StevenDimDoors/mod_pocketDim/world/PocketProvider.java b/StevenDimDoors/mod_pocketDim/world/PocketProvider.java index fa2087c..8348e08 100644 --- a/StevenDimDoors/mod_pocketDim/world/PocketProvider.java +++ b/StevenDimDoors/mod_pocketDim/world/PocketProvider.java @@ -17,14 +17,6 @@ import cpw.mods.fml.relauncher.SideOnly; public class PocketProvider extends WorldProvider { - public int exitXCoord; - public int exitYCoord; - public int exitZCoord; - public int exitDimID; - public boolean hasNoSky = true; - - public boolean isSavingSchematic= false; - public int dimToSave; private DDProperties properties; private MonolithSpawner spawner; @@ -38,8 +30,7 @@ public class PocketProvider extends WorldProvider @Override protected void registerWorldChunkManager() { - super.worldChunkMgr = new WorldChunkManagerHell(mod_pocketDim.pocketBiome,1,1); - //this.dimensionId = ConfigAtum.dimensionID; + super.worldChunkMgr = new WorldChunkManagerHell(mod_pocketDim.pocketBiome, 1, 1); } @Override @@ -48,28 +39,18 @@ public class PocketProvider extends WorldProvider return (dimensionId == 0 ? null : "DimensionalDoors/pocketDimID" + dimensionId); } - public void saveAsSchematic(int id) - { - this.isSavingSchematic=true; - this.dimensionId=id; - - } - + @Override public Vec3 getSkyColor(Entity cameraEntity, float partialTicks) { setCloudRenderer( new CloudRenderBlank()); return this.worldObj.getWorldVec3Pool().getVecFromPool((double)0, (double)0, (double)0); - } - - @SideOnly(Side.CLIENT) @Override public Vec3 getFogColor(float par1, float par2) { return this.worldObj.getWorldVec3Pool().getVecFromPool((double)0, (double)0, (double)0); - } @Override @@ -90,6 +71,7 @@ public class PocketProvider extends WorldProvider return false; } + @Override public boolean canBlockFreeze(int x, int y, int z, boolean byWater) { return false; @@ -104,6 +86,7 @@ public class PocketProvider extends WorldProvider return "PocketDim " + this.dimensionId; } + @Override public int getRespawnDimension(EntityPlayerMP player) { int respawnDim; @@ -124,8 +107,15 @@ public class PocketProvider extends WorldProvider return respawnDim; } + @Override public boolean canRespawnHere() { return false; } + + @Override + public int getActualHeight() + { + return 256; + } } -- 2.39.5