diff --git a/StevenDimDoors/mod_pocketDim/ticking/MobObelisk.java b/StevenDimDoors/mod_pocketDim/ticking/MobObelisk.java index 8ca725b..b91b65e 100644 --- a/StevenDimDoors/mod_pocketDim/ticking/MobObelisk.java +++ b/StevenDimDoors/mod_pocketDim/ticking/MobObelisk.java @@ -31,7 +31,7 @@ public class MobObelisk extends EntityFlying implements IMob float soundTime = 0; int aggro = 0; byte textureState = 0; - boolean hasJumped= false; + float scaleFactor = 0; int aggroMax; int destX=0; @@ -101,27 +101,7 @@ public class MobObelisk extends EntityFlying implements IMob byte b0 = this.dataWatcher.getWatchableObjectByte(16); this.texture="/mods/DimDoors/textures/mobs/Monolith"+b0+".png"; - if(!this.hasJumped&&!this.worldObj.isRemote) - { - - int sanity=0; - double jumpHeight=0; - do - { - jumpHeight = this.posY+rand.nextInt(25); - if(this.worldObj.provider instanceof pocketProvider) - { - jumpHeight = this.posY+rand.nextInt(10); - } - sanity++; - } - while(!this.worldObj.isAirBlock((int)this.posX,(int)jumpHeight+6 , (int)this.posZ)&&sanity<20); - this.hasJumped=true; - - this.setLocationAndAngles(this.posX,jumpHeight , this.posZ, this.rotationPitch, this.rotationYaw); - PacketDispatcher.sendPacketToAllInDimension(new Packet34EntityTeleport(this), this.worldObj.provider.dimensionId); - this.worldObj.updateEntity(this); - } + super.onEntityUpdate(); @@ -372,9 +352,20 @@ public class MobObelisk extends EntityFlying implements IMob par1NBTTagCompound.setInteger("aggro", this.aggro); par1NBTTagCompound.setInteger("aggroMax", this.aggroMax); par1NBTTagCompound.setByte("textureState", this.textureState); - par1NBTTagCompound.setBoolean("hasJumped", this.hasJumped); par1NBTTagCompound.setFloat("scaleFactor", this.scaleFactor); + } + + @Override + public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) + { + super.readEntityFromNBT(par1NBTTagCompound); + this.soundTime = par1NBTTagCompound.getFloat("soundTime"); + this.aggro = par1NBTTagCompound.getInteger("aggro"); + this.aggroMax = par1NBTTagCompound.getInteger("aggroMax"); + this.textureState = par1NBTTagCompound.getByte("textureState"); + this.scaleFactor = par1NBTTagCompound.getFloat("scaleFactor"); + } public boolean getCanSpawnHere() { diff --git a/StevenDimDoors/mod_pocketDim/world/LimboGenerator.java b/StevenDimDoors/mod_pocketDim/world/LimboGenerator.java index 583778b..3384933 100644 --- a/StevenDimDoors/mod_pocketDim/world/LimboGenerator.java +++ b/StevenDimDoors/mod_pocketDim/world/LimboGenerator.java @@ -196,14 +196,27 @@ public class LimboGenerator extends ChunkProviderGenerate implements IChunkProvi } y = yCoordHelper.getFirstUncovered(this.worldObj,x , y+2, z); - Entity mob = new MobObelisk(this.worldObj); - mob.setLocationAndAngles(x, y, z, 1, 1); - yTest=yCoordHelper.getFirstUncovered(this.worldObj,x , y+5, z); if(yTest>245) { return; } + + int jumpSanity=0; + int jumpHeight=0; + do + { + jumpHeight = y+rand.nextInt(25); + + jumpSanity++; + } + while(!this.worldObj.isAirBlock(x,jumpHeight+6 , z)&&jumpSanity<20); + + + Entity mob = new MobObelisk(this.worldObj); + mob.setLocationAndAngles(x, jumpHeight, z, 1, 1); + + this.worldObj.spawnEntityInWorld(mob); } diff --git a/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java b/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java index 63915ba..6be9e02 100644 --- a/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java +++ b/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java @@ -3,8 +3,11 @@ package StevenDimDoors.mod_pocketDim.world; import java.util.List; import java.util.Random; +import cpw.mods.fml.common.network.PacketDispatcher; + import net.minecraft.entity.Entity; import net.minecraft.entity.EnumCreatureType; +import net.minecraft.network.packet.Packet34EntityTeleport; import net.minecraft.world.ChunkPosition; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; @@ -108,9 +111,25 @@ public class PocketGenerator extends ChunkProviderGenerate implements IChunkProv } if(y > 0) { + + + + int jumpSanity=0; + int jumpHeight=0; + do + { + + jumpHeight = y+random.nextInt(10); + + jumpSanity++; + } + while(!this.worldObj.isAirBlock(x,jumpHeight+6 , z)&&jumpSanity<20); + + + Entity mob = new MobObelisk(worldObj); - mob.setLocationAndAngles(x, y+2+random.nextInt(5), z, 1, 1); + mob.setLocationAndAngles(x, jumpHeight, z, 1, 1); worldObj.spawnEntityInWorld(mob); didSpawn=true; }