package com.nisovin.magicspells.spells.passive; import java.util.HashMap; import java.util.Map; import com.nisovin.magicspells.MagicSpells; public class PassiveTrigger { private static Map<String, PassiveTrigger> map = new HashMap<String, PassiveTrigger>(); public static PassiveTrigger TAKE_DAMAGE = addTrigger("takedamage", TakeDamageListener.class); public static PassiveTrigger GIVE_DAMAGE = addTrigger("givedamage", GiveDamageListener.class); public static PassiveTrigger FATAL_DAMAGE = addTrigger("fataldamage", FatalDamageListener.class); public static PassiveTrigger KILL = addTrigger("kill", KillListener.class); public static PassiveTrigger DEATH = addTrigger("death", DeathListener.class); public static PassiveTrigger RESPAWN = addTrigger("respawn", RespawnListener.class); public static PassiveTrigger JOIN = addTrigger("join", JoinListener.class); public static PassiveTrigger QUIT = addTrigger("quit", QuitListener.class); public static PassiveTrigger BLOCK_BREAK = addTrigger("blockbreak", BlockBreakListener.class); public static PassiveTrigger BLOCK_PLACE = addTrigger("blockplace", BlockPlaceListener.class); public static PassiveTrigger RIGHT_CLICK = addTrigger("rightclick", RightClickItemListener.class); public static PassiveTrigger RIGHT_CLICK_BLOCK_TYPE = addTrigger("rightclickblocktype", RightClickBlockTypeListener.class); public static PassiveTrigger RIGHT_CLICK_BLOCK_COORD = addTrigger("rightclickblockcoord", RightClickBlockCoordListener.class); public static PassiveTrigger LEFT_CLICK_BLOCK_TYPE = addTrigger("leftclickblocktype", LeftClickBlockTypeListener.class); public static PassiveTrigger LEFT_CLICK_BLOCK_COORD = addTrigger("leftclickblockcoord", LeftClickBlockCoordListener.class); public static PassiveTrigger RIGHT_CLICK_ENTITY = addTrigger("rightclickentity", RightClickEntityListener.class); public static PassiveTrigger SPELL_CAST = addTrigger("spellcast", SpellCastListener.class); public static PassiveTrigger SPELL_CASTED = addTrigger("spellcasted", SpellCastedListener.class); public static PassiveTrigger SPELL_TARGET = addTrigger("spelltarget", SpellTargetListener.class); public static PassiveTrigger SPELL_TARGETED = addTrigger("spelltargeted", SpellTargetedListener.class); public static PassiveTrigger SPRINT = addTrigger("sprint", SprintListener.class); public static PassiveTrigger STOP_SPRINT = addTrigger("stopsprint", SprintListener.class); public static PassiveTrigger SNEAK = addTrigger("sneak", SneakListener.class); public static PassiveTrigger STOP_SNEAK = addTrigger("stopsneak", SneakListener.class); public static PassiveTrigger FLY = addTrigger("fly", FlyListener.class); public static PassiveTrigger STOP_FLY = addTrigger("stopfly", FlyListener.class); public static PassiveTrigger HOT_BAR_SELECT = addTrigger("hotbarselect", HotBarListener.class); public static PassiveTrigger HOT_BAR_DESELECT = addTrigger("hotbardeselect", HotBarListener.class); public static PassiveTrigger DROP_ITEM = addTrigger("dropitem", DropItemListener.class); public static PassiveTrigger PICKUP_ITEM = addTrigger("pickupitem", PickupItemListener.class); public static PassiveTrigger CRAFT = addTrigger("craft", CraftListener.class); public static PassiveTrigger FISH = addTrigger("fish", FishListener.class); public static PassiveTrigger SHOOT = addTrigger("shoot", ShootListener.class); public static PassiveTrigger TELEPORT = addTrigger("teleport", TeleportListener.class); public static PassiveTrigger BUFF = addTrigger("buff", BuffListener.class); public static PassiveTrigger TICKS = addTrigger("ticks", TicksListener.class); public static PassiveTrigger RESOURCE_PACK = addTrigger("resourcepack", ResourcePackListener.class); public static PassiveTrigger addTrigger(String name, Class<? extends PassiveListener> listener) { PassiveTrigger trigger = new PassiveTrigger(name, listener); map.put(trigger.getName(), trigger); return trigger; } public static PassiveTrigger getByName(String name) { return map.get(name); } String name; Class<? extends PassiveListener> listenerClass; PassiveListener listener; PassiveTrigger(String name, Class<? extends PassiveListener> listener) { this.name = name; this.listenerClass = listener; } public String getName() { return name; } public PassiveListener getListener() { if (listener == null) { try { listener = listenerClass.newInstance(); MagicSpells.registerEvents(listener); } catch (Exception e) { MagicSpells.handleException(e); } } return listener; } }