package me.km.effects; import java.util.ArrayList; import me.km.skills.Skill; public enum Effect { // comments indicate, that events aren't in active oder passive effect packages // passive effects ENCHANTER (false), // me.kt.custom.CustomEnchanting LESS_HUNGER (false), // me.kt.environment.EnvironmentTick LESS_THIRST (false), // me.kt.environment.EnvironmentAPI LESS_ENERGY_USE (false), // me.kt.environment.EnvironmentAPI LESS_COLD (false), // me.kt.environment.EnvironmentAPI FASTER_MANA (false), // me.kt.environment.EnvironmentAPI BREED_COW (false), BREED_PIG (false), BREED_SHEEP (false), BREED_RABBIT (false), BREED_CHICKEN (false), BREED_HORSE (false), BREED_MUSHROOMCOW (false), GRAVEL_SAND_DIGGER (false), MORE_MINERALS (false), MORE_CROPS (false), TREE_PICKER (false), MORE_SAPLINGS (false), CAKE_POWER (false), SNEAKING (false), SCENT (false), MUGGING (false), FAST_DIGGING (false), XP_COLLECTOR (false), MORE_DROPS (false), FASTER_ARROWS (false), ARROW_SAVER (false), MORE_AXE_DAMAGE (false), MORE_HOE_DAMAGE (false), MORE_PICKAXE_DAMAGE (false), MORE_SHOVEL_DAMAGE (false), MORE_SWORD_DAMAGE (false), MORE_DAGGER_DAMAGE (false), MORE_HAMMER_DAMAGE (false), MORE_STICK_DAMAGE (false), FISHING (false), POTION_SAVER (false), BREWING (false), CAULDRON_FILLING (false), SMELTING (false), NO_POISON (false), LESS_FALL_DAMAGE (false), LESS_DAMAGE (false), SMITH (false), FAST_ENDERPEARL_SHOOT (false), PEARL_SAVER (false), NO_ENDERPEARL_DAMAGE (false), GOLD_WASHER (false), GOLD_RUSH (false), USE_WAND (false), LESS_ITEM_LOSS (false); // TODO // active effects /*ARCANE_SHOT (true, ArcaneShot.class), BLINDING_SHOT (true, BlindingShot.class), BUNNY_HOP (true, BunnyHop.class), CALL_BACK (true, CallBack.class), CLUSTER_BOMB (true, ClusterBomb.class), DAY (true, Day.class), DOOMED (true, Doomed.class), EARTHQUAKE (true, Earthquake.class), ELEVATION (true, Elevation.class), ELVISH_HORN (true, ElvishHorn.class), ENDERCHEST (true, Enderchest.class), EXPLOSION (true, Explosion.class), FALL_IMMUNITY (true, FallImmunity.class), FIRE (true, Fire.class), FIREBALL (true, Fireball.class), FIRE_SHOT (true, FireShot.class), FLYING (true, Flying.class), FREEZE (true, Freeze.class), GRAPPLING_HOOK (true, GrapplingHook.class), HARM (true, Harm.class), HARVEST (true, Harvest.class), HEAL (true, Heal.class), HEAL_RAIN (true, HealRain.class), HEARTS (true, Hearts.class), HEART_SEEKER (true, HeartSeeker.class), IMMORTALITY (true, Immortality.class), INVISIBILITY (true, Invisibility.class), JUMP (true, Jump.class), KICK (true, Kick.class), LEAF_COCOON (true, LeafCocoon.class), LOCK_PICK (true, LockPick.class), LUCKY (true, Lucky.class), MUSKET (true, Musket.class), NAIL_DOWN (true, NailDown.class), NAIL_TRAP (true, NailTrap.class), NET_TRAP (true, NetTrap.class), NIGHT (true, Night.class), P_HEAL (true, PHeal.class), POISON (true, Poison.class), POISONED_BLADE (true, PoisonedBlade.class), POISON_VOLLEY (true, PoisonVolley.class), POWER (true, Power.class), POWER_ATTACK (true, PowerAttack.class), PULL (true, Pull.class), PUSH (true, Push.class), QUICK_SHOT (true, QuickShot.class), RAIN (true, Rain.class), RAPID_FIRE (true, RapidFire.class), ROOTING (true, Rooting.class), SHADOW (true, Shadow.class), SHADOW_HIT (true, ShadowHit.class), SHADOW_STEP (true, ShadowStep.class), SILENCE (true, Silence.class), SLOWING_SHOT (true, SlowingShot.class), SMOKE_BOMB (true, SmokeBomb.class), SPRINT (true, Sprint.class), STONE (true, Stone.class), SUN (true, Sun.class), TELEPORT_PLAYER (true, TeleportPlayer.class), THOR (true, Thor.class), UNLUCKY (true, Unlucky.class), VINE_TRAP (true, VineTrap.class), WORKBENCH (true, Workbench.class);*/ private final ArrayList skills; private final Class c; private final boolean active; Effect(boolean active, Class c) { skills = new ArrayList<>(); this.active = active; this.c = c; } Effect(boolean active) { this(active, null); } public void addSkill(Skill s) { skills.add(s); } public ArrayList getSkills() { return skills; } public void clearSkills() { skills.clear(); } public boolean isActive() { return active; } public int getManaCost(int power) { if(c != null) { try { return c.newInstance().getManaCost(power); } catch(InstantiationException | IllegalAccessException ex) { return 0; } } return 0; } public Class getEffectBase() { return c; } public String getEffectString() { if(c == null) { return null; } return c.getSimpleName(); } }