From b8b41aa5846dae5a9bbf4fee82020f1d9e2b2a48 Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Mon, 12 Aug 2024 17:08:54 -0400 Subject: Initial commit --- .../blessings/standard/AlchemistBlessing.java | 16 ++++++ .../blessings/standard/BerserkerBlessing.java | 50 ++++++++++++++++++ .../blessings/standard/DiverBlessing.java | 23 ++++++++ .../blessings/standard/GuardianBlessing.java | 23 ++++++++ .../blessings/standard/HunterBlessing.java | 37 +++++++++++++ .../blessings/standard/InfernoBlessing.java | 55 +++++++++++++++++++ .../blessings/standard/LonerBlessing.java | 38 ++++++++++++++ .../blessings/standard/LooterBlessing.java | 32 ++++++++++++ .../blessings/standard/LumberjackBlessing.java | 59 +++++++++++++++++++++ .../blessings/standard/MechanicBlessing.java | 17 ++++++ .../blessings/standard/MinerBlessing.java | 61 ++++++++++++++++++++++ .../blessings/standard/NinjaBlessing.java | 55 +++++++++++++++++++ .../blessings/standard/PaladinBlessing.java | 27 ++++++++++ .../blessings/standard/ParatrooperBlessing.java | 29 ++++++++++ .../blessings/standard/PorcupineBlessing.java | 45 ++++++++++++++++ .../blessings/standard/ScholarBlessing.java | 29 ++++++++++ .../blessings/standard/SwampBlessing.java | 34 ++++++++++++ .../blessings/standard/ThickSkinnedBlessing.java | 24 +++++++++ .../blessings/standard/ThiefBlessing.java | 29 ++++++++++ .../blessings/standard/VampireBlessing.java | 55 +++++++++++++++++++ .../blessings/standard/WarriorBlessing.java | 39 ++++++++++++++ 21 files changed, 777 insertions(+) create mode 100644 src/main/java/fyresmodjam/blessings/standard/AlchemistBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/BerserkerBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/DiverBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/GuardianBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/HunterBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/InfernoBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/LonerBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/LooterBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/LumberjackBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/MechanicBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/MinerBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/NinjaBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/PaladinBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/ParatrooperBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/PorcupineBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/ScholarBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/SwampBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/ThickSkinnedBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/ThiefBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/VampireBlessing.java create mode 100644 src/main/java/fyresmodjam/blessings/standard/WarriorBlessing.java (limited to 'src/main/java/fyresmodjam/blessings/standard') 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; + } +} -- cgit v1.2.3