From b8b41aa5846dae5a9bbf4fee82020f1d9e2b2a48 Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Mon, 12 Aug 2024 17:08:54 -0400 Subject: Initial commit --- .../fyresmodjam/blessings/marks/VampirismMark.java | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/main/java/fyresmodjam/blessings/marks/VampirismMark.java (limited to 'src/main/java/fyresmodjam/blessings/marks/VampirismMark.java') diff --git a/src/main/java/fyresmodjam/blessings/marks/VampirismMark.java b/src/main/java/fyresmodjam/blessings/marks/VampirismMark.java new file mode 100644 index 0000000..5aa1da4 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/marks/VampirismMark.java @@ -0,0 +1,67 @@ +package fyresmodjam.blessings.marks; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.event.entity.living.LivingHurtEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent.ServerTickEvent; + +public class VampirismMark extends Mark { + + @Override + public String name() { + return "Vampirism"; + } + + @Override + public String description() { + return "BENEFIT - Heal a substantial amount of the damage done to enemies\nDRAWBACK - Greatly weakened during the day and ignited in direct sunlight"; + } + + @Override + public float onIncomingDamage(LivingHurtEvent event, + float damageMultiplier) { + if (event.getEntity().getBrightness() > 0.5F && event + .getEntity().world.canBlockSeeSky(event + .getEntity() + .getPosition())) { + return damageMultiplier + 0.4F; + } + + return damageMultiplier; + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + Entity trueSource = event.getSource().getTrueSource(); + + if (trueSource instanceof EntityLivingBase) { + ((EntityLivingBase) trueSource) + .heal((event.getAmount() + * damageMultiplier) + * 0.25F); + + boolean seeTheSky = trueSource.world + .canBlockSeeSky(trueSource + .getPosition()); + if (trueSource.getBrightness() > 0.5F + && seeTheSky) { + return damageMultiplier - 0.4F; + } + } + + return damageMultiplier; + } + + @Override + public void commonTick(ServerTickEvent stev, EntityPlayer play) { + boolean seeTheSky = play.world + .canBlockSeeSky(play.getPosition()); + + if (play.getBrightness() > 0.5f && seeTheSky + && play.ticksExisted % 20 == 0) { + play.setFire(5); + } + } +} -- cgit v1.2.3