Skip to content
Snippets Groups Projects
Commit 93671549 authored by Rumen Nikiforov's avatar Rumen Nikiforov
Browse files

BETA: DP-Part for [L6625]

	* Also moving ListenersTest to custom/listeners.
parent 9da905ec
No related branches found
No related tags found
No related merge requests found
......@@ -16,22 +16,30 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package ai.npc;
package custom.listeners;
import java.util.logging.Level;
import ai.npc.AbstractNpcAI;
import com.l2jserver.gameserver.model.actor.L2Attackable;
import com.l2jserver.gameserver.model.events.Containers;
import com.l2jserver.gameserver.model.events.EventType;
import com.l2jserver.gameserver.model.events.ListenerRegisterType;
import com.l2jserver.gameserver.model.events.annotations.Id;
import com.l2jserver.gameserver.model.events.annotations.NpcLevelRange;
import com.l2jserver.gameserver.model.events.annotations.Priority;
import com.l2jserver.gameserver.model.events.annotations.Range;
import com.l2jserver.gameserver.model.events.annotations.RegisterEvent;
import com.l2jserver.gameserver.model.events.annotations.RegisterType;
import com.l2jserver.gameserver.model.events.impl.character.OnCreatureKill;
import com.l2jserver.gameserver.model.events.impl.character.npc.attackable.OnAttackableAttack;
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerDlgAnswer;
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerLogin;
import com.l2jserver.gameserver.model.events.impl.item.OnItemCreate;
import com.l2jserver.gameserver.model.events.impl.sieges.castle.OnCastleSiegeStart;
import com.l2jserver.gameserver.model.events.listeners.ConsumerEventListener;
import com.l2jserver.gameserver.model.events.returns.TerminateReturn;
import com.l2jserver.gameserver.model.holders.ItemHolder;
import com.l2jserver.util.Rnd;
......@@ -51,8 +59,15 @@ public class ListenerTest extends AbstractNpcAI
{
super(ListenerTest.class.getSimpleName(), "ai/npc");
// Method preset listener registration
// An set function which is a Consumer it has one parameter and doesn't returns anything!
setAttackableAttackId(this::onAttackableAttack, ELPIES);
// Manual listener registration
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_DLG_ANSWER, (OnPlayerDlgAnswer event) ->
{
_log.log(Level.INFO, ListenerTest.class.getSimpleName() + ": " + event.getActiveChar() + " OnPlayerDlgAnswer: Answer: " + event.getAnswer() + " MessageId: " + event.getMessageId());
}, this));
}
/**
......@@ -65,9 +80,11 @@ public class ListenerTest extends AbstractNpcAI
}
/**
* This method will be invoked as soon as L2Attackable (Rabbits 20432 and 22228) are being killed by L2PcInstance (a player)
* This method will be invoked as soon as L2Attackable (Rabbits 20432 and 22228) are being killed by L2PcInstance (a player)<br>
* This listener is registered into individual npcs container.
* @param event
*/
// Annotation listener registration
@RegisterEvent(EventType.ON_CREATURE_KILL)
@RegisterType(ListenerRegisterType.NPC)
@Id(20432)
......@@ -78,7 +95,8 @@ public class ListenerTest extends AbstractNpcAI
}
/**
* This method will be invoked as soon as Siege of castle ids 1-9 starts
* This method will be invoked as soon as Siege of castle ids 1-9 starts<br>
* This listener is registered into individual castle container.
* @param event
*/
@RegisterEvent(EventType.ON_CASTLE_SIEGE_START)
......@@ -90,7 +108,8 @@ public class ListenerTest extends AbstractNpcAI
}
/**
* This method will be invoked as soon as Ancient Adena (5575) item is created on player's inventory (As new item!).
* This method will be invoked as soon as Ancient Adena (5575) item is created on player's inventory (As new item!).<br>
* This listener is registered into individual items container.
* @param event
*/
@RegisterEvent(EventType.ON_ITEM_CREATE)
......@@ -102,12 +121,15 @@ public class ListenerTest extends AbstractNpcAI
}
/**
* This method will be invoked as soon as creature from level range between 1 and 10 dies.
* Prioritized event notification <br>
* This method will be invoked as soon as creature from level range between 1 and 10 dies.<br>
* This listener is registered into individual npcs container.
* @param event
*/
@RegisterEvent(EventType.ON_CREATURE_KILL)
@RegisterType(ListenerRegisterType.NPC)
@NpcLevelRange(from = 1, to = 10)
@Priority(100)
public void OnCreatureKill(OnCreatureKill event)
{
// 70% chance to drop
......@@ -124,8 +146,41 @@ public class ListenerTest extends AbstractNpcAI
}
}
/**
* This method will be invoked as soon a a player logs into the game.<br>
* This listener is registered into global players container.
* @param event
*/
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void onPlayerLogin(OnPlayerLogin event)
{
_log.log(Level.INFO, getClass().getSimpleName() + ": Player: " + event.getActiveChar() + " has logged in!");
}
/**
* Prioritized event notification - Ensuring that this listener will be the first to receive notification.<br>
* Also this method interrupts notification to other listeners and taking over return if somehow it wasn't the first one to set.<br>
* This method will be invoked as soon a a creature dies.<br>
* This listener is registered into global players container.
* @param event
* @return termination return preventing the base code execution if needed.
*/
@RegisterEvent(EventType.ON_CREATURE_KILL)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
@Priority(Integer.MAX_VALUE)
public TerminateReturn onPlayerDeath(OnCreatureKill event)
{
if (event.getTarget().isGM())
{
_log.log(Level.INFO, getClass().getSimpleName() + ": Player: " + event.getTarget() + " was prevented from dying!");
return new TerminateReturn(true, true, true);
}
return null;
}
public static void main(String[] args)
{
new ListenerTest();
}
}
}
\ No newline at end of file
......@@ -26,7 +26,7 @@ import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.actor.tasks.player.TeleportTask;
import com.l2jserver.gameserver.model.entity.TvTEvent;
import com.l2jserver.gameserver.model.events.EventDispatcher;
import com.l2jserver.gameserver.model.events.Containers;
import com.l2jserver.gameserver.model.events.EventType;
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerLogin;
import com.l2jserver.gameserver.model.events.listeners.ConsumerEventListener;
......@@ -47,7 +47,7 @@ public class JailHandler implements IPunishmentHandler
public JailHandler()
{
// Register global listener
EventDispatcher.getInstance().addListener(new ConsumerEventListener(EventDispatcher.getInstance(), EventType.ON_PLAYER_LOGIN, (OnPlayerLogin event) -> onPlayerLogin(event), this));
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_LOGIN, (OnPlayerLogin event) -> onPlayerLogin(event), this));
}
public void onPlayerLogin(OnPlayerLogin event)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment