Addition of EventDispatcher hasListener methods.
This commit is contained in:
parent
58f30044d5
commit
fdb7fdbe3b
@ -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();
|
||||
}
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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())
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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()
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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());
|
||||
|
@ -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
|
||||
|
@ -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())
|
||||
{
|
||||
|
@ -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))
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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))))
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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<ClanMember> 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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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 <T>
|
||||
* @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 <T>
|
||||
* @param event
|
||||
* @param container
|
||||
* @param delay
|
||||
* @param callbackClass
|
||||
* @return
|
||||
*/
|
||||
public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay)
|
||||
private <T extends AbstractEventReturn> T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class<T> 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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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())
|
||||
{
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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());
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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:
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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())
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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]);
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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()));
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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())
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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()
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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());
|
||||
|
@ -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
|
||||
|
@ -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())
|
||||
{
|
||||
|
@ -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))
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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))))
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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<ClanMember> 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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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 <T>
|
||||
* @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 <T>
|
||||
* @param event
|
||||
* @param container
|
||||
* @param delay
|
||||
* @param callbackClass
|
||||
* @return
|
||||
*/
|
||||
public void notifyEventAsyncDelayed(IBaseEvent event, ListenersContainer container, long delay)
|
||||
private <T extends AbstractEventReturn> T notifyEventToSingleContainer(IBaseEvent event, ListenersContainer container, Class<T> 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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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())
|
||||
{
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
{
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user