
pokeyletsplays
Members-
Posts
61 -
Joined
-
Last visited
Converted
-
Gender
Male
-
URL
http://computerizedpleasure.com/
-
Personal Text
Forge Mod Developer
pokeyletsplays's Achievements

Stone Miner (3/8)
0
Reputation
-
now it doesn't crash but it doesn't work. float distance = 200; MovingObjectPosition mop = this.rayTrace(200, 1.0F); if(mop != null) { Entity entity = mop.entityHit; if(entity != null) { if(entity instanceof EntityPlayer){ ((EntityPlayer) entity).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id,600, 3)); ((EntityPlayer) entity).addPotionEffect(new PotionEffect(Potion.confusion.id,600, 5)); ((EntityPlayer) entity).addPotionEffect(new PotionEffect(Potion.hunger.id,600, 3)); } } }
-
If you want to detect when a mob is looking at a player. my update code sofar. // This is a reference to the entity, it is a basic Java keyword that represents the instance MovingObjectPosition mop = this.rayTrace(200, 1.0F) Entity entity = mop.entityHit; the game crashes when the entity hits the player. float distance = 200; MovingObjectPosition mop = this.rayTrace(200, 1.0F); Entity entity = mop.entityHit; if(entity != null) { if(entity instanceof EntityPlayer){ ((EntityPlayer) entity).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id,600, 3)); ((EntityPlayer) entity).addPotionEffect(new PotionEffect(Potion.confusion.id,600, 5)); ((EntityPlayer) entity).addPotionEffect(new PotionEffect(Potion.hunger.id,600, 3)); } }
-
float distance = 200; rayTrace(distance, 1.0F) Quote From: http://jabelarminecraft.blogspot.com/p/minecraft-forge-172-finding-block.html This is from 1.7.2 but the ray tracer shouldnt have changed, so it should work with 1.6.4 i put this in my onupdate method float distance = 200; MovingObjectPosition movingObjectPosition = EntityPlayer.rayTrace(200, 1.0F); Entity entity = movingObjectPosition.entityHit; if(entity != null) { // Implement your checks and logic here } but it gives me this error Cannot make a static reference to the non-static method rayTrace(double, float) from the type EntityLivingBase
-
Yes I realize 1.6.4 is old I plan on updating soon but I have my reasons for staying on 1.6.4 for now so lets just leave it at that. So what I want to do is make it so if the mob is looking at the player it applies effects to the player like slowness or weakness ect... I have no idea how to go about this. Here is my code so far anyway.
-
I realize 1.6.4 is ancient lets just say I have my reasons and move on. I was wondering how i would get a player with a certain username's instance my mobs entity file. i have tried if(MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(this.getUser()) != null){ this.setLocationAndAngles((double)MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(this.getUser()).posX + 0.0D, (double)MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(this.getUser()).posY + 0.0D, (double)MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(this.getUser()).posZ + 0.0D, 0.0F, 0.0F); } which works on client but not on server which is weird cause it bases it off the username.
-
[1.6.4] [SOLVED!!!!] Custom Mob Not Saving NBTDATA
pokeyletsplays replied to pokeyletsplays's topic in Modder Support
It works now thanks also sorry for the inconvenience. -
[1.6.4] [SOLVED!!!!] Custom Mob Not Saving NBTDATA
pokeyletsplays replied to pokeyletsplays's topic in Modder Support
So now I have a new problem it saves the player. so when i exit and reenter a world it still says it is tamed by the correct player. But if i try to do anything such as put it on my head or un tame it, it doesn't work New Code package Main.Pokey.Mine_EE_Mobs; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ServerData; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.monster.IMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.server.MinecraftServer; import net.minecraft.server.management.ServerConfigurationManager; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraft.world.WorldType; import net.minecraft.world.chunk.Chunk; public class EntityEnderSlime extends EntityLiving implements IMob { public int Teleport = 1; public int Head = 0; public float squishAmount; public float squishFactor; public float prevSquishFactor; /** the time between each jump of the slime */ private int slimeJumpDelay; private int TPin; public EntityEnderSlime(World par1World) { super(par1World); int i = 1 << this.rand.nextInt(3); this.yOffset = 0.0F; this.slimeJumpDelay = this.rand.nextInt(20) + 10; this.setSlimeSize(i); if(this.getUser() != "null_TMMP") { this.setUser(this.getUser()); } } protected void entityInit() { super.entityInit(); this.dataWatcher.addObject(16, new Byte((byte)1)); this.dataWatcher.addObject(14, String.valueOf("null_TMMP")); } protected void setSlimeSize(int par1) { this.dataWatcher.updateObject(16, new Byte((byte)par1)); this.setSize(0.6F * (float)par1, 0.6f * (float)par1); this.setPosition(this.posX, this.posY, this.posZ); if(this.getSlimeSize() == 1){ this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setAttribute((5D)); } if(this.getSlimeSize() > 1){ this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setAttribute((10D)); } this.setHealth(this.getMaxHealth()); this.experienceValue = par1; } /** * Returns the size of the slime. */ public int getSlimeSize() { return this.dataWatcher.getWatchableObjectByte(16); } /** * Returns the size of the slime. */ public String getUser() { return this.dataWatcher.getWatchableObjectString(14); } public void setUser(String string) { this.dataWatcher.updateObject(14, string); } /** * Returns the name of a particle effect that may be randomly created by EntitySlime.onUpdate() */ protected String getSlimeParticle() { return "portal"; } /** * Returns the name of the sound played when the slime jumps. */ protected String getJumpSound() { return ""; } /** * Called to update the entity's position/logic. */ public void onUpdate() { super.onUpdate(); System.out.println(this.getUser()); if(this.getUser() != "null_TMMP") { this.setSlimeSize(1); this.setUser(this.getUser()); if(this.Head != 0){ this.addPotionEffect(new PotionEffect(Potion.resistance.id,75, 99)); this.addPotionEffect(new PotionEffect(Potion.heal.id,75, 99)); } } if(Head == 1 && this.getUser() != "null_TMMP") { //.getPlayerForUsername(username); //String P; //Minecraft.getMinecraft().thePlayer; this.head(); this.setUser(this.getUser()); if(MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(this.getUser()) != null){ this.setLocationAndAngles((double)MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(this.getUser()).posX + 0.0D, (double)MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(this.getUser()).posY + 0.0D, (double)MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(this.getUser()).posZ + 0.0D, 0.0F, 0.0F); } } Random TPXYZ = new Random(); TPin = TPXYZ.nextInt(3); this.fallDistance = 0; if(Teleport > 3) { Teleport = 3; } if(worldObj.isBlockOpaqueCube((int)posX, (int)posY, (int)posZ) == true && !this.isInWater() || worldObj.isBlockOpaqueCube((int)posX, (int)posY + 1, (int)posZ) == true && !this.isInWater()) { this.addPotionEffect(new PotionEffect(Potion.resistance.id,75, 99)); if(!worldObj.isRemote){ this.setLocationAndAngles((double)posX + 0.5D, (double)posY + 2.5D, (double)posZ + 0.5D, 0.0F, 0.0F); this.Teleport(); } this.playSound("mob.endermen.portal", 1.0F, 1.0F); } if(this.isInWater()) { if(!worldObj.isRemote){ this.Teleport(); } } if (!this.worldObj.isRemote && this.worldObj.difficultySetting == 0 && this.getSlimeSize() > 0) { this.isDead = true; } this.squishFactor += (this.squishAmount - this.squishFactor) * 0.5F; this.prevSquishFactor = this.squishFactor; boolean flag = this.onGround; super.onUpdate(); int i; if (this.onGround && !flag) { i = this.getSlimeSize(); for (int j = 0; j < i * 8; ++j) { float f = this.rand.nextFloat() * (float)Math.PI * 2.0F; float f1 = this.rand.nextFloat() * 0.5F + 0.5F; float f2 = MathHelper.sin(f) * (float)i * 0.5F * f1; float f3 = MathHelper.cos(f) * (float)i * 0.5F * f1; this.worldObj.spawnParticle(this.getSlimeParticle(), this.posX + (double)f2, this.boundingBox.minY, this.posZ + (double)f3, 0.0D, 0.0D, 0.0D); } if (this.makesSoundOnLand()) { this.playSound(this.getJumpSound(), this.getSoundVolume(), ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F) / 0.8F); } this.squishAmount = -0.5F; } else if (!this.onGround && flag) { this.squishAmount = 1.0F; } this.alterSquishAmount(); if (this.worldObj.isRemote) { i = this.getSlimeSize(); this.setSize(0.6F * (float)i, 0.6F * (float)i); } } private void head() { this.motionX = 0; this.motionY = 0; this.motionZ = 0; } public boolean hitByEntity(Entity entity) { if (entity instanceof EntityPlayer) { if(((EntityPlayer)entity).getCurrentEquippedItem() != null || ((EntityPlayer)entity).getCurrentEquippedItem() == null && ((EntityPlayer)entity).username != this.getUser()) { if(Teleport >= 1 && this.getHealth() > 1) { this.Teleport(); return true; } else{ return false; } } } else { return true; } return false; } private void Teleport() { Random TP = new Random(); Random TP1 = new Random(); int TeleportX = TP.nextInt(10+1); int TeleportZ = TP1.nextInt(10+1); if(!worldObj.isRemote && TPin == 3){ this.setLocationAndAngles((double)posX + 0.5D, (double)posY + 0.5D, (double)posZ + TeleportZ + 0.5D, 0.0F, 0.0F); } else if(!worldObj.isRemote && TPin == 2){ this.setLocationAndAngles((double)posX + TeleportX + 0.5D, (double)posY + 0.5D, (double)posZ + 0.5D, 0.0F, 0.0F); } else if(!worldObj.isRemote && TPin == 1){ this.setLocationAndAngles((double)posX + 0.5D, (double)posY + 0.5D, (double)posZ - TeleportZ + 0.5D, 0.0F, 0.0F); } else if(!worldObj.isRemote && TPin == 0){ this.setLocationAndAngles((double)posX - TeleportX + 0.5D, (double)posY + 0.5D, (double)posZ + 0.5D, 0.0F, 0.0F); } this.playSound("mob.endermen.portal", 1.0F, 1.0F); Teleport--; } public boolean attackEntityAsMob(Entity entity) { super.attackEntityAsMob(entity); Teleport++; return true; } protected void updateEntityActionState() { this.despawnEntity(); EntityPlayer entityplayer = this.worldObj.getClosestVulnerablePlayerToEntity(this, 16.0D); if (entityplayer != null) { this.faceEntity(entityplayer, 10.0F, 20.0F); } if (this.onGround && this.slimeJumpDelay-- <= 0) { this.slimeJumpDelay = this.getJumpDelay(); if (entityplayer != null) { this.slimeJumpDelay /= 3; } this.isJumping = true; if (this.makesSoundOnJump()) { this.playSound(this.getJumpSound(), this.getSoundVolume(), ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F) * 0.8F); } this.moveStrafing = 1.0F - this.rand.nextFloat() * 2.0F; this.moveForward = (float)(1 * this.getSlimeSize()); } else { this.isJumping = false; if (this.onGround) { this.moveStrafing = this.moveForward = 0.0F; } } } public boolean interact(EntityPlayer par1EntityPlayer) { ItemStack itemstack = par1EntityPlayer.inventory.getCurrentItem(); if (itemstack != null && itemstack.itemID == Item.leash.itemID && !par1EntityPlayer.capabilities.isCreativeMode && this.getUser() == "null_TMMP") { this.setUser(par1EntityPlayer.username); this.setCustomNameTag(this.getUser() + "'s Ender Slime"); return true; } if (itemstack != null && itemstack.itemID == Item.saddle.itemID && !par1EntityPlayer.capabilities.isCreativeMode && this.Head == 1 && this.getUser() == par1EntityPlayer.username) { Head = 0; return true; } else if (itemstack != null && itemstack.itemID == Item.saddle.itemID && !par1EntityPlayer.capabilities.isCreativeMode && this.Head == 0 && this.getUser() == par1EntityPlayer.username) { Head = 1; return true; } if (itemstack != null && itemstack.itemID == Item.flintAndSteel.itemID && !par1EntityPlayer.capabilities.isCreativeMode && this.getUser() == par1EntityPlayer.username) { Head = 0; this.setUser("null_TMMP"); return true; } if (itemstack != null && itemstack.itemID == Item.nameTag.itemID && !par1EntityPlayer.capabilities.isCreativeMode) { Head = 0; par1EntityPlayer.addChatMessage("Owner:" + this.getUser()); return true; } else { return super.interact(par1EntityPlayer); } } protected void alterSquishAmount() { this.squishAmount *= 0.6F; } /** * Gets the amount of time the slime needs to wait between jumps. */ protected int getJumpDelay() { return this.rand.nextInt(15) + 10; } protected EntityEnderSlime createInstance() { return new EntityEnderSlime(this.worldObj); } /** * Will get destroyed next tick. */ public void setDead() { int i = this.getSlimeSize(); if (!this.worldObj.isRemote && i > 1 && this.getHealth() <= 0.0F) { int j = 2 + this.rand.nextInt(3); for (int k = 0; k < j; ++k) { float f = ((float)(k % 2) - 0.5F) * (float)i / 4.0F; float f1 = ((float)(k / 2) - 0.5F) * (float)i / 4.0F; EntityEnderSlime entityslime = this.createInstance(); entityslime.setSlimeSize(i / 2); entityslime.setLocationAndAngles(this.posX + (double)f, this.posY + 0.5D, this.posZ + (double)f1, this.rand.nextFloat() * 360.0F, 0.0F); this.worldObj.spawnEntityInWorld(entityslime); } } super.setDead(); } /** * Called by a player entity when they collide with an entity */ public void onCollideWithPlayer(EntityPlayer par1EntityPlayer) { if (this.canDamagePlayer()) { Teleport++; int i = this.getSlimeSize(); if (par1EntityPlayer.username != this.getUser() && this.canEntityBeSeen(par1EntityPlayer) && this.getDistanceSqToEntity(par1EntityPlayer) < 0.6D * (double)i * 0.6D * (double)i && par1EntityPlayer.attackEntityFrom(DamageSource.causeMobDamage(this), (float)this.getAttackStrength())) { this.playSound("mob.attack", 1.0F, (this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F); } } } /** * Indicates weather the slime is able to damage the player (based upon the slime's size) */ protected boolean canDamagePlayer() { return this.getSlimeSize() >= 1; } /** * Gets the amount of damage dealt to the player when "attacked" by the slime. */ protected int getAttackStrength() { return this.getSlimeSize() +1; } /** * Returns the sound this mob makes when it is hurt. */ protected String getHurtSound() { return "mob.slime." + (this.getSlimeSize() > 1 ? "big" : "small"); } /** * Returns the sound this mob makes on death. */ protected String getDeathSound() { return "mob.slime." + (this.getSlimeSize() > 1 ? "big" : "small"); } /** * Returns the item ID for the item the mob drops on death. */ protected int getDropItemId() { return this.getSlimeSize() == 1 ? Item.slimeBall.itemID : 0; } /** * Determines if an entity can be despawned, used on idle far away entities */ protected boolean canDespawn() { if( this.getUser() == "null_TMMP" && this.ticksExisted > 2400) { return false; } else{ return true; } } /** * Checks if the entity's current position is a valid location to spawn this entity. */ public boolean getCanSpawnHere() { Chunk chunk = this.worldObj.getChunkFromBlockCoords(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posZ)); if(worldObj.isDaytime()) { return false; } if(worldObj.provider.terrainType == WorldType.FLAT) { return false; } else { return true; } } /** * Returns the volume for the sounds this mob makes. */ protected float getSoundVolume() { return 0.4F * (float)this.getSlimeSize(); } /** * The speed it takes to move the entityliving's rotationPitch through the faceEntity method. This is only currently * use in wolves. */ public int getVerticalFaceSpeed() { return 0; } /** * Returns true if the slime makes a sound when it jumps (based upon the slime's size) */ protected boolean makesSoundOnJump() { return this.getSlimeSize() > 0; } /** * Returns true if the slime makes a sound when it lands after a jump (based upon the slime's size) */ protected boolean makesSoundOnLand() { return this.getSlimeSize() > 2; } /** * (abstract) Protected helper method to write subclass entity data to NBT. */ public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) { super.writeEntityToNBT(par1NBTTagCompound); par1NBTTagCompound.setInteger("Size", this.getSlimeSize() - 1); par1NBTTagCompound.setString("User", this.getUser()); // par1NBTTagCompound.setInteger("TP", this.Teleport); } /** * (abstract) Protected helper method to read subclass entity data from NBT. */ public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) { super.readEntityFromNBT(par1NBTTagCompound); this.setSlimeSize(par1NBTTagCompound.getInteger("Size") + 1); this.setUser(par1NBTTagCompound.getString("User")); //this.Teleport = par1NBTTagCompound.getInteger("TP"); } } -
[1.6.4] [SOLVED!!!!] Custom Mob Not Saving NBTDATA
pokeyletsplays replied to pokeyletsplays's topic in Modder Support
Okay so I updated everything so it only uses get and set username but it gives me a null-pointer exception and doesn't load the data.but saving seems to work. package Main.Pokey.Mine_EE_Mobs; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ServerData; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.monster.IMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.server.MinecraftServer; import net.minecraft.server.management.ServerConfigurationManager; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraft.world.WorldType; import net.minecraft.world.chunk.Chunk; public class EntityEnderSlime extends EntityLiving implements IMob { public int Teleport = 1; public int Head = 0; public float squishAmount; public float squishFactor; public float prevSquishFactor; /** the time between each jump of the slime */ private int slimeJumpDelay; private int TPin; public EntityEnderSlime(World par1World) { super(par1World); int i = 1 << this.rand.nextInt(3); this.yOffset = 0.0F; this.slimeJumpDelay = this.rand.nextInt(20) + 10; this.setSlimeSize(i); this.setUser(this.getUser()); } protected void entityInit() { super.entityInit(); this.dataWatcher.addObject(16, new Byte((byte)1)); this.dataWatcher.addObject(14, String.valueOf(1)); } protected void setSlimeSize(int par1) { this.dataWatcher.updateObject(16, new Byte((byte)par1)); this.setSize(0.6F * (float)par1, 0.6f * (float)par1); this.setPosition(this.posX, this.posY, this.posZ); if(this.getSlimeSize() == 1){ this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setAttribute((5D)); } if(this.getSlimeSize() > 1){ this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setAttribute((10D)); } this.setHealth(this.getMaxHealth()); this.experienceValue = par1; } /** * Returns the size of the slime. */ public int getSlimeSize() { return this.dataWatcher.getWatchableObjectByte(16); } /** * Returns the size of the slime. */ public String getUser() { return this.dataWatcher.getWatchableObjectString(14); } public void setUser(String string) { this.dataWatcher.updateObject(14, string); } /** * Returns the name of a particle effect that may be randomly created by EntitySlime.onUpdate() */ protected String getSlimeParticle() { return "portal"; } /** * Returns the name of the sound played when the slime jumps. */ protected String getJumpSound() { return ""; } /** * Called to update the entity's position/logic. */ public void onUpdate() { super.onUpdate(); if(this.getUser() != null) { this.setSlimeSize(1); if(this.Head != 0){ this.addPotionEffect(new PotionEffect(Potion.resistance.id,75, 99)); this.addPotionEffect(new PotionEffect(Potion.heal.id,75, 99)); } } if(Head == 1 && this.getUser() != null) { //.getPlayerForUsername(username); //String P; //Minecraft.getMinecraft().thePlayer; this.head(); if(MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(this.getUser()) != null){ this.setLocationAndAngles((double)MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(this.getUser()).posX + 0.0D, (double)MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(this.getUser()).posY + 0.2D, (double)MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(this.getUser()).posZ + 0.0D, 0.0F, 0.0F); } } Random TPXYZ = new Random(); TPin = TPXYZ.nextInt(3); this.fallDistance = 0; if(Teleport > 3) { Teleport = 3; } if(worldObj.isBlockOpaqueCube((int)posX, (int)posY, (int)posZ) == true && !this.isInWater() || worldObj.isBlockOpaqueCube((int)posX, (int)posY + 1, (int)posZ) == true && !this.isInWater()) { this.addPotionEffect(new PotionEffect(Potion.resistance.id,75, 99)); if(!worldObj.isRemote){ this.setLocationAndAngles((double)posX + 0.5D, (double)posY + 2.5D, (double)posZ + 0.5D, 0.0F, 0.0F); this.Teleport(); } this.playSound("mob.endermen.portal", 1.0F, 1.0F); } if(this.isInWater()) { if(!worldObj.isRemote){ this.Teleport(); } } if (!this.worldObj.isRemote && this.worldObj.difficultySetting == 0 && this.getSlimeSize() > 0) { this.isDead = true; } this.squishFactor += (this.squishAmount - this.squishFactor) * 0.5F; this.prevSquishFactor = this.squishFactor; boolean flag = this.onGround; super.onUpdate(); int i; if (this.onGround && !flag) { i = this.getSlimeSize(); for (int j = 0; j < i * 8; ++j) { float f = this.rand.nextFloat() * (float)Math.PI * 2.0F; float f1 = this.rand.nextFloat() * 0.5F + 0.5F; float f2 = MathHelper.sin(f) * (float)i * 0.5F * f1; float f3 = MathHelper.cos(f) * (float)i * 0.5F * f1; this.worldObj.spawnParticle(this.getSlimeParticle(), this.posX + (double)f2, this.boundingBox.minY, this.posZ + (double)f3, 0.0D, 0.0D, 0.0D); } if (this.makesSoundOnLand()) { this.playSound(this.getJumpSound(), this.getSoundVolume(), ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F) / 0.8F); } this.squishAmount = -0.5F; } else if (!this.onGround && flag) { this.squishAmount = 1.0F; } this.alterSquishAmount(); if (this.worldObj.isRemote) { i = this.getSlimeSize(); this.setSize(0.6F * (float)i, 0.6F * (float)i); } } private void head() { if(!worldObj.isRemote){ this.motionX = 0; this.motionY = 0; this.motionZ = 0; } } public boolean hitByEntity(Entity entity) { if (entity instanceof EntityPlayer) { if(((EntityPlayer)entity).getCurrentEquippedItem() != null || ((EntityPlayer)entity).getCurrentEquippedItem() == null && ((EntityPlayer)entity).username != this.getUser()) { if(Teleport >= 1 && this.getHealth() > 1) { this.Teleport(); return true; } else{ return false; } } } else { return true; } return false; } private void Teleport() { Random TP = new Random(); Random TP1 = new Random(); int TeleportX = TP.nextInt(10+1); int TeleportZ = TP1.nextInt(10+1); if(!worldObj.isRemote && TPin == 3){ this.setLocationAndAngles((double)posX + 0.5D, (double)posY + 0.5D, (double)posZ + TeleportZ + 0.5D, 0.0F, 0.0F); } else if(!worldObj.isRemote && TPin == 2){ this.setLocationAndAngles((double)posX + TeleportX + 0.5D, (double)posY + 0.5D, (double)posZ + 0.5D, 0.0F, 0.0F); } else if(!worldObj.isRemote && TPin == 1){ this.setLocationAndAngles((double)posX + 0.5D, (double)posY + 0.5D, (double)posZ - TeleportZ + 0.5D, 0.0F, 0.0F); } else if(!worldObj.isRemote && TPin == 0){ this.setLocationAndAngles((double)posX - TeleportX + 0.5D, (double)posY + 0.5D, (double)posZ + 0.5D, 0.0F, 0.0F); } this.playSound("mob.endermen.portal", 1.0F, 1.0F); Teleport--; } public boolean attackEntityAsMob(Entity entity) { super.attackEntityAsMob(entity); Teleport++; return true; } protected void updateEntityActionState() { this.despawnEntity(); EntityPlayer entityplayer = this.worldObj.getClosestVulnerablePlayerToEntity(this, 16.0D); if (entityplayer != null) { this.faceEntity(entityplayer, 10.0F, 20.0F); } if (this.onGround && this.slimeJumpDelay-- <= 0) { this.slimeJumpDelay = this.getJumpDelay(); if (entityplayer != null) { this.slimeJumpDelay /= 3; } this.isJumping = true; if (this.makesSoundOnJump()) { this.playSound(this.getJumpSound(), this.getSoundVolume(), ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F) * 0.8F); } this.moveStrafing = 1.0F - this.rand.nextFloat() * 2.0F; this.moveForward = (float)(1 * this.getSlimeSize()); } else { this.isJumping = false; if (this.onGround) { this.moveStrafing = this.moveForward = 0.0F; } } } public boolean interact(EntityPlayer par1EntityPlayer) { ItemStack itemstack = par1EntityPlayer.inventory.getCurrentItem(); if (itemstack != null && itemstack.itemID == Item.leash.itemID && !par1EntityPlayer.capabilities.isCreativeMode) { this.setUser(par1EntityPlayer.username); this.setUser(this.getUser()); return true; } if (itemstack == null && !par1EntityPlayer.capabilities.isCreativeMode && this.Head == 1 && this.getUser() == par1EntityPlayer.username) { Head = 0; return true; } if (itemstack == null && !par1EntityPlayer.capabilities.isCreativeMode && this.Head == 0 && this.getUser() == par1EntityPlayer.username) { Head = 1; return true; } if (itemstack != null && itemstack.itemID == Item.flintAndSteel.itemID && !par1EntityPlayer.capabilities.isCreativeMode) { Head = 0; this.setUser(null); return true; } else { return super.interact(par1EntityPlayer); } } protected void alterSquishAmount() { this.squishAmount *= 0.6F; } /** * Gets the amount of time the slime needs to wait between jumps. */ protected int getJumpDelay() { return this.rand.nextInt(15) + 10; } protected EntityEnderSlime createInstance() { return new EntityEnderSlime(this.worldObj); } /** * Will get destroyed next tick. */ public void setDead() { int i = this.getSlimeSize(); if (!this.worldObj.isRemote && i > 1 && this.getHealth() <= 0.0F) { int j = 2 + this.rand.nextInt(3); for (int k = 0; k < j; ++k) { float f = ((float)(k % 2) - 0.5F) * (float)i / 4.0F; float f1 = ((float)(k / 2) - 0.5F) * (float)i / 4.0F; EntityEnderSlime entityslime = this.createInstance(); entityslime.setSlimeSize(i / 2); entityslime.setLocationAndAngles(this.posX + (double)f, this.posY + 0.5D, this.posZ + (double)f1, this.rand.nextFloat() * 360.0F, 0.0F); this.worldObj.spawnEntityInWorld(entityslime); } } super.setDead(); } /** * Called by a player entity when they collide with an entity */ public void onCollideWithPlayer(EntityPlayer par1EntityPlayer) { if (this.canDamagePlayer()) { Teleport++; int i = this.getSlimeSize(); if (par1EntityPlayer.username != this.getUser() && this.canEntityBeSeen(par1EntityPlayer) && this.getDistanceSqToEntity(par1EntityPlayer) < 0.6D * (double)i * 0.6D * (double)i && par1EntityPlayer.attackEntityFrom(DamageSource.causeMobDamage(this), (float)this.getAttackStrength())) { this.playSound("mob.attack", 1.0F, (this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F); } } } /** * Indicates weather the slime is able to damage the player (based upon the slime's size) */ protected boolean canDamagePlayer() { return this.getSlimeSize() >= 1; } /** * Gets the amount of damage dealt to the player when "attacked" by the slime. */ protected int getAttackStrength() { return this.getSlimeSize() +1; } /** * Returns the sound this mob makes when it is hurt. */ protected String getHurtSound() { return "mob.slime." + (this.getSlimeSize() > 1 ? "big" : "small"); } /** * Returns the sound this mob makes on death. */ protected String getDeathSound() { return "mob.slime." + (this.getSlimeSize() > 1 ? "big" : "small"); } /** * Returns the item ID for the item the mob drops on death. */ protected int getDropItemId() { return this.getSlimeSize() == 1 ? Item.slimeBall.itemID : 0; } /** * Determines if an entity can be despawned, used on idle far away entities */ protected boolean canDespawn() { if( this.getUser() == null && this.ticksExisted > 2400) { return false; } return true; } /** * Checks if the entity's current position is a valid location to spawn this entity. */ public boolean getCanSpawnHere() { Chunk chunk = this.worldObj.getChunkFromBlockCoords(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posZ)); if(worldObj.isDaytime()) { return false; } if(worldObj.provider.terrainType == WorldType.FLAT) { return false; } else { return true; } } /** * Returns the volume for the sounds this mob makes. */ protected float getSoundVolume() { return 0.4F * (float)this.getSlimeSize(); } /** * The speed it takes to move the entityliving's rotationPitch through the faceEntity method. This is only currently * use in wolves. */ public int getVerticalFaceSpeed() { return 0; } /** * Returns true if the slime makes a sound when it jumps (based upon the slime's size) */ protected boolean makesSoundOnJump() { return this.getSlimeSize() > 0; } /** * Returns true if the slime makes a sound when it lands after a jump (based upon the slime's size) */ protected boolean makesSoundOnLand() { return this.getSlimeSize() > 2; } /** * (abstract) Protected helper method to write subclass entity data to NBT. */ public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) { super.writeEntityToNBT(par1NBTTagCompound); par1NBTTagCompound.setInteger("Size", this.getSlimeSize() - 1); par1NBTTagCompound.setString("User", this.getUser()); // par1NBTTagCompound.setInteger("TP", this.Teleport); } /** * (abstract) Protected helper method to read subclass entity data from NBT. */ public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) { super.readEntityFromNBT(par1NBTTagCompound); this.setSlimeSize(par1NBTTagCompound.getInteger("Size") + 1); this.setUser(par1NBTTagCompound.getString("User")); //this.Teleport = par1NBTTagCompound.getInteger("TP"); } } -
[1.6.4] [SOLVED!!!!] Custom Mob Not Saving NBTDATA
pokeyletsplays replied to pokeyletsplays's topic in Modder Support
Well it's 5am over here and i should get some sleep. When I wake up maybe an answer will come to me.