From 857d548f591b8f3770befd2535985959fd870474 Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Thu, 22 Aug 2019 21:14:31 -0400 Subject: Begin implementing affix mods --- .../jewelrycraft/api/ModifierEffect.java | 197 +++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100755 src/main/java/darkknight/jewelrycraft/api/ModifierEffect.java (limited to 'src/main/java/darkknight/jewelrycraft/api/ModifierEffect.java') diff --git a/src/main/java/darkknight/jewelrycraft/api/ModifierEffect.java b/src/main/java/darkknight/jewelrycraft/api/ModifierEffect.java new file mode 100755 index 0000000..8e58f72 --- /dev/null +++ b/src/main/java/darkknight/jewelrycraft/api/ModifierEffect.java @@ -0,0 +1,197 @@ +package darkknight.jewelrycraft.api; + +import java.util.ArrayList; +import java.util.Random; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraftforge.event.entity.player.PlayerEvent; + +public class ModifierEffect { + protected ItemStack modifier; + protected Random rand = new Random(); + + protected static ArrayList effects = new ArrayList<>(); + + /** + * @param modifier + * The item to use as modifier + */ + public ModifierEffect(ItemStack modifier) { + this.modifier = modifier; + + if (modifier != null) { + effects.add(this); + } + } + + /** + * @return The list of all effects registered + */ + public static ArrayList getEffects() { + return effects; + } + + /** + * @return The ItemStack set as the modifier + */ + public ItemStack getModifier() { + return modifier; + } + + /** + * This runs every tick + * + * @param item + * The ItemStack representing the jewelry that runs the effect + * @param player + * The player wearing the jewelry wearing a jewelry with this + * modifier on it + * @param jewelry + * The actual jewelry item (used by me to determine the type of + * jewelry so I don't have to call item.getItem() blah blah blah) + */ + public void action(ItemStack item, EntityPlayer player, Item jewelry) { + // Do nothing + }; + + /** + * This runs when an entity is attacked. This event can be canceled. + * + * @param item + * The ItemStack representing the jewelry that runs the effect + * @param player + * The player wearing the jewelry wearing a jewelry with this + * modifier on it + * @param target + * The attacked entity + * @param jewelry + * The actual jewelry item (aka item.getItem(), almost) + * @param amount + * The amount of damage the entity took + * @return The state of the event (true to cancel it, false to not) + */ + public boolean onEntityAttackedCancellable(ItemStack item, EntityPlayer player, Entity target, Item jewelry, + float amount) { + return false; + } + + /** + * This runs when a player gets damaged. This event can be canceled. + * + * @param item + * The ItemStack representing the jewelry that runs the effect + * @param player + * The attacked player wearing a jewelry with this modifier on it + * @param source + * The source of the damage + * @param jewelry + * The actual jewelry item (aka item.getItem(), almost) + * @param amount + * The amount of damage the player took + * @return The state of the event (true to cancel it, false to not) + */ + public boolean onPlayerAttackedCancellable(ItemStack item, EntityPlayer player, DamageSource source, Item jewelry, + float amount) { + return false; + } + + /** + * This is the same as onEntityAttackedCacellable, but this can not be canceled. + * I recommend using this over onEntityAttackedCacellable, as it is more + * reliable. + * + * @param item + * The ItemStack representing the jewelry that runs the effect + * @param player + * The player wearing the jewelry wearing a jewelry with this + * modifier on it + * @param target + * The attacked entity + * @param jewelry + * The actual jewelry item (aka item.getItem(), almost) + * @param amount + * The amount of damage the entity took + */ + public void onEntityAttacked(ItemStack item, EntityPlayer player, Entity target, Item jewelry, float amount) { + // Do nothing + } + + /** + * This is just like onPlayerAttackedCacellable, only that this can not be + * canceled. I recommend using this over onPlayerAttackedCacellable, as it is + * more reliable. + * + * @param item + * The ItemStack representing the jewelry that runs the effect + * @param player + * The attacked player wearing a jewelry with this modifier on it + * @param source + * The source of the damage + * @param jewelry + * The actual jewelry item (aka item.getItem(), almost) + * @param amount + * The amount of damage the player took + */ + public void onPlayerAttacked(ItemStack item, EntityPlayer player, DamageSource source, Item jewelry, float amount) { + // Do nothing + } + + /** + * This runs when the player dies + * + * @param item + * The ItemStack representing the jewelry that runs the effect + * @param player + * The player that died wearing a jewelry with this modifier on it + * @param source + * The source of the killing blow + * @param jewelry + * The actual jewelry item (aka item.getItem(), almost) + */ + public void onPlayerDead(ItemStack item, EntityPlayer player, DamageSource source, Item jewelry) { + // Do nothing + } + + /** + * This runs when the player respawns + * + * @param item + * The ItemStack representing the jewelry that runs the effect + * @param event + * The PlayerEvent that runs when the player respawns (this is also + * called when a player moves between dimensions) + * @param jewelry + * The actual jewelry item (aka item.getItem(), almost) + */ + public void onPlayerRespawn(ItemStack item, PlayerEvent.Clone event, Item jewelry) { + // Do nothing + } + + /** + * This runs when the item containing this modifier is equipped + * + * @param item + * The ItemStack representing the jewelry that runs the effect + * @param jewelry + * The actual jewelry item (aka item.getItem(), almost) + */ + public void onJewelryEquipped(ItemStack item, Item jewelry) { + // Do nothing + } + + /** + * This runs when the item containing this modifier is unquipped + * + * @param item + * The ItemStack representing the jewelry that runs the effect + * @param jewelry + * The actual jewelry item (aka item.getItem(), almost) + */ + public void onJewelryUnequipped(ItemStack item, Item jewelry) { + // Do nothing + } +} -- cgit v1.2.3