diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java index 3f078ca3f0..8032b289ef 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java @@ -842,7 +842,11 @@ public class CeremonyOfChaos extends AbstractNpcAI final StatSet params = new StatSet(); params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT)) + { + EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 248feaef13..1145cf068f 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/ItemTable.java index 171317b3fa..34ee28cf47 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -350,7 +351,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 82a4fb8607..95f9c88433 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -214,7 +215,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -327,7 +332,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -383,7 +391,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Attackable.java index eba3f64623..075a8a7756 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -59,6 +59,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -296,9 +297,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -781,7 +782,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -845,7 +846,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java index 9d6f367b0e..c3e1e638b5 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3980,23 +3995,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4725,7 +4745,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4740,28 +4760,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5140,14 +5162,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5586,7 +5611,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Npc.java index cc643a4730..b84af84ce1 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1056,9 +1056,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1161,7 +1164,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1333,7 +1339,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1534,7 +1540,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Player.java index ffc43d0d82..5fbc99b803 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1912,7 +1912,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2022,7 +2026,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2283,7 +2290,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2323,7 +2333,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2351,7 +2365,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4843,7 +4860,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -7929,7 +7949,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8001,10 +8025,15 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } + return false; } @@ -9632,7 +9661,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9808,7 +9837,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -9964,7 +9996,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10136,15 +10172,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10807,7 +10848,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11187,14 +11231,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13525,7 +13571,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Summon.java index 2f7d5c45ea..2a6d8fade4 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index 678412218a..5919755700 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -42,10 +43,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index d70505358d..0926a98894 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -249,7 +250,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Give AutoGet skills and all normal skills if Auto-Learn is activated. getActiveChar().rewardSkills(); diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/clan/Clan.java index 54b4c6492e..0a4dace23f 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -252,7 +253,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -385,7 +390,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -548,7 +556,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2700,7 +2711,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 01144e8b71..a5b88e0118 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 8954d29f72..d56c3706c3 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index f3e2f5c93d..d415f58812 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/item/Weapon.java index e3bb874b2b..2eb41538ea 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -307,7 +308,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 905824a080..a2ae5fd746 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -293,9 +294,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -972,7 +973,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1002,7 +1007,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1532,7 +1540,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2026,9 +2037,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 36e06a52c0..71d39f17e8 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; @@ -1412,7 +1413,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index c5a1ad58f5..f98f7cce86 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -37,6 +37,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -422,7 +423,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -489,7 +493,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -521,7 +528,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -575,7 +585,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -648,7 +658,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -681,7 +691,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index fd39cd6df6..c21e2b71d7 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -923,7 +924,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 44f5741657..2df0e3a4b1 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -465,7 +466,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -489,8 +493,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -530,8 +538,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -602,7 +613,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), getReward()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -627,7 +641,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), getReward()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index fdb386dd90..030ac42234 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/siege/Siege.java index 059f4bf673..5819e61614 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_e.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index c86631bb43..2849e1d2a2 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index eb1434ff89..5ba6d479dc 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 1d94f3eb31..694db21707 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -324,7 +325,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); if (Config.SHOW_INTRO_VIDEO) { diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 1a7c2f8c7c..fb7b4d383b 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -703,9 +704,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index a64477703b..1557b8ea92 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -126,10 +127,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -233,7 +237,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -244,7 +248,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index 64c424c712..1b755314b7 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -43,6 +44,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5ee37630b2..f713474ea2 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index a9cec48175..265a24ed5a 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -290,7 +291,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java index 100f9e512f..6c479a8c4f 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCallToChangeClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -50,6 +51,9 @@ public class RequestCallToChangeClass implements IClientIncomingPacket return; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CALL_TO_CHANGE_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + } } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index c32c99e6b8..d526a2f9e3 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java index b2af2edcfd..8f47b1c64d 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java @@ -842,7 +842,11 @@ public class CeremonyOfChaos extends AbstractNpcAI final StatSet params = new StatSet(); params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT)) + { + EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 248feaef13..1145cf068f 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/ItemTable.java index 171317b3fa..34ee28cf47 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -350,7 +351,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 82a4fb8607..95f9c88433 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -214,7 +215,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -327,7 +332,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -383,7 +391,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 7af362dc83..0ebd51cdc7 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -292,9 +293,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -777,7 +778,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -841,7 +842,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java index 9d6f367b0e..c3e1e638b5 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3980,23 +3995,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4725,7 +4745,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4740,28 +4760,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5140,14 +5162,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5586,7 +5611,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Npc.java index fb2ea5b058..e4d122c96c 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1056,9 +1056,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1161,7 +1164,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1333,7 +1339,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1534,7 +1540,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Player.java index be95f04f05..6894e03afa 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1914,7 +1914,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2024,7 +2028,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2285,7 +2292,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2325,7 +2335,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2353,7 +2367,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4845,7 +4862,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -7932,7 +7952,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8004,10 +8028,15 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } + return false; } @@ -9635,7 +9664,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9811,7 +9840,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -9967,7 +9999,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10139,15 +10175,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10810,7 +10851,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11190,14 +11234,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13528,7 +13574,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Summon.java index 2f7d5c45ea..2a6d8fade4 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index 678412218a..5919755700 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -42,10 +43,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 1a201359ea..239316efeb 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -250,7 +251,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Give AutoGet skills and all normal skills if Auto-Learn is activated. getActiveChar().rewardSkills(); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/clan/Clan.java index 8f25273f3b..83d5d6b215 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -253,7 +254,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -386,7 +391,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -549,7 +557,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2701,7 +2712,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 01144e8b71..a5b88e0118 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 8954d29f72..d56c3706c3 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index f3e2f5c93d..d415f58812 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/item/Weapon.java index e3bb874b2b..2eb41538ea 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -307,7 +308,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/item/instance/Item.java index ccebf33ce1..8bbcbc6ce1 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -62,6 +62,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -298,9 +299,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -977,7 +978,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1007,7 +1012,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1537,7 +1545,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2037,9 +2048,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 929fcc5026..fdbb806057 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; @@ -1418,7 +1419,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index eabca3a196..1d4a07251c 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -37,6 +37,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -422,7 +423,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -489,7 +493,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -521,7 +528,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -575,7 +585,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -648,7 +658,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -681,7 +691,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index fd39cd6df6..c21e2b71d7 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -923,7 +924,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 0d1ec3a310..da4c5b5698 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -466,7 +467,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -491,8 +495,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -532,8 +540,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -606,7 +617,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardQuests(_playerTwo.getPlayer()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -633,7 +647,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardQuests(_playerTwo.getPlayer()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index fdb386dd90..030ac42234 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/siege/Siege.java index d6f56d94aa..5db87fce98 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_e.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 3c4a02f345..340702535e 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index 56a0436a24..785e526a2e 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 1d94f3eb31..694db21707 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -324,7 +325,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); if (Config.SHOW_INTRO_VIDEO) { diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index b77a51a32e..208dc789bc 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -703,9 +704,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index a64477703b..1557b8ea92 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -126,10 +127,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -233,7 +237,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -244,7 +248,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index 64c424c712..1b755314b7 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -43,6 +44,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5ee37630b2..f713474ea2 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index a9cec48175..265a24ed5a 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -290,7 +291,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java index 100f9e512f..6c479a8c4f 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCallToChangeClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -50,6 +51,9 @@ public class RequestCallToChangeClass implements IClientIncomingPacket return; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CALL_TO_CHANGE_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + } } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index c32c99e6b8..d526a2f9e3 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java index b2af2edcfd..8f47b1c64d 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java @@ -842,7 +842,11 @@ public class CeremonyOfChaos extends AbstractNpcAI final StatSet params = new StatSet(); params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT)) + { + EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 248feaef13..1145cf068f 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/ItemTable.java index 171317b3fa..34ee28cf47 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -350,7 +351,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index ed889ce365..b638d18040 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 7af362dc83..0ebd51cdc7 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -292,9 +293,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -777,7 +778,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -841,7 +842,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java index 9d6f367b0e..c3e1e638b5 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3980,23 +3995,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4725,7 +4745,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4740,28 +4760,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5140,14 +5162,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5586,7 +5611,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Npc.java index fb2ea5b058..e4d122c96c 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1056,9 +1056,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1161,7 +1164,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1333,7 +1339,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1534,7 +1540,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Player.java index 483e7801a7..411700e847 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1916,7 +1916,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2026,7 +2030,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2287,7 +2294,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2327,7 +2337,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2355,7 +2369,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4847,7 +4864,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -7934,7 +7954,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8006,10 +8030,15 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } + return false; } @@ -9637,7 +9666,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9813,7 +9842,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -9969,7 +10001,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10141,15 +10177,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10812,7 +10853,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11192,14 +11236,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13531,7 +13577,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Summon.java index 2f7d5c45ea..2a6d8fade4 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index 678412218a..5919755700 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -42,10 +43,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 1a201359ea..239316efeb 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -250,7 +251,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Give AutoGet skills and all normal skills if Auto-Learn is activated. getActiveChar().rewardSkills(); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/clan/Clan.java index 8f25273f3b..83d5d6b215 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -253,7 +254,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -386,7 +391,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -549,7 +557,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2701,7 +2712,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 01144e8b71..a5b88e0118 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 7975959c11..b1c22d4dba 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index f3e2f5c93d..d415f58812 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/item/Weapon.java index e3bb874b2b..2eb41538ea 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -307,7 +308,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/item/instance/Item.java index ccebf33ce1..8bbcbc6ce1 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -62,6 +62,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -298,9 +299,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -977,7 +978,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1007,7 +1012,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1537,7 +1545,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2037,9 +2048,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 929fcc5026..fdbb806057 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; @@ -1418,7 +1419,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index eabca3a196..1d4a07251c 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -37,6 +37,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -422,7 +423,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -489,7 +493,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -521,7 +528,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -575,7 +585,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -648,7 +658,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -681,7 +691,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index fd39cd6df6..c21e2b71d7 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -923,7 +924,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 0d1ec3a310..da4c5b5698 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -466,7 +467,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -491,8 +495,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -532,8 +540,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -606,7 +617,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardQuests(_playerTwo.getPlayer()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -633,7 +647,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardQuests(_playerTwo.getPlayer()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index fdb386dd90..030ac42234 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/siege/Siege.java index d6f56d94aa..5db87fce98 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_e.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 3c4a02f345..340702535e 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index 56a0436a24..785e526a2e 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 1d94f3eb31..694db21707 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -324,7 +325,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); if (Config.SHOW_INTRO_VIDEO) { diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index b77a51a32e..208dc789bc 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -703,9 +704,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index a64477703b..1557b8ea92 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -126,10 +127,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -233,7 +237,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -244,7 +248,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index d285ab1b5d..5c6bc16b4b 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index a9cec48175..265a24ed5a 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -290,7 +291,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java index 100f9e512f..6c479a8c4f 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCallToChangeClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -50,6 +51,9 @@ public class RequestCallToChangeClass implements IClientIncomingPacket return; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CALL_TO_CHANGE_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + } } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index c32c99e6b8..d526a2f9e3 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java index b2af2edcfd..8f47b1c64d 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java @@ -842,7 +842,11 @@ public class CeremonyOfChaos extends AbstractNpcAI final StatSet params = new StatSet(); params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT)) + { + EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 248feaef13..1145cf068f 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/ItemTable.java index 171317b3fa..34ee28cf47 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -350,7 +351,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 0bd0848a08..03a461b027 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 7af362dc83..0ebd51cdc7 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -292,9 +293,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -777,7 +778,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -841,7 +842,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java index 9d6f367b0e..c3e1e638b5 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3980,23 +3995,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4725,7 +4745,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4740,28 +4760,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5140,14 +5162,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5586,7 +5611,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Npc.java index fb2ea5b058..e4d122c96c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1056,9 +1056,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1161,7 +1164,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1333,7 +1339,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1534,7 +1540,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Player.java index 11c9b066a7..5ff13e068c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1936,7 +1936,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2046,7 +2050,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2294,7 +2301,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2335,7 +2345,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2363,7 +2377,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4843,7 +4860,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -7952,7 +7972,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8024,10 +8048,15 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } + return false; } @@ -9651,7 +9680,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9827,7 +9856,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -9983,7 +10015,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10155,15 +10191,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10826,7 +10867,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11196,14 +11240,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13526,7 +13572,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Summon.java index 2f7d5c45ea..2a6d8fade4 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index 678412218a..5919755700 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -42,10 +43,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 0fea2db6ba..f6ab18d9fd 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -250,7 +251,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExConnectedTimeAndGettableReward(getActiveChar())); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/clan/Clan.java index 8f25273f3b..83d5d6b215 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -253,7 +254,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -386,7 +391,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -549,7 +557,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2701,7 +2712,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 01144e8b71..a5b88e0118 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 7975959c11..b1c22d4dba 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index f3e2f5c93d..d415f58812 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/item/Weapon.java index e3bb874b2b..2eb41538ea 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -307,7 +308,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 1ad8ea5547..36089fe8e7 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -62,6 +62,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -298,9 +299,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -977,7 +978,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1007,7 +1012,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1537,7 +1545,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2037,9 +2048,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 2e1bacecb7..c176e9455f 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; @@ -1418,7 +1419,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index eabca3a196..1d4a07251c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -37,6 +37,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -422,7 +423,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -489,7 +493,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -521,7 +528,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -575,7 +585,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -648,7 +658,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -681,7 +691,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index fd39cd6df6..c21e2b71d7 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -923,7 +924,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index afa106ab93..06f880c154 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -466,7 +467,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -491,8 +495,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -530,8 +538,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -606,7 +617,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardQuests(_playerTwo.getPlayer()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -635,7 +649,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardQuests(_playerTwo.getPlayer()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index fdb386dd90..030ac42234 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/siege/Siege.java index d6f56d94aa..5db87fce98 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_e.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 3c4a02f345..340702535e 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index 56a0436a24..785e526a2e 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 1d94f3eb31..694db21707 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -324,7 +325,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); if (Config.SHOW_INTRO_VIDEO) { diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index b77a51a32e..208dc789bc 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -703,9 +704,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index a64477703b..1557b8ea92 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -126,10 +127,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -233,7 +237,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -244,7 +248,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index d285ab1b5d..5c6bc16b4b 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index a9cec48175..265a24ed5a 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -290,7 +291,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java index 100f9e512f..6c479a8c4f 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCallToChangeClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -50,6 +51,9 @@ public class RequestCallToChangeClass implements IClientIncomingPacket return; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CALL_TO_CHANGE_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + } } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index c32c99e6b8..d526a2f9e3 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java index f3552809f8..d4584dd501 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java @@ -842,7 +842,11 @@ public class CeremonyOfChaos extends AbstractNpcAI final StatSet params = new StatSet(); params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT)) + { + EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 248feaef13..1145cf068f 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/ItemTable.java index c1a5ff8afd..0eb95f653d 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -351,7 +352,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 0bd0848a08..03a461b027 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 6a167afde1..91d934ca08 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.model.actor.status.AttackableStatus; import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -291,9 +292,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -765,7 +766,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -829,7 +830,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java index 796b81fd47..a0889d3226 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3980,23 +3995,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4725,7 +4745,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4740,28 +4760,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5149,14 +5171,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5595,7 +5620,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Npc.java index fb2ea5b058..e4d122c96c 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1056,9 +1056,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1161,7 +1164,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1333,7 +1339,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1534,7 +1540,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Player.java index 5c937b61cc..b2183042fd 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1933,7 +1933,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2043,7 +2047,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2291,7 +2298,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2332,7 +2342,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2360,7 +2374,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4860,7 +4877,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -7969,7 +7989,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8041,10 +8065,15 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } + return false; } @@ -9676,7 +9705,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9852,7 +9881,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -10008,7 +10040,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10180,15 +10216,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10851,7 +10892,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11223,14 +11267,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13568,7 +13614,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Summon.java index 2f7d5c45ea..2a6d8fade4 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index 678412218a..5919755700 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -42,10 +43,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index d03b04e728..5e47d26276 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -241,7 +242,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExPledgeMissionRewardCount(getActiveChar())); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/clan/Clan.java index 84182fd985..eef93f9fce 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -260,7 +261,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -393,7 +398,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -558,7 +566,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2345,7 +2356,10 @@ public class Clan implements IIdentifiable, INamable increasedLevel = true; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } } } if (!increasedLevel) diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 19ff108e3c..6015c738a8 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 7b4a50a698..80150dce73 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -344,7 +345,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 140908d8c1..4672e62fb7 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/item/Weapon.java index e3bb874b2b..2eb41538ea 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -307,7 +308,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/item/instance/Item.java index b161fb7dc3..5d88f23c6d 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -305,9 +306,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -992,7 +993,10 @@ public class Item extends WorldObject getActingPlayer().getInventory().getPaperdollCache().clearMaxSetEnchant(); // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ENCHANT_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + } } /** @@ -1035,7 +1039,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1065,7 +1073,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1271,7 +1282,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ATTRIBUTE_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + } } /** @@ -1598,7 +1612,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2098,9 +2115,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } @@ -2193,7 +2213,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_SOUL_CRYSTAL_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + } } public void removeSpecialAbility(int position, int type) diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 6c6350cf35..7654b608d7 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1520,7 +1521,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 18acfc5b0b..2158e04195 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -426,7 +427,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -493,7 +497,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -525,7 +532,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -579,7 +589,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -652,7 +662,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -685,7 +695,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index fd39cd6df6..c21e2b71d7 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -923,7 +924,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index afa106ab93..06f880c154 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -466,7 +467,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -491,8 +495,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -530,8 +538,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -606,7 +617,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardQuests(_playerTwo.getPlayer()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -635,7 +649,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardQuests(_playerTwo.getPlayer()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index 2638536291..fc57c94677 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/siege/Siege.java index 540a78e9a3..4a05524a55 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 007ef9ac1d..034ee7619f 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index 56a0436a24..785e526a2e 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 2ee522d6a5..d4b7a26291 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -40,6 +40,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; @@ -383,7 +384,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); if (Config.SHOW_INTRO_VIDEO) { diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index db6afeb24a..7281ecd079 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 08ddcc4639..5034d8d940 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Fisherman; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -653,9 +654,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index a64477703b..1557b8ea92 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -126,10 +127,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -233,7 +237,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -244,7 +248,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index cf6387367b..a6431abd5a 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index d7d34f9d89..cf7a5f4fa0 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -287,7 +288,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java index 100f9e512f..6c479a8c4f 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCallToChangeClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -50,6 +51,9 @@ public class RequestCallToChangeClass implements IClientIncomingPacket return; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CALL_TO_CHANGE_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + } } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index 490805ae86..f9904a5c0d 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java index 3d9289edd0..af6a1e1b22 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java @@ -842,7 +842,11 @@ public class CeremonyOfChaos extends AbstractNpcAI final StatSet params = new StatSet(); params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT)) + { + EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 248feaef13..1145cf068f 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/ItemTable.java index 6190a5f9d5..038abf3f97 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -353,7 +354,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 0bd0848a08..03a461b027 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 6a167afde1..91d934ca08 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.model.actor.status.AttackableStatus; import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -291,9 +292,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -765,7 +766,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -829,7 +830,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java index 796b81fd47..a0889d3226 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3980,23 +3995,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4725,7 +4745,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4740,28 +4760,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5149,14 +5171,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5595,7 +5620,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Npc.java index fb2ea5b058..e4d122c96c 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1056,9 +1056,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1161,7 +1164,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1333,7 +1339,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1534,7 +1540,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Player.java index 0f0847a6ed..e6daec874d 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1946,7 +1946,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2056,7 +2060,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2304,7 +2311,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2345,7 +2355,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2373,7 +2387,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4873,7 +4890,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -7982,7 +8002,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8054,10 +8078,15 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } + return false; } @@ -9689,7 +9718,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9865,7 +9894,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -10021,7 +10053,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10193,15 +10229,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10867,7 +10908,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11239,14 +11283,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13584,7 +13630,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Summon.java index 2f7d5c45ea..2a6d8fade4 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index 678412218a..5919755700 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -42,10 +43,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 9889e093e1..d596e1fe58 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -241,7 +242,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExPledgeMissionRewardCount(getActiveChar())); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/clan/Clan.java index 84182fd985..eef93f9fce 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -260,7 +261,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -393,7 +398,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -558,7 +566,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2345,7 +2356,10 @@ public class Clan implements IIdentifiable, INamable increasedLevel = true; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } } } if (!increasedLevel) diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index a5b24cb082..3a6780326a 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 7b4a50a698..80150dce73 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -344,7 +345,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index f3e2f5c93d..d415f58812 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/item/Weapon.java index e3bb874b2b..2eb41538ea 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -307,7 +308,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/item/instance/Item.java index b161fb7dc3..5d88f23c6d 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -305,9 +306,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -992,7 +993,10 @@ public class Item extends WorldObject getActingPlayer().getInventory().getPaperdollCache().clearMaxSetEnchant(); // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ENCHANT_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + } } /** @@ -1035,7 +1039,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1065,7 +1073,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1271,7 +1282,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ATTRIBUTE_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + } } /** @@ -1598,7 +1612,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2098,9 +2115,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } @@ -2193,7 +2213,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_SOUL_CRYSTAL_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + } } public void removeSpecialAbility(int position, int type) diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 4792c69056..20b9fb6c6c 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1602,7 +1603,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 18acfc5b0b..2158e04195 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -426,7 +427,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -493,7 +497,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -525,7 +532,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -579,7 +589,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -652,7 +662,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -685,7 +695,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index fd681ab3d4..0e3b590570 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -923,7 +924,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index afa106ab93..06f880c154 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -466,7 +467,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -491,8 +495,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -530,8 +538,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -606,7 +617,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardQuests(_playerTwo.getPlayer()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -635,7 +649,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardQuests(_playerTwo.getPlayer()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index fdb386dd90..030ac42234 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/siege/Siege.java index 524d427d9c..5e1ca3aa2e 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 007ef9ac1d..034ee7619f 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index 56a0436a24..785e526a2e 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 2ee522d6a5..d4b7a26291 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -40,6 +40,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; @@ -383,7 +384,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); if (Config.SHOW_INTRO_VIDEO) { diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 8ba2431af6..a7ed6a1d3a 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 2ee884db0d..ef190f757e 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Fisherman; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -653,9 +654,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index a64477703b..1557b8ea92 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -126,10 +127,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -233,7 +237,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -244,7 +248,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index d285ab1b5d..5c6bc16b4b 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 47b79ff874..50663ac0cc 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -296,7 +297,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java index 100f9e512f..6c479a8c4f 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCallToChangeClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -50,6 +51,9 @@ public class RequestCallToChangeClass implements IClientIncomingPacket return; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CALL_TO_CHANGE_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + } } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index c32c99e6b8..d526a2f9e3 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java index 3d9289edd0..af6a1e1b22 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java @@ -842,7 +842,11 @@ public class CeremonyOfChaos extends AbstractNpcAI final StatSet params = new StatSet(); params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT)) + { + EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 248feaef13..1145cf068f 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/ItemTable.java index 6190a5f9d5..038abf3f97 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -353,7 +354,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 0bd0848a08..03a461b027 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 6a167afde1..91d934ca08 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.model.actor.status.AttackableStatus; import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -291,9 +292,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -765,7 +766,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -829,7 +830,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java index 796b81fd47..a0889d3226 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3980,23 +3995,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4725,7 +4745,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4740,28 +4760,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5149,14 +5171,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5595,7 +5620,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Npc.java index fb2ea5b058..e4d122c96c 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1056,9 +1056,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1161,7 +1164,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1333,7 +1339,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1534,7 +1540,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Player.java index 1a665fd5d2..567d5b48f7 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1946,7 +1946,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2056,7 +2060,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2304,7 +2311,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2345,7 +2355,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2373,7 +2387,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4874,7 +4891,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -7983,7 +8003,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8055,10 +8079,15 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } + return false; } @@ -9695,7 +9724,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9871,7 +9900,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -10027,7 +10059,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10199,15 +10235,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10873,7 +10914,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11245,14 +11289,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13590,7 +13636,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Summon.java index 2f7d5c45ea..2a6d8fade4 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index 678412218a..5919755700 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -42,10 +43,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 9889e093e1..d596e1fe58 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -241,7 +242,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExPledgeMissionRewardCount(getActiveChar())); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/clan/Clan.java index 84182fd985..eef93f9fce 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -260,7 +261,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -393,7 +398,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -558,7 +566,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2345,7 +2356,10 @@ public class Clan implements IIdentifiable, INamable increasedLevel = true; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } } } if (!increasedLevel) diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index a5b24cb082..3a6780326a 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 7b4a50a698..80150dce73 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -344,7 +345,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index f3e2f5c93d..d415f58812 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/item/Weapon.java index e3bb874b2b..2eb41538ea 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -307,7 +308,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/item/instance/Item.java index b161fb7dc3..5d88f23c6d 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -305,9 +306,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -992,7 +993,10 @@ public class Item extends WorldObject getActingPlayer().getInventory().getPaperdollCache().clearMaxSetEnchant(); // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ENCHANT_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + } } /** @@ -1035,7 +1039,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1065,7 +1073,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1271,7 +1282,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ATTRIBUTE_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + } } /** @@ -1598,7 +1612,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2098,9 +2115,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } @@ -2193,7 +2213,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_SOUL_CRYSTAL_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + } } public void removeSpecialAbility(int position, int type) diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 4792c69056..20b9fb6c6c 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1602,7 +1603,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 18acfc5b0b..2158e04195 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -426,7 +427,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -493,7 +497,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -525,7 +532,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -579,7 +589,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -652,7 +662,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -685,7 +695,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index fd681ab3d4..0e3b590570 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -923,7 +924,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index afa106ab93..06f880c154 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -466,7 +467,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -491,8 +495,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -530,8 +538,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -606,7 +617,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardQuests(_playerTwo.getPlayer()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -635,7 +649,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardQuests(_playerTwo.getPlayer()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index fdb386dd90..030ac42234 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/siege/Siege.java index 524d427d9c..5e1ca3aa2e 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 007ef9ac1d..034ee7619f 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index 56a0436a24..785e526a2e 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index deec0db9df..28fd7bfbe3 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -40,6 +40,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; @@ -383,7 +384,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); if (Config.SHOW_INTRO_VIDEO) { diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 8ba2431af6..a7ed6a1d3a 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 2ee884db0d..ef190f757e 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Fisherman; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -653,9 +654,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index a64477703b..1557b8ea92 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -126,10 +127,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -233,7 +237,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -244,7 +248,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index d285ab1b5d..5c6bc16b4b 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 47b79ff874..50663ac0cc 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -296,7 +297,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java index 100f9e512f..6c479a8c4f 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCallToChangeClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -50,6 +51,9 @@ public class RequestCallToChangeClass implements IClientIncomingPacket return; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CALL_TO_CHANGE_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + } } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index c32c99e6b8..d526a2f9e3 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java index 4487c4454f..d3a42f7b92 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java @@ -842,7 +842,11 @@ public class CeremonyOfChaos extends AbstractNpcAI final StatSet params = new StatSet(); params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT)) + { + EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 248feaef13..1145cf068f 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/ItemTable.java index 6190a5f9d5..038abf3f97 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -353,7 +354,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 0bd0848a08..03a461b027 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Attackable.java index cb290b8ac9..758a3e68c9 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.model.actor.status.AttackableStatus; import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -291,9 +292,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -776,7 +777,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -840,7 +841,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java index e4d3e31542..747aa0f030 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3979,23 +3994,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4724,7 +4744,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4739,28 +4759,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5148,14 +5170,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5594,7 +5619,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Npc.java index fb2ea5b058..e4d122c96c 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1056,9 +1056,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1161,7 +1164,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1333,7 +1339,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1534,7 +1540,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Player.java index 95cc657810..4788e24e13 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1963,7 +1963,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2073,7 +2077,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2241,7 +2248,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2280,7 +2290,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2308,7 +2322,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4812,7 +4829,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -8011,7 +8031,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8083,10 +8107,15 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } + return false; } @@ -9723,7 +9752,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9899,7 +9928,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -10062,7 +10094,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10234,15 +10270,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10908,7 +10949,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11287,14 +11331,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13639,7 +13685,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Summon.java index f29ff1789b..b391d78aaf 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index 7dd70aa301..fb62b6cfff 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -43,10 +44,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 959a1098b4..7394de3dd7 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -241,7 +242,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExPledgeMissionRewardCount(getActiveChar())); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/Clan.java index 58ad487175..6adc2cf027 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -259,7 +260,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -392,7 +397,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -557,7 +565,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2344,7 +2355,10 @@ public class Clan implements IIdentifiable, INamable increasedLevel = true; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } } } if (!increasedLevel) diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index b3897b4b2e..8c535a998e 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 7b4a50a698..80150dce73 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -344,7 +345,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 6315bb208f..7cc749e53a 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/item/Weapon.java index fdc53fe8e6..a9b4d7740e 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -317,7 +318,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/item/instance/Item.java index b161fb7dc3..5d88f23c6d 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -305,9 +306,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -992,7 +993,10 @@ public class Item extends WorldObject getActingPlayer().getInventory().getPaperdollCache().clearMaxSetEnchant(); // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ENCHANT_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + } } /** @@ -1035,7 +1039,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1065,7 +1073,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1271,7 +1282,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ATTRIBUTE_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + } } /** @@ -1598,7 +1612,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2098,9 +2115,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } @@ -2193,7 +2213,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_SOUL_CRYSTAL_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + } } public void removeSpecialAbility(int position, int type) diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 9e316874a5..c36b922c21 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1596,7 +1597,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 18acfc5b0b..2158e04195 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -426,7 +427,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -493,7 +497,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -525,7 +532,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -579,7 +589,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -652,7 +662,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -685,7 +695,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 22accd82c3..cd8ab2b4ce 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -948,7 +949,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index afa106ab93..06f880c154 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -466,7 +467,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -491,8 +495,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -530,8 +538,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -606,7 +617,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardQuests(_playerTwo.getPlayer()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -635,7 +649,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardQuests(_playerTwo.getPlayer()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index 9da61e56da..dcc6dba948 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -337,7 +341,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/siege/Siege.java index c69bfddce1..2d2cf8c7bf 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -59,6 +59,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -345,7 +346,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -467,7 +471,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -527,7 +534,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 954d32dfc7..77e3700182 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index 56a0436a24..785e526a2e 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index deec0db9df..28fd7bfbe3 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -40,6 +40,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; @@ -383,7 +384,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); if (Config.SHOW_INTRO_VIDEO) { diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index f14c4da587..174506d546 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Fisherman; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -653,9 +654,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index a64477703b..1557b8ea92 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -126,10 +127,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -233,7 +237,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -244,7 +248,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index d285ab1b5d..5c6bc16b4b 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 47b79ff874..50663ac0cc 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -296,7 +297,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java index 100f9e512f..6c479a8c4f 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCallToChangeClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -50,6 +51,9 @@ public class RequestCallToChangeClass implements IClientIncomingPacket return; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CALL_TO_CHANGE_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + } } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index c32c99e6b8..d526a2f9e3 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java index 4487c4454f..d3a42f7b92 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java @@ -842,7 +842,11 @@ public class CeremonyOfChaos extends AbstractNpcAI final StatSet params = new StatSet(); params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT)) + { + EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 248feaef13..1145cf068f 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/ItemTable.java index 6ba4b6acfc..b529270079 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.Armor; @@ -365,7 +366,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 0bd0848a08..03a461b027 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Attackable.java index cb290b8ac9..758a3e68c9 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.model.actor.status.AttackableStatus; import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -291,9 +292,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -776,7 +777,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -840,7 +841,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java index d4acce1021..ba56ef28a5 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3979,23 +3994,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4724,7 +4744,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4739,28 +4759,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5148,14 +5170,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5594,7 +5619,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Npc.java index 3a1f523d9b..ee9c8098fc 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1057,9 +1057,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1162,7 +1165,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1334,7 +1340,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1535,7 +1541,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Player.java index a30def8738..a7d58821f7 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1972,7 +1972,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; if (_pkKills > 9) { @@ -2106,7 +2110,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2279,7 +2286,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2318,7 +2328,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2346,7 +2360,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4839,7 +4856,11 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } + setTotalDeaths(getTotalDeaths() + 1); // pvp/pk item rewards @@ -8120,7 +8141,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8192,10 +8217,15 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } + return false; } @@ -9859,7 +9889,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -10035,7 +10065,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -10198,7 +10231,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10375,15 +10412,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -11053,7 +11095,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } if (getReputation() < 0) { @@ -11437,14 +11482,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13794,7 +13841,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Summon.java index f29ff1789b..b391d78aaf 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index 6c2c9fcd61..9126d38bee 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -43,10 +44,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 8c0fbe6adf..4ebb5ed3ab 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -241,7 +242,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExPledgeMissionRewardCount(getActiveChar())); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/clan/Clan.java index 803fcc0513..f77905dfcb 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -259,7 +260,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -392,7 +397,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -557,7 +565,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2344,7 +2355,10 @@ public class Clan implements IIdentifiable, INamable increasedLevel = true; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } } } if (!increasedLevel) diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 0a3d8212ec..ffdfcd5574 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 7b4a50a698..80150dce73 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -344,7 +345,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 6315bb208f..7cc749e53a 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/item/Weapon.java index fdc53fe8e6..a9b4d7740e 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -317,7 +318,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 0780b9a7ba..12317d4698 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -305,9 +306,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -992,7 +993,10 @@ public class Item extends WorldObject getActingPlayer().getInventory().getPaperdollCache().clearMaxSetEnchant(); // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ENCHANT_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + } } /** @@ -1035,7 +1039,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1065,7 +1073,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1271,7 +1282,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ATTRIBUTE_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + } } /** @@ -1598,7 +1612,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2098,9 +2115,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } @@ -2193,7 +2213,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_SOUL_CRYSTAL_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + } } public void removeSpecialAbility(int position, int type) diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 3ca3f54da9..fe36cf9708 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1578,7 +1579,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index cc781cbad6..f337a29e94 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -427,7 +428,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -494,7 +498,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -526,7 +533,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -580,7 +590,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -653,7 +663,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -686,7 +696,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 0164986e0c..bf348b1261 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -965,7 +966,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 0e9a03caae..d37c8b729e 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.skill.CommonSkill; @@ -897,7 +898,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -921,8 +925,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -960,8 +968,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -1034,7 +1045,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.OLYMPIAD_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_player2Wins == 2) || (_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -1061,7 +1075,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.OLYMPIAD_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index 9da61e56da..dcc6dba948 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -337,7 +341,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/siege/Siege.java index 5896b62ef3..6dfd06a7e8 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -525,7 +532,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 5ba066ee5f..be1298d039 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -532,15 +533,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -688,7 +692,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -879,15 +886,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -996,18 +1006,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index 56a0436a24..785e526a2e 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 115c984ec3..c93c668a5f 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -37,6 +37,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -310,7 +311,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); if (Config.SHOW_INTRO_VIDEO) { diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index f7ea9c3578..2d63c53f8b 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Fisherman; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -682,9 +683,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index a64477703b..1557b8ea92 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -126,10 +127,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -233,7 +237,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -244,7 +248,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 707baf47b1..ad9252a99b 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -195,11 +196,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 7042571237..818dfd3f4f 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -297,7 +298,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } if ((etcItem != null) && etcItem.isMineral()) diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java index 100f9e512f..6c479a8c4f 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCallToChangeClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -50,6 +51,9 @@ public class RequestCallToChangeClass implements IClientIncomingPacket return; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CALL_TO_CHANGE_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + } } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index cce0abc2e4..5d0b894888 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java index 4487c4454f..d3a42f7b92 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java @@ -842,7 +842,11 @@ public class CeremonyOfChaos extends AbstractNpcAI final StatSet params = new StatSet(); params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT)) + { + EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 248feaef13..1145cf068f 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/ItemTable.java index 6ba4b6acfc..b529270079 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.Armor; @@ -365,7 +366,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 0bd0848a08..03a461b027 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Attackable.java index cb290b8ac9..758a3e68c9 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.model.actor.status.AttackableStatus; import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -291,9 +292,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -776,7 +777,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -840,7 +841,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java index d4acce1021..ba56ef28a5 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3979,23 +3994,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4724,7 +4744,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4739,28 +4759,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5148,14 +5170,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5594,7 +5619,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Npc.java index 3a1f523d9b..ee9c8098fc 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1057,9 +1057,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1162,7 +1165,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1334,7 +1340,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1535,7 +1541,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Player.java index 519ce6c760..945dbb81d9 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1989,7 +1989,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; if (_pkKills > 9) { @@ -2123,7 +2127,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2296,7 +2303,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2335,7 +2345,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2363,7 +2377,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4856,7 +4873,11 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } + setTotalDeaths(getTotalDeaths() + 1); // pvp/pk item rewards @@ -8146,7 +8167,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8218,10 +8243,15 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } + return false; } @@ -9885,7 +9915,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -10061,7 +10091,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -10225,7 +10258,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10402,15 +10439,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -11080,7 +11122,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } if (getReputation() < 0) { @@ -11464,14 +11509,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13832,7 +13879,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Summon.java index f29ff1789b..b391d78aaf 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index 6c2c9fcd61..9126d38bee 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -43,10 +44,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 8c0fbe6adf..4ebb5ed3ab 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -241,7 +242,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExPledgeMissionRewardCount(getActiveChar())); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/clan/Clan.java index 803fcc0513..f77905dfcb 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -259,7 +260,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -392,7 +397,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -557,7 +565,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2344,7 +2355,10 @@ public class Clan implements IIdentifiable, INamable increasedLevel = true; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } } } if (!increasedLevel) diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 0a3d8212ec..ffdfcd5574 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 7b4a50a698..80150dce73 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -344,7 +345,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 6315bb208f..7cc749e53a 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/item/Weapon.java index fdc53fe8e6..a9b4d7740e 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -317,7 +318,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 0780b9a7ba..12317d4698 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -305,9 +306,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -992,7 +993,10 @@ public class Item extends WorldObject getActingPlayer().getInventory().getPaperdollCache().clearMaxSetEnchant(); // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ENCHANT_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + } } /** @@ -1035,7 +1039,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1065,7 +1073,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1271,7 +1282,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ATTRIBUTE_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + } } /** @@ -1598,7 +1612,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2098,9 +2115,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } @@ -2193,7 +2213,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_SOUL_CRYSTAL_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + } } public void removeSpecialAbility(int position, int type) diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 3ca3f54da9..fe36cf9708 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1578,7 +1579,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index cc781cbad6..f337a29e94 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -427,7 +428,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -494,7 +498,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -526,7 +533,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -580,7 +590,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -653,7 +663,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -686,7 +696,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 0164986e0c..bf348b1261 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -965,7 +966,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 0e9a03caae..d37c8b729e 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.skill.CommonSkill; @@ -897,7 +898,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -921,8 +925,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -960,8 +968,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -1034,7 +1045,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.OLYMPIAD_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_player2Wins == 2) || (_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -1061,7 +1075,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.OLYMPIAD_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index 9da61e56da..dcc6dba948 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -337,7 +341,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/siege/Siege.java index 5896b62ef3..6dfd06a7e8 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -525,7 +532,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 741e687daa..56b9b19d7b 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -546,15 +547,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -702,7 +706,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -893,15 +900,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -1010,18 +1020,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index 608aca0686..6d49cddefb 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 115c984ec3..c93c668a5f 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -37,6 +37,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -310,7 +311,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); if (Config.SHOW_INTRO_VIDEO) { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index f7ea9c3578..2d63c53f8b 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Fisherman; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -682,9 +683,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index a64477703b..1557b8ea92 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -126,10 +127,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -233,7 +237,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -244,7 +248,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 707baf47b1..ad9252a99b 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -195,11 +196,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 7042571237..818dfd3f4f 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -297,7 +298,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } if ((etcItem != null) && etcItem.isMineral()) diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java index 100f9e512f..6c479a8c4f 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCallToChangeClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -50,6 +51,9 @@ public class RequestCallToChangeClass implements IClientIncomingPacket return; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CALL_TO_CHANGE_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + } } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index cce0abc2e4..5d0b894888 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java index 17b74785c8..0cfb3b697e 100644 --- a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java +++ b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java @@ -842,7 +842,11 @@ public class CeremonyOfChaos extends AbstractNpcAI final StatSet params = new StatSet(); params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT)) + { + EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 413931a2aa..708e5586a8 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/ItemTable.java index 6ba4b6acfc..b529270079 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.Armor; @@ -365,7 +366,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 16fd81c4d7..830f73ea71 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 73ceeac5da..d62430f101 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.model.actor.status.AttackableStatus; import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -291,9 +292,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -776,7 +777,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -840,7 +841,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java index ba9a79dcda..d4c9d007d8 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -638,7 +638,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -827,20 +831,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1717,8 +1724,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3978,23 +3993,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4723,7 +4743,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4738,28 +4758,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5147,14 +5169,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5593,7 +5618,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Npc.java index 3a1f523d9b..ee9c8098fc 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1057,9 +1057,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1162,7 +1165,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1334,7 +1340,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1535,7 +1541,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java index 2fd52593ef..b8f0ee4936 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1991,7 +1991,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; if (_pkKills > 9) { @@ -2125,7 +2129,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2298,7 +2305,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2337,7 +2347,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2365,7 +2379,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4877,7 +4894,11 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } + setTotalDeaths(getTotalDeaths() + 1); // pvp/pk item rewards @@ -8171,7 +8192,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8243,10 +8268,15 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } + return false; } @@ -9923,7 +9953,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -10099,7 +10129,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -10263,7 +10296,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10440,15 +10477,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -11118,7 +11160,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } if (getReputation() < 0) { @@ -11502,14 +11547,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13882,7 +13929,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Summon.java index ba80dbbc2f..20688c0c26 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index b54396eeee..33c8129813 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index 6c2c9fcd61..9126d38bee 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -43,10 +44,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 1b2d9cd98f..1aa6ad3b06 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -241,7 +242,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExPledgeMissionRewardCount(getActiveChar())); diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java index 3b7fd3469a..657e7885c4 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -259,7 +260,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -392,7 +397,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -557,7 +565,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2344,7 +2355,10 @@ public class Clan implements IIdentifiable, INamable increasedLevel = true; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } } } if (!increasedLevel) diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 9ad82673f7..317fe2b1ff 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 54b3cbfa33..634794f737 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -344,7 +345,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index e8e00fb9ba..00b587e974 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/item/Weapon.java index fdc53fe8e6..a9b4d7740e 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -317,7 +318,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 0780b9a7ba..12317d4698 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -305,9 +306,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -992,7 +993,10 @@ public class Item extends WorldObject getActingPlayer().getInventory().getPaperdollCache().clearMaxSetEnchant(); // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ENCHANT_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + } } /** @@ -1035,7 +1039,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1065,7 +1073,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1271,7 +1282,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ATTRIBUTE_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + } } /** @@ -1598,7 +1612,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2098,9 +2115,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } @@ -2193,7 +2213,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_SOUL_CRYSTAL_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + } } public void removeSpecialAbility(int position, int type) diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 8dc917feae..bc30b1ada7 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1589,7 +1590,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 1b43c7dc7e..fa6e615c90 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -429,7 +430,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -507,7 +511,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -539,7 +546,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -606,7 +616,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); + } } return destroyedItem; @@ -677,7 +690,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -710,7 +723,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 5cce74a21c..6ddac19416 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -965,7 +966,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 5de7d1818a..c783b5bca5 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.skill.CommonSkill; @@ -897,7 +898,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -921,8 +925,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -960,8 +968,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -1034,7 +1045,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.OLYMPIAD_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_player2Wins == 2) || (_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -1061,7 +1075,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.OLYMPIAD_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index 4acae02227..0032496f30 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -337,7 +341,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/siege/Siege.java index 1d6235e4e8..dd2321405e 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -525,7 +532,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 480342a454..4891cb5980 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -546,15 +547,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -702,7 +706,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -893,15 +900,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -1010,18 +1020,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index 6ec7c36e22..63a4f12ba9 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 115c984ec3..c93c668a5f 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -37,6 +37,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -310,7 +311,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); if (Config.SHOW_INTRO_VIDEO) { diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 5c372ef660..d932c1b000 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Fisherman; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -682,9 +683,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index a64477703b..1557b8ea92 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -126,10 +127,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -233,7 +237,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -244,7 +248,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 707baf47b1..ad9252a99b 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -195,11 +196,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 79a1599225..671f0431a5 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -297,7 +298,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } if ((etcItem != null) && etcItem.isMineral()) diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java index 100f9e512f..6c479a8c4f 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCallToChangeClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -50,6 +51,9 @@ public class RequestCallToChangeClass implements IClientIncomingPacket return; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CALL_TO_CHANGE_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + } } } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index b862aa828d..c22f1624dd 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index 5a4fef3472..6fa04d1a05 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.S1_S_MENTORING_CONTRACT_IS_CANCELLED_THE_MENTOR_CANNOT_BOND_WITH_ANOTHER_MENTEE_FOR_2_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java index 17b74785c8..0cfb3b697e 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java +++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/instances/CeremonyOfChaos/CeremonyOfChaos.java @@ -842,7 +842,11 @@ public class CeremonyOfChaos extends AbstractNpcAI final StatSet params = new StatSet(); params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT)) + { + EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 413931a2aa..708e5586a8 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/ItemTable.java index 6ba4b6acfc..b529270079 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.Armor; @@ -365,7 +366,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 16fd81c4d7..830f73ea71 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 73ceeac5da..d62430f101 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.model.actor.status.AttackableStatus; import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -291,9 +292,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -776,7 +777,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -840,7 +841,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java index ba9a79dcda..d4c9d007d8 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -638,7 +638,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -827,20 +831,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1717,8 +1724,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3978,23 +3993,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4723,7 +4743,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4738,28 +4758,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5147,14 +5169,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5593,7 +5618,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Npc.java index 3a1f523d9b..ee9c8098fc 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1057,9 +1057,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1162,7 +1165,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1334,7 +1340,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1535,7 +1541,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java index 5c446e0b0f..a773e1e0e6 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1991,7 +1991,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; if (_pkKills > 9) { @@ -2125,7 +2129,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2298,7 +2305,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2337,7 +2347,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2365,7 +2379,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4905,7 +4922,11 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } + setTotalDeaths(getTotalDeaths() + 1); // pvp/pk item rewards @@ -8199,7 +8220,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8271,10 +8296,15 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } + return false; } @@ -9951,7 +9981,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -10127,7 +10157,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -10291,7 +10324,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10468,15 +10505,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -11146,7 +11188,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } if (getReputation() < 0) { @@ -11530,14 +11575,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13910,7 +13957,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Summon.java index ba80dbbc2f..20688c0c26 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index b54396eeee..33c8129813 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index 6c2c9fcd61..9126d38bee 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -43,10 +44,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 1b2d9cd98f..1aa6ad3b06 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -241,7 +242,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExPledgeMissionRewardCount(getActiveChar())); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java index 3b7fd3469a..657e7885c4 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -259,7 +260,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -392,7 +397,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -557,7 +565,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2344,7 +2355,10 @@ public class Clan implements IIdentifiable, INamable increasedLevel = true; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } } } if (!increasedLevel) diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 9ad82673f7..317fe2b1ff 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 54b3cbfa33..634794f737 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -344,7 +345,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index e8e00fb9ba..00b587e974 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/item/Weapon.java index fdc53fe8e6..a9b4d7740e 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -317,7 +318,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 0780b9a7ba..12317d4698 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -305,9 +306,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -992,7 +993,10 @@ public class Item extends WorldObject getActingPlayer().getInventory().getPaperdollCache().clearMaxSetEnchant(); // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ENCHANT_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemEnchantAdd(getActingPlayer(), this)); + } } /** @@ -1035,7 +1039,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1065,7 +1073,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1271,7 +1282,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_ATTRIBUTE_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this)); + } } /** @@ -1598,7 +1612,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2098,9 +2115,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } @@ -2193,7 +2213,10 @@ public class Item extends WorldObject } // Notify to Scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_SOUL_CRYSTAL_ADD)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this)); + } } public void removeSpecialAbility(int position, int type) diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 8dc917feae..bc30b1ada7 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1589,7 +1590,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 1b43c7dc7e..fa6e615c90 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -429,7 +430,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -507,7 +511,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -539,7 +546,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -606,7 +616,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); + } } return destroyedItem; @@ -677,7 +690,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -710,7 +723,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 5cce74a21c..6ddac19416 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -965,7 +966,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 9fe4265519..b08d1a2acb 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.skill.CommonSkill; @@ -897,7 +898,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -921,8 +925,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -960,8 +968,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -1034,7 +1045,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.OLYMPIAD_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_player2Wins == 2) || (_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -1061,7 +1075,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.OLYMPIAD_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index 4acae02227..0032496f30 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -337,7 +341,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/siege/Siege.java index 1d6235e4e8..dd2321405e 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -525,7 +532,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index ec9be713bb..58e215b7ab 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -546,15 +547,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -702,7 +706,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -893,15 +900,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -1010,18 +1020,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index 6ec7c36e22..63a4f12ba9 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 115c984ec3..c93c668a5f 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -37,6 +37,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -310,7 +311,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); if (Config.SHOW_INTRO_VIDEO) { diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 5c372ef660..d932c1b000 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Fisherman; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -682,9 +683,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index a64477703b..1557b8ea92 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -126,10 +127,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -233,7 +237,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -244,7 +248,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 707baf47b1..ad9252a99b 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -195,11 +196,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 3c83e970fd..5906bc346a 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -297,7 +298,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } if ((etcItem != null) && etcItem.isMineral()) diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java index 100f9e512f..6c479a8c4f 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/awakening/RequestCallToChangeClass.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCallToChangeClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -50,6 +51,9 @@ public class RequestCallToChangeClass implements IClientIncomingPacket return; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CALL_TO_CHANGE_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerCallToChangeClass(player), player); + } } } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index b862aa828d..c22f1624dd 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index 5a4fef3472..6fa04d1a05 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.S1_S_MENTORING_CONTRACT_IS_CANCELLED_THE_MENTOR_CANNOT_BOND_WITH_ANOTHER_MENTEE_FOR_2_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 0a7ef61a66..d44605339a 100644 --- a/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 8feaa89ac8..69be957d28 100644 --- a/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 79bab0e07e..b26dcd1f38 100644 --- a/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.trap.OnTrapAction; import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -83,7 +84,11 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, info.getEffector(), TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, info.getEffector(), TrapAction.TRAP_DISARMED), trap); + } + trap.unSummon(); if (info.getEffector().isPlayer()) { diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 36f5a46604..901ca2267f 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.instance.RiftInvader; import org.l2jmobius.gameserver.model.actor.instance.StaticObject; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -554,7 +555,7 @@ public class AttackableAI extends CreatureAI } return; } - if (target.isPlayable()) + if (target.isPlayable() && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), target.getActingPlayer(), target.isSummon()), getActiveChar(), TerminateReturn.class); if ((term != null) && term.terminate()) @@ -896,7 +897,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 189bbe1e99..9f481fefda 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.Weapon; @@ -696,11 +697,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // If the Intention was AI_INTENTION_MOVE_TO, set the Intention to AI_INTENTION_ACTIVE diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/ItemTable.java index f83ed92a92..5c0998c42d 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -341,7 +342,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 50eda636bd..bd69ede33c 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.model.events.impl.creature.player.clan.OnPlayerClanCreate; @@ -212,7 +213,11 @@ public class ClanTable player.sendPacket(SystemMessageId.YOUR_CLAN_HAS_BEEN_CREATED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -323,7 +328,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -358,7 +366,10 @@ public class ClanTable final Clan clan1 = getClan(clanId1); final Clan clan2 = getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(clan1, clan2)); + } clan1.setEnemyClan(clan2); clan2.setAttackerClan(clan1); @@ -397,7 +408,10 @@ public class ClanTable final Clan clan1 = getClan(clanId1); final Clan clan2 = getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteEnemyClan(clan2); clan2.deleteAttackerClan(clan1); diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 820d96b3fd..d85510e8ea 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.model.actor.status.AttackableStatus; import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableKill; @@ -310,9 +311,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Delayed notification + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsyncDelayed(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this, _onKillDelay); } @@ -722,7 +723,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (damage * 100) / (getLevel() + 7)); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -778,7 +779,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java index 991b468c89..c45b557421 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -539,9 +539,14 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { return; } + spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -926,34 +931,37 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } // Notify to scripts - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + final TerminateReturn attackReturn = EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this, TerminateReturn.class); + if ((attackReturn != null) && attackReturn.terminate()) + { + getAI().setIntention(AI_INTENTION_ACTIVE); + sendPacket(ActionFailed.STATIC_PACKET); + return; + } } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - - final TerminateReturn attackReturn = EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this, TerminateReturn.class); - if ((attackReturn != null) && attackReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - getAI().setIntention(AI_INTENTION_ACTIVE); - sendPacket(ActionFailed.STATIC_PACKET); - return; - } - - // Notify to scripts - if (_onCreatureAttacked == null) - { - _onCreatureAttacked = new OnCreatureAttacked(); - } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - final TerminateReturn attackedReturn = EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target, TerminateReturn.class); - if ((attackedReturn != null) && attackedReturn.terminate()) - { - getAI().setIntention(AI_INTENTION_ACTIVE); - sendPacket(ActionFailed.STATIC_PACKET); - return; + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + final TerminateReturn attackedReturn = EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target, TerminateReturn.class); + if ((attackedReturn != null) && attackedReturn.terminate()) + { + getAI().setIntention(AI_INTENTION_ACTIVE); + sendPacket(ActionFailed.STATIC_PACKET); + return; + } } if (!isAlikeDead()) @@ -1623,32 +1631,35 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } - if (_onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, this)) { - _onCreatureSkillUse = new OnCreatureSkillUse(); - } - _onCreatureSkillUse.setCaster(this); - _onCreatureSkillUse.setSkill(skill); - _onCreatureSkillUse.setSimultaneously(simultaneously); - _onCreatureSkillUse.setTarget(target); - _onCreatureSkillUse.setTargets(targets); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureSkillUse, this, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - if (simultaneously) + if (_onCreatureSkillUse == null) { - setCastingSimultaneouslyNow(false); + _onCreatureSkillUse = new OnCreatureSkillUse(); } - else + _onCreatureSkillUse.setCaster(this); + _onCreatureSkillUse.setSkill(skill); + _onCreatureSkillUse.setSimultaneously(simultaneously); + _onCreatureSkillUse.setTarget(target); + _onCreatureSkillUse.setTargets(targets); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureSkillUse, this, TerminateReturn.class); + if ((term != null) && term.terminate()) { - setCastingNow(false); + if (simultaneously) + { + setCastingSimultaneouslyNow(false); + } + else + { + setCastingNow(false); + } + if (isPlayer()) + { + sendPacket(ActionFailed.STATIC_PACKET); + getAI().setIntention(AI_INTENTION_ACTIVE); + } + return; } - if (isPlayer()) - { - sendPacket(ActionFailed.STATIC_PACKET); - getAI().setIntention(AI_INTENTION_ACTIVE); - } - return; } // TODO: Unhardcode using event listeners! @@ -2307,11 +2318,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, this)) + { + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // Calculate rewards for main damage dealer. @@ -5697,7 +5714,10 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, targets, isSummon()), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, targets, isSummon()), npcMob); + } // On Skill See logic if (npcMob.isAttackable()) @@ -6412,7 +6432,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyDamageReceived(double damage, Creature attacker, Skill skill, boolean critical, boolean damageOverTime) { - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -6426,18 +6446,20 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setDamageOverTime(damageOverTime); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); + if (_onCreatureDamageReceived == null) + { + _onCreatureDamageReceived = new OnCreatureDamageReceived(); + } + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(damage); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(damageOverTime); + EventDispatcher.getInstance().notifyEventAsync(_onCreatureDamageReceived, this); } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(damage); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(damageOverTime); - EventDispatcher.getInstance().notifyEventAsync(_onCreatureDamageReceived, this); } /** @@ -6447,14 +6469,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -6702,7 +6727,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Npc.java index 91ec009f81..01e071994d 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1201,9 +1201,12 @@ public class Npc extends Creature if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1463,7 +1466,7 @@ public class Npc extends Creature @Override protected final void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if ((target != null) && target.isPlayable()) + if ((target != null) && target.isPlayable() && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1684,7 +1687,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java index dcfbb9b9d4..8afccb9fc3 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.templates.CreatureTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -93,10 +94,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java index 0941fbdd3f..78f9bcb351 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1682,7 +1682,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -1897,7 +1901,10 @@ public class Player extends Playable public void setKarma(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerKarmaChanged(this, getKarma(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_KARMA_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerKarmaChanged(this, getKarma(), value), this); + } int karma = value; if (karma < 0) @@ -2123,8 +2130,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); - + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2164,7 +2173,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2192,7 +2205,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4792,7 +4808,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -7671,7 +7690,11 @@ public class Player extends Playable sendPacket(SystemMessageId.THE_SYMBOL_HAS_BEEN_DELETED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -7713,7 +7736,11 @@ public class Player extends Playable // sendPacket(new ExBrExtraUserInfo(this)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } } @@ -9650,7 +9677,7 @@ public class Player extends Playable } // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9705,7 +9732,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -10030,7 +10060,10 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } } public long getLastAccess() @@ -10599,7 +10632,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java index 675204176d..688efe6597 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -138,7 +139,10 @@ public abstract class Summon extends Playable rechargeShots(true, true); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 76af722dba..5ace38e56d 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -200,7 +200,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/QuestGuard.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/QuestGuard.java index 986dfd22c8..4692983811 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/QuestGuard.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/QuestGuard.java @@ -20,6 +20,7 @@ import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableKill; import org.l2jmobius.gameserver.model.skill.Skill; @@ -49,7 +50,7 @@ public class QuestGuard extends Guard { super.addDamage(attacker, damage, skill); - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -64,9 +65,9 @@ public class QuestGuard extends Guard return false; } - if (killer.isAttackable()) + // Delayed notification + if (killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsyncDelayed(new OnAttackableKill(null, this, false), this, _onKillDelay); } return true; diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 5bce7e4fc9..5f6a12498c 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.trap.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -368,7 +369,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -396,7 +401,11 @@ public class Trap extends Npc broadcastPacket(new TrapInfo(this, null)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index b579f00a2c..5fae66c40f 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.playable.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -43,10 +44,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index ffb76fed63..f94d0e00ce 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.ClassMaster; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -223,7 +224,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel(), getLevel() + value), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel(), getLevel() + value), getActiveChar()); + } final boolean levelIncreased = super.addLevel(value); if (levelIncreased) diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java index f0eedc6db4..0af65890ec 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -49,6 +49,7 @@ import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.clan.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.clan.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.clan.OnPlayerClanLeft; @@ -229,7 +230,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -362,7 +367,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -514,7 +522,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public ClanMember[] getMembers() @@ -2607,7 +2618,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index 901d15a8b3..7273678f2c 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,37 @@ public class EventDispatcher return null; } + /** + * Scheduling current listener notification asynchronously after specified delay. + * @param event + * @param container + * @param delay + */ + public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + } + + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +172,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +232,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +271,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/item/Weapon.java index a1ff24df99..29ca2834d0 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.conditions.ConditionGameChance; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.type.WeaponType; @@ -424,7 +425,13 @@ public class Weapon extends ItemTemplate target }; - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), onMagicSkill, targets, false), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), onMagicSkill, targets, false), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 862c460262..574406fa26 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.WorldRegion; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.inventory.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.inventory.OnPlayerItemPickup; @@ -271,9 +272,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -917,7 +918,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -947,7 +952,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1336,7 +1344,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -1772,9 +1783,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 0df48bb518..aabf46f88d 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.clanwh.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.clanwh.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.clanwh.OnPlayerClanWHItemTransfer; @@ -85,7 +86,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -93,7 +98,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -101,7 +110,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, int count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -111,7 +124,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 7f8c83351f..6892541f3c 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -1047,7 +1048,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 81b3ca3acc..c0a1ad4bed 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.inventory.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.inventory.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.inventory.OnPlayerItemDrop; @@ -429,9 +430,9 @@ public class PlayerInventory extends Inventory _ancientAdena = addedItem; } - if (actor != null) + // Notify to scripts + if ((actor != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor); } } @@ -482,7 +483,10 @@ public class PlayerInventory extends Inventory actor.sendPacket(su); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor); + } } } return item; @@ -514,7 +518,11 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } + return item; } @@ -556,7 +564,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -629,7 +637,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -662,10 +670,11 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } + return item; } diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGame.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGame.java index f340432261..29888097b4 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGame.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGame.java @@ -42,6 +42,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.siege.Castle; @@ -690,7 +691,10 @@ class OlympiadGame broadcastMessage(_sm2, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, _type), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, _type), Olympiad.getInstance()); + } } catch (Exception e) { @@ -733,7 +737,10 @@ class OlympiadGame broadcastMessage(_sm2, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, _type), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, _type), Olympiad.getInstance()); + } } catch (Exception e) { @@ -768,8 +775,11 @@ class OlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, _type), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, _type), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, _type), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, _type), Olympiad.getInstance()); + } } catch (Exception e) { @@ -852,7 +862,10 @@ class OlympiadGame _playerOne.sendPacket(sm); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, _type), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, _type), Olympiad.getInstance()); + } } catch (Exception e) { @@ -892,7 +905,10 @@ class OlympiadGame _playerTwo.sendPacket(sm); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, _type), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, _type), Olympiad.getInstance()); + } } catch (Exception e) { diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/siege/Siege.java index 64affb2164..f834002aa4 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.castle.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.castle.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.castle.OnCastleSiegeStart; @@ -333,7 +334,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), _castle); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, _castle)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), _castle); + } } } @@ -454,7 +458,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), _castle); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, _castle)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), _castle); + } } } } @@ -513,7 +520,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_e.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), _castle); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, _castle)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), _castle); + } } } diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index e87100863f..0a143897e8 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -405,7 +406,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -426,7 +431,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index eca875d21c..a141c5a9e3 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -39,6 +39,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -306,7 +307,11 @@ public class CharacterCreate implements IClientIncomingPacket startTutorialQuest(newChar); } - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 840348983f..3ed3916fe3 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -63,8 +64,11 @@ public class CharacterDelete implements IClientIncomingPacket case 0: // Success! { client.sendPacket(new CharDeleteSuccess()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } case 1: diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index 6e3c9eb552..8918e6aa19 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -154,11 +155,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } // client.sendPacket(new SSQInfo()); diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index bd023170f5..90ec5f4688 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -56,10 +57,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 6f4f799e45..34617f958f 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.data.xml.DoorData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -180,11 +181,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index ef306edd36..b84f5b3e0b 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Folk; import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -286,7 +287,10 @@ public class RequestAcquireSkill implements IClientIncomingPacket } // Notify scripts of the skill learn. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } /** diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index 5873e6332e..f3e6c9575e 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -31,6 +31,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -215,7 +216,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -274,7 +275,10 @@ public class RequestBypassToServer implements IClientIncomingPacket } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _command), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _command), player); + } } /** diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index ffee840a04..13b1a64f20 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -186,10 +187,13 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, World.getInstance().getPlayer(_target), _text, chatType), ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT)) { - _text = filter.getFilteredText(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, World.getInstance().getPlayer(_target), _text, chatType), ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + } } // Say Filter implementation diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 0a7ef61a66..d44605339a 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 8feaa89ac8..69be957d28 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 79bab0e07e..b26dcd1f38 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.trap.OnTrapAction; import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -83,7 +84,11 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, info.getEffector(), TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, info.getEffector(), TrapAction.TRAP_DISARMED), trap); + } + trap.unSummon(); if (info.getEffector().isPlayer()) { diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 36f5a46604..901ca2267f 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.instance.RiftInvader; import org.l2jmobius.gameserver.model.actor.instance.StaticObject; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -554,7 +555,7 @@ public class AttackableAI extends CreatureAI } return; } - if (target.isPlayable()) + if (target.isPlayable() && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), target.getActingPlayer(), target.isSummon()), getActiveChar(), TerminateReturn.class); if ((term != null) && term.terminate()) @@ -896,7 +897,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/ai/CreatureAI.java index faa974196a..599d69f6d3 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.Weapon; @@ -698,11 +699,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // If the Intention was AI_INTENTION_MOVE_TO, set the Intention to AI_INTENTION_ACTIVE diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/ItemTable.java index 7234426752..9794eaa56c 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -347,7 +348,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index a186044888..4bd5ecbba3 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -43,6 +43,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.model.events.impl.creature.player.clan.OnPlayerClanCreate; @@ -217,7 +218,11 @@ public class ClanTable player.sendPacket(SystemMessageId.YOUR_CLAN_HAS_BEEN_CREATED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -346,7 +351,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -381,7 +389,10 @@ public class ClanTable final Clan clan1 = getClan(clanId1); final Clan clan2 = getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(clan1, clan2)); + } clan1.setEnemyClan(clan2); clan2.setAttackerClan(clan1); @@ -420,7 +431,10 @@ public class ClanTable final Clan clan1 = getClan(clanId1); final Clan clan2 = getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteEnemyClan(clan2); clan2.deleteAttackerClan(clan1); diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 7968ba4ff6..94ed2374b0 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.status.AttackableStatus; import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableKill; @@ -311,9 +312,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Delayed notification + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsyncDelayed(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this, _onKillDelay); } @@ -723,7 +724,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (damage * 100) / (getLevel() + 7)); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -779,7 +780,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Creature.java index 5ea8a7a379..4a58175650 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -569,9 +569,14 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { return; } + spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -961,34 +966,37 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } // Notify to scripts - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + final TerminateReturn attackReturn = EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this, TerminateReturn.class); + if ((attackReturn != null) && attackReturn.terminate()) + { + getAI().setIntention(AI_INTENTION_ACTIVE); + sendPacket(ActionFailed.STATIC_PACKET); + return; + } } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - - final TerminateReturn attackReturn = EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this, TerminateReturn.class); - if ((attackReturn != null) && attackReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - getAI().setIntention(AI_INTENTION_ACTIVE); - sendPacket(ActionFailed.STATIC_PACKET); - return; - } - - // Notify to scripts - if (_onCreatureAttacked == null) - { - _onCreatureAttacked = new OnCreatureAttacked(); - } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - final TerminateReturn attackedReturn = EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target, TerminateReturn.class); - if ((attackedReturn != null) && attackedReturn.terminate()) - { - getAI().setIntention(AI_INTENTION_ACTIVE); - sendPacket(ActionFailed.STATIC_PACKET); - return; + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + final TerminateReturn attackedReturn = EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target, TerminateReturn.class); + if ((attackedReturn != null) && attackedReturn.terminate()) + { + getAI().setIntention(AI_INTENTION_ACTIVE); + sendPacket(ActionFailed.STATIC_PACKET); + return; + } } if (!isAlikeDead()) @@ -1752,32 +1760,35 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } - if (_onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, this)) { - _onCreatureSkillUse = new OnCreatureSkillUse(); - } - _onCreatureSkillUse.setCaster(this); - _onCreatureSkillUse.setSkill(skill); - _onCreatureSkillUse.setSimultaneously(simultaneously); - _onCreatureSkillUse.setTarget(target); - _onCreatureSkillUse.setTargets(targets); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureSkillUse, this, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - if (simultaneously) + if (_onCreatureSkillUse == null) { - setCastingSimultaneouslyNow(false); + _onCreatureSkillUse = new OnCreatureSkillUse(); } - else + _onCreatureSkillUse.setCaster(this); + _onCreatureSkillUse.setSkill(skill); + _onCreatureSkillUse.setSimultaneously(simultaneously); + _onCreatureSkillUse.setTarget(target); + _onCreatureSkillUse.setTargets(targets); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureSkillUse, this, TerminateReturn.class); + if ((term != null) && term.terminate()) { - setCastingNow(false); + if (simultaneously) + { + setCastingSimultaneouslyNow(false); + } + else + { + setCastingNow(false); + } + if (isPlayer()) + { + sendPacket(ActionFailed.STATIC_PACKET); + getAI().setIntention(AI_INTENTION_ACTIVE); + } + return; } - if (isPlayer()) - { - sendPacket(ActionFailed.STATIC_PACKET); - getAI().setIntention(AI_INTENTION_ACTIVE); - } - return; } // TODO: Unhardcode using event listeners! @@ -2461,11 +2472,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, this)) + { + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // Calculate rewards for main damage dealer. @@ -5927,7 +5944,10 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, targets, isSummon()), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, targets, isSummon()), npcMob); + } // On Skill See logic if (npcMob.isAttackable()) @@ -6643,7 +6663,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyDamageReceived(double damage, Creature attacker, Skill skill, boolean critical, boolean damageOverTime) { - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -6657,18 +6677,20 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setDamageOverTime(damageOverTime); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); + if (_onCreatureDamageReceived == null) + { + _onCreatureDamageReceived = new OnCreatureDamageReceived(); + } + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(damage); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(damageOverTime); + EventDispatcher.getInstance().notifyEventAsync(_onCreatureDamageReceived, this); } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(damage); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(damageOverTime); - EventDispatcher.getInstance().notifyEventAsync(_onCreatureDamageReceived, this); } /** @@ -6678,14 +6700,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -6941,7 +6966,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Npc.java index 372b719aa6..a20bf10baf 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1260,9 +1260,12 @@ public class Npc extends Creature if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1522,7 +1525,7 @@ public class Npc extends Creature @Override protected final void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if ((target != null) && target.isPlayable()) + if ((target != null) && target.isPlayable() && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1757,7 +1760,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Playable.java index dcfbb9b9d4..8afccb9fc3 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.templates.CreatureTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -93,10 +94,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Player.java index 3dbfbfca0c..d5a74b4598 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1837,7 +1837,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2052,7 +2056,10 @@ public class Player extends Playable public void setKarma(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerKarmaChanged(this, getKarma(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_KARMA_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerKarmaChanged(this, getKarma(), value), this); + } int karma = value; if (karma < 0) @@ -2303,8 +2310,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); - + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2344,7 +2353,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2372,7 +2385,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4738,7 +4754,10 @@ public class Player extends Playable broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(this, transformation.getId()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(this, transformation.getId()), this); + } } @Override @@ -4758,7 +4777,10 @@ public class Player extends Playable broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(this, 0), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(this, 0), this); + } } @Override @@ -5104,7 +5126,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -8130,7 +8155,11 @@ public class Player extends Playable sendPacket(SystemMessageId.THE_SYMBOL_HAS_BEEN_DELETED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8172,7 +8201,11 @@ public class Player extends Playable sendPacket(new ExBrExtraUserInfo(this)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } } @@ -10180,7 +10213,7 @@ public class Player extends Playable } // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -10235,7 +10268,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -10566,7 +10602,10 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } } public long getLastAccess() @@ -11169,7 +11208,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Summon.java index 2567e80c4f..aa496b7720 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -48,6 +48,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -142,7 +143,10 @@ public abstract class Summon extends Playable rechargeShots(true, true); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 76af722dba..5ace38e56d 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -200,7 +200,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/QuestGuard.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/QuestGuard.java index 986dfd22c8..4692983811 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/QuestGuard.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/QuestGuard.java @@ -20,6 +20,7 @@ import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableKill; import org.l2jmobius.gameserver.model.skill.Skill; @@ -49,7 +50,7 @@ public class QuestGuard extends Guard { super.addDamage(attacker, damage, skill); - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -64,9 +65,9 @@ public class QuestGuard extends Guard return false; } - if (killer.isAttackable()) + // Delayed notification + if (killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsyncDelayed(new OnAttackableKill(null, this, false), this, _onKillDelay); } return true; diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 5bce7e4fc9..5f6a12498c 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.trap.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -368,7 +369,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -396,7 +401,11 @@ public class Trap extends Npc broadcastPacket(new TrapInfo(this, null)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index b579f00a2c..5fae66c40f 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.playable.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -43,10 +44,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index e3c5b8cfff..0d758888b8 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.ClassMaster; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.actor.transform.TransformTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -231,7 +232,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel(), getLevel() + value), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel(), getLevel() + value), getActiveChar()); + } final boolean levelIncreased = super.addLevel(value); if (levelIncreased) diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/clan/Clan.java index af525cfd85..03af31d837 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.clan.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.clan.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.clan.OnPlayerClanLeft; @@ -236,7 +237,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -369,7 +374,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -529,7 +537,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public ClanMember[] getMembers() @@ -2673,7 +2684,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index 901d15a8b3..7273678f2c 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,37 @@ public class EventDispatcher return null; } + /** + * Scheduling current listener notification asynchronously after specified delay. + * @param event + * @param container + * @param delay + */ + public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + } + + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +172,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +232,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +271,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/item/Weapon.java index fa491f5eb9..4c8f9d0c5c 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.conditions.ConditionGameChance; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.type.WeaponType; @@ -434,7 +435,13 @@ public class Weapon extends ItemTemplate target }; - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), onMagicSkill, targets, false), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), onMagicSkill, targets, false), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 83d7bf8b94..a83eb26ed7 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.WorldRegion; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.inventory.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.inventory.OnPlayerItemPickup; @@ -274,9 +275,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -920,7 +921,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -950,7 +955,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1556,7 +1564,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2026,9 +2037,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 8eeb75dc13..989c4ae1fb 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.clanwh.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.clanwh.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.clanwh.OnPlayerClanWHItemTransfer; @@ -85,7 +86,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -93,7 +98,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -101,7 +110,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -111,7 +124,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 6e2e577208..b0a5ed8687 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -1128,7 +1129,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 4374902e13..6ea103671a 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.inventory.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.inventory.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.inventory.OnPlayerItemDrop; @@ -446,9 +447,9 @@ public class PlayerInventory extends Inventory _ancientAdena = addedItem; } - if (actor != null) + // Notify to scripts + if ((actor != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor); } } @@ -499,7 +500,10 @@ public class PlayerInventory extends Inventory actor.sendPacket(su); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor); + } } } return item; @@ -531,7 +535,11 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } + return item; } @@ -573,7 +581,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -646,7 +654,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -679,10 +687,11 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } + return item; } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGame.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGame.java index 1e6006927a..f0d4062497 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGame.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGame.java @@ -43,6 +43,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.siege.Castle; @@ -713,7 +714,10 @@ class OlympiadGame broadcastMessage(_sm2, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, _type), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, _type), Olympiad.getInstance()); + } } catch (Exception e) { @@ -756,7 +760,10 @@ class OlympiadGame broadcastMessage(_sm2, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, _type), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, _type), Olympiad.getInstance()); + } } catch (Exception e) { @@ -791,8 +798,11 @@ class OlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, _type), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, _type), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, _type), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, _type), Olympiad.getInstance()); + } } catch (Exception e) { @@ -875,7 +885,10 @@ class OlympiadGame _playerOne.sendPacket(sm); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, _type), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, _type), Olympiad.getInstance()); + } } catch (Exception e) { @@ -915,7 +928,10 @@ class OlympiadGame _playerTwo.sendPacket(sm); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, _type), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, _type), Olympiad.getInstance()); + } } catch (Exception e) { diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index 1a7391fc1d..2c32aab076 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.fort.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.fort.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -293,7 +294,10 @@ public class FortSiege implements Siegable LOGGER.info("Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } /** @@ -342,7 +346,10 @@ public class FortSiege implements Siegable LOGGER.info("Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } /** diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/siege/Siege.java index 12bc464ac2..a5d745a47e 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.castle.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.castle.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.castle.OnCastleSiegeStart; @@ -334,7 +335,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), _castle); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, _castle)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), _castle); + } } } @@ -455,7 +459,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), _castle); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, _castle)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), _castle); + } } } } @@ -514,7 +521,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_e.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), _castle); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, _castle)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), _castle); + } } } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index e87100863f..0a143897e8 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -405,7 +406,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -426,7 +431,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 4ef9f7ff03..62d5f0d6db 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -39,6 +39,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -315,7 +316,11 @@ public class CharacterCreate implements IClientIncomingPacket startTutorialQuest(newChar); } - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 840348983f..3ed3916fe3 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -63,8 +64,11 @@ public class CharacterDelete implements IClientIncomingPacket case 0: // Success! { client.sendPacket(new CharDeleteSuccess()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } case 1: diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index 2c490dbeea..d4e3f47c3a 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -155,11 +156,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.sendPacket(new SSQInfo()); diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index bd023170f5..90ec5f4688 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -56,10 +57,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 6f4f799e45..34617f958f 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.data.xml.DoorData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -180,11 +181,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index ce9f99f42b..44b469d012 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -34,6 +34,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -523,7 +524,10 @@ public class RequestAcquireSkill implements IClientIncomingPacket } // Notify scripts of the skill learn. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } /** diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index 5873e6332e..f3e6c9575e 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -31,6 +31,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -215,7 +216,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -274,7 +275,10 @@ public class RequestBypassToServer implements IClientIncomingPacket } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _command), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _command), player); + } } /** diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index ffee840a04..13b1a64f20 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -186,10 +187,13 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, World.getInstance().getPlayer(_target), _text, chatType), ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT)) { - _text = filter.getFilteredText(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, World.getInstance().getPlayer(_target), _text, chatType), ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + } } // Say Filter implementation diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 0a7ef61a66..d44605339a 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 8feaa89ac8..69be957d28 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 79bab0e07e..b26dcd1f38 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.trap.OnTrapAction; import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -83,7 +84,11 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, info.getEffector(), TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, info.getEffector(), TrapAction.TRAP_DISARMED), trap); + } + trap.unSummon(); if (info.getEffector().isPlayer()) { diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 36f5a46604..901ca2267f 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.instance.RiftInvader; import org.l2jmobius.gameserver.model.actor.instance.StaticObject; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -554,7 +555,7 @@ public class AttackableAI extends CreatureAI } return; } - if (target.isPlayable()) + if (target.isPlayable() && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), target.getActingPlayer(), target.isSummon()), getActiveChar(), TerminateReturn.class); if ((term != null) && term.terminate()) @@ -896,7 +897,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/ai/CreatureAI.java index faa974196a..599d69f6d3 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.Weapon; @@ -698,11 +699,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // If the Intention was AI_INTENTION_MOVE_TO, set the Intention to AI_INTENTION_ACTIVE diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/ItemTable.java index 7234426752..9794eaa56c 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -347,7 +348,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index a186044888..4bd5ecbba3 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -43,6 +43,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.model.events.impl.creature.player.clan.OnPlayerClanCreate; @@ -217,7 +218,11 @@ public class ClanTable player.sendPacket(SystemMessageId.YOUR_CLAN_HAS_BEEN_CREATED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -346,7 +351,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -381,7 +389,10 @@ public class ClanTable final Clan clan1 = getClan(clanId1); final Clan clan2 = getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(clan1, clan2)); + } clan1.setEnemyClan(clan2); clan2.setAttackerClan(clan1); @@ -420,7 +431,10 @@ public class ClanTable final Clan clan1 = getClan(clanId1); final Clan clan2 = getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteEnemyClan(clan2); clan2.deleteAttackerClan(clan1); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 7968ba4ff6..94ed2374b0 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.status.AttackableStatus; import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableKill; @@ -311,9 +312,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Delayed notification + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsyncDelayed(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this, _onKillDelay); } @@ -723,7 +724,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (damage * 100) / (getLevel() + 7)); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -779,7 +780,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Creature.java index 7fe7681a36..fd3fafaf41 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -570,9 +570,14 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { return; } + spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -962,34 +967,37 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe } // Notify to scripts - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + final TerminateReturn attackReturn = EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this, TerminateReturn.class); + if ((attackReturn != null) && attackReturn.terminate()) + { + getAI().setIntention(AI_INTENTION_ACTIVE); + sendPacket(ActionFailed.STATIC_PACKET); + return; + } } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - - final TerminateReturn attackReturn = EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this, TerminateReturn.class); - if ((attackReturn != null) && attackReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - getAI().setIntention(AI_INTENTION_ACTIVE); - sendPacket(ActionFailed.STATIC_PACKET); - return; - } - - // Notify to scripts - if (_onCreatureAttacked == null) - { - _onCreatureAttacked = new OnCreatureAttacked(); - } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - final TerminateReturn attackedReturn = EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target, TerminateReturn.class); - if ((attackedReturn != null) && attackedReturn.terminate()) - { - getAI().setIntention(AI_INTENTION_ACTIVE); - sendPacket(ActionFailed.STATIC_PACKET); - return; + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + final TerminateReturn attackedReturn = EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target, TerminateReturn.class); + if ((attackedReturn != null) && attackedReturn.terminate()) + { + getAI().setIntention(AI_INTENTION_ACTIVE); + sendPacket(ActionFailed.STATIC_PACKET); + return; + } } if (!isAlikeDead()) @@ -1753,32 +1761,35 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } - if (_onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, this)) { - _onCreatureSkillUse = new OnCreatureSkillUse(); - } - _onCreatureSkillUse.setCaster(this); - _onCreatureSkillUse.setSkill(skill); - _onCreatureSkillUse.setSimultaneously(simultaneously); - _onCreatureSkillUse.setTarget(target); - _onCreatureSkillUse.setTargets(targets); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureSkillUse, this, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - if (simultaneously) + if (_onCreatureSkillUse == null) { - setCastingSimultaneouslyNow(false); + _onCreatureSkillUse = new OnCreatureSkillUse(); } - else + _onCreatureSkillUse.setCaster(this); + _onCreatureSkillUse.setSkill(skill); + _onCreatureSkillUse.setSimultaneously(simultaneously); + _onCreatureSkillUse.setTarget(target); + _onCreatureSkillUse.setTargets(targets); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureSkillUse, this, TerminateReturn.class); + if ((term != null) && term.terminate()) { - setCastingNow(false); + if (simultaneously) + { + setCastingSimultaneouslyNow(false); + } + else + { + setCastingNow(false); + } + if (isPlayer()) + { + sendPacket(ActionFailed.STATIC_PACKET); + getAI().setIntention(AI_INTENTION_ACTIVE); + } + return; } - if (isPlayer()) - { - sendPacket(ActionFailed.STATIC_PACKET); - getAI().setIntention(AI_INTENTION_ACTIVE); - } - return; } // TODO: Unhardcode using event listeners! @@ -2463,11 +2474,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, this)) + { + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // Calculate rewards for main damage dealer. @@ -5929,7 +5946,10 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, targets, isSummon()), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, targets, isSummon()), npcMob); + } // On Skill See logic if (npcMob.isAttackable()) @@ -6645,7 +6665,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyDamageReceived(double damage, Creature attacker, Skill skill, boolean critical, boolean damageOverTime) { - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -6659,18 +6679,20 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setDamageOverTime(damageOverTime); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); + if (_onCreatureDamageReceived == null) + { + _onCreatureDamageReceived = new OnCreatureDamageReceived(); + } + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(damage); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(damageOverTime); + EventDispatcher.getInstance().notifyEventAsync(_onCreatureDamageReceived, this); } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(damage); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(damageOverTime); - EventDispatcher.getInstance().notifyEventAsync(_onCreatureDamageReceived, this); } /** @@ -6680,14 +6702,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -6943,7 +6968,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Npc.java index 372b719aa6..a20bf10baf 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1260,9 +1260,12 @@ public class Npc extends Creature if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1522,7 +1525,7 @@ public class Npc extends Creature @Override protected final void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if ((target != null) && target.isPlayable()) + if ((target != null) && target.isPlayable() && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1757,7 +1760,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Playable.java index dcfbb9b9d4..8afccb9fc3 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.templates.CreatureTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -93,10 +94,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Player.java index 7f9cd6ad2d..cd1695da0f 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1858,7 +1858,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -1963,7 +1967,10 @@ public class Player extends Playable public void setKarma(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerKarmaChanged(this, getKarma(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_KARMA_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerKarmaChanged(this, getKarma(), value), this); + } int karma = value; if (karma < 0) @@ -2214,8 +2221,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); - + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2255,7 +2264,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2283,7 +2296,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4628,7 +4644,10 @@ public class Player extends Playable broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(this, transformation.getId()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(this, transformation.getId()), this); + } } @Override @@ -4648,7 +4667,10 @@ public class Player extends Playable broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(this, 0), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(this, 0), this); + } } @Override @@ -4994,7 +5016,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -8013,7 +8038,11 @@ public class Player extends Playable sendPacket(SystemMessageId.THE_SYMBOL_HAS_BEEN_DELETED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8055,7 +8084,11 @@ public class Player extends Playable sendPacket(new ExBrExtraUserInfo(this)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } } @@ -10063,7 +10096,7 @@ public class Player extends Playable } // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -10118,7 +10151,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -10449,7 +10485,10 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } } public long getLastAccess() @@ -11052,7 +11091,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Summon.java index 830395152b..c92bd17b61 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -48,6 +48,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -142,7 +143,10 @@ public abstract class Summon extends Playable rechargeShots(true, true); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 76af722dba..5ace38e56d 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -200,7 +200,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/QuestGuard.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/QuestGuard.java index 986dfd22c8..4692983811 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/QuestGuard.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/QuestGuard.java @@ -20,6 +20,7 @@ import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.attackable.OnAttackableKill; import org.l2jmobius.gameserver.model.skill.Skill; @@ -49,7 +50,7 @@ public class QuestGuard extends Guard { super.addDamage(attacker, damage, skill); - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -64,9 +65,9 @@ public class QuestGuard extends Guard return false; } - if (killer.isAttackable()) + // Delayed notification + if (killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsyncDelayed(new OnAttackableKill(null, this, false), this, _onKillDelay); } return true; diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 9129130a9b..766944ab72 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.trap.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -368,7 +369,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -396,7 +401,11 @@ public class Trap extends Npc broadcastPacket(new TrapInfo(this, null)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index b579f00a2c..5fae66c40f 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.playable.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -43,10 +44,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 1d60131745..a1b16ee51e 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.actor.transform.TransformTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -264,7 +265,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel(), getLevel() + value), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel(), getLevel() + value), getActiveChar()); + } final boolean levelIncreased = super.addLevel(value); if (levelIncreased) diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/clan/Clan.java index af525cfd85..03af31d837 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.clan.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.clan.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.clan.OnPlayerClanLeft; @@ -236,7 +237,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -369,7 +374,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -529,7 +537,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public ClanMember[] getMembers() @@ -2673,7 +2684,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index 901d15a8b3..7273678f2c 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,37 @@ public class EventDispatcher return null; } + /** + * Scheduling current listener notification asynchronously after specified delay. + * @param event + * @param container + * @param delay + */ + public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + } + + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +172,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +232,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +271,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/item/Weapon.java index fa491f5eb9..4c8f9d0c5c 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.conditions.ConditionGameChance; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.type.WeaponType; @@ -434,7 +435,13 @@ public class Weapon extends ItemTemplate target }; - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), onMagicSkill, targets, false), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), onMagicSkill, targets, false), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 83d7bf8b94..a83eb26ed7 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.WorldRegion; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.inventory.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.inventory.OnPlayerItemPickup; @@ -274,9 +275,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -920,7 +921,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -950,7 +955,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1556,7 +1564,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2026,9 +2037,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 8eeb75dc13..989c4ae1fb 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.clanwh.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.clanwh.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.clanwh.OnPlayerClanWHItemTransfer; @@ -85,7 +86,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -93,7 +98,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -101,7 +110,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -111,7 +124,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 6e2e577208..b0a5ed8687 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -1128,7 +1129,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 4374902e13..6ea103671a 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.inventory.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.inventory.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.inventory.OnPlayerItemDrop; @@ -446,9 +447,9 @@ public class PlayerInventory extends Inventory _ancientAdena = addedItem; } - if (actor != null) + // Notify to scripts + if ((actor != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor); } } @@ -499,7 +500,10 @@ public class PlayerInventory extends Inventory actor.sendPacket(su); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor); + } } } return item; @@ -531,7 +535,11 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } + return item; } @@ -573,7 +581,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -646,7 +654,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -679,10 +687,11 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } + return item; } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 7eb4ff42b9..3d5fcf698e 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -31,6 +31,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.zone.type.OlympiadStadiumZone; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -435,7 +436,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -459,8 +463,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -500,8 +508,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -572,7 +583,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), getReward()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -597,7 +611,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), getReward()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index 1a7391fc1d..2c32aab076 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.fort.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.fort.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -293,7 +294,10 @@ public class FortSiege implements Siegable LOGGER.info("Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } /** @@ -342,7 +346,10 @@ public class FortSiege implements Siegable LOGGER.info("Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } /** diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/siege/Siege.java index 12bc464ac2..a5d745a47e 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.castle.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.castle.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.castle.OnCastleSiegeStart; @@ -334,7 +335,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), _castle); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, _castle)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), _castle); + } } } @@ -455,7 +459,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), _castle); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, _castle)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), _castle); + } } } } @@ -514,7 +521,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_e.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), _castle); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, _castle)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), _castle); + } } } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index e87100863f..0a143897e8 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -405,7 +406,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -426,7 +431,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 4ef9f7ff03..62d5f0d6db 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -39,6 +39,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -315,7 +316,11 @@ public class CharacterCreate implements IClientIncomingPacket startTutorialQuest(newChar); } - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 840348983f..3ed3916fe3 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -20,6 +20,7 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -63,8 +64,11 @@ public class CharacterDelete implements IClientIncomingPacket case 0: // Success! { client.sendPacket(new CharDeleteSuccess()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } case 1: diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index 891698dcba..52974f3584 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -162,11 +163,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.sendPacket(new SSQInfo()); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index bd023170f5..90ec5f4688 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -56,10 +57,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 6f4f799e45..34617f958f 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.data.xml.DoorData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -180,11 +181,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index ce9f99f42b..44b469d012 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -34,6 +34,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -523,7 +524,10 @@ public class RequestAcquireSkill implements IClientIncomingPacket } // Notify scripts of the skill learn. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } /** diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index 01041a2fdc..7f87632f78 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -31,6 +31,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -219,7 +220,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -278,7 +279,10 @@ public class RequestBypassToServer implements IClientIncomingPacket } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _command), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _command), player); + } } /** diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index ffee840a04..13b1a64f20 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -186,10 +187,13 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, World.getInstance().getPlayer(_target), _text, chatType), ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT)) { - _text = filter.getFilteredText(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, World.getInstance().getPlayer(_target), _text, chatType), ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + } } // Say Filter implementation diff --git a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 248feaef13..1145cf068f 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/data/ItemTable.java index 171317b3fa..34ee28cf47 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -350,7 +351,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index ed889ce365..b638d18040 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 1abd9c3beb..24f85e7104 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.model.actor.status.AttackableStatus; import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -291,9 +292,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -763,7 +764,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -827,7 +828,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Creature.java index 1476ab2ef2..4c2dcc397c 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3980,23 +3995,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4718,7 +4738,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4733,28 +4753,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5133,14 +5155,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5579,7 +5604,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Npc.java index e784db24f4..ab99222029 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1056,9 +1056,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1161,7 +1164,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1333,7 +1339,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1534,7 +1540,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Player.java index 0c3484b4c8..e7376d0c44 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1872,7 +1872,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -1982,7 +1986,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2243,7 +2250,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2283,7 +2293,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2311,7 +2325,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4813,7 +4830,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -6643,7 +6663,10 @@ public class Player extends Playable return null; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOAD, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + } if (player.isGM()) { @@ -7846,7 +7869,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -7900,7 +7927,11 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } @@ -9525,7 +9556,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9701,7 +9732,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -9857,7 +9891,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10029,16 +10067,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); - + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10701,7 +10743,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11081,14 +11126,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13331,7 +13378,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Summon.java index 2f7d5c45ea..2a6d8fade4 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index ab69ac3799..3bd1b1e33e 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -47,10 +48,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index e3a79132a3..1708fb1bab 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -248,7 +249,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Give AutoGet skills and all normal skills if Auto-Learn is activated. getActiveChar().rewardSkills(); diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/clan/Clan.java index c87721c532..818bae2655 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -235,7 +236,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -368,7 +373,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -531,7 +539,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2559,7 +2570,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index cd39cde48c..438e73d4cc 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 2d5aca5ce4..20d9dd0b13 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index f3e2f5c93d..d415f58812 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/item/Weapon.java index d24c63aaef..b293af7fd7 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -297,7 +298,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 998ffcab98..e9c19c73e5 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -293,9 +294,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -972,7 +973,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1002,7 +1007,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1532,7 +1540,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2028,9 +2039,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index a9aa7951bf..3a5f4d4c86 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; @@ -1414,7 +1415,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index acadfda622..596a276e6d 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -37,6 +37,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -442,7 +443,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -517,7 +521,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -561,7 +568,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -623,7 +633,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -704,7 +714,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -747,7 +757,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index e4a90e7604..efe8ad6614 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -926,7 +927,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index e63fbfb564..6d84643906 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -465,7 +466,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -489,8 +493,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -528,8 +536,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -602,7 +613,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -629,7 +643,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index fdb386dd90..030ac42234 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/siege/Siege.java index a2a7422edd..7456a33a7d 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 3c4a02f345..340702535e 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index eb1434ff89..5ba6d479dc 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 0b6571d963..bd7c87310f 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -323,7 +324,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index d5a8b14aee..0526751dcf 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -701,9 +702,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index eb3d8fc0b1..c9fd20f8a1 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -124,10 +125,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -231,7 +235,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -242,7 +246,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index 64c424c712..1b755314b7 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -43,6 +44,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5ee37630b2..f713474ea2 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index a9cec48175..265a24ed5a 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -290,7 +291,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index c32c99e6b8..d526a2f9e3 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 413931a2aa..708e5586a8 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/data/ItemTable.java index 171317b3fa..34ee28cf47 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -350,7 +351,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index ed889ce365..b638d18040 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Attackable.java index cc97a56186..942ea2f193 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -292,9 +293,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -777,7 +778,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -841,7 +842,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Creature.java index 1476ab2ef2..4c2dcc397c 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3980,23 +3995,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4718,7 +4738,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4733,28 +4753,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5133,14 +5155,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5579,7 +5604,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Npc.java index e784db24f4..ab99222029 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1056,9 +1056,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1161,7 +1164,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1333,7 +1339,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1534,7 +1540,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Player.java index a8d73969f7..d0c2b3223b 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1881,7 +1881,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -1991,7 +1995,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2252,7 +2259,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2292,7 +2302,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2320,7 +2334,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4822,7 +4839,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -6653,7 +6673,10 @@ public class Player extends Playable return null; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOAD, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + } if (player.isGM()) { @@ -7857,7 +7880,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -7911,7 +7938,11 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } @@ -9536,7 +9567,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9712,7 +9743,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -9868,7 +9902,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10040,16 +10078,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); - + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10712,7 +10754,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11092,14 +11137,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13342,7 +13389,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Summon.java index 1a44279987..002a8e146b 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index ab69ac3799..3bd1b1e33e 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -47,10 +48,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index e3a79132a3..1708fb1bab 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -248,7 +249,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Give AutoGet skills and all normal skills if Auto-Learn is activated. getActiveChar().rewardSkills(); diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/clan/Clan.java index ad3f498422..9337350003 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -253,7 +254,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -386,7 +391,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -549,7 +557,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2577,7 +2588,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index cd39cde48c..438e73d4cc 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 2f20add5a2..5652acf056 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index f3e2f5c93d..d415f58812 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/item/Weapon.java index d24c63aaef..b293af7fd7 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -297,7 +298,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 998ffcab98..e9c19c73e5 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -293,9 +294,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -972,7 +973,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1002,7 +1007,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1532,7 +1540,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2028,9 +2039,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index a9aa7951bf..3a5f4d4c86 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; @@ -1414,7 +1415,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index acadfda622..596a276e6d 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -37,6 +37,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -442,7 +443,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -517,7 +521,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -561,7 +568,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -623,7 +633,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -704,7 +714,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -747,7 +757,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index e4a90e7604..efe8ad6614 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -926,7 +927,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index e63fbfb564..6d84643906 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -465,7 +466,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -489,8 +493,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -528,8 +536,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -602,7 +613,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -629,7 +643,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index fdb386dd90..030ac42234 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/siege/Siege.java index a267bcec01..8d1a90ebb5 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 29fc21bf02..5879b3ed81 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index eb1434ff89..5ba6d479dc 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 0b6571d963..bd7c87310f 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -323,7 +324,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 8a6c6c0c16..5e074541ee 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -701,9 +702,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index eb3d8fc0b1..c9fd20f8a1 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -124,10 +125,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -231,7 +235,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -242,7 +246,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index 64c424c712..1b755314b7 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -43,6 +44,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5ee37630b2..f713474ea2 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index a9cec48175..265a24ed5a 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -290,7 +291,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index c32c99e6b8..d526a2f9e3 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 413931a2aa..708e5586a8 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/ItemTable.java index 171317b3fa..34ee28cf47 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -350,7 +351,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index ed889ce365..b638d18040 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Attackable.java index cc97a56186..942ea2f193 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -292,9 +293,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -777,7 +778,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -841,7 +842,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java index 1476ab2ef2..4c2dcc397c 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3980,23 +3995,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4718,7 +4738,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4733,28 +4753,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5133,14 +5155,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5579,7 +5604,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Npc.java index e784db24f4..ab99222029 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1056,9 +1056,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1161,7 +1164,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1333,7 +1339,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1534,7 +1540,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Player.java index a8d73969f7..d0c2b3223b 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1881,7 +1881,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -1991,7 +1995,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2252,7 +2259,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2292,7 +2302,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2320,7 +2334,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4822,7 +4839,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -6653,7 +6673,10 @@ public class Player extends Playable return null; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOAD, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + } if (player.isGM()) { @@ -7857,7 +7880,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -7911,7 +7938,11 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } @@ -9536,7 +9567,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9712,7 +9743,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -9868,7 +9902,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10040,16 +10078,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); - + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10712,7 +10754,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11092,14 +11137,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13342,7 +13389,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Summon.java index 1a44279987..002a8e146b 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index ab69ac3799..3bd1b1e33e 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -47,10 +48,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 56378b4f66..634bdcc4d8 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -249,7 +250,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Give AutoGet skills and all normal skills if Auto-Learn is activated. getActiveChar().rewardSkills(); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/clan/Clan.java index ad3f498422..9337350003 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -253,7 +254,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -386,7 +391,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -549,7 +557,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2577,7 +2588,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index cd39cde48c..438e73d4cc 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 23d203e2c9..26c5937e6a 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index f3e2f5c93d..d415f58812 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/item/Weapon.java index d24c63aaef..b293af7fd7 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -297,7 +298,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 1ad8ea5547..36089fe8e7 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -62,6 +62,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -298,9 +299,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -977,7 +978,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1007,7 +1012,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1537,7 +1545,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2037,9 +2048,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index a231eed198..f546c5382d 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; @@ -1420,7 +1421,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index a08d88a394..8cc0f3c278 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -37,6 +37,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -442,7 +443,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -517,7 +521,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -561,7 +568,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -623,7 +633,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -704,7 +714,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -747,7 +757,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 82e707b307..2985bf2b37 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -923,7 +924,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index e63fbfb564..6d84643906 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -465,7 +466,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -489,8 +493,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -528,8 +536,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -602,7 +613,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -629,7 +643,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index fdb386dd90..030ac42234 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/siege/Siege.java index 5ddd6e9447..57ef1cbe3b 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 29fc21bf02..5879b3ed81 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index eb1434ff89..5ba6d479dc 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 0b6571d963..bd7c87310f 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -323,7 +324,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 8a6c6c0c16..5e074541ee 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -701,9 +702,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index eb3d8fc0b1..c9fd20f8a1 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -124,10 +125,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -231,7 +235,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -242,7 +246,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5ee37630b2..f713474ea2 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index a9cec48175..265a24ed5a 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -290,7 +291,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index c32c99e6b8..d526a2f9e3 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 413931a2aa..708e5586a8 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/data/ItemTable.java index 171317b3fa..34ee28cf47 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -350,7 +351,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index ed889ce365..b638d18040 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Attackable.java index cc97a56186..942ea2f193 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -292,9 +293,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -777,7 +778,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -841,7 +842,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java index 1476ab2ef2..4c2dcc397c 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3980,23 +3995,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4718,7 +4738,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4733,28 +4753,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5133,14 +5155,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5579,7 +5604,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Npc.java index e784db24f4..ab99222029 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1056,9 +1056,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1161,7 +1164,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1333,7 +1339,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1534,7 +1540,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Player.java index 06a781cd42..90a184d57b 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1881,7 +1881,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -1991,7 +1995,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2252,7 +2259,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2292,7 +2302,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2320,7 +2334,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4822,7 +4839,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -6653,7 +6673,10 @@ public class Player extends Playable return null; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOAD, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + } if (player.isGM()) { @@ -7857,7 +7880,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -7911,7 +7938,11 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } @@ -9536,7 +9567,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9712,7 +9743,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -9868,7 +9902,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10040,16 +10078,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); - + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10712,7 +10754,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11092,14 +11137,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13342,7 +13389,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Summon.java index 1a44279987..002a8e146b 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index ab69ac3799..3bd1b1e33e 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -47,10 +48,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 0fea2db6ba..f6ab18d9fd 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -250,7 +251,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExConnectedTimeAndGettableReward(getActiveChar())); diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/clan/Clan.java index ad3f498422..9337350003 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -253,7 +254,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -386,7 +391,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -549,7 +557,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2577,7 +2588,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index cd39cde48c..438e73d4cc 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 23d203e2c9..26c5937e6a 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index f3e2f5c93d..d415f58812 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/item/Weapon.java index d24c63aaef..b293af7fd7 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -297,7 +298,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 1ad8ea5547..36089fe8e7 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -62,6 +62,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -298,9 +299,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -977,7 +978,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1007,7 +1012,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1537,7 +1545,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2037,9 +2048,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index a231eed198..f546c5382d 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; @@ -1420,7 +1421,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index a08d88a394..8cc0f3c278 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -37,6 +37,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -442,7 +443,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -517,7 +521,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -561,7 +568,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -623,7 +633,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -704,7 +714,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -747,7 +757,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 82e707b307..2985bf2b37 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -923,7 +924,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index e63fbfb564..6d84643906 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -465,7 +466,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -489,8 +493,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -528,8 +536,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -602,7 +613,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -629,7 +643,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index fdb386dd90..030ac42234 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/siege/Siege.java index 5ddd6e9447..57ef1cbe3b 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 29fc21bf02..5879b3ed81 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index eb1434ff89..5ba6d479dc 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 0b6571d963..bd7c87310f 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -323,7 +324,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 8a6c6c0c16..5e074541ee 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -701,9 +702,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index eb3d8fc0b1..c9fd20f8a1 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -124,10 +125,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -231,7 +235,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -242,7 +246,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5ee37630b2..f713474ea2 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index a9cec48175..265a24ed5a 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -290,7 +291,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index c32c99e6b8..d526a2f9e3 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 413931a2aa..708e5586a8 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/data/ItemTable.java index c1a5ff8afd..0eb95f653d 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -351,7 +352,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index ed889ce365..b638d18040 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 2731fc2ba7..9cc225d5c2 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -292,9 +293,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -777,7 +778,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -841,7 +842,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java index 5c8633b7b8..3efbc2a269 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3980,23 +3995,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4718,7 +4738,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4733,28 +4753,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5142,14 +5164,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5588,7 +5613,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Npc.java index e784db24f4..ab99222029 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1056,9 +1056,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1161,7 +1164,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1333,7 +1339,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1534,7 +1540,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Player.java index 5b515cee7d..bbce21c0cf 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1879,7 +1879,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -1989,7 +1993,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2250,7 +2257,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2290,7 +2300,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2318,7 +2332,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4807,7 +4824,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -6639,7 +6659,10 @@ public class Player extends Playable return null; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOAD, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + } if (player.isGM()) { @@ -7843,7 +7866,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -7897,7 +7924,11 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } @@ -9522,7 +9553,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9698,7 +9729,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -9854,7 +9888,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10026,16 +10064,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); - + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10698,7 +10740,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11078,14 +11123,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13328,7 +13375,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Summon.java index 1a44279987..002a8e146b 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index ab69ac3799..3bd1b1e33e 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -47,10 +48,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index e2450e6f50..4c0a2e9339 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -250,7 +251,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExConnectedTimeAndGettableReward(getActiveChar())); diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/clan/Clan.java index 2c2f704c65..37af1d7d2c 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -253,7 +254,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -386,7 +391,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -549,7 +557,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2577,7 +2588,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 7f4c600b42..3155a27f10 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 23d203e2c9..26c5937e6a 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index f3e2f5c93d..d415f58812 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/item/Weapon.java index d24c63aaef..b293af7fd7 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -297,7 +298,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/item/instance/Item.java index d969580149..11cd3c55fd 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -302,9 +303,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -1029,7 +1030,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1059,7 +1064,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1589,7 +1597,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2089,9 +2100,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index deb2c40cc0..0787287f39 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1522,7 +1523,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index c11ae1861c..b011a3e9e8 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -446,7 +447,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -521,7 +525,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -565,7 +572,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -627,7 +637,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -708,7 +718,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -751,7 +761,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 82e707b307..2985bf2b37 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -923,7 +924,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index e63fbfb564..6d84643906 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -465,7 +466,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -489,8 +493,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -528,8 +536,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -602,7 +613,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -629,7 +643,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index fdb386dd90..030ac42234 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/siege/Siege.java index 5ddd6e9447..57ef1cbe3b 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 29fc21bf02..5879b3ed81 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index eb1434ff89..5ba6d479dc 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 0b6571d963..bd7c87310f 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -323,7 +324,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 5b63b934a4..192f6b67ac 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -701,9 +702,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index eb3d8fc0b1..c9fd20f8a1 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -124,10 +125,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -231,7 +235,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -242,7 +246,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5ee37630b2..f713474ea2 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 8854cffd54..e4eb4c9ad8 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -287,7 +288,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index c32c99e6b8..d526a2f9e3 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java index eb344a7bf5..c65d275482 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.ElementalSpirit; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnElementalSpiritLearn; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.elementalspirits.ElementalSpiritInfo; @@ -73,7 +74,12 @@ public class AttributeMaster extends AbstractNpcAI userInfo.addComponentType(UserInfoType.ATT_SPIRITS); player.sendPacket(userInfo); player.sendPacket(new ElementalSpiritInfo(player, player.getActiveElementalSpiritType(), (byte) 0x01)); - EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritLearn(player), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ELEMENTAL_SPIRIT_LEARN, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritLearn(player), player); + } + return "learn.htm"; } return null; diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 413931a2aa..708e5586a8 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/data/ItemTable.java index 6190a5f9d5..038abf3f97 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -353,7 +354,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index ed889ce365..b638d18040 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/ElementalSpirit.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/ElementalSpirit.java index ad0eb16df5..2867ea711d 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/ElementalSpirit.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/ElementalSpirit.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.enums.ElementalType; import org.l2jmobius.gameserver.enums.UserInfoType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnElementalSpiritUpgrade; import org.l2jmobius.gameserver.model.holders.ElementalSpiritAbsorbItemHolder; import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; @@ -157,7 +158,11 @@ public class ElementalSpirit _data.setLevel(1); _data.setExperience(0); _template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()); - EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ELEMENTAL_SPIRIT_UPGRADE, _owner)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); + } } public void resetCharacteristics() diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Attackable.java index a2a1395dfb..5741947175 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -294,9 +295,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -797,7 +798,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -861,7 +862,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java index 44ac16c8df..c44e8edbee 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -640,7 +640,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -829,20 +833,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1719,8 +1726,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3993,23 +4008,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4731,7 +4751,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4746,28 +4766,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5167,14 +5189,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5613,7 +5638,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Npc.java index 2cb1ee959b..3fbc8fe9c1 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1068,9 +1068,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1173,7 +1176,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1345,7 +1351,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1546,7 +1552,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Player.java index fc5ab80dfc..67903b79ab 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -205,6 +205,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameCh import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerHennaAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerHennaRemove; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemEquip; +import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLoad; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeStatus; @@ -1905,7 +1906,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2015,7 +2020,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2276,7 +2284,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2316,7 +2327,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2344,7 +2359,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4834,7 +4852,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -6671,6 +6692,11 @@ public class Player extends Playable return null; } + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOAD, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + } + if (player.isGM()) { final long masks = player.getVariables().getLong(COND_OVERRIDE_KEY, PlayerCondOverride.getAllExceptionsMask()); @@ -7883,7 +7909,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -7937,7 +7967,11 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } @@ -9562,7 +9596,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9738,7 +9772,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -9894,7 +9931,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10066,15 +10107,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10740,7 +10786,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11120,14 +11169,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13389,7 +13440,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Summon.java index 7a0528028e..ed750e1146 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 650e0257d2..dedfed1b42 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index ab69ac3799..3bd1b1e33e 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -47,10 +48,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index e03d36992a..d3f0215a33 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -251,7 +252,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExConnectedTimeAndGettableReward(getActiveChar())); diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/clan/Clan.java index 2c2f704c65..37af1d7d2c 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -253,7 +254,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -386,7 +391,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -549,7 +557,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2577,7 +2588,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 7f4c600b42..3155a27f10 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 23d203e2c9..26c5937e6a 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 6315bb208f..7cc749e53a 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/item/Weapon.java index d24c63aaef..b293af7fd7 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -297,7 +298,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/item/instance/Item.java index d969580149..11cd3c55fd 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -302,9 +303,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -1029,7 +1030,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1059,7 +1064,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1589,7 +1597,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2089,9 +2100,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index ae8cf0870f..2e6f269dfa 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1604,7 +1605,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index c11ae1861c..b011a3e9e8 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -446,7 +447,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -521,7 +525,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -565,7 +572,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -627,7 +637,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -708,7 +718,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -751,7 +761,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 82e707b307..2985bf2b37 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -923,7 +924,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index e63fbfb564..6d84643906 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -465,7 +466,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -489,8 +493,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -528,8 +536,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -602,7 +613,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -629,7 +643,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index fdb386dd90..030ac42234 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/siege/Siege.java index 5ddd6e9447..57ef1cbe3b 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 29fc21bf02..5879b3ed81 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index eb1434ff89..5ba6d479dc 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 0b6571d963..bd7c87310f 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -323,7 +324,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 8c3aecd086..8e40c25752 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -701,9 +702,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index eb3d8fc0b1..c9fd20f8a1 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -124,10 +125,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -231,7 +235,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -242,7 +246,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5ee37630b2..f713474ea2 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index aed9f562e6..2b37a81230 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -296,7 +297,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index c32c99e6b8..d526a2f9e3 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java index eb344a7bf5..c65d275482 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.ElementalSpirit; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnElementalSpiritLearn; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.elementalspirits.ElementalSpiritInfo; @@ -73,7 +74,12 @@ public class AttributeMaster extends AbstractNpcAI userInfo.addComponentType(UserInfoType.ATT_SPIRITS); player.sendPacket(userInfo); player.sendPacket(new ElementalSpiritInfo(player, player.getActiveElementalSpiritType(), (byte) 0x01)); - EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritLearn(player), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ELEMENTAL_SPIRIT_LEARN, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritLearn(player), player); + } + return "learn.htm"; } return null; diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 413931a2aa..708e5586a8 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/data/ItemTable.java index 6190a5f9d5..038abf3f97 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -353,7 +354,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index ed889ce365..b638d18040 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/ElementalSpirit.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/ElementalSpirit.java index ad0eb16df5..2867ea711d 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/ElementalSpirit.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/ElementalSpirit.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.enums.ElementalType; import org.l2jmobius.gameserver.enums.UserInfoType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnElementalSpiritUpgrade; import org.l2jmobius.gameserver.model.holders.ElementalSpiritAbsorbItemHolder; import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; @@ -157,7 +158,11 @@ public class ElementalSpirit _data.setLevel(1); _data.setExperience(0); _template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()); - EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ELEMENTAL_SPIRIT_UPGRADE, _owner)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); + } } public void resetCharacteristics() diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Attackable.java index a2a1395dfb..5741947175 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -294,9 +295,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -797,7 +798,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -861,7 +862,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java index 44ac16c8df..c44e8edbee 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -640,7 +640,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -829,20 +833,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1719,8 +1726,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3993,23 +4008,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4731,7 +4751,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4746,28 +4766,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5167,14 +5189,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5613,7 +5638,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Npc.java index 2cb1ee959b..3fbc8fe9c1 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1068,9 +1068,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1173,7 +1176,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1345,7 +1351,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1546,7 +1552,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Player.java index b9491ee146..5fe98b195d 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -205,6 +205,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameCh import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerHennaAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerHennaRemove; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemEquip; +import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLoad; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeStatus; @@ -1905,7 +1906,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2015,7 +2020,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2276,7 +2284,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2316,7 +2327,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2344,7 +2359,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4834,7 +4852,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -6671,6 +6692,11 @@ public class Player extends Playable return null; } + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOAD, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + } + if (player.isGM()) { final long masks = player.getVariables().getLong(COND_OVERRIDE_KEY, PlayerCondOverride.getAllExceptionsMask()); @@ -7883,7 +7909,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -7937,7 +7967,11 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } @@ -9562,7 +9596,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9738,7 +9772,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -9894,7 +9931,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10066,15 +10107,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10740,7 +10786,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11120,14 +11169,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13389,7 +13440,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Summon.java index 7a0528028e..ed750e1146 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 650e0257d2..dedfed1b42 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index ab69ac3799..3bd1b1e33e 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -47,10 +48,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index e03d36992a..d3f0215a33 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -251,7 +252,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExConnectedTimeAndGettableReward(getActiveChar())); diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/clan/Clan.java index 2c2f704c65..37af1d7d2c 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -253,7 +254,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -386,7 +391,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -549,7 +557,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2577,7 +2588,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 7f4c600b42..3155a27f10 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 23d203e2c9..26c5937e6a 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 6315bb208f..7cc749e53a 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/item/Weapon.java index d24c63aaef..b293af7fd7 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -297,7 +298,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/item/instance/Item.java index d969580149..11cd3c55fd 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -302,9 +303,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -1029,7 +1030,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1059,7 +1064,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1589,7 +1597,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2089,9 +2100,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index ae8cf0870f..2e6f269dfa 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1604,7 +1605,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index c11ae1861c..b011a3e9e8 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -446,7 +447,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -521,7 +525,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -565,7 +572,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -627,7 +637,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -708,7 +718,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -751,7 +761,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 82e707b307..2985bf2b37 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -923,7 +924,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index e63fbfb564..6d84643906 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -465,7 +466,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -489,8 +493,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -528,8 +536,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -602,7 +613,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -629,7 +643,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index fdb386dd90..030ac42234 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/siege/Siege.java index 5ddd6e9447..57ef1cbe3b 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 29fc21bf02..5879b3ed81 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index eb1434ff89..5ba6d479dc 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 0b6571d963..bd7c87310f 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -323,7 +324,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 8c3aecd086..8e40c25752 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -701,9 +702,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index eb3d8fc0b1..c9fd20f8a1 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -124,10 +125,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -231,7 +235,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -242,7 +246,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5ee37630b2..f713474ea2 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index aed9f562e6..2b37a81230 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -296,7 +297,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index c32c99e6b8..d526a2f9e3 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java index eb344a7bf5..c65d275482 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.ElementalSpirit; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnElementalSpiritLearn; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.elementalspirits.ElementalSpiritInfo; @@ -73,7 +74,12 @@ public class AttributeMaster extends AbstractNpcAI userInfo.addComponentType(UserInfoType.ATT_SPIRITS); player.sendPacket(userInfo); player.sendPacket(new ElementalSpiritInfo(player, player.getActiveElementalSpiritType(), (byte) 0x01)); - EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritLearn(player), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ELEMENTAL_SPIRIT_LEARN, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritLearn(player), player); + } + return "learn.htm"; } return null; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 413931a2aa..708e5586a8 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/ItemTable.java index 6190a5f9d5..038abf3f97 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -353,7 +354,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index ed889ce365..b638d18040 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/ElementalSpirit.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/ElementalSpirit.java index ad0eb16df5..2867ea711d 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/ElementalSpirit.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/ElementalSpirit.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.enums.ElementalType; import org.l2jmobius.gameserver.enums.UserInfoType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnElementalSpiritUpgrade; import org.l2jmobius.gameserver.model.holders.ElementalSpiritAbsorbItemHolder; import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; @@ -157,7 +158,11 @@ public class ElementalSpirit _data.setLevel(1); _data.setExperience(0); _template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()); - EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ELEMENTAL_SPIRIT_UPGRADE, _owner)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); + } } public void resetCharacteristics() diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Attackable.java index a2a1395dfb..5741947175 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -294,9 +295,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -797,7 +798,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -861,7 +862,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java index cc6adc391a..13acc7e9df 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -640,7 +640,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -829,20 +833,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1719,8 +1726,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3992,23 +4007,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4730,7 +4750,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4745,28 +4765,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5166,14 +5188,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5612,7 +5637,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Npc.java index 2cb1ee959b..3fbc8fe9c1 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1068,9 +1068,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1173,7 +1176,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1345,7 +1351,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1546,7 +1552,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Player.java index c14854ebcd..6a619a7bbf 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1924,7 +1924,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2034,7 +2038,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2202,7 +2209,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2241,7 +2251,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2269,7 +2283,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4762,7 +4779,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -6630,7 +6650,10 @@ public class Player extends Playable return null; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOAD, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + } if (player.isGM()) { @@ -7841,7 +7864,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -7895,7 +7922,11 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } @@ -9521,7 +9552,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9692,7 +9723,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -9855,7 +9889,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10027,16 +10065,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); - + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10702,7 +10744,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11089,14 +11134,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13404,7 +13451,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Summon.java index d5db1162a0..7084ce9f57 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 650e0257d2..dedfed1b42 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index 1b3568357d..52d789c218 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -48,10 +49,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index ba30f8c134..c33237757b 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -251,7 +252,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExConnectedTimeAndGettableReward(getActiveChar())); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/clan/Clan.java index 2c2f704c65..37af1d7d2c 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -253,7 +254,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -386,7 +391,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -549,7 +557,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2577,7 +2588,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 7f4c600b42..3155a27f10 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 23d203e2c9..26c5937e6a 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 6315bb208f..7cc749e53a 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/item/Weapon.java index 05a29a67a4..86ed8bbf17 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -297,7 +298,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/item/instance/Item.java index d969580149..11cd3c55fd 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -302,9 +303,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -1029,7 +1030,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1059,7 +1064,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1589,7 +1597,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2089,9 +2100,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 0ae66ba3b0..e037875de0 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1598,7 +1599,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index c11ae1861c..b011a3e9e8 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -446,7 +447,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -521,7 +525,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -565,7 +572,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -627,7 +637,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -708,7 +718,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -751,7 +761,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 04c62b79f4..8d907e16e4 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -948,7 +949,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index e63fbfb564..6d84643906 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -465,7 +466,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -489,8 +493,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -528,8 +536,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -602,7 +613,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -629,7 +643,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index fdb386dd90..030ac42234 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/siege/Siege.java index 5ddd6e9447..57ef1cbe3b 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index b427d1f9c3..3702cc63c4 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -531,15 +532,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -687,7 +691,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -878,15 +885,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -995,18 +1005,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index eb1434ff89..5ba6d479dc 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 0b6571d963..bd7c87310f 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -323,7 +324,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index fe10969e76..3334ddb90a 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -34,6 +34,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -620,9 +621,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index eb3d8fc0b1..c9fd20f8a1 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -124,10 +125,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -231,7 +235,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -242,7 +246,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5ee37630b2..f713474ea2 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index aed9f562e6..2b37a81230 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -296,7 +297,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index f400170476..d6039e7a43 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -83,7 +84,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index 764b53b0e8..0c19e16298 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 9b77ba678b..599de95142 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java index bf198b8071..de63d00efe 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 413931a2aa..708e5586a8 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/ItemTable.java index 171317b3fa..34ee28cf47 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.item.Armor; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -350,7 +351,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index ed889ce365..b638d18040 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 4e9ee91c96..3c5acd1ec1 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -59,6 +59,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -296,9 +297,9 @@ public class Attackable extends Npc return false; } - if ((killer != null) && (killer.getActingPlayer() != null)) + // Notify to scripts. + if ((killer != null) && (killer.getActingPlayer() != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); } @@ -781,7 +782,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -845,7 +846,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java index 1476ab2ef2..4c2dcc397c 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1718,8 +1725,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3980,23 +3995,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4718,7 +4738,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4733,28 +4753,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5133,14 +5155,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5579,7 +5604,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Npc.java index 94ea54a3f7..bc2df6a21c 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1040,9 +1040,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1145,7 +1148,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1317,7 +1323,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1518,7 +1524,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java index dfd7a3c30c..4fce0c672b 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1878,7 +1878,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -1988,7 +1992,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2249,7 +2256,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2289,7 +2299,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2317,7 +2331,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4803,7 +4820,10 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -7835,7 +7855,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -7889,7 +7913,11 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } @@ -9524,7 +9552,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9700,7 +9728,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -9856,7 +9887,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10028,15 +10063,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10708,7 +10748,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11088,14 +11131,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13338,7 +13383,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java index 1a44279987..002a8e146b 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -141,7 +142,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 1ed0ee81a4..6203020ece 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index ab69ac3799..3bd1b1e33e 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -47,10 +48,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 0fea2db6ba..f6ab18d9fd 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -250,7 +251,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExConnectedTimeAndGettableReward(getActiveChar())); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java index ad3f498422..9337350003 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -253,7 +254,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -386,7 +391,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -549,7 +557,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2577,7 +2588,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index cd39cde48c..438e73d4cc 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 23d203e2c9..26c5937e6a 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index f3e2f5c93d..d415f58812 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/item/Weapon.java index e3bb874b2b..2eb41538ea 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -307,7 +308,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 1f27374eae..dc861c2429 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -293,9 +294,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -970,7 +971,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1000,7 +1005,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1530,7 +1538,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2020,9 +2031,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index a34e83c3b7..c6c6d7d4f6 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; @@ -1412,7 +1413,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index c5a1ad58f5..f98f7cce86 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -37,6 +37,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -422,7 +423,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -489,7 +493,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -521,7 +528,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -575,7 +585,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (destroyedItem != null) + if ((destroyedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); } @@ -648,7 +658,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -681,7 +691,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 82e707b307..2985bf2b37 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -923,7 +924,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index e63fbfb564..6d84643906 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -465,7 +466,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -489,8 +493,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -528,8 +536,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -602,7 +613,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -629,7 +643,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index fdb386dd90..030ac42234 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -339,7 +343,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/siege/Siege.java index 0b9cb088d1..2951e43343 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -524,7 +531,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 29fc21bf02..5879b3ed81 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -52,6 +52,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -526,15 +527,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -682,7 +686,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -873,15 +880,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -990,18 +1000,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index eb1434ff89..5ba6d479dc 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 0b6571d963..bd7c87310f 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -323,7 +324,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 8a6c6c0c16..5e074541ee 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -701,9 +702,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index eb3d8fc0b1..c9fd20f8a1 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -124,10 +125,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -231,7 +235,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -242,7 +246,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5ee37630b2..f713474ea2 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -191,11 +192,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index f702692e8d..a7fb9d4f4b 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -36,6 +36,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -286,9 +287,6 @@ public class UseItem implements IClientIncomingPacket { PacketLogger.warning("Unmanaged Item handler: " + etcItem.getHandlerName() + " for Item Id: " + _itemId + "!"); } - - // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); } else if (handler.useItem(player, item, _ctrlPressed)) { @@ -299,6 +297,12 @@ public class UseItem implements IClientIncomingPacket player.addTimeStampItem(item, reuseDelay); sendSharedGroupUpdate(player, sharedReuseGroup, reuseDelay, reuseDelay); } + + // Notify events. + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } } } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index c32c99e6b8..d526a2f9e3 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -84,7 +85,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index feabcbb556..57ab45784f 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.THE_MENTORING_RELATIONSHIP_WITH_S1_HAS_BEEN_CANCELED_THE_MENTOR_CANNOT_OBTAIN_ANOTHER_MENTEE_FOR_TWO_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java index eb344a7bf5..c65d275482 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.ElementalSpirit; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnElementalSpiritLearn; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.elementalspirits.ElementalSpiritInfo; @@ -73,7 +74,12 @@ public class AttributeMaster extends AbstractNpcAI userInfo.addComponentType(UserInfoType.ATT_SPIRITS); player.sendPacket(userInfo); player.sendPacket(new ElementalSpiritInfo(player, player.getActiveElementalSpiritType(), (byte) 0x01)); - EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritLearn(player), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ELEMENTAL_SPIRIT_LEARN, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritLearn(player), player); + } + return "learn.htm"; } return null; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index ae90719148..d79ef45fe2 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.pet.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 8b35db899b..991637ebc1 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 413931a2aa..708e5586a8 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/ItemTable.java index 6ba4b6acfc..b529270079 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.Armor; @@ -365,7 +366,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 757dfa598e..9c86612d55 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/ElementalSpirit.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/ElementalSpirit.java index 84d06ec8df..6680d3e3dc 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/ElementalSpirit.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/ElementalSpirit.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.enums.ElementalType; import org.l2jmobius.gameserver.enums.UserInfoType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnElementalSpiritUpgrade; import org.l2jmobius.gameserver.model.holders.ElementalSpiritAbsorbItemHolder; import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; @@ -157,7 +158,11 @@ public class ElementalSpirit _data.setLevel(1); _data.setExperience(0); _template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()); - EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ELEMENTAL_SPIRIT_UPGRADE, _owner)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); + } } public void resetCharacteristics() diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 9b55d82c48..a33a769954 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -61,6 +61,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -302,8 +303,11 @@ public class Attackable extends Npc killer.getClan().addExp(1); } - // Delayed notification - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); + // Notify to scripts. + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); + } } // Notify to minions if there are. @@ -807,7 +811,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -871,7 +875,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java index d23a1b8840..0ad801b510 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -640,7 +640,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -829,20 +833,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1722,8 +1729,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -3995,23 +4010,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4743,7 +4763,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4758,28 +4778,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5179,14 +5201,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5625,7 +5650,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Npc.java index 99f12e961d..8fa5d3cdad 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1069,9 +1069,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1174,7 +1177,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1346,7 +1352,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1547,7 +1553,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java index 6ce6aac6a0..606fd58e52 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -1982,7 +1982,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2112,7 +2116,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2280,7 +2287,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2319,7 +2329,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2347,7 +2361,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4830,7 +4847,11 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } + setTotalDeaths(getTotalDeaths() + 1); // pvp/pk item rewards @@ -6753,7 +6774,6 @@ public class Player extends Playable } } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); } } @@ -6762,6 +6782,11 @@ public class Player extends Playable return null; } + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOAD, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + } + if (player.isGM()) { final long masks = player.getVariables().getLong(COND_OVERRIDE_KEY, PlayerCondOverride.getAllExceptionsMask()); @@ -7982,7 +8007,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8036,7 +8065,11 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.STAT_ABILITIES, UserInfoType.STAT_POINTS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } @@ -9693,7 +9726,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9864,7 +9897,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -10027,7 +10063,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10199,16 +10239,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); - + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10886,7 +10930,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11279,14 +11326,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13682,7 +13731,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Summon.java index ebcfef6a88..53f103a6a0 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -161,7 +162,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 650e0257d2..dedfed1b42 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index 20ad33d1ae..aaa0405a93 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -48,10 +49,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 248d1240c7..ea4c9b6021 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -251,7 +252,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExConnectedTimeAndGettableReward(getActiveChar())); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/clan/Clan.java index 386a0443da..ed6388b2a7 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -271,7 +272,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -404,7 +409,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -567,7 +575,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2599,7 +2610,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 6ed237440e..accbff9373 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 53d450efd5..af70d148cc 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index e8e00fb9ba..00b587e974 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/item/Weapon.java index 05a29a67a4..86ed8bbf17 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -297,7 +298,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 0e27700384..bd138d6803 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -305,9 +306,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -1032,7 +1033,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1062,7 +1067,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1592,7 +1600,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2092,9 +2103,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 71e905f40e..539a59253a 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1724,7 +1725,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 4a7ab494c8..35d5ab6ae0 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -429,7 +430,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -507,7 +511,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -539,7 +546,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -606,7 +616,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); + } } return destroyedItem; @@ -677,7 +690,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -710,7 +723,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 04c62b79f4..8d907e16e4 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -948,7 +949,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index aebeb46ec7..83466b06f4 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -465,7 +466,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -489,8 +493,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -528,8 +536,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -602,7 +613,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -629,7 +643,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index 4acae02227..0032496f30 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -337,7 +341,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/siege/Siege.java index feca8398c4..fe7670e2ad 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -525,7 +532,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index c591d9cc0e..a40dab83ea 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -53,6 +53,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -532,15 +533,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -688,7 +692,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -879,15 +886,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -996,18 +1006,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index eb1434ff89..5ba6d479dc 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index cad12977aa..3ebcacce73 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -323,7 +324,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 03c74d08f0..08190bc383 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -34,6 +34,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -656,9 +657,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index eb3d8fc0b1..c9fd20f8a1 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -124,10 +125,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -231,7 +235,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -242,7 +246,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index f3fb47225c..adcedbb746 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -195,11 +196,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 6d906b0b3e..7ded4ed21d 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -308,7 +309,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } if ((etcItem != null) && etcItem.isMineral()) diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index f400170476..d6039e7a43 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -83,7 +84,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index 5a4fef3472..6fa04d1a05 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.S1_S_MENTORING_CONTRACT_IS_CANCELLED_THE_MENTOR_CANNOT_BOND_WITH_ANOTHER_MENTEE_FOR_2_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java index eb344a7bf5..c65d275482 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.ElementalSpirit; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnElementalSpiritLearn; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.elementalspirits.ElementalSpiritInfo; @@ -73,7 +74,12 @@ public class AttributeMaster extends AbstractNpcAI userInfo.addComponentType(UserInfoType.ATT_SPIRITS); player.sendPacket(userInfo); player.sendPacket(new ElementalSpiritInfo(player, player.getActiveElementalSpiritType(), (byte) 0x01)); - EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritLearn(player), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ELEMENTAL_SPIRIT_LEARN, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritLearn(player), player); + } + return "learn.htm"; } return null; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index ae90719148..d79ef45fe2 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.pet.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 8b35db899b..991637ebc1 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 413931a2aa..708e5586a8 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/ItemTable.java index 7638bed91f..c172609455 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.Armor; @@ -365,7 +366,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 757dfa598e..9c86612d55 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/ElementalSpirit.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/ElementalSpirit.java index 84d06ec8df..6680d3e3dc 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/ElementalSpirit.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/ElementalSpirit.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.enums.ElementalType; import org.l2jmobius.gameserver.enums.UserInfoType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnElementalSpiritUpgrade; import org.l2jmobius.gameserver.model.holders.ElementalSpiritAbsorbItemHolder; import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; @@ -157,7 +158,11 @@ public class ElementalSpirit _data.setLevel(1); _data.setExperience(0); _template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()); - EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ELEMENTAL_SPIRIT_UPGRADE, _owner)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); + } } public void resetCharacteristics() diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Attackable.java index 6bfdea37de..4ac4172f62 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -61,6 +61,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -302,8 +303,11 @@ public class Attackable extends Npc killer.getClan().addExp(killer.getObjectId(), 1); } - // Delayed notification - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); + // Notify to scripts. + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); + } } // Notify to minions if there are. @@ -807,7 +811,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -871,7 +875,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java index 0bb567e86e..87efbf3ca1 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -640,7 +640,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -829,20 +833,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1729,8 +1736,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -4002,23 +4017,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4750,7 +4770,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4765,28 +4785,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5186,14 +5208,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5632,7 +5657,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Npc.java index 99f12e961d..8fa5d3cdad 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1069,9 +1069,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1174,7 +1177,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1346,7 +1352,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1547,7 +1553,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java index 6db8e92128..1912034f69 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -2008,7 +2008,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2138,7 +2142,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2306,7 +2313,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2345,7 +2355,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2373,7 +2387,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4867,7 +4884,11 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } + setTotalDeaths(getTotalDeaths() + 1); // pvp/pk item rewards @@ -6794,7 +6815,6 @@ public class Player extends Playable } } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); } } @@ -6803,6 +6823,11 @@ public class Player extends Playable return null; } + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOAD, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + } + if (player.isGM()) { final long masks = player.getVariables().getLong(COND_OVERRIDE_KEY, PlayerCondOverride.getAllExceptionsMask()); @@ -8038,7 +8063,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8092,7 +8121,11 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.STAT_ABILITIES, UserInfoType.STAT_POINTS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } @@ -9749,7 +9782,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -9920,7 +9953,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -10084,7 +10120,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10256,16 +10296,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); - + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -10943,7 +10987,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11336,14 +11383,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13765,7 +13814,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Summon.java index bf78d8a55c..4f2d5e6e1a 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -161,7 +162,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 08104cb5d1..82322adfc3 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index 20ad33d1ae..aaa0405a93 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -48,10 +49,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 248d1240c7..ea4c9b6021 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -251,7 +252,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExConnectedTimeAndGettableReward(getActiveChar())); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/Clan.java index e5b40c66cd..ed4f57d924 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -55,6 +55,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -272,7 +273,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -405,7 +410,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -568,7 +576,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2601,7 +2612,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 6ed237440e..accbff9373 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 53d450efd5..af70d148cc 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index e8e00fb9ba..00b587e974 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/item/Weapon.java index 05a29a67a4..86ed8bbf17 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -297,7 +298,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 0e27700384..bd138d6803 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -305,9 +306,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -1032,7 +1033,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1062,7 +1067,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1592,7 +1600,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2092,9 +2103,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index e27a9a9b29..f5ce89255c 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1733,7 +1734,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 4a7ab494c8..35d5ab6ae0 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -429,7 +430,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -507,7 +511,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -539,7 +546,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -606,7 +616,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); + } } return destroyedItem; @@ -677,7 +690,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -710,7 +723,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 04c62b79f4..8d907e16e4 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -948,7 +949,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index aebeb46ec7..83466b06f4 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -465,7 +466,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -489,8 +493,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -528,8 +536,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -602,7 +613,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -629,7 +643,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index 4acae02227..0032496f30 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -337,7 +341,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/siege/Siege.java index feca8398c4..fe7670e2ad 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -525,7 +532,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index 4f4bf96653..f870ade2b2 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -546,15 +547,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -702,7 +706,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -893,15 +900,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -1010,18 +1020,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index 5a0dcbf84a..bac26ce33e 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 138fe803d8..85a5f9763e 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -332,7 +333,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 03c74d08f0..08190bc383 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -34,6 +34,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -656,9 +657,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index eb3d8fc0b1..c9fd20f8a1 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -124,10 +125,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -231,7 +235,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -242,7 +246,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index f3fb47225c..adcedbb746 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -195,11 +196,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 14d19b4af8..76ea55aa8d 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -39,6 +39,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -324,7 +325,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } if ((etcItem != null) && etcItem.isMineral()) diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index f400170476..d6039e7a43 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -83,7 +84,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index 5a4fef3472..6fa04d1a05 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.S1_S_MENTORING_CONTRACT_IS_CANCELLED_THE_MENTOR_CANNOT_BOND_WITH_ANOTHER_MENTEE_FOR_2_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java index eb344a7bf5..c65d275482 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.ElementalSpirit; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnElementalSpiritLearn; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.elementalspirits.ElementalSpiritInfo; @@ -73,7 +74,12 @@ public class AttributeMaster extends AbstractNpcAI userInfo.addComponentType(UserInfoType.ATT_SPIRITS); player.sendPacket(userInfo); player.sendPacket(new ElementalSpiritInfo(player, player.getActiveElementalSpiritType(), (byte) 0x01)); - EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritLearn(player), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ELEMENTAL_SPIRIT_LEARN, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritLearn(player), player); + } + return "learn.htm"; } return null; diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index ae90719148..d79ef45fe2 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.pet.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 8b35db899b..991637ebc1 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 413931a2aa..708e5586a8 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/ItemTable.java index 7638bed91f..c172609455 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.Armor; @@ -365,7 +366,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 757dfa598e..9c86612d55 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/ElementalSpirit.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/ElementalSpirit.java index 84d06ec8df..6680d3e3dc 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/ElementalSpirit.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/ElementalSpirit.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.enums.ElementalType; import org.l2jmobius.gameserver.enums.UserInfoType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnElementalSpiritUpgrade; import org.l2jmobius.gameserver.model.holders.ElementalSpiritAbsorbItemHolder; import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; @@ -157,7 +158,11 @@ public class ElementalSpirit _data.setLevel(1); _data.setExperience(0); _template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()); - EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ELEMENTAL_SPIRIT_UPGRADE, _owner)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); + } } public void resetCharacteristics() diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Attackable.java index aef6e199bd..8e15f8951d 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -62,6 +62,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -303,8 +304,11 @@ public class Attackable extends Npc killer.getClan().addExp(killer.getObjectId(), 1); } - // Delayed notification - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); + // Notify to scripts. + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); + } } // Notify to minions if there are. @@ -814,7 +818,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -878,7 +882,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java index cda0c0d8f6..eed2519c0f 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1728,8 +1735,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -4001,23 +4016,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4749,7 +4769,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4764,28 +4784,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5185,14 +5207,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5631,7 +5656,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Npc.java index 99f12e961d..8fa5d3cdad 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1069,9 +1069,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1174,7 +1177,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1346,7 +1352,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1547,7 +1553,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java index ad30b15cac..67c15c1e8a 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -2023,7 +2023,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2153,7 +2157,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2321,7 +2328,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2360,7 +2370,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2388,7 +2402,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4882,7 +4899,11 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } + setTotalDeaths(getTotalDeaths() + 1); // pvp/pk item rewards @@ -6809,7 +6830,6 @@ public class Player extends Playable } } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); } } @@ -6818,6 +6838,11 @@ public class Player extends Playable return null; } + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOAD, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + } + if (player.isGM()) { final long masks = player.getVariables().getLong(COND_OVERRIDE_KEY, PlayerCondOverride.getAllExceptionsMask()); @@ -8069,7 +8094,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8128,7 +8157,11 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.STAT_ABILITIES, UserInfoType.STAT_POINTS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } @@ -9929,7 +9962,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -10100,7 +10133,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -10260,7 +10296,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10432,16 +10472,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); - + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -11119,7 +11163,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11512,14 +11559,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -13945,7 +13994,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Summon.java index df47c6846f..336d3cc439 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -161,7 +162,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 08104cb5d1..82322adfc3 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index fecef82b02..a669d22ce6 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -48,10 +49,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 248d1240c7..ea4c9b6021 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -251,7 +252,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExConnectedTimeAndGettableReward(getActiveChar())); diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/Clan.java index e5b40c66cd..ed4f57d924 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -55,6 +55,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -272,7 +273,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -405,7 +410,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -568,7 +576,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2601,7 +2612,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 72ba4b2c3a..1bd6827059 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 53d450efd5..af70d148cc 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index e8e00fb9ba..00b587e974 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/item/Weapon.java index 05a29a67a4..86ed8bbf17 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -297,7 +298,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 0e27700384..bd138d6803 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -305,9 +306,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -1032,7 +1033,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1062,7 +1067,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1592,7 +1600,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2092,9 +2103,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index e27a9a9b29..f5ce89255c 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1733,7 +1734,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 4a7ab494c8..35d5ab6ae0 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -429,7 +430,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -507,7 +511,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -539,7 +546,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -606,7 +616,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); + } } return destroyedItem; @@ -677,7 +690,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -710,7 +723,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 620232aff3..3fff78c179 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -948,7 +949,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index aebeb46ec7..83466b06f4 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -465,7 +466,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -489,8 +493,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -528,8 +536,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -602,7 +613,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -629,7 +643,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index 4acae02227..0032496f30 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -337,7 +341,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/siege/Siege.java index feca8398c4..fe7670e2ad 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -525,7 +532,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index eebaefc3a1..b125fa3e5e 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -546,15 +547,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -702,7 +706,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -893,15 +900,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -1010,18 +1020,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index c24df5f7f4..47fbe05ce7 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 138fe803d8..85a5f9763e 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -332,7 +333,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 3602619df0..4a59f07108 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -34,6 +34,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -656,9 +657,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index eb3d8fc0b1..c9fd20f8a1 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -124,10 +125,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -231,7 +235,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -242,7 +246,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 97d91686cf..df9a5d165f 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -195,11 +196,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 14d19b4af8..76ea55aa8d 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -39,6 +39,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -324,7 +325,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } if ((etcItem != null) && etcItem.isMineral()) diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index f400170476..d6039e7a43 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -83,7 +84,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index 5a4fef3472..6fa04d1a05 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.S1_S_MENTORING_CONTRACT_IS_CANCELLED_THE_MENTOR_CANNOT_BOND_WITH_ANOTHER_MENTEE_FOR_2_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java index eb344a7bf5..c65d275482 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/ai/others/AttributeMaster/AttributeMaster.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.ElementalSpirit; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnElementalSpiritLearn; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.elementalspirits.ElementalSpiritInfo; @@ -73,7 +74,12 @@ public class AttributeMaster extends AbstractNpcAI userInfo.addComponentType(UserInfoType.ATT_SPIRITS); player.sendPacket(userInfo); player.sendPacket(new ElementalSpiritInfo(player, player.getActiveElementalSpiritType(), (byte) 0x01)); - EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritLearn(player), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ELEMENTAL_SPIRIT_LEARN, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritLearn(player), player); + } + return "learn.htm"; } return null; diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/actionhandlers/PetAction.java b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/actionhandlers/PetAction.java index ae90719148..d79ef45fe2 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/actionhandlers/PetAction.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/actionhandlers/PetAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.pet.PetStatusShow; @@ -79,7 +80,10 @@ public class PetAction implements IActionHandler player.sendPacket(new PetStatusShow((Pet) target)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } player.updateNotMoveUntil(); } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java index 8b35db899b..991637ebc1 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/actionhandlers/SummonAction.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class SummonAction implements IActionHandler player.sendPacket(ActionFailed.STATIC_PACKET); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), (Summon) target); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_TALK, target)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonTalk((Summon) target), target); + } } else if (player.getTarget() != target) { diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java index 9251e29ce5..efa925ec2a 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/SummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -59,11 +60,13 @@ public class SummonAgathion extends AbstractEffect } final Player player = effected.getActingPlayer(); - player.setAgathionId(_npcId); player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonAgathion(player, _npcId)); + } } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java index 22bbee15c1..92a4dbac60 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.Trap; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -80,7 +81,10 @@ public class TrapRemove extends AbstractEffect } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, trap)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(trap, effector, TrapAction.TRAP_DISARMED), trap); + } trap.unSummon(); if (effector.isPlayer()) diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java index d62220e940..909406989e 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/UnsummonAgathion.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; @@ -55,7 +56,10 @@ public class UnsummonAgathion extends AbstractEffect player.sendPacket(new ExUserInfoCubic(player)); player.broadcastCharInfo(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_UNSUMMON_AGATHION)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerUnsummonAgathion(player, agathionId)); + } } } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/playeractions/SocialAction.java b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/playeractions/SocialAction.java index 23f5953b29..3bd0b772b1 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/playeractions/SocialAction.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/playeractions/SocialAction.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskCoupleAction; @@ -93,7 +94,10 @@ public class SocialAction implements IPlayerActionHandler player.broadcastPacket(new org.l2jmobius.gameserver.network.serverpackets.SocialAction(player.getObjectId(), id)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SOCIAL_ACTION, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSocialAction(player, id), player); + } } return true; diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 77620528b1..0ff1a416fd 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -47,6 +47,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.RaidBoss; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableFactionCall; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableHate; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; @@ -404,10 +405,13 @@ public class AttackableAI extends CreatureAI } else if (t.isPlayable()) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_HATE, getActiveChar())) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnAttackableHate(getActiveChar(), t.getActingPlayer(), t.isSummon()), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Get the hate level of the Attackable against this Creature target contained in _aggroList @@ -750,7 +754,11 @@ public class AttackableAI extends CreatureAI // By default, when a faction member calls for help, attack the caller's attacker. // Notify the AI with EVT_AGGRESSION called.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, finalTarget, 1); - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_FACTION_CALL, called)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableFactionCall(called, getActiveChar(), finalTarget.getActingPlayer(), finalTarget.isSummon()), called); + } } else if (called.getAI()._intention != CtrlIntention.AI_INTENTION_ATTACK) { diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/ai/CreatureAI.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/ai/CreatureAI.java index 413931a2aa..708e5586a8 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/ai/CreatureAI.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/ai/CreatureAI.java @@ -44,6 +44,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveFinished; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -701,11 +702,14 @@ public class CreatureAI extends AbstractAI WalkingManager.getInstance().onArrived(npc); // Walking Manager support // Notify to scripts - if (_onNpcMoveFinished == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_FINISHED, npc)) { - _onNpcMoveFinished = new OnNpcMoveFinished(npc); + if (_onNpcMoveFinished == null) + { + _onNpcMoveFinished = new OnNpcMoveFinished(npc); + } + EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } - EventDispatcher.getInstance().notifyEventAsync(_onNpcMoveFinished, npc); } // Launch actions corresponding to the Event Think diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/ItemTable.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/ItemTable.java index 7638bed91f..c172609455 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/ItemTable.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/ItemTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.EventMonster; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.Armor; @@ -365,7 +366,11 @@ public class ItemTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_CREATE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemCreate(process, item, actor, reference), item.getTemplate()); + } + return item; } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/sql/ClanTable.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/sql/ClanTable.java index 757dfa598e..9c86612d55 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/sql/ClanTable.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/sql/ClanTable.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy; @@ -215,7 +216,11 @@ public class ClanTable player.broadcastUserInfo(UserInfoType.RELATION, UserInfoType.CLAN); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_CREATE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanCreate(player, clan)); + } + return clan; } @@ -331,7 +336,10 @@ public class ClanTable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_DESTROY)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanDestroy(leaderMember, clan)); + } } public void scheduleRemoveClan(int clanId) @@ -387,7 +395,10 @@ public class ClanTable final Clan clan1 = getInstance().getClan(clanId1); final Clan clan2 = getInstance().getClan(clanId2); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_FINISH)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarFinish(clan1, clan2)); + } clan1.deleteWar(clan2.getId()); clan2.deleteWar(clan1.getId()); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java index 1e45a21319..d619d633d9 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/WalkingManager.java @@ -45,6 +45,7 @@ import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.tasks.npc.walker.ArrivedTask; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveNodeArrived; import org.l2jmobius.gameserver.model.holders.NpcRoutesHolder; import org.l2jmobius.gameserver.network.NpcStringId; @@ -424,7 +425,10 @@ public class WalkingManager implements IXmlReader } // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_NODE_ARRIVED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveNodeArrived(npc), npc); + } final WalkInfo walk = _activeRoutes.get(npc.getObjectId()); // Opposite should not happen... but happens sometime diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/ElementalSpirit.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/ElementalSpirit.java index 84d06ec8df..6680d3e3dc 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/ElementalSpirit.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/ElementalSpirit.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.enums.ElementalType; import org.l2jmobius.gameserver.enums.UserInfoType; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnElementalSpiritUpgrade; import org.l2jmobius.gameserver.model.holders.ElementalSpiritAbsorbItemHolder; import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; @@ -157,7 +158,11 @@ public class ElementalSpirit _data.setLevel(1); _data.setExperience(0); _template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()); - EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_ELEMENTAL_SPIRIT_UPGRADE, _owner)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); + } } public void resetCharacteristics() diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/WalkInfo.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/WalkInfo.java index 4b11620f91..bdd0b2a277 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/WalkInfo.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/WalkInfo.java @@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMoveRouteFinished; /** @@ -92,7 +93,10 @@ public class WalkInfo if (_currentNode == getRoute().getNodesCount()) // Last node arrived { // Notify quest - EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MOVE_ROUTE_FINISHED, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcMoveRouteFinished(npc), npc); + } if (!getRoute().repeatWalk()) { diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Attackable.java index aef6e199bd..8e15f8951d 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -62,6 +62,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.attackable.CommandChannelTimer import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAggroRangeEnter; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableAttack; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill; @@ -303,8 +304,11 @@ public class Attackable extends Npc killer.getClan().addExp(killer.getObjectId(), 1); } - // Delayed notification - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); + // Notify to scripts. + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(killer.getActingPlayer(), this, killer.isSummon()), this); + } } // Notify to minions if there are. @@ -814,7 +818,7 @@ public class Attackable extends Npc addDamageHate(attacker, damage, (int) hateValue); final Player player = attacker.getActingPlayer(); - if (player != null) + if ((player != null) && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(player, this, damage, skill, attacker.isSummon()), this); } @@ -878,7 +882,10 @@ public class Attackable extends Npc } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_AGGRO_RANGE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAggroRangeEnter(this, targetPlayer, attacker.isSummon()), this); + } } else if ((targetPlayer == null) && (aggro == 0)) { diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java index 331373fa01..7fd99d1503 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -639,7 +639,11 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe spawnMe(getX(), getY(), getZ()); setTeleporting(false); - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORTED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureTeleported(this), this); + } } /** @@ -828,20 +832,23 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe int heading = headingValue; Instance instance = instanceValue; - final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); - if (term != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_TELEPORT, this)) { - if (term.terminate()) + final LocationReturn term = EventDispatcher.getInstance().notifyEvent(new OnCreatureTeleport(this, x, y, z, heading, instance), this, LocationReturn.class); + if (term != null) { - return; - } - else if (term.overrideLocation()) - { - x = term.getX(); - y = term.getY(); - z = term.getZ(); - heading = term.getHeading(); - instance = term.getInstance(); + if (term.terminate()) + { + return; + } + else if (term.overrideLocation()) + { + x = term.getX(); + y = term.getY(); + z = term.getZ(); + heading = term.getHeading(); + instance = term.getInstance(); + } } } @@ -1728,8 +1735,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe setCurrentHp(0); setDead(true); } - EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); - EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this); + } + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_KILLED, killer)) + { + EventDispatcher.getInstance().notifyEvent(new OnCreatureKilled(killer, this), killer); + } + abortAttack(); abortCast(); @@ -4001,23 +4016,28 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe doAttack(hit.getDamage(), target, null, false, false, hit.isCritical(), false); // Notify to scripts when the attack has been done. - if (_onCreatureAttack == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK, this)) { - _onCreatureAttack = new OnCreatureAttack(); + if (_onCreatureAttack == null) + { + _onCreatureAttack = new OnCreatureAttack(); + } + _onCreatureAttack.setAttacker(this); + _onCreatureAttack.setTarget(target); + _onCreatureAttack.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); } - _onCreatureAttack.setAttacker(this); - _onCreatureAttack.setTarget(target); - _onCreatureAttack.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttack, this); - - if (_onCreatureAttacked == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACKED, target)) { - _onCreatureAttacked = new OnCreatureAttacked(); + if (_onCreatureAttacked == null) + { + _onCreatureAttacked = new OnCreatureAttacked(); + } + _onCreatureAttacked.setAttacker(this); + _onCreatureAttacked.setTarget(target); + _onCreatureAttacked.setSkill(null); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); } - _onCreatureAttacked.setAttacker(this); - _onCreatureAttacked.setTarget(target); - _onCreatureAttacked.setSkill(null); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttacked, target); if (_triggerSkills != null) { @@ -4759,7 +4779,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe double amount = amountValue; // Notify of this attack only if there is an attacking creature. - if (attacker != null) + if ((attacker != null) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_DEALT, attacker)) { if (_onCreatureDamageDealt == null) { @@ -4774,28 +4794,30 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _onCreatureDamageDealt.setReflect(reflect); EventDispatcher.getInstance().notifyEvent(_onCreatureDamageDealt, attacker); } - - if (_onCreatureDamageReceived == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DAMAGE_RECEIVED, this)) { - _onCreatureDamageReceived = new OnCreatureDamageReceived(); - } - _onCreatureDamageReceived.setAttacker(attacker); - _onCreatureDamageReceived.setTarget(this); - _onCreatureDamageReceived.setDamage(amount); - _onCreatureDamageReceived.setSkill(skill); - _onCreatureDamageReceived.setCritical(critical); - _onCreatureDamageReceived.setDamageOverTime(isDOT); - _onCreatureDamageReceived.setReflect(reflect); - final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); - if (term != null) - { - if (term.terminate()) + if (_onCreatureDamageReceived == null) { - return; + _onCreatureDamageReceived = new OnCreatureDamageReceived(); } - else if (term.override()) + _onCreatureDamageReceived.setAttacker(attacker); + _onCreatureDamageReceived.setTarget(this); + _onCreatureDamageReceived.setDamage(amount); + _onCreatureDamageReceived.setSkill(skill); + _onCreatureDamageReceived.setCritical(critical); + _onCreatureDamageReceived.setDamageOverTime(isDOT); + _onCreatureDamageReceived.setReflect(reflect); + final DamageReturn term = EventDispatcher.getInstance().notifyEvent(_onCreatureDamageReceived, this, DamageReturn.class); + if (term != null) { - amount = term.getDamage(); + if (term.terminate()) + { + return; + } + else if (term.override()) + { + amount = term.getDamage(); + } } } @@ -5195,14 +5217,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void notifyAttackAvoid(Creature target, boolean isDot) { - if (_onCreatureAttackAvoid == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ATTACK_AVOID, target)) { - _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + if (_onCreatureAttackAvoid == null) + { + _onCreatureAttackAvoid = new OnCreatureAttackAvoid(); + } + _onCreatureAttackAvoid.setAttacker(this); + _onCreatureAttackAvoid.setTarget(target); + _onCreatureAttackAvoid.setDamageOverTime(isDot); + EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } - _onCreatureAttackAvoid.setAttacker(this); - _onCreatureAttackAvoid.setTarget(target); - _onCreatureAttackAvoid.setDamageOverTime(isDot); - EventDispatcher.getInstance().notifyEvent(_onCreatureAttackAvoid, target); } /** @@ -5641,7 +5666,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe if (!creature.isInvisible()) { final WorldRegion worldRegion = getWorldRegion(); - if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature)) + if ((worldRegion != null) && worldRegion.areNeighborsActive() && _seenCreatures.add(creature) && EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SEE, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnCreatureSee(this, creature), this); } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Npc.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Npc.java index 99f12e961d..8fa5d3cdad 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Npc.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Npc.java @@ -1069,9 +1069,12 @@ public class Npc extends Creature _isRandomWalkingEnabled = !WalkingManager.getInstance().isTargeted(this) && getTemplate().isRandomWalkEnabled(); if (isTeleporting()) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcTeleport(this), this); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SPAWN, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSpawn(this), this); } @@ -1174,7 +1177,10 @@ public class Npc extends Creature WalkingManager.getInstance().onDeath(this); // Notify DP scripts - EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_DESPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcDespawn(this), this); + } // Remove from instance world final Instance instance = getInstanceWorld(); @@ -1346,7 +1352,7 @@ public class Npc extends Creature @Override public void notifyQuestEventSkillFinished(Skill skill, WorldObject target) { - if (target != null) + if ((target != null) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_FINISHED, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillFinished(this, target.getActingPlayer(), skill), this); } @@ -1547,7 +1553,10 @@ public class Npc extends Creature */ public void sendScriptEvent(String eventName, WorldObject receiver, WorldObject reference) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_EVENT_RECEIVED, receiver)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcEventReceived(eventName, this, (Npc) receiver, reference), receiver); + } } /** diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Playable.java index ff4decd581..a5f49074e9 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.instancezone.Instance; @@ -100,10 +101,13 @@ public abstract class Playable extends Creature @Override public boolean doDie(Creature killer) { - final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); - if ((returnBack != null) && returnBack.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_DEATH, this)) { - return false; + final TerminateReturn returnBack = EventDispatcher.getInstance().notifyEvent(new OnCreatureDeath(killer, this), this, TerminateReturn.class); + if ((returnBack != null) && returnBack.terminate()) + { + return false; + } } // killing is only possible one time diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java index 48076531b3..b9d66767f7 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -2032,7 +2032,11 @@ public class Player extends Playable */ public void setPkKills(int pkKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PK_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPKChanged(this, _pkKills, pkKills), this); + } + _pkKills = pkKills; } @@ -2162,7 +2166,10 @@ public class Player extends Playable public void setReputation(int value) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_REPUTATION_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerReputationChanged(this, getReputation(), value), this); + } int reputation = value; if (reputation > Config.MAX_REPUTATION) // Max count of positive reputation @@ -2330,7 +2337,10 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_EQUIP, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemEquip(this, item), item.getTemplate()); + } } else { @@ -2369,7 +2379,11 @@ public class Player extends Playable */ public void setPvpKills(int pvpKills) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPChanged(this, _pvpKills, pvpKills), this); + } + _pvpKills = pvpKills; } @@ -2397,7 +2411,10 @@ public class Player extends Playable newFame = 0; } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FAME_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFameChanged(this, _fame, newFame), this); + } _fame = newFame; } @@ -4919,7 +4936,11 @@ public class Player extends Playable { if (pk != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PVP_KILL, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); + } + setTotalDeaths(getTotalDeaths() + 1); // pvp/pk item rewards @@ -6850,7 +6871,6 @@ public class Player extends Playable } } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); } } @@ -6859,6 +6879,11 @@ public class Player extends Playable return null; } + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOAD, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player); + } + if (player.isGM()) { final long masks = player.getVariables().getLong(COND_OVERRIDE_KEY, PlayerCondOverride.getAllExceptionsMask()); @@ -8110,7 +8135,11 @@ public class Player extends Playable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_REMOVE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaRemove(this, henna), this); + } + return true; } @@ -8169,7 +8198,11 @@ public class Player extends Playable broadcastUserInfo(UserInfoType.BASE_STATS, UserInfoType.STAT_ABILITIES, UserInfoType.STAT_POINTS, UserInfoType.MAX_HPCPMP, UserInfoType.STATS, UserInfoType.SPEED); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_HENNA_ADD, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerHennaAdd(this, henna), this); + } + return true; } } @@ -9983,7 +10016,7 @@ public class Player extends Playable public boolean modifySubClass(int classIndex, int newClassId, boolean isDualClass) { // Notify to scripts before class is removed. - if (!getSubClasses().isEmpty()) // also null check + if (!getSubClasses().isEmpty() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CANCEL, this)) { final int classId = getSubClasses().get(classIndex).getClassId(); EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionCancel(this, classId), this); @@ -10154,7 +10187,10 @@ public class Player extends Playable setTemplate(pcTemplate); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PROFESSION_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerProfessionChange(this, pcTemplate, isSubClassActive()), this); + } } /** @@ -10314,7 +10350,11 @@ public class Player extends Playable broadcastPacket(new SocialAction(getObjectId(), SocialAction.LEVEL_UP)); sendPacket(new SkillCoolTime(this)); sendStorageMaxCount(); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUB_CHANGE, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSubChange(this), this); + } } finally { @@ -10486,16 +10526,20 @@ public class Player extends Playable LOGGER.log(Level.SEVERE, "", e); } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); - + // Notify to scripts + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGIN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this); + } if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, true), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, true), this); } } @@ -11173,7 +11217,10 @@ public class Player extends Playable @Override public boolean deleteMe() { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LOGOUT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(this), this); + } try { @@ -11572,14 +11619,16 @@ public class Player extends Playable player.removeSnooped(this); } + // Notify to scripts if (isMentee()) { - // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_STATUS, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeStatus(this, false), this); + } } - else if (isMentor()) + else if (isMentor() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTOR_STATUS, this)) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } @@ -14030,7 +14079,11 @@ public class Player extends Playable */ public void setAbilityPointsUsed(int points) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAbilityPointsChanged(this, getAbilityPointsUsed(), points), this); + } + getVariables().set(isDualClassActive() ? PlayerVariables.ABILITY_POINTS_USED_DUAL_CLASS : PlayerVariables.ABILITY_POINTS_USED_MAIN_CLASS, points); } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Summon.java index df47c6846f..336d3cc439 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.model.actor.status.SummonStatus; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn; import org.l2jmobius.gameserver.model.item.EtcItem; import org.l2jmobius.gameserver.model.item.Weapon; @@ -161,7 +162,10 @@ public abstract class Summon extends Playable rechargeShots(true, true, false); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SUMMON_SPAWN, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSummonSpawn(this), this); + } } @Override diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java index 35b94ae00e..ce33cdad31 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/instance/FriendlyNpc.java @@ -72,7 +72,7 @@ public class FriendlyNpc extends Attackable super.addDamage(attacker, damage, skill); } - if (attacker.isAttackable()) + if (attacker.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_ATTACK, this)) { EventDispatcher.getInstance().notifyEventAsync(new OnAttackableAttack(null, this, damage, skill, false), this); } @@ -96,9 +96,9 @@ public class FriendlyNpc extends Attackable return false; } - if ((killer != null) && killer.isAttackable()) + // Notify to scripts. + if ((killer != null) && killer.isAttackable() && EventDispatcher.getInstance().hasListener(EventType.ON_ATTACKABLE_KILL, this)) { - // Delayed notification EventDispatcher.getInstance().notifyEventAsync(new OnAttackableKill(null, this, false), this); } return true; diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java index 2cf9556003..beafe06f5c 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/instance/Guard.java @@ -206,7 +206,10 @@ public class Guard extends Attackable if (hasListener(EventType.ON_NPC_FIRST_TALK)) { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_FIRST_TALK, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(this, player), this); + } } else { diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java index 08104cb5d1..82322adfc3 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/instance/Trap.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTask; import org.l2jmobius.gameserver.model.actor.tasks.npc.trap.TrapTriggerTask; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.Weapon; @@ -313,7 +314,11 @@ public class Trap extends Npc _playersWhoDetectedMe.add(detector.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, detector, TrapAction.TRAP_DETECTED), this); + } + if (detector.isPlayable()) { sendInfo(detector.getActingPlayer()); @@ -341,7 +346,11 @@ public class Trap extends Npc broadcastPacket(new NpcInfo(this)); setTarget(target); - EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_TRAP_ACTION, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnTrapAction(this, target, TrapAction.TRAP_TRIGGERED), this); + } + ThreadPool.schedule(new TrapTriggerTask(this), 500); } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java index fecef82b02..a669d22ce6 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/stat/PlayableStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.Weapon; @@ -48,10 +49,13 @@ public class PlayableStat extends CreatureStat public boolean addExp(long amount) { - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYABLE_EXP_CHANGED, getActiveChar())) { - return false; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayableExpChanged(getActiveChar(), getExp(), getExp() + amount), getActiveChar(), TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return false; + } } if (((getExp() + amount) < 0) || ((amount > 0) && (getExp() == (getExpForLevel(getMaxLevel()) - 1)))) diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java index 248d1240c7..ea4c9b6021 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; @@ -251,7 +252,10 @@ public class PlayerStat extends PlayableStat } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_LEVEL_CHANGED, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar()); + } // Update daily mission count. getActiveChar().sendPacket(new ExConnectedTimeAndGettableReward(getActiveChar())); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java index 32c12bd9a7..a19eb83596 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/status/CreatureStatus.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureHpChange; import org.l2jmobius.gameserver.model.skill.AbnormalType; import org.l2jmobius.gameserver.model.stats.Formulas; @@ -314,7 +315,11 @@ public class CreatureStatus { _creature.broadcastStatusUpdate(); } - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_HP_CHANGE, getActiveChar())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureHpChange(getActiveChar(), oldHp, _currentHp), getActiveChar()); + } } return hpWasChanged; diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java index c8be7452d5..9adda5dc3f 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/transform/Transform.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.holders.AdditionalItemHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; @@ -331,7 +332,10 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, getId()), player); + } } else { @@ -396,8 +400,12 @@ public class Transform implements IIdentifiable player.broadcastUserInfo(); player.sendPacket(new ExUserInfoEquipSlot(player)); + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TRANSFORM, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerTransform(player, 0), player); + } } else { diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/Clan.java index b88fcd25a1..091432d080 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -55,6 +55,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft; @@ -272,7 +273,11 @@ public class Clan implements IIdentifiable, INamable final Player exLeader = exMember.getPlayer(); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEADER_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeaderChange(exMember, member, this)); + } + if (exLeader != null) { if (exLeader.isFlying()) @@ -405,7 +410,10 @@ public class Clan implements IIdentifiable, INamable addSkillEffects(player); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_JOIN)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanJoin(member, this)); + } } /** @@ -568,7 +576,10 @@ public class Clan implements IIdentifiable, INamable } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEFT)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLeft(exMember, this)); + } } public Collection getMembers() @@ -2601,7 +2612,11 @@ public class Clan implements IIdentifiable, INamable changeLevel(_level + 1); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_LEVELUP)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanLvlUp(player, this)); + } + return true; } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/ClanWar.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/ClanWar.java index 72ba4b2c3a..1bd6827059 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/ClanWar.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/ClanWar.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SurrenderPledgeWar; @@ -59,7 +60,12 @@ public class ClanWar _cancelTask = ThreadPool.schedule(this::clanWarTimeout, (_startTime + TIME_TO_CANCEL_NON_MUTUAL_CLAN_WAR) - System.currentTimeMillis()); attacker.addWar(attacked.getId(), this); attacked.addWar(attacker.getId(), this); - EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_CLAN_WAR_START)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnClanWarStart(attacker, attacked)); + } + SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_DECLARED_A_CLAN_WAR_WITH_S1); sm.addString(attacked.getName()); attacker.broadcastToOnlineMembers(sm); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java index e62c31f622..07f55c6207 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/events/EventDispatcher.java @@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; import org.l2jmobius.gameserver.model.events.returns.AbstractEventReturn; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EventDispatcher { @@ -36,6 +36,47 @@ public class EventDispatcher { } + /** + * @param type EventType + * @return {@code true} if global containers have a listener of the given type. + */ + public boolean hasListener(EventType type) + { + return Containers.Global().hasListener(type); + } + + /** + * @param type EventType + * @param container ListenersContainer + * @return {@code true} if container has a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer container) + { + return Containers.Global().hasListener(type) || ((container != null) && container.hasListener(type)); + } + + /** + * @param type EventType + * @param containers ListenersContainer... + * @return {@code true} if containers have a listener of the given type. + */ + public boolean hasListener(EventType type, ListenersContainer... containers) + { + boolean hasListeners = Containers.Global().hasListener(type); + if (!hasListeners) + { + for (ListenersContainer container : containers) + { + if (container.hasListener(type)) + { + hasListeners = true; + break; + } + } + } + return hasListeners; + } + /** * @param * @param event @@ -79,7 +120,7 @@ public class EventDispatcher { try { - return Containers.Global().hasListener(event.getType()) || ((container != null) && container.hasListener(event.getType())) ? notifyEventImpl(event, container, callbackClass) : null; + return notifyEventImpl(event, container, callbackClass); } catch (Exception e) { @@ -88,6 +129,21 @@ public class EventDispatcher return null; } + /** + * Executing current listener notification asynchronously + * @param event + * @param container + */ + public void notifyEventAsync(IBaseEvent event, ListenersContainer container) + { + if (event == null) + { + throw new NullPointerException("Event cannot be null!"); + } + + ThreadPool.execute(() -> notifyEventToSingleContainer(event, container, null)); + } + /** * Executing current listener notification asynchronously * @param event @@ -100,37 +156,45 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } - boolean hasListeners = Containers.Global().hasListener(event.getType()); - if (!hasListeners) - { - for (ListenersContainer container : containers) - { - if (container.hasListener(event.getType())) - { - hasListeners = true; - break; - } - } - } - - if (hasListeners) - { - ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); - } + ThreadPool.execute(() -> notifyEventToMultipleContainers(event, containers, null)); } /** - * Scheduling current listener notification asynchronously after specified delay. + * @param * @param event * @param container - * @param delay + * @param callbackClass + * @return */ - public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay) + private T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class callbackClass) { - if (Containers.Global().hasListener(event.getType()) || container.hasListener(event.getType())) + if (event == null) { - ThreadPool.schedule(() -> notifyEvent(event, container, null), delay); + throw new NullPointerException("Event cannot be null!"); } + + try + { + // Local listener container. + T callback = null; + if (container != null) + { + callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); + } + + // Global listener container. + if ((callback == null) || !callback.abort()) + { + callback = notifyToListeners(Containers.Global().getListeners(event.getType()), event, callbackClass, callback); + } + + return callback; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't notify event " + event.getClass().getSimpleName(), e); + } + return null; } /** @@ -152,7 +216,7 @@ public class EventDispatcher T callback = null; if (containers != null) { - // Local listeners container first. + // Local listener containers. for (ListenersContainer container : containers) { if ((callback == null) || !callback.abort()) @@ -191,8 +255,8 @@ public class EventDispatcher throw new NullPointerException("Event cannot be null!"); } + // Local listener container. T callback = null; - // Local listener container first. if (container != null) { callback = notifyToListeners(container.getListeners(event.getType()), event, callbackClass, callback); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/fishing/Fishing.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/fishing/Fishing.java index 53d450efd5..af70d148cc 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/fishing/Fishing.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/fishing/Fishing.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -333,7 +334,7 @@ public class Fishing _player.sendPacket(SystemMessageId.THE_BAIT_HAS_BEEN_LOST_BECAUSE_THE_FISH_GOT_AWAY); } - if (consumeBait) + if (consumeBait && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_FISHING, _player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerFishing(_player, reason), _player); } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index e8e00fb9ba..00b587e974 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -56,6 +56,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.templates.DoorTemplate; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy; import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter; @@ -130,9 +131,9 @@ public class Instance implements IIdentifiable, INamable } } - if (!isDynamic()) + // Notify DP scripts + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_CREATED, _template)) { - // Notify DP scripts EventDispatcher.getInstance().notifyEventAsync(new OnInstanceCreated(this, player), _template); } } @@ -220,7 +221,11 @@ public class Instance implements IIdentifiable, INamable public void setStatus(int value) { _parameters.set("INSTANCE_STATUS", value); - EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_STATUS_CHANGE, _template)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnInstanceStatusChange(this, value), _template); + } } /** @@ -836,7 +841,7 @@ public class Instance implements IIdentifiable, INamable _ejectDeadTasks.clear(); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_DESTROY, _template)) { EventDispatcher.getInstance().notifyEvent(new OnInstanceDestroy(this), _template); } @@ -1073,7 +1078,7 @@ public class Instance implements IIdentifiable, INamable } // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_ENTER, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceEnter(player, this), _template); } @@ -1083,7 +1088,7 @@ public class Instance implements IIdentifiable, INamable removePlayer(player); // Notify DP scripts - if (!isDynamic()) + if (!isDynamic() && EventDispatcher.getInstance().hasListener(EventType.ON_INSTANCE_LEAVE, _template)) { EventDispatcher.getInstance().notifyEventAsync(new OnInstanceLeave(player, this), _template); } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/item/Weapon.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/item/Weapon.java index 05a29a67a4..86ed8bbf17 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/item/Weapon.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/item/Weapon.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; import org.l2jmobius.gameserver.model.item.type.WeaponType; import org.l2jmobius.gameserver.model.skill.Skill; @@ -297,7 +298,13 @@ public class Weapon extends ItemTemplate // notify quests of a skill use if (caster.isPlayer()) { - World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc)); + World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc -> + { + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npc, caster.getActingPlayer(), skill, false, target), npc); + } + }); } if (caster.isPlayer()) { diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/item/instance/Item.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/item/instance/Item.java index 0e27700384..bd138d6803 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/item/instance/Item.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/item/instance/Item.java @@ -63,6 +63,7 @@ import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup; @@ -305,9 +306,9 @@ public class Item extends WorldObject // Remove the Item from the world World.getInstance().removeVisibleObject(this, oldregion); - if (creature.isPlayer()) + // Notify to scripts + if (creature.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_PICKUP, getTemplate())) { - // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemPickup(creature.getActingPlayer(), this), getTemplate()); } } @@ -1032,7 +1033,11 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getTemplate()); + } + return true; } @@ -1062,7 +1067,10 @@ public class Item extends WorldObject } // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_AUGMENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augment, false), getTemplate()); + } } public void restoreAttributes() @@ -1592,7 +1600,10 @@ public class Item extends WorldObject _owner = null; // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(dropper.getActingPlayer(), this, new Location(x, y, z)), getTemplate()); + } } } @@ -2092,9 +2103,12 @@ public class Item extends WorldObject if (event != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_BYPASS_EVENT, getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemBypassEvent(this, player, event), getTemplate()); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_TALK, getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnItemTalk(this, player), getTemplate()); } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java index 9cd5209abd..dab48387b9 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/ClanWarehouse.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer; @@ -71,7 +72,11 @@ public class ClanWarehouse extends Warehouse final Item item = super.addItem(process, itemId, count, actor, reference); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return item; } @@ -79,7 +84,11 @@ public class ClanWarehouse extends Warehouse public Item addItem(String process, Item item, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_ADD, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemAdd(process, actor, item, this), item.getTemplate()); + } + return super.addItem(process, item, actor, reference); } @@ -87,7 +96,11 @@ public class ClanWarehouse extends Warehouse public Item destroyItem(String process, Item item, long count, Player actor, Object reference) { // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_DESTROY, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemDestroy(process, actor, item, count, this), item.getTemplate()); + } + return super.destroyItem(process, item, count, actor, reference); } @@ -97,7 +110,11 @@ public class ClanWarehouse extends Warehouse final Item item = getItemByObjectId(objectId); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CLAN_WH_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerClanWHItemTransfer(process, actor, item, count, target), item.getTemplate()); + } + return super.transferItem(process, objectId, count, target, actor, reference); } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index e27a9a9b29..f5ce89255c 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip; import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder; @@ -1733,7 +1734,7 @@ public abstract class Inventory extends ItemContainer if (old != null) { final Creature owner = getOwner(); - if ((owner != null) && owner.isPlayer()) + if ((owner != null) && owner.isPlayer() && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_UNEQUIP, old.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemUnequip(owner.getActingPlayer(), old), old.getTemplate()); } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 4a7ab494c8..35d5ab6ae0 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.TradeItem; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; @@ -429,7 +430,10 @@ public class PlayerInventory extends Inventory actor.sendInventoryUpdate(playerIU); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, addedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, addedItem), actor, addedItem.getTemplate()); + } } } return addedItem; @@ -507,7 +511,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_ADD, actor, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor, item.getTemplate()); + } } } return item; @@ -539,7 +546,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_TRANSFER, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemTransfer(actor, item, target), item.getTemplate()); + } return item; } @@ -606,7 +616,10 @@ public class PlayerInventory extends Inventory } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DESTROY, destroyedItem.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDestroy(actor, destroyedItem), destroyedItem.getTemplate()); + } } return destroyedItem; @@ -677,7 +690,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (droppedItem != null) + if ((droppedItem != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, droppedItem.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, droppedItem, droppedItem.getLocation()), droppedItem.getTemplate()); } @@ -710,7 +723,7 @@ public class PlayerInventory extends Inventory } // Notify to scripts - if (item != null) + if ((item != null) && EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_ITEM_DROP, item.getTemplate())) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getTemplate()); } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/olympiad/Hero.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/olympiad/Hero.java index 620232aff3..3fff78c179 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/olympiad/Hero.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/olympiad/Hero.java @@ -46,6 +46,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -948,7 +949,11 @@ public class Hero loadDiary(player.getObjectId()); HERO_MESSAGE.put(player.getObjectId(), ""); - EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_TAKE_HERO)) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerTakeHero(player)); + } + updateHeroes(false); } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index aebeb46ec7..83466b06f4 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -465,7 +466,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && !_pTwoCrash) { @@ -489,8 +493,12 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame { LOGGER_OLYMPIAD.info(_playerOne.getName() + " crash," + _playerOne + "," + _playerTwo + ",0,0,0,0," + pointDiff + "," + getType()); } + // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else if (_pOneCrash && _pTwoCrash) { @@ -528,8 +536,11 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame stadium.broadcastPacket(result); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerOne, getType()), Olympiad.getInstance()); + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(null, _playerTwo, getType()), Olympiad.getInstance()); + } return; } catch (Exception e) @@ -602,7 +613,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); + } } else if ((_playerOne.getPlayer() == null) || !_playerOne.getPlayer().isOnline() || ((playerOneHp == 0) && (playerTwoHp != 0)) || ((_damageP2 > _damageP1) && (playerOneHp != 0) && (playerTwoHp != 0))) { @@ -629,7 +643,10 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_OLYMPIAD_MATCH_RESULT, Olympiad.getInstance())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); + } } else { diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/quest/QuestState.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/quest/QuestState.java index dea487f539..7a829f764f 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/quest/QuestState.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/quest/QuestState.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.enums.QuestType; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete; import org.l2jmobius.gameserver.network.serverpackets.ExShowQuestMark; import org.l2jmobius.gameserver.network.serverpackets.QuestList; @@ -726,7 +727,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player); + } } /** @@ -813,7 +817,10 @@ public class QuestState } // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player); + } } /** diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index 4acae02227..0032496f30 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.instance.Door; import org.l2jmobius.gameserver.model.actor.instance.FortCommander; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnFortSiegeStart; import org.l2jmobius.gameserver.network.NpcStringId; @@ -292,7 +293,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort finished."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_FINISH, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeFinish(this), getFort()); + } } } @@ -337,7 +341,10 @@ public class FortSiege implements Siegable LOGGER.info(getClass().getSimpleName() + ": Siege of " + _fort.getName() + " fort started."); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_FORT_SIEGE_START, getFort())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnFortSiegeStart(this), getFort()); + } } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/siege/Siege.java index feca8398c4..fe7670e2ad 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FlameTower; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeOwnerChange; import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeStart; @@ -343,7 +344,10 @@ public class Siege implements Siegable _castle.getZone().setSiegeInstance(null); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_FINISH, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeFinish(this), getCastle()); + } } } @@ -465,7 +469,10 @@ public class Siege implements Siegable updatePlayerSiegeStateFlags(false); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_OWNER_CHANGE, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeOwnerChange(this), getCastle()); + } } } } @@ -525,7 +532,10 @@ public class Siege implements Siegable Broadcast.toAllOnlinePlayers(new PlaySound("systemmsg_eu.17")); // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CASTLE_SIEGE_START, getCastle())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCastleSiegeStart(this), getCastle()); + } } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java index eebaefc3a1..b125fa3e5e 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/skill/SkillCaster.java @@ -54,6 +54,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillUse; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSkillSee; @@ -546,15 +547,18 @@ public class SkillCaster implements Runnable } // Notify skill is casted. - if (caster.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, caster)) { - caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (caster.onCreatureSkillFinishCast == null) + { + caster.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + caster.onCreatureSkillFinishCast.setCaster(caster); + caster.onCreatureSkillFinishCast.setTarget(target); + caster.onCreatureSkillFinishCast.setSkill(_skill); + caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); } - caster.onCreatureSkillFinishCast.setCaster(caster); - caster.onCreatureSkillFinishCast.setTarget(target); - caster.onCreatureSkillFinishCast.setSkill(_skill); - caster.onCreatureSkillFinishCast.setSimultaneously(_skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillFinishCast, caster); // Call the skill's effects and AI interraction and stuff. callSkill(caster, target, _targets, _skill, _item); @@ -702,7 +706,10 @@ public class SkillCaster implements Runnable // Mobs in range 1000 see spell World.getInstance().forEachVisibleObjectInRange(player, Npc.class, 1000, npcMob -> { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npcMob)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcSkillSee(npcMob, player, skill, caster.isSummon(), targets.toArray(new WorldObject[0])), npcMob); + } // On Skill See logic if (npcMob.isAttackable() && !npcMob.isFakePlayer()) @@ -893,15 +900,18 @@ public class SkillCaster implements Runnable skill.activateSkill(creature, item, targets); // Notify skill is casted. - if (creature.onCreatureSkillFinishCast == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_FINISH_CAST, creature)) { - creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + if (creature.onCreatureSkillFinishCast == null) + { + creature.onCreatureSkillFinishCast = new OnCreatureSkillFinishCast(); + } + creature.onCreatureSkillFinishCast.setCaster(creature); + creature.onCreatureSkillFinishCast.setTarget(target); + creature.onCreatureSkillFinishCast.setSkill(skill); + creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); + EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } - creature.onCreatureSkillFinishCast.setCaster(creature); - creature.onCreatureSkillFinishCast.setTarget(target); - creature.onCreatureSkillFinishCast.setSkill(skill); - creature.onCreatureSkillFinishCast.setSimultaneously(skill.isWithoutAction()); - EventDispatcher.getInstance().notifyEvent(creature.onCreatureSkillFinishCast, creature); } } catch (Exception e) @@ -1010,18 +1020,21 @@ public class SkillCaster implements Runnable return false; } - if (caster.onCreatureSkillUse == null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_SKILL_USE, caster)) { - caster.onCreatureSkillUse = new OnCreatureSkillUse(); - } - caster.onCreatureSkillUse.setCaster(caster); - caster.onCreatureSkillUse.setSkill(skill); - caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); - if ((term != null) && term.terminate()) - { - caster.sendPacket(ActionFailed.STATIC_PACKET); - return false; + if (caster.onCreatureSkillUse == null) + { + caster.onCreatureSkillUse = new OnCreatureSkillUse(); + } + caster.onCreatureSkillUse.setCaster(caster); + caster.onCreatureSkillUse.setSkill(skill); + caster.onCreatureSkillUse.setSimultaneously(skill.isWithoutAction()); + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(caster.onCreatureSkillUse, caster, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + caster.sendPacket(ActionFailed.STATIC_PACKET); + return false; + } } // Check if creature is already casting diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java index c24df5f7f4..47fbe05ce7 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/teleporter/TeleportHolder.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.item.ItemTemplate; @@ -241,10 +242,13 @@ public class TeleportHolder } // Notify listeners - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_TELEPORT_REQUEST, npc)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnNpcTeleportRequest(player, npc, loc), npc, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } // Check rest of conditions diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 86326b5d94..f39fdc91f9 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -30,6 +30,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneEnter; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureZoneExit; @@ -427,7 +428,11 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.putIfAbsent(creature.getObjectId(), creature) == null) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_ENTER, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneEnter(creature, this), this); + } + // Notify Zone implementation. onEnter(creature); } @@ -448,7 +453,10 @@ public abstract class ZoneType extends ListenersContainer if (_characterList.containsKey(creature.getObjectId())) { // Notify to scripts. - EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + if (EventDispatcher.getInstance().hasListener(EventType.ON_CREATURE_ZONE_EXIT, this)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnCreatureZoneExit(creature, this), this); + } // Unregister player. _characterList.remove(creature.getObjectId()); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index 138fe803d8..85a5f9763e 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -38,6 +38,7 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate; import org.l2jmobius.gameserver.model.item.PlayerItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -332,7 +333,11 @@ public class CharacterCreate implements IClientIncomingPacket // Register all shortcuts for actions, skills and items for this new character. InitialShortcutData.getInstance().registerAllShortcuts(newChar); - EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CREATE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerCreate(newChar, newChar.getObjectId(), newChar.getName(), client), Containers.Players()); + } + newChar.setOnlineStatus(true, false); Disconnection.of(client, newChar).storeMe().deleteMe(); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 63c3261946..f0f6265908 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.CharacterDeleteFailType; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -61,7 +62,10 @@ public class CharacterDelete implements IClientIncomingPacket { client.sendPacket(new CharDeleteSuccess()); final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DELETE, Containers.Players())) + { + EventDispatcher.getInstance().notifyEvent(new OnPlayerDelete(charInfo.getObjectId(), charInfo.getName(), client), Containers.Players()); + } break; } default: diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 7e0f9130fc..75cac54042 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectionInfo; @@ -50,7 +51,11 @@ public class CharacterRestore implements IClientIncomingPacket final CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); - final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); - EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_RESTORE)) + { + final CharSelectInfoPackage charInfo = client.getCharSelection(_charSlot); + EventDispatcher.getInstance().notifyEvent(new OnPlayerRestore(charInfo.getObjectId(), charInfo.getName(), client)); + } } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java index c90e2221c0..b32aa96188 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelect.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; @@ -161,11 +162,14 @@ public class CharacterSelect implements IClientIncomingPacket client.setPlayer(cha); cha.setOnlineStatus(true, true); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SELECT, Containers.Players())) { - Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerSelect(cha, cha.getObjectId(), cha.getName(), client), Containers.Players(), TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + Disconnection.of(cha).defaultSequence(LeaveWorld.STATIC_PACKET); + return; + } } client.setConnectionState(ConnectionState.ENTERING); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 04bdfe19c0..4b30b413fe 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.enums.PlayerAction; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.model.holders.DoorRequestHolder; @@ -55,10 +56,13 @@ public class DlgAnswer implements IClientIncomingPacket return; } - final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); - if ((term != null) && term.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_DLG_ANSWER, player)) { - return; + final TerminateReturn term = EventDispatcher.getInstance().notifyEvent(new OnPlayerDlgAnswer(player, _messageId, _answer, _requesterId), player, TerminateReturn.class); + if ((term != null) && term.terminate()) + { + return; + } } if (_messageId == SystemMessageId.S1_3.getId()) diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 446ad730f3..c607592c22 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SayuneEntry; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest; import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; import org.l2jmobius.gameserver.network.GameClient; @@ -178,11 +179,14 @@ public class MoveBackwardToLocation implements IClientIncomingPacket if (_movementMode == 1) { player.setCursorKeyMovement(false); - final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); - if ((terminate != null) && terminate.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MOVE_REQUEST, player)) { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; + final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(player, new Location(_targetX, _targetY, _targetZ)), player, TerminateReturn.class); + if ((terminate != null) && terminate.terminate()) + { + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } } } else // 0 diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java index 3602619df0..4a59f07108 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestAcquireSkill.java @@ -34,6 +34,7 @@ import org.l2jmobius.gameserver.model.actor.instance.VillageMaster; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -656,9 +657,12 @@ public class RequestAcquireSkill implements IClientIncomingPacket // Notify scripts of the skill learn. if (trainer != null) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, trainer)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), trainer); + } } - else + else if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_SKILL_LEARN, player)) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerSkillLearn(trainer, player, skill, _skillType), player); } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index eb3d8fc0b1..c9fd20f8a1 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcManorBypass; import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcMenuSelect; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; @@ -124,10 +125,13 @@ public class RequestBypassToServer implements IClientIncomingPacket return; } - final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); - if ((terminateReturn != null) && terminateReturn.terminate()) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) { - return; + final TerminateReturn terminateReturn = EventDispatcher.getInstance().notifyEvent(new OnPlayerBypass(player, _command), player, TerminateReturn.class); + if ((terminateReturn != null) && terminateReturn.terminate()) + { + return; + } } try @@ -231,7 +235,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if ((lastNpc != null) && lastNpc.canInteract(player)) + if ((lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MENU_SELECT, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); @@ -242,7 +246,7 @@ public class RequestBypassToServer implements IClientIncomingPacket else if (_command.startsWith("manor_menu_select")) { final Npc lastNpc = player.getLastFolkNPC(); - if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player)) + if (Config.ALLOW_MANOR && (lastNpc != null) && lastNpc.canInteract(player) && EventDispatcher.getInstance().hasListener(EventType.ON_NPC_MANOR_BYPASS, lastNpc)) { final String[] split = _command.substring(_command.indexOf('?') + 1).split("&"); final int ask = Integer.parseInt(split[0].split("=")[1]); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java index 4a5d3ec5ad..522e1a6da9 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangeToAwakenedClass.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -48,7 +49,10 @@ public class RequestChangeToAwakenedClass implements IClientIncomingPacket if (_change) { - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHANGE_TO_AWAKENED_CLASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player); + } } else { diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 2e4bcac121..6c4e2d8c77 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.Containers; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; @@ -60,7 +61,12 @@ public class RequestQuestAbort implements IClientIncomingPacket qs.setSimulated(false); qs.exitQuest(QuestType.REPEATABLE); player.sendPacket(new QuestList(player)); - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_ABORT, player, Containers.Players())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestAbort(player, _questId), player, Containers.Players()); + } + qe.onQuestAborted(player); } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index e773528561..a2be9e6348 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.BypassHandler; import org.l2jmobius.gameserver.handler.IBypassHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass; import org.l2jmobius.gameserver.network.GameClient; @@ -57,6 +58,10 @@ public class RequestTutorialPassCmdToServer implements IClientIncomingPacket handler.useBypass(_bypass, player, null); } } - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_BYPASS, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerBypass(player, _bypass), player); + } } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index a3dbc2a59a..bb44a7b0b2 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark; import org.l2jmobius.gameserver.network.GameClient; @@ -44,6 +45,9 @@ public class RequestTutorialQuestionMark implements IClientIncomingPacket } // Notify scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPressTutorialMark(player, _number), player); + } } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 9ebe682652..f94ce7a03e 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; import org.l2jmobius.gameserver.model.events.returns.ChatFilterReturn; import org.l2jmobius.gameserver.model.item.instance.Item; @@ -195,11 +196,14 @@ public class Say2 implements IClientIncomingPacket return; } - final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); - if (filter != null) + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_CHAT, player)) { - _text = filter.getFilteredText(); - chatType = filter.getChatType(); + final ChatFilterReturn filter = EventDispatcher.getInstance().notifyEvent(new OnPlayerChat(player, _target, _text, chatType), player, ChatFilterReturn.class); + if (filter != null) + { + _text = filter.getFilteredText(); + chatType = filter.getChatType(); + } } // Say Filter implementation diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 4c1f9eec63..c8d2bb99ae 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -39,6 +39,7 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.item.EtcItem; @@ -325,7 +326,10 @@ public class UseItem implements IClientIncomingPacket } // Notify events. - EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_USE, item.getTemplate())) + { + EventDispatcher.getInstance().notifyEventAsync(new OnItemUse(player, item), item.getTemplate()); + } } if (etcItem != null) diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java index f400170476..d6039e7a43 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/ConfirmMenteeAdd.java @@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.PacketLogger; @@ -83,7 +84,11 @@ public class ConfirmMenteeAdd implements IClientIncomingPacket MentorManager.getInstance().addMentor(mentor.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_ADD, mentor)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeAdd(mentor, mentee), mentor); + } + mentor.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTEE).addString(mentee.getName())); mentor.sendPacket(new ExMentorList(mentor)); mentee.sendPacket(new SystemMessage(SystemMessageId.FROM_NOW_ON_S1_WILL_BE_YOUR_MENTOR).addString(mentor.getName())); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java index 5a4fef3472..6fa04d1a05 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/mentoring/RequestMentorCancel.java @@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.model.Mentee; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove; import org.l2jmobius.gameserver.network.GameClient; @@ -75,7 +76,10 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(player.getObjectId(), mentee.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_REMOVE, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeRemove(player, mentee), player); + } } } else if (player.isMentee()) @@ -94,7 +98,11 @@ public class RequestMentorCancel implements IClientIncomingPacket MentorManager.getInstance().deleteMentor(mentor.getObjectId(), player.getObjectId()); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_MENTEE_LEFT, player)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMenteeLeft(mentor, player), player); + } + mentor.getPlayer().sendPacket(new SystemMessage(SystemMessageId.S1_S_MENTORING_CONTRACT_IS_CANCELLED_THE_MENTOR_CANNOT_BOND_WITH_ANOTHER_MENTEE_FOR_2_DAYS).addString(_name)); } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java index 83e8fc2b86..b529d0d538 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/GameTimeTaskManager.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.taskmanager; import java.util.Calendar; import org.l2jmobius.gameserver.model.events.EventDispatcher; +import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; /** @@ -68,7 +69,11 @@ public class GameTimeTaskManager extends Thread if ((_gameHour < 6) != _isNight) { _isNight = !_isNight; - EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + + if (EventDispatcher.getInstance().hasListener(EventType.ON_DAY_NIGHT_CHANGE)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnDayNightChange(_isNight)); + } } try