diff options
Diffstat (limited to 'src/main/java/fyresmodjam/blessings')
34 files changed, 1510 insertions, 0 deletions
diff --git a/src/main/java/fyresmodjam/blessings/Blessing.java b/src/main/java/fyresmodjam/blessings/Blessing.java new file mode 100644 index 0000000..4c5e6a1 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/Blessing.java @@ -0,0 +1,119 @@ +package fyresmodjam.blessings; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.event.entity.living.LivingDeathEvent; +import net.minecraftforge.event.entity.living.LivingHurtEvent; +import net.minecraftforge.event.entity.player.PlayerEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent.ServerTickEvent; + +/** + * Represents a blessing bestowed to a player. + * + * @author bjculkin + */ +public abstract class Blessing { + private static int nextOrdinal = 0; + + public final int ordinal; + + protected Blessing() { + ordinal = nextOrdinal++; + } + + public boolean hasCustomName() { + return false; + } + + public String customName() { + return "Blessing of the " + name(); + } + + /** + * Get the name of this blessing. + * + * @return The name of this blessing. + */ + public abstract String name(); + + /** + * Get the description of this blessing. + * + * @return The description of this blessing. + */ + public abstract String description(); + + /** + * Modify the player's break speed. + * + * @param pebsev + * The break speed event. + */ + public void checkBreakSpeed(PlayerEvent.BreakSpeed pebsev) { + return; + } + + /** + * Correct inappropriate blessings for mobs. + * + * @param ent + * The mob to correct for. + */ + public void correctBlessing(Entity ent) { + return; + } + + /** + * Do something on every tick. + * + * @param stev + * The tick event + */ + public void commonTick(ServerTickEvent stev, EntityPlayer play) { + return; + } + + /** + * Handle adjusting the damage multiplier for mob knowledge. + * + * @param lhev + * The event being dealt with. + * + * @param pickedDamageBonus + * The base damage bonus for mob knowledge. + * + * @return + * The new damage bonus for mob knowledge + */ + public float adjustMobKnowledgeBonus(LivingHurtEvent lhev, float pickedDamageBonus) { + return pickedDamageBonus; + } + + /** + * Handle adjusting the damage multiplier for weapon knowledge. + * + * @param lhev + * The event being dealt with. + * + * @param pickedDamageBonus + * The base damage bonus for weapon knowledge. + * + * @return + * The new damage bonus for weapon knowledge + */ + public float adjustWeaponKnowledgeBonus(LivingHurtEvent lhev, float pickedDamageBonus) { + return pickedDamageBonus; + } + + public float onIncomingDamage(LivingHurtEvent lhev, float damageMultiplier) { + return damageMultiplier; + } + + public float onOutgoingDamage(LivingHurtEvent event, float damageMultiplier) { + return damageMultiplier; + } + + public void onMobKill(LivingDeathEvent event) { + return; + } +} diff --git a/src/main/java/fyresmodjam/blessings/BlessingUtils.java b/src/main/java/fyresmodjam/blessings/BlessingUtils.java new file mode 100644 index 0000000..c240a7a --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/BlessingUtils.java @@ -0,0 +1,216 @@ +package fyresmodjam.blessings; + +import java.util.HashMap; +import java.util.Map; + +import fyresmodjam.ModjamMod; +import fyresmodjam.handlers.CommonTickHandler; +import fyresmodjam.misc.EntityStatHelper; + +import fyresmodjam.blessings.marks.*; +import fyresmodjam.blessings.standard.*; + +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; + +public class BlessingUtils { + public final static Map<String, Blessing> playerBlessings; + public final static Map<String, Blessing> mobBlessings; + + static { + playerBlessings = new HashMap<String, Blessing>(); + mobBlessings = new HashMap<String, Blessing>(); + + createStandardBlessings(); + createMarks(); + } + + private static void createMarks() { + BerserkingMark berserkingMark = new BerserkingMark(); + FalseLifeMark falseLifeMark = new FalseLifeMark(); + GuardingMark guardingMark = new GuardingMark(); + HuntingMark huntingMark = new HuntingMark(); + ScoutingMark scoutingMark = new ScoutingMark(); + VampirismMark vampirismMark = new VampirismMark(); + WarMark warMark = new WarMark(); + + addOmniBlessing("MarkBerserking", berserkingMark); + addOmniBlessing("MarkFalseLife", falseLifeMark); + addOmniBlessing("MarkGuarding", guardingMark); + addOmniBlessing("MarkHunting", huntingMark); + addOmniBlessing("MarkVampirism", vampirismMark); + addOmniBlessing("MarkWar", warMark); + + playerBlessings.put("MarkScouting", scoutingMark); + } + + private static void createStandardBlessings() { + AlchemistBlessing alchemistBlessing = new AlchemistBlessing(); + BerserkerBlessing berserkerBlessing = new BerserkerBlessing(); + GuardianBlessing guardianBlessing = new GuardianBlessing(); + HunterBlessing hunterBlessing = new HunterBlessing(); + InfernoBlessing infernoBlessing = new InfernoBlessing(); + LonerBlessing lonerBlessing = new LonerBlessing(); + ParatrooperBlessing paratrooperBlessing = new ParatrooperBlessing(); + PorcupineBlessing porcupineBlessing = new PorcupineBlessing(); + SwampBlessing swampBlessing = new SwampBlessing(); + ThickSkinnedBlessing thickSkinnedBlessing = new ThickSkinnedBlessing(); + VampireBlessing vampireBlessing = new VampireBlessing(); + WarriorBlessing warriorBlessing = new WarriorBlessing(); + DiverBlessing diverBlessing = new DiverBlessing(); + LooterBlessing looterBlessing = new LooterBlessing(); + LumberjackBlessing lumberjackBlessing = new LumberjackBlessing(); + MechanicBlessing mechanicBlessing = new MechanicBlessing(); + MinerBlessing minerBlessing = new MinerBlessing(); + NinjaBlessing ninjaBlessing = new NinjaBlessing(); + ScholarBlessing scholarBlessing = new ScholarBlessing(); + ThiefBlessing thiefBlessing = new ThiefBlessing(); + + addOmniBlessing("BlessingWarrior", warriorBlessing); + addOmniBlessing("BlessingHunter", hunterBlessing); + addOmniBlessing("BlessingSwamp", swampBlessing); + addOmniBlessing("BlessingGuardian", guardianBlessing); + addOmniBlessing("BlessingVampire", vampireBlessing); + addOmniBlessing("BlessingInferno", infernoBlessing); + addOmniBlessing("BlessingLoner", lonerBlessing); + addOmniBlessing("BlessingParatrooper", + paratrooperBlessing); + addOmniBlessing("BlessingPorcupine", porcupineBlessing); + addOmniBlessing("BlessingThick-Skinned", + thickSkinnedBlessing); + + PaladinBlessing paladinBlessing = new PaladinBlessing(); + + playerBlessings.put("BlessingAlchemist", + alchemistBlessing); + playerBlessings.put("BlessingBerserker", + berserkerBlessing); + playerBlessings.put("BlessingDiver", diverBlessing); + playerBlessings.put("BlessingLooter", looterBlessing); + playerBlessings.put("BlessingLumberjack", + lumberjackBlessing); + playerBlessings.put("BlessingMechanic", mechanicBlessing); + playerBlessings.put("BlessingMiner", minerBlessing); + playerBlessings.put("BlessingNinja", ninjaBlessing); + playerBlessings.put("BlessingPaladin", paladinBlessing); + playerBlessings.put("BlessingScholar", scholarBlessing); + playerBlessings.put("BlessingThief", thiefBlessing); + } + + private static void addOmniBlessing(String blessName, + Blessing blessInst) { + playerBlessings.put(blessName, blessInst); + mobBlessings.put(blessName, blessInst); + } + + public static boolean hasDisadvantage() { + if (CommonTickHandler.worldData != null) { + String currentDisadvantage = CommonTickHandler.worldData + .getDisadvantage(); + + return currentDisadvantage != null + && !(currentDisadvantage + .equals("")); + } + + return false; + } + + public static boolean hasDisadvantage(String disadvantage) { + if (hasDisadvantage()) { + return CommonTickHandler.worldData + .getDisadvantage() + .equals(disadvantage); + } + + return false; + } + + public static String getDisadvantage() { + return CommonTickHandler.worldData.currentDisadvantage; + } + + public static String getBlessing(Entity ent) { + return ent.getEntityData().getString("Blessing"); + } + + public static boolean hasBlessing(Entity ent) { + NBTTagCompound entityData = ent.getEntityData(); + + return entityData.hasKey("Blessing") && !(entityData + .getString("Blessing").equals("")); + } + + public static boolean hasBlessing(Entity ent, String blessing) { + if (hasBlessing(ent)) { + return ent.getEntityData().getString("Blessing") + .equals(blessing); + } + + return false; + } + + public static boolean hasBlessingCounter(Entity ent) { + return EntityStatHelper.hasStat(ent, "BlessingCounter"); + } + + public static int getBlessingCounter(Entity ent) { + return Integer.parseInt(EntityStatHelper.getStat(ent, + "BlessingCounter")); + } + + public static boolean isBlessingActive(Entity ent) { + return ent.getEntityData().hasKey("BlessingActive") + && ent.getEntityData().getBoolean( + "BlessingActive"); + } + + public static Blessing getBlessingInstance(String blessing) { + if (playerBlessings.containsKey(blessing)) { + return playerBlessings.get(blessing); + } else { + System.err.printf( + "ERROR: Blessing '%s' not found, using default blessing\n", + blessing); + return playerBlessings.get("BlessingGuardian"); + } + } + + public static String getPlayerBlessing() { + int n = ModjamMod.r.nextInt(playerBlessings.size()); + + int i = 0; + for (String blessing : playerBlessings.keySet()) { + if (i >= n) { + return blessing; + } + + i += 1; + } + + System.err.println( + "ERROR: Couldn't get blessing for player; using default."); + return "BlessingGuardian"; + } + + public static String getMobBlessing() { + int n = ModjamMod.r.nextInt(mobBlessings.size()); + + int i = 0; + for (String blessing : mobBlessings.keySet()) { + if (i >= n) { + return blessing; + } + + i += 1; + } + + System.err.println( + "ERROR: Couldn't get blessing for mob; using default."); + return "BlessingGuardian"; + } + + public static Blessing getBlessingInstance(Entity entity) { + return getBlessingInstance(getBlessing(entity)); + } +} diff --git a/src/main/java/fyresmodjam/blessings/marks/ArcaneNullityMark.java b/src/main/java/fyresmodjam/blessings/marks/ArcaneNullityMark.java new file mode 100644 index 0000000..3c127df --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/marks/ArcaneNullityMark.java @@ -0,0 +1,36 @@ +package fyresmodjam.blessings.marks; + +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class ArcaneNullityMark extends Mark { + + @Override + public String name() { + return "Arcane Nullity"; + } + + @Override + public String description() { + return "BENEFIT - Take no damage from magic\nDRAWBACK - Deal no damage with magic"; + } + + @Override + public float onIncomingDamage(LivingHurtEvent lhev, + float damageMultiplier) { + if (lhev.getSource().isMagicDamage()) { + lhev.setCanceled(true); + } + + return damageMultiplier; + } + + @Override + public float onOutgoingDamage(LivingHurtEvent lhev, + float damageMultiplier) { + if (lhev.getSource().isMagicDamage()) { + lhev.setCanceled(true); + } + + return damageMultiplier; + } +} diff --git a/src/main/java/fyresmodjam/blessings/marks/BerserkingMark.java b/src/main/java/fyresmodjam/blessings/marks/BerserkingMark.java new file mode 100644 index 0000000..a592175 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/marks/BerserkingMark.java @@ -0,0 +1,28 @@ +package fyresmodjam.blessings.marks; + +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class BerserkingMark extends Mark { + + @Override + public String name() { + return "Berserking"; + } + + @Override + public String description() { + return "BENEFIT - Deal greatly increased damage\nDRAWBACK - Take greatly increased damage"; + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + return damageMultiplier + .5f; + } + + @Override + public float onIncomingDamage(LivingHurtEvent event, + float damageMultiplier) { + return damageMultiplier + .5f; + } +} diff --git a/src/main/java/fyresmodjam/blessings/marks/FalseLifeMark.java b/src/main/java/fyresmodjam/blessings/marks/FalseLifeMark.java new file mode 100644 index 0000000..88f467a --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/marks/FalseLifeMark.java @@ -0,0 +1,58 @@ +package fyresmodjam.blessings.marks; + +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class FalseLifeMark extends Mark { + + @Override + public String name() { + return "False Life"; + } + + @Override + public String description() { + return "BENEFIT - Rally from a fatal injury\nDRAWBACK - Lose permanent health to do so"; + } + + @Override + public float onIncomingDamage(LivingHurtEvent event, + float damageMultiplier) { + float totalAmount = Math.max(0.5f, + event.getAmount() * damageMultiplier); + + if (totalAmount > event.getEntityLiving().getMaxHealth()) { + event.setCanceled(true); + + event.getEntityLiving().getEntityAttribute( + SharedMonsterAttributes.MAX_HEALTH) + .setBaseValue(event.getEntityLiving() + .getMaxHealth() + / 0.75f); + + event.getEntityLiving().setHealth( + event.getEntityLiving().getMaxHealth()); + + // TODO figure out potions + /* + event.getEntityLiving() + .addPotionEffect(new PotionEffect( + Potion.moveSpeed.id, + 30, 1)); + event.getEntityLiving() + .addPotionEffect(new PotionEffect( + Potion.resistance.id, + 20, 1)); + event.getEntityLiving() + .addPotionEffect(new PotionEffect( + Potion.damageBoost.id, + 20, 1)); + */ + return 0; + } + + return damageMultiplier; + } +} diff --git a/src/main/java/fyresmodjam/blessings/marks/GuardingMark.java b/src/main/java/fyresmodjam/blessings/marks/GuardingMark.java new file mode 100644 index 0000000..db4fc97 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/marks/GuardingMark.java @@ -0,0 +1,27 @@ +package fyresmodjam.blessings.marks; + +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class GuardingMark extends Mark { + @Override + public String name() { + return "Guarding"; + } + + @Override + public String description() { + return "BENEFIT - Take less damage\nDRAWBACK - Deal less damage"; + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + return damageMultiplier - 1f; + } + + @Override + public float onIncomingDamage(LivingHurtEvent lhev, + float damageMultiplier) { + return damageMultiplier - 1f; + } +} diff --git a/src/main/java/fyresmodjam/blessings/marks/HolyLightMark.java b/src/main/java/fyresmodjam/blessings/marks/HolyLightMark.java new file mode 100644 index 0000000..96d5bab --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/marks/HolyLightMark.java @@ -0,0 +1,32 @@ +package fyresmodjam.blessings.marks; + +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class HolyLightMark extends Mark { + + @Override + public String name() { + return "Holy Light"; + } + + @Override + public String description() { + return "BENEFIT - Deal greatly increased damage to undead\nDRAWBACK - Heal non-undead for a small amount"; + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + if (event.getEntityLiving().isEntityUndead()) { + return damageMultiplier + .5f; + } + + float healed = Math.max(0.5f, + (event.getAmount() * damageMultiplier) + * 0.25f); + + event.getEntityLiving().heal(healed); + + return damageMultiplier; + } +} diff --git a/src/main/java/fyresmodjam/blessings/marks/HuntingMark.java b/src/main/java/fyresmodjam/blessings/marks/HuntingMark.java new file mode 100644 index 0000000..b92ee7b --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/marks/HuntingMark.java @@ -0,0 +1,37 @@ +package fyresmodjam.blessings.marks; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.IRangedAttackMob; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class HuntingMark extends Mark { + + @Override + public String name() { + return "Hunting"; + } + + @Override + public String description() { + return "BENEFIT - Deal greatly increased damage with projectile weapons\nDRAWBACK - Deal less damage with all other weapons"; + } + + @Override + public void correctBlessing(Entity ent) { + if (!(ent instanceof IRangedAttackMob)) { + ent.getEntityData().setString("Blessing", + "MarkWar"); + } + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + if (event.getSource().isProjectile()) { + return damageMultiplier + 0.4f; + } + + return damageMultiplier - 0.2f; + } + +} diff --git a/src/main/java/fyresmodjam/blessings/marks/Mark.java b/src/main/java/fyresmodjam/blessings/marks/Mark.java new file mode 100644 index 0000000..0181fd8 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/marks/Mark.java @@ -0,0 +1,15 @@ +package fyresmodjam.blessings.marks; + +import fyresmodjam.blessings.Blessing; + +public abstract class Mark extends Blessing { + @Override + public boolean hasCustomName() { + return true; + } + + @Override + public String customName() { + return "Mark of " + name(); + } +} diff --git a/src/main/java/fyresmodjam/blessings/marks/RetaliationMark.java b/src/main/java/fyresmodjam/blessings/marks/RetaliationMark.java new file mode 100644 index 0000000..a0537b2 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/marks/RetaliationMark.java @@ -0,0 +1,57 @@ +package fyresmodjam.blessings.marks; + +import fyresmodjam.ModjamMod; +import fyresmodjam.misc.DamageSources; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class RetaliationMark extends Mark { + + private static final double RETALIATION_CHANCE = 0.05; + + @Override + public String name() { + return "Retaliation"; + } + + @Override + public String description() { + return "BENEFIT - Have a chance to reflect attacks\nDRAWBACK - Have a chance for your attacks to be reflected"; + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + if (!event.getSource().damageType.equals("retaliation")) { + // Don't retaliate for retaliation + if (ModjamMod.r.nextDouble() < RETALIATION_CHANCE) { + event.getEntityLiving().attackEntityFrom( + DamageSources.retaliation, + Math.max(0.5f, event + .getAmount() + * damageMultiplier)); + + event.setCanceled(true); + } + } + + return damageMultiplier; + } + + @Override + public float onIncomingDamage(LivingHurtEvent event, + float damageMultiplier) { + if (!event.getSource().damageType.equals("retaliation")) { + // Don't retaliate for retaliation + if (ModjamMod.r.nextDouble() < RETALIATION_CHANCE) { + event.getEntityLiving().attackEntityFrom( + DamageSources.retaliation, + Math.max(0.5f, event.getAmount() + * damageMultiplier)); + + event.setCanceled(true); + } + } + + return damageMultiplier; + } +} diff --git a/src/main/java/fyresmodjam/blessings/marks/ScoutingMark.java b/src/main/java/fyresmodjam/blessings/marks/ScoutingMark.java new file mode 100644 index 0000000..1995c14 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/marks/ScoutingMark.java @@ -0,0 +1,13 @@ +package fyresmodjam.blessings.marks; + +public class ScoutingMark extends Mark { + @Override + public String name() { + return "Scouting"; + } + + @Override + public String description() { + return "BENEFIT - You can see traps without sneaking\nDRAWBACK - Take increased damage from traps"; + } +} 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); + } + } +} diff --git a/src/main/java/fyresmodjam/blessings/marks/WarMark.java b/src/main/java/fyresmodjam/blessings/marks/WarMark.java new file mode 100644 index 0000000..e4276c7 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/marks/WarMark.java @@ -0,0 +1,28 @@ +package fyresmodjam.blessings.marks; + +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class WarMark extends Mark { + + @Override + public String name() { + return "War"; + } + + @Override + public String description() { + return "BENEFIT - Deal greatly increased damage with melee weapons\nDRAWBACK - Deal less damage with all other weapons"; + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + if ((event.getSource().getDamageType().equals("player") + || event.getSource().getDamageType() + .equals("mob"))) { + return damageMultiplier + 0.4f; + } + + return damageMultiplier - 0.2f; + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/AlchemistBlessing.java b/src/main/java/fyresmodjam/blessings/standard/AlchemistBlessing.java new file mode 100644 index 0000000..0e36758 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/AlchemistBlessing.java @@ -0,0 +1,16 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; + +public class AlchemistBlessing extends Blessing { + + @Override + public String name() { + return "Alchemist"; + } + + @Override + public String description() { + return "All mystery potions act like wildcard potions"; + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/BerserkerBlessing.java b/src/main/java/fyresmodjam/blessings/standard/BerserkerBlessing.java new file mode 100644 index 0000000..4e7f784 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/BerserkerBlessing.java @@ -0,0 +1,50 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import fyresmodjam.blessings.BlessingUtils; +import fyresmodjam.misc.EntityStatHelper; +import net.minecraft.entity.Entity; +import net.minecraftforge.event.entity.living.LivingDeathEvent; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class BerserkerBlessing extends Blessing { + + @Override + public String name() { + return "Berserker"; + } + + @Override + public String description() { + return "@@§ePASSIVE - §oKills are added as berserk charges. (10 max)@@§eACTIVE - §oTurn on/off berserk mode. While berserk mode is active, you do increased damage, and expend a counter every 2 seconds"; + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + if (BlessingUtils.isBlessingActive( + event.getSource().getTrueSource())) { + return damageMultiplier + 0.3f; + } + + return damageMultiplier; + } + + @Override + public void onMobKill(LivingDeathEvent event) { + Entity trueSource = event.getSource().getTrueSource(); + + if (!EntityStatHelper.hasStat(trueSource, + "BlessingCounter")) { + EntityStatHelper.giveStat(trueSource, + "BlessingCounter", 0); + } + + EntityStatHelper.giveStat(trueSource, "BlessingCounter", + Math.min(10, Integer.parseInt( + EntityStatHelper.getStat( + trueSource, + "BlessingCounter")) + + 1)); + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/DiverBlessing.java b/src/main/java/fyresmodjam/blessings/standard/DiverBlessing.java new file mode 100644 index 0000000..c0b8c72 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/DiverBlessing.java @@ -0,0 +1,23 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.fml.common.gameevent.TickEvent.ServerTickEvent; + +public class DiverBlessing extends Blessing { + + @Override + public String name() { + return "Diver"; + } + + @Override + public String description() { + return "Breathe underwater"; + } + + @Override + public void commonTick(ServerTickEvent stev, EntityPlayer play) { + play.setAir(0); + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/GuardianBlessing.java b/src/main/java/fyresmodjam/blessings/standard/GuardianBlessing.java new file mode 100644 index 0000000..47015dd --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/GuardianBlessing.java @@ -0,0 +1,23 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class GuardianBlessing extends Blessing { + + @Override + public String name() { + return "Guardian"; + } + + @Override + public String description() { + return "Reduce proportional damage taken"; + } + + @Override + public float onIncomingDamage(LivingHurtEvent lhev, + float damageMultiplier) { + return damageMultiplier - 0.2f; + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/HunterBlessing.java b/src/main/java/fyresmodjam/blessings/standard/HunterBlessing.java new file mode 100644 index 0000000..bd2892f --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/HunterBlessing.java @@ -0,0 +1,37 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import net.minecraft.entity.Entity; +import net.minecraft.entity.IRangedAttackMob; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class HunterBlessing extends Blessing { + + @Override + public String name() { + return "Hunter"; + } + + @Override + public String description() { + return "Increased projectile damage"; + } + + @Override + public void correctBlessing(Entity ent) { + if (!(ent instanceof IRangedAttackMob)) { + ent.getEntityData().setString("Blessing", + "BlessingWarrior"); + } + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + if (event.getSource().isProjectile()) { + return damageMultiplier + 0.2f; + } + + return damageMultiplier; + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/InfernoBlessing.java b/src/main/java/fyresmodjam/blessings/standard/InfernoBlessing.java new file mode 100644 index 0000000..40454aa --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/InfernoBlessing.java @@ -0,0 +1,55 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import fyresmodjam.misc.DamageSources; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.event.entity.living.LivingHurtEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent.ServerTickEvent; + +public class InfernoBlessing extends Blessing { + + @Override + public String name() { + return "Inferno"; + } + + @Override + public String description() { + return "Benefit: Take no fire damage, and do increased damage while on fire\nDrawback: Take damge while wet"; + } + + @Override + public void commonTick(ServerTickEvent stev, EntityPlayer play) { + if (play.isWet() && play.ticksExisted % 10 == 0) { + play.attackEntityFrom(DamageSources.inferno, 1.0F); + } + } + + @Override + public float onIncomingDamage(LivingHurtEvent event, + float damageMultiplier) { + if (event.getSource().isFireDamage() + || event.getSource().getDamageType() + .equals("inFire") + || event.getSource().getDamageType() + .equals("onFire") + || event.getSource().getDamageType() + .equals("lava")) { + event.setCanceled(true); + + return 0; + } + + return damageMultiplier; + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + if (event.getSource().getTrueSource().isBurning()) { + return damageMultiplier + 0.35f; + } + + return damageMultiplier; + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/LonerBlessing.java b/src/main/java/fyresmodjam/blessings/standard/LonerBlessing.java new file mode 100644 index 0000000..ac52ec5 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/LonerBlessing.java @@ -0,0 +1,38 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class LonerBlessing extends Blessing { + + @Override + public String name() { + return "Loner"; + } + + @Override + public String description() { + return "Do higher damage the lower your health is"; + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + Entity trueSource = event.getSource().getTrueSource(); + + if (trueSource instanceof EntityLivingBase) { + EntityLivingBase livingSource = (EntityLivingBase) trueSource; + + float healthRatio = livingSource.getHealth() + / livingSource.getMaxHealth(); + + float scaleFactor = 1.0F - healthRatio; + + return damageMultiplier + 0.35F * scaleFactor; + } + + return damageMultiplier; + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/LooterBlessing.java b/src/main/java/fyresmodjam/blessings/standard/LooterBlessing.java new file mode 100644 index 0000000..bbf9ec5 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/LooterBlessing.java @@ -0,0 +1,32 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.ModjamMod; +import fyresmodjam.blessings.Blessing; +import net.minecraftforge.event.entity.living.LivingDeathEvent; + +public class LooterBlessing extends Blessing { + + @Override + public String name() { + return "Looter"; + } + + @Override + public String description() { + return "Enemies have a chance to drop dungeon loot"; + } + + @Override + public void onMobKill(LivingDeathEvent event) { + if (ModjamMod.r.nextInt(50) == 0) { + // TODO figure out how loot gen works + + //if (!event.entity.worldObj.isRemote) { + // event.entity.dropItem(ChestGenHooks + // .getOneItem(ChestGenHooks.DUNGEON_CHEST, + // ModjamMod.r) + // .getItem(), 1); + //} + } + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/LumberjackBlessing.java b/src/main/java/fyresmodjam/blessings/standard/LumberjackBlessing.java new file mode 100644 index 0000000..6ef337e --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/LumberjackBlessing.java @@ -0,0 +1,59 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemTool; +import net.minecraft.util.EnumHand; +import net.minecraftforge.event.entity.living.LivingHurtEvent; +import net.minecraftforge.event.entity.player.PlayerEvent.BreakSpeed; + +public class LumberjackBlessing extends Blessing { + @Override + public String name() { + return "Lumberjack"; + } + + @Override + public String description() { + return "Increased breaking speed on wooden blocks, and increased damage with axes"; + } + + @Override + public void checkBreakSpeed(BreakSpeed pebsev) { + if (pebsev.getState().getMaterial() == Material.WOOD) { + pebsev.setNewSpeed( + pebsev.getOriginalSpeed() * 1.25F); + } + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + ItemStack held = null; + + if (event.getSource() + .getTrueSource() instanceof EntityLivingBase) { + held = ((EntityLivingBase) event.getSource() + .getTrueSource()).getHeldItem( + EnumHand.MAIN_HAND); + } + + if (held != null && itemIsAxe(held)) { + return damageMultiplier + 0.15F; + } + + return damageMultiplier; + } + + private boolean itemIsAxe(ItemStack held) { + if (held.getItem() instanceof ItemTool) { + return ((ItemTool) held.getItem()) + .getToolClasses(held) + .contains("axe"); + } + + return false; + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/MechanicBlessing.java b/src/main/java/fyresmodjam/blessings/standard/MechanicBlessing.java new file mode 100644 index 0000000..b2a80e6 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/MechanicBlessing.java @@ -0,0 +1,17 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; + +public class MechanicBlessing extends Blessing { + + @Override + public String name() { + return "Mechanic"; + } + + @Override + public String description() { + return "@@§ePASSIVE - §oYou disarm traps more often and have an increased chance to salvage disarmed traps.\n@@§eACTIVE - §oOnce per day, you may disarm and salvage a trap for free"; + } + +} diff --git a/src/main/java/fyresmodjam/blessings/standard/MinerBlessing.java b/src/main/java/fyresmodjam/blessings/standard/MinerBlessing.java new file mode 100644 index 0000000..f261faa --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/MinerBlessing.java @@ -0,0 +1,61 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemTool; +import net.minecraft.util.EnumHand; +import net.minecraftforge.event.entity.living.LivingHurtEvent; +import net.minecraftforge.event.entity.player.PlayerEvent.BreakSpeed; + +public class MinerBlessing extends Blessing { + @Override + public String name() { + return "Miner"; + } + + @Override + public String description() { + return "Increased breaking speed on stone and iron blocks, and increased damage with pickaxes"; + } + + @Override + public void checkBreakSpeed(BreakSpeed pebsev) { + if (pebsev.getState().getMaterial() == Material.ROCK + || pebsev.getState() + .getMaterial() == Material.IRON) { + pebsev.setNewSpeed( + pebsev.getOriginalSpeed() * 1.25F); + } + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + ItemStack held = null; + + if (event.getSource() + .getTrueSource() instanceof EntityLivingBase) { + held = ((EntityLivingBase) event.getSource() + .getTrueSource()).getHeldItem( + EnumHand.MAIN_HAND); + } + + if (held != null && itemIsPickaxe(held)) { + return damageMultiplier + 0.2F; + } + + return damageMultiplier; + } + + private boolean itemIsPickaxe(ItemStack held) { + if (held.getItem() instanceof ItemTool) { + return ((ItemTool) held.getItem()) + .getToolClasses(held) + .contains("pickaxe"); + } + + return false; + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/NinjaBlessing.java b/src/main/java/fyresmodjam/blessings/standard/NinjaBlessing.java new file mode 100644 index 0000000..3883f14 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/NinjaBlessing.java @@ -0,0 +1,55 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraftforge.event.entity.living.LivingHurtEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent.ServerTickEvent; + +public class NinjaBlessing extends Blessing { + + @Override + public String name() { + return "Ninja"; + } + + @Override + public String description() { + return "- Go invisible while sneaking\n- Attacks on enemies with full health deal 2x damage"; + } + + @Override + public void commonTick(ServerTickEvent stev, EntityPlayer player) { + if (player.isSneaking()) { + // TODO figure out potions + // PotionEffect e = player.getActivePotionEffect( + // Potion.invisibility); + + // if (e == null || player.getActivePotionEffect( + // Potion.invisibility) + // .getDuration() < 10) { + // player.addPotionEffect(new PotionEffect( + // Potion.invisibility.id, 10, + // 1, false)); + // } + } + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + boolean atMaxHealth = event.getEntityLiving() + .getHealth() == event.getEntityLiving() + .getMaxHealth(); + + if (event.getEntityLiving() != null + && event.getSource().getTrueSource() + .isSneaking() + && atMaxHealth) { + return damageMultiplier + 1.0F; + } + + return damageMultiplier; + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/PaladinBlessing.java b/src/main/java/fyresmodjam/blessings/standard/PaladinBlessing.java new file mode 100644 index 0000000..9979931 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/PaladinBlessing.java @@ -0,0 +1,27 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class PaladinBlessing extends Blessing { + + @Override + public String name() { + return "Paladin"; + } + + @Override + public String description() { + return "Deal bonus damage to undead"; + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + if (event.getEntityLiving().isEntityUndead()) { + return damageMultiplier + .2f; + } + + return damageMultiplier; + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/ParatrooperBlessing.java b/src/main/java/fyresmodjam/blessings/standard/ParatrooperBlessing.java new file mode 100644 index 0000000..d777566 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/ParatrooperBlessing.java @@ -0,0 +1,29 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class ParatrooperBlessing extends Blessing { + + @Override + public String name() { + return "Paratrooper"; + } + + @Override + public String description() { + return "Take no fall damage"; + } + + @Override + public float onIncomingDamage(LivingHurtEvent event, + float damageMultiplier) { + if(event.getSource().damageType.equals("fall")) { + event.setCanceled(true); + + return 0; + } + + return damageMultiplier; + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/PorcupineBlessing.java b/src/main/java/fyresmodjam/blessings/standard/PorcupineBlessing.java new file mode 100644 index 0000000..a46c3d0 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/PorcupineBlessing.java @@ -0,0 +1,45 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import fyresmodjam.misc.DamageSources; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.DamageSource; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class PorcupineBlessing extends Blessing { + + @Override + public String name() { + return "Porcupine"; + } + + @Override + public String description() { + return "Deal retaliation damage to melee attackers"; + } + + @Override + public float onIncomingDamage(LivingHurtEvent event, + float damageMultiplier) { + Entity trueSource = event.getSource().getTrueSource(); + + boolean isMeleeDamage = event.getSource().damageType + .equals("mob") + || event.getSource().getDamageType() + .equals("player"); + + if (trueSource != null + && trueSource instanceof EntityLivingBase + && !event.getSource().isProjectile() + && isMeleeDamage) { + DamageSource damage = DamageSources.retaliation; + + ((EntityLivingBase) trueSource) + .attackEntityFrom(damage, + event.getAmount() * 0.07F); + } + + return damageMultiplier; + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/ScholarBlessing.java b/src/main/java/fyresmodjam/blessings/standard/ScholarBlessing.java new file mode 100644 index 0000000..e66726c --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/ScholarBlessing.java @@ -0,0 +1,29 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class ScholarBlessing extends Blessing { + + @Override + public String name() { + return "Scholar"; + } + + @Override + public String description() { + return "Do more damage:\n- With weapons you are familiar with\n-Against enemies you are familiar with"; + } + + @Override + public float adjustMobKnowledgeBonus(LivingHurtEvent lhev, + float pickedDamageBonus) { + return pickedDamageBonus + (pickedDamageBonus * 0.5f); + } + + @Override + public float adjustWeaponKnowledgeBonus(LivingHurtEvent lhev, + float pickedDamageBonus) { + return pickedDamageBonus + (pickedDamageBonus * 0.5f); + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/SwampBlessing.java b/src/main/java/fyresmodjam/blessings/standard/SwampBlessing.java new file mode 100644 index 0000000..e9ecad3 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/SwampBlessing.java @@ -0,0 +1,34 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class SwampBlessing extends Blessing { + + @Override + public String name() { + return "Swamp"; + } + + @Override + public String description() { + return "Attacks slow enemies"; + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + if (event.getEntityLiving() != null) { + // TODO figure out potions + +// event.getEntityLiving() +// .addPotionEffect(new PotionEffect( +// Potion.moveSlowdown.id, +// 100, 1, false)); + } + + return damageMultiplier; + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/ThickSkinnedBlessing.java b/src/main/java/fyresmodjam/blessings/standard/ThickSkinnedBlessing.java new file mode 100644 index 0000000..ca16900 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/ThickSkinnedBlessing.java @@ -0,0 +1,24 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class ThickSkinnedBlessing extends Blessing { + + @Override + public String name() { + return "Thick-Skinned"; + } + + @Override + public String description() { + return "Reduce damage taken by a flat amount"; + } + + @Override + public float onIncomingDamage(LivingHurtEvent event, float damageMultiplier) { + event.setAmount(Math.max(0.5f, event.getAmount() - 1f)); + + return damageMultiplier; + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/ThiefBlessing.java b/src/main/java/fyresmodjam/blessings/standard/ThiefBlessing.java new file mode 100644 index 0000000..b807b4b --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/ThiefBlessing.java @@ -0,0 +1,29 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.ModjamMod; +import fyresmodjam.blessings.Blessing; +import net.minecraft.init.Items; +import net.minecraftforge.event.entity.living.LivingDeathEvent; + +public class ThiefBlessing extends Blessing { + + @Override + public String name() { + return "Thief"; + } + + @Override + public String description() { + return "Enemies have a chance to drop gold nuggets"; + } + + @Override + public void onMobKill(LivingDeathEvent event) { + if(ModjamMod.r.nextInt(20) == 0) { + if (!event.getEntity().world.isRemote) { + event.getEntity().dropItem(Items.GOLD_NUGGET, + 1); + } + } + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/VampireBlessing.java b/src/main/java/fyresmodjam/blessings/standard/VampireBlessing.java new file mode 100644 index 0000000..6594eab --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/VampireBlessing.java @@ -0,0 +1,55 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class VampireBlessing extends Blessing { + + @Override + public String name() { + return "Vampire"; + } + + @Override + public String description() { + return "\tBenefit: Heal a small percentage of damage dealt to enemies\n\tDrawback: Weakened during the day"; + } + + @Override + public float onIncomingDamage(LivingHurtEvent event, + float damageMultiplier) { + Entity ent = event.getEntity(); + if (ent.getBrightness() > 0.5F && ent.world + .canBlockSeeSky(ent.getPosition())) { + return damageMultiplier + 0.2F; + } + + 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.07F); + + boolean seeTheSky = trueSource.world + .canBlockSeeSky(trueSource + .getPosition()); + + if (trueSource.getBrightness() > 0.5F + && seeTheSky) { + return damageMultiplier - 0.2F; + } + } + + return damageMultiplier; + } +} diff --git a/src/main/java/fyresmodjam/blessings/standard/WarriorBlessing.java b/src/main/java/fyresmodjam/blessings/standard/WarriorBlessing.java new file mode 100644 index 0000000..2c1e2e7 --- /dev/null +++ b/src/main/java/fyresmodjam/blessings/standard/WarriorBlessing.java @@ -0,0 +1,39 @@ +package fyresmodjam.blessings.standard; + +import fyresmodjam.blessings.Blessing; +import net.minecraft.entity.Entity; +import net.minecraft.entity.IRangedAttackMob; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class WarriorBlessing extends Blessing { + + @Override + public String name() { + return "Warrior"; + } + + @Override + public String description() { + return "Increased melee damage"; + } + + @Override + public void correctBlessing(Entity ent) { + if (ent instanceof IRangedAttackMob) { + ent.getEntityData().setString("Blessing", + "BlessingHunter"); + } + } + + @Override + public float onOutgoingDamage(LivingHurtEvent event, + float damageMultiplier) { + if ((event.getSource().getDamageType().equals("player") + || event.getSource().getDamageType() + .equals("mob"))) { + return damageMultiplier + 0.2f; + } + + return damageMultiplier; + } +} |
