diff --git a/StevenDimDoors/mod_pocketDim/dimDoor.java b/StevenDimDoors/mod_pocketDim/dimDoor.java index e9e144f..586f52f 100644 --- a/StevenDimDoors/mod_pocketDim/dimDoor.java +++ b/StevenDimDoors/mod_pocketDim/dimDoor.java @@ -7,8 +7,8 @@ import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; 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.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -40,6 +40,7 @@ public class dimDoor extends BlockContainer this.blockIconBottom = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()+"_bottom"); } + //spawns the rift attatched to the block. Doesnt work in creative mode for some reason //TODO make work in creative @@ -105,13 +106,20 @@ public class dimDoor extends BlockContainer dimHelper.instance.teleportToPocket(par1World, linkData, par5Entity); - this.onPoweredBlockChange(par1World, par2, par3, par4, false); + + if(par5Entity instanceof EntityLiving) + { + this.onPoweredBlockChange(par1World, par2, par3, par4, false); + } } else if (!(par5Entity instanceof EntityPlayer)&&num>3) { - this.onPoweredBlockChange(par1World, par2, par3, par4, false); + if(par5Entity instanceof EntityLiving) + { + this.onPoweredBlockChange(par1World, par2, par3, par4, false); + } dimHelper.instance.teleportToPocket(par1World, linkData, par5Entity); @@ -138,7 +146,7 @@ public class dimDoor extends BlockContainer { var12=dimHelper.instance.flipDoorMetadata(var12); } - par1World.setBlockMetadataWithNotify(par2, par3-1, par4, var12,1); + par1World.setBlockMetadataWithNotify(par2, par3-1, par4, var12,2); if( dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World)!=null) { dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World).linkOrientation= par1World.getBlockMetadata(par2, par3-1, par4); @@ -152,7 +160,7 @@ public class dimDoor extends BlockContainer { var12=dimHelper.instance.flipDoorMetadata(var12); } - par1World.setBlockMetadataWithNotify(par2, par3, par4, var12,1); + par1World.setBlockMetadataWithNotify(par2, par3, par4, var12,2); if( dimHelper.instance.getLinkDataFromCoords(par2, par3+1, par4, par1World)!=null) { dimHelper.instance.getLinkDataFromCoords(par2, par3+1, par4, par1World).linkOrientation= par1World.getBlockMetadata(par2, par3, par4); @@ -183,12 +191,12 @@ public class dimDoor extends BlockContainer if ((var10 & 8) == 0) { - par1World.setBlockMetadataWithNotify(par2, par3, par4, var11,1); + par1World.setBlockMetadataWithNotify(par2, par3, par4, var11,2); par1World.markBlockRangeForRenderUpdate(par2, par3, par4, par2, par3, par4); } else { - par1World.setBlockMetadataWithNotify(par2, par3 - 1, par4, var11,1); + par1World.setBlockMetadataWithNotify(par2, par3 - 1, par4, var11,2); par1World.markBlockRangeForRenderUpdate(par2, par3 - 1, par4, par2, par3, par4); } diff --git a/StevenDimDoors/mod_pocketDim/dimHelper.java b/StevenDimDoors/mod_pocketDim/dimHelper.java index a7b9d20..d0fa4ed 100644 --- a/StevenDimDoors/mod_pocketDim/dimHelper.java +++ b/StevenDimDoors/mod_pocketDim/dimHelper.java @@ -349,7 +349,7 @@ public class dimHelper extends DimensionManager this.teleportEntity(world, entity, linkData); - if(entity instanceof EntityPlayerMP) + if(entity instanceof EntityPlayerMP&&world.provider.dimensionId!=linkData.destDimID) { GameRegistry.onPlayerChangedDimension((EntityPlayer)entity); } diff --git a/StevenDimDoors/mod_pocketDim/itemDimDoor.java b/StevenDimDoors/mod_pocketDim/itemDimDoor.java index 997845c..b3bbd05 100644 --- a/StevenDimDoors/mod_pocketDim/itemDimDoor.java +++ b/StevenDimDoors/mod_pocketDim/itemDimDoor.java @@ -6,10 +6,15 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.EntityLiving; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemDoor; import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; import net.minecraft.world.World; public class itemDimDoor extends ItemDoor @@ -96,6 +101,91 @@ public class itemDimDoor extends ItemDoor } } + public MovingObjectPosition getMovingObjectPositionFromPlayer(World par1World, EntityPlayer par2EntityPlayer, boolean par3) + { + float var4 = 1.0F; + float var5 = par2EntityPlayer.prevRotationPitch + (par2EntityPlayer.rotationPitch - par2EntityPlayer.prevRotationPitch) * var4; + float var6 = par2EntityPlayer.prevRotationYaw + (par2EntityPlayer.rotationYaw - par2EntityPlayer.prevRotationYaw) * var4; + double var7 = par2EntityPlayer.prevPosX + (par2EntityPlayer.posX - par2EntityPlayer.prevPosX) * (double)var4; + double var9 = par2EntityPlayer.prevPosY + (par2EntityPlayer.posY - par2EntityPlayer.prevPosY) * (double)var4 + 1.62D - (double)par2EntityPlayer.yOffset; + double var11 = par2EntityPlayer.prevPosZ + (par2EntityPlayer.posZ - par2EntityPlayer.prevPosZ) * (double)var4; + Vec3 var13 = par1World.getWorldVec3Pool().getVecFromPool(var7, var9, var11); + float var14 = MathHelper.cos(-var6 * 0.017453292F - (float)Math.PI); + float var15 = MathHelper.sin(-var6 * 0.017453292F - (float)Math.PI); + float var16 = -MathHelper.cos(-var5 * 0.017453292F); + float var17 = MathHelper.sin(-var5 * 0.017453292F); + float var18 = var15 * var16; + float var20 = var14 * var16; + double var21 = 5.0D; + if (par2EntityPlayer instanceof EntityPlayerMP) + { + var21 = 4; + } + Vec3 var23 = var13.addVector((double)var18 * var21, (double)var17 * var21, (double)var20 * var21); + return par1World.rayTraceBlocks_do_do(var13, var23, true, false); + } + + public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) + { + Boolean didFindThing=false; + MovingObjectPosition hit = this.getMovingObjectPositionFromPlayer(par3EntityPlayer.worldObj, par3EntityPlayer, false ); + if(hit!=null&&!par2World.isRemote) + { + if(par2World.getBlockId(hit.blockX, hit.blockY, hit.blockZ)==mod_pocketDim.blockRiftID) + { + LinkData link = dimHelper.instance.getLinkDataFromCoords(hit.blockX, hit.blockY, hit.blockZ, par2World); + if(link!=null) + { + Block var11; + if(par1ItemStack.getItem() instanceof itemExitDoor ) + { + var11 = mod_pocketDim.ExitDoor; + } + + else if(par1ItemStack.getItem() instanceof ItemChaosDoor ) + { + var11 = mod_pocketDim.chaosDoor; + } + else + { + var11 = mod_pocketDim.dimDoor; + } + + int par4 = hit.blockX; + int par5 = hit.blockY-1; + int par6 = hit.blockZ; + int par7 = 0 ; + + + + + if (par3EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack) && par3EntityPlayer.canPlayerEdit(par4, par5 + 1, par6, par7, par1ItemStack)&&!par2World.isRemote) + { + int var12 = MathHelper.floor_double((double)((par3EntityPlayer.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; + + if (!this.canPlace(par2World, par4, par5, par6, var12)||dimHelper.instance.getLinkDataFromCoords(par4, par5+1, par6, par2World)==null) + { + + } + else + { + + placeDoorBlock(par2World, par4, par5, par6, var12, var11); + + + + --par1ItemStack.stackSize; + + } + } + } + } + } + + return par1ItemStack; + + } + public boolean canPlace(World world,int i, int j, int k, int p) {