From 9d08d6c58a0622d31494d612d5b401a1fed186df Mon Sep 17 00:00:00 2001 From: OnyxDarkKnight Date: Fri, 8 May 2015 18:12:00 +0100 Subject: Fixed a few things as well as working towards having the ability to translate everything --- .../jewelrycraft/entities/EntityHeart.java | 102 ++++++++++++++------- 1 file changed, 68 insertions(+), 34 deletions(-) (limited to 'src/main/java/darkknight/jewelrycraft/entities/EntityHeart.java') diff --git a/src/main/java/darkknight/jewelrycraft/entities/EntityHeart.java b/src/main/java/darkknight/jewelrycraft/entities/EntityHeart.java index 899c075..75c0015 100644 --- a/src/main/java/darkknight/jewelrycraft/entities/EntityHeart.java +++ b/src/main/java/darkknight/jewelrycraft/entities/EntityHeart.java @@ -3,24 +3,21 @@ */ package darkknight.jewelrycraft.entities; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import darkknight.jewelrycraft.JewelrycraftMod; -import darkknight.jewelrycraft.network.PacketRequestPlayerInfo; -import darkknight.jewelrycraft.util.PlayerUtils; -import darkknight.jewelrycraft.util.Variables; -import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EnumCreatureAttribute; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.Potion; -import net.minecraft.util.DamageSource; import net.minecraft.world.World; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import darkknight.jewelrycraft.JewelrycraftMod; +import darkknight.jewelrycraft.config.ConfigHandler; +import darkknight.jewelrycraft.network.PacketRequestPlayerInfo; +import darkknight.jewelrycraft.util.JewelrycraftUtil; +import darkknight.jewelrycraft.util.PlayerUtils; +import darkknight.jewelrycraft.util.Variables; /** * @author Sorin @@ -33,54 +30,81 @@ public class EntityHeart extends EntityLiving this.setSize(0.4F, 0.4F); } - public boolean isEntityInvulnerable() + protected void applyEntityAttributes() { - return true; + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(getQuantity()); } - protected boolean canDespawn() + @Override + public void updateEntityActionState() { - return false; + ++this.entityAge; } - @Override - public void onCollideWithPlayer(EntityPlayer player) + public void onLivingUpdate() { - NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); - if (getType() == "Red" && player.getHealth() < player.getMaxHealth()){ - player.heal(2f); - this.setDead(); - } - else if (getType() != "Red"){ - playerInfo.setFloat(getType() + "Heart", playerInfo.getFloat(getType() + "Heart") + 2.0F); - JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); - this.setDead(); + super.onLivingUpdate(); + if (this.entityAge > ConfigHandler.HEART_DESPAWN_TIME) this.setDead(); + } + + protected void collideWithEntity(Entity entity) + { + super.collideWithEntity(entity); + if (!this.worldObj.isRemote && entity instanceof EntityHeart && getType().equals(((EntityHeart)entity).getType())){ + setQuantity(getQuantity() + ((EntityHeart)entity).getQuantity()); + getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(getQuantity() + ((EntityHeart)entity).getQuantity()); + this.heal(getQuantity()); + entity.setDead(); } } @Override - protected void updateEntityActionState() + public void onCollideWithPlayer(EntityPlayer player) { + if (!this.worldObj.isRemote){ + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); + if (getType() == "Red" && player.getHealth() < player.getMaxHealth()){ + float healAmount = player.getMaxHealth() - player.getHealth(); + if (getQuantity() > healAmount){ + player.heal(healAmount); + this.setQuantity(getQuantity() - healAmount); + }else{ + player.heal(getQuantity()); + this.setDead(); + } + }else if (getType().equals("White") && playerInfo.getFloat("WhiteHeart") > 0.1F){ + playerInfo.setFloat(getType() + "Heart", 0F); + player.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(player.getMaxHealth() + playerInfo.getFloat("WhiteHeart")); + this.setDead(); + }else if (getType() != "Red"){ + playerInfo.setFloat(getType() + "Heart", playerInfo.getFloat(getType() + "Heart") + getQuantity()); + JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + this.setDead(); + } + } } - @SideOnly(Side.CLIENT) + @SideOnly (Side.CLIENT) public boolean canRenderOnFire() { return false; } - + protected void entityInit() { super.entityInit(); this.dataWatcher.addObject(16, "Red"); + this.dataWatcher.addObject(17, 2f); } public void writeEntityToNBT(NBTTagCompound nbt) { super.writeEntityToNBT(nbt); nbt.setString("Type", getType()); + nbt.setFloat("Quantity", getQuantity()); } - + /** * (abstract) Protected helper method to read subclass entity data from NBT. */ @@ -88,21 +112,31 @@ public class EntityHeart extends EntityLiving { super.readEntityFromNBT(nbt); setType(nbt.getString("Type")); + setQuantity(nbt.getFloat("Quantity")); } - + public String getType() { return this.dataWatcher.getWatchableObjectString(16); } - + public void setType(String type) { this.dataWatcher.updateObject(16, type); } + public Float getQuantity() + { + return this.dataWatcher.getWatchableObjectFloat(17); + } + + public void setQuantity(Float qty) + { + this.dataWatcher.updateObject(17, qty); + } + public EnumCreatureAttribute getCreatureAttribute() { - return EnumCreatureAttribute.UNDEAD; + return JewelrycraftUtil.HEART; } - } -- cgit v1.2.3