From 3dde239c6edc6be45c17b3a2df34a3edf6a9a77b Mon Sep 17 00:00:00 2001 From: sam Date: Tue, 12 Jun 2018 18:52:09 -0700 Subject: [PATCH] fix mana capability --- .../capability/ManaCapabilityProvider.java | 83 ++++++++++++++++++ .../capability/RootsCapabilityManager.java | 87 ++----------------- .../components/ComponentSunflower.java | 39 +++++---- 3 files changed, 110 insertions(+), 99 deletions(-) create mode 100644 src/main/java/elucent/rootsclassic/capability/ManaCapabilityProvider.java diff --git a/src/main/java/elucent/rootsclassic/capability/ManaCapabilityProvider.java b/src/main/java/elucent/rootsclassic/capability/ManaCapabilityProvider.java new file mode 100644 index 00000000..f3486e81 --- /dev/null +++ b/src/main/java/elucent/rootsclassic/capability/ManaCapabilityProvider.java @@ -0,0 +1,83 @@ +package elucent.rootsclassic.capability; + +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumFacing; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.minecraftforge.common.util.INBTSerializable; + +public class ManaCapabilityProvider implements ICapabilityProvider, INBTSerializable, IManaCapability { + + // private EntityPlayer player; + float mana; + float maxMana; + + ManaCapabilityProvider(boolean isNew) { + if (isNew) { + mana = 40; + maxMana = 40; + } + } + + @Override + public boolean hasCapability(Capability capability, EnumFacing facing) { + return RootsCapabilityManager.manaCapability != null && capability == RootsCapabilityManager.manaCapability; + } + + @Override + public T getCapability(Capability capability, EnumFacing facing) { + if (capability == RootsCapabilityManager.manaCapability) { + return RootsCapabilityManager.manaCapability.cast(this); + } + return null; + } + + @Override + public float getMana() { + return mana; + } + + @Override + public float getMaxMana() { + return maxMana; + } + + @Override + public void setMana(float mana) { + this.mana = mana; + if (mana < 0) { + this.mana = 0; + } + if (mana > getMaxMana()) { + this.mana = getMaxMana(); + } + } + + @Override + public void setMaxMana(float maxMana) { + this.maxMana = maxMana; + } + + @Override + public NBTBase serializeNBT() { + NBTTagCompound tag = new NBTTagCompound(); + tag.setFloat("maxMana", getMaxMana()); + tag.setFloat("mana", getMana()); + return tag; + } + + @Override + public void deserializeNBT(NBTBase nbt) { + if (nbt instanceof NBTTagCompound) { + NBTTagCompound tag = (NBTTagCompound) nbt; + //System.out.println("Loading NBT! Mana=" + tag.getFloat("mana") + "/" + tag.getFloat("maxMana")); + if (tag.hasKey("maxMana")) { + setMaxMana(tag.getFloat("maxMana")); + } + if (tag.hasKey("mana")) { + setMana(tag.getFloat("mana")); + } + } + } +} diff --git a/src/main/java/elucent/rootsclassic/capability/RootsCapabilityManager.java b/src/main/java/elucent/rootsclassic/capability/RootsCapabilityManager.java index 34383a7d..ca56db0c 100644 --- a/src/main/java/elucent/rootsclassic/capability/RootsCapabilityManager.java +++ b/src/main/java/elucent/rootsclassic/capability/RootsCapabilityManager.java @@ -2,15 +2,10 @@ import elucent.rootsclassic.Const; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTBase; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.CapabilityInject; import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.ICapabilityProvider; -import net.minecraftforge.common.util.INBTSerializable; import net.minecraftforge.event.AttachCapabilitiesEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -24,83 +19,11 @@ public static void preInit() { } @SubscribeEvent - public void onAddCapabilities(AttachCapabilitiesEvent e) { - class ManaCapabilityProvider implements ICapabilityProvider, INBTSerializable, IManaCapability { - - private EntityPlayer player; - float mana; - float maxMana; - - ManaCapabilityProvider(boolean isNew) { - if (isNew) { - mana = 40; - maxMana = 40; - } - } - - @Override - public boolean hasCapability(Capability capability, EnumFacing facing) { - return manaCapability != null && capability == manaCapability; - } - - @Override - public T getCapability(Capability capability, EnumFacing facing) { - if (capability == manaCapability) { - return manaCapability.cast(this); - } - return null; - } - - @Override - public float getMana() { - return mana; - } - - @Override - public float getMaxMana() { - return maxMana; - } - - @Override - public void setMana(float mana) { - this.mana = mana; - if (mana < 0) { - this.mana = 0; - } - if (mana > getMaxMana()) { - this.mana = getMaxMana(); - } - } - - @Override - public void setMaxMana(float maxMana) { - this.maxMana = maxMana; - } - - @Override - public NBTBase serializeNBT() { - NBTTagCompound tag = new NBTTagCompound(); - tag.setFloat("maxMana", getMaxMana()); - tag.setFloat("mana", getMana()); - return tag; - } - - @Override - public void deserializeNBT(NBTBase nbt) { - if (nbt instanceof NBTTagCompound) { - NBTTagCompound tag = (NBTTagCompound) nbt; - //System.out.println("Loading NBT! Mana=" + tag.getFloat("mana") + "/" + tag.getFloat("maxMana")); - if (tag.hasKey("maxMana")) { - setMaxMana(tag.getFloat("maxMana")); - } - if (tag.hasKey("mana")) { - setMana(tag.getFloat("mana")); - } - } - } + public void onAddCapabilities(AttachCapabilitiesEvent e) { + if (e.getObject() instanceof EntityPlayer) { + // ManaCapabilityProvider provider = new ManaCapabilityProvider(!e.getObject().hasCapability(manaCapability, null)); + e.addCapability(new ResourceLocation(Const.MODID, "manacapability"), + new ManaCapabilityProvider(true)); } - ManaCapabilityProvider provider = new ManaCapabilityProvider(!e.getObject().hasCapability(manaCapability, null)); - e.addCapability(new ResourceLocation(Const.MODID, "manacapability"), provider); - } } diff --git a/src/main/java/elucent/rootsclassic/component/components/ComponentSunflower.java b/src/main/java/elucent/rootsclassic/component/components/ComponentSunflower.java index d413a52f..066f2c67 100644 --- a/src/main/java/elucent/rootsclassic/component/components/ComponentSunflower.java +++ b/src/main/java/elucent/rootsclassic/component/components/ComponentSunflower.java @@ -16,6 +16,7 @@ public class ComponentSunflower extends ComponentBase { + private static final int POTION_DURATION = 15; Random random = new Random(); public ComponentSunflower() { @@ -24,28 +25,32 @@ public ComponentSunflower() { @Override public void doEffect(World world, Entity caster, EnumCastType type, double x, double y, double z, double potency, double duration, double size) { - if (type == EnumCastType.SPELL) { + if (type == EnumCastType.SPELL && caster instanceof EntityLivingBase) { int damageDealt = 0; ArrayList targets = (ArrayList) world.getEntitiesWithinAABB(EntityLivingBase.class, new AxisAlignedBB(x - size, y - size, z - size, x + size, y + size, z + size)); + EntityLivingBase target; for (int i = 0; i < targets.size(); i++) { - if (targets.get(i).getUniqueID() != caster.getUniqueID()) { - if (targets.get(i) instanceof EntityPlayer && !world.getMinecraftServer().isPVPEnabled()) {} - else { - targets.get(i).attackEntityFrom(DamageSource.IN_FIRE, (int) (3 + 2 * potency)); - targets.get(i).setLastAttackedEntity(caster); - targets.get(i).setRevengeTarget((EntityLivingBase) caster); - damageDealt += (int) (3 + 2 * potency); - if (targets.get(i).isEntityUndead()) { - targets.get(i).attackEntityFrom(DamageSource.IN_FIRE, (int) (5 + 4 * potency)); - damageDealt += (int) (5 + 4 * potency); - targets.get(i).setFire((int) (7 + 4 * potency)); - targets.get(i).addPotionEffect(new PotionEffect(Potion.getPotionFromResourceLocation("minecraft:weakness"), 15, 2 + (int) potency)); - targets.get(i).addPotionEffect(new PotionEffect(Potion.getPotionFromResourceLocation("minecraft:slowness"), 15, 2 + (int) potency)); - } - } + target = targets.get(i); + if (target.getUniqueID() == caster.getUniqueID()) { + continue;//dont hurt self } + if (target instanceof EntityPlayer && !world.getMinecraftServer().isPVPEnabled()) { + continue;//no pvp allowed + } + if (target.isEntityUndead()) { + damageDealt += (int) (5 + 4 * potency); + target.attackEntityFrom(DamageSource.IN_FIRE, damageDealt); + target.setFire(damageDealt); + target.addPotionEffect(new PotionEffect(Potion.getPotionFromResourceLocation("minecraft:weakness"), POTION_DURATION, 2 + (int) potency)); + target.addPotionEffect(new PotionEffect(Potion.getPotionFromResourceLocation("minecraft:slowness"), POTION_DURATION, 2 + (int) potency)); + } + else { + damageDealt += (int) (3 + 2 * potency); + } + target.attackEntityFrom(DamageSource.IN_FIRE, damageDealt); + target.setLastAttackedEntity(caster); + target.setRevengeTarget((EntityLivingBase) caster); } - } } }