Add LogoutListener interface - allows a class to call some code on player logout - improved version of logout listeners.

Add StartupListener interface - allows a class to call some code on server startup without adding messy code elsewhere
Add ShutdownListener interface - allows a class to call some code on server shutdown without adding messy code elsewhere
Add TickListener interface - allows a class to call some code on each tick without adding messy code elsewhere
Converted all applicable content over to using these new interfaces
This commit is contained in:
Ceikry 2022-03-31 13:52:19 +00:00 committed by Ryan
parent 3f499d1244
commit db7b9d06b2
232 changed files with 1498 additions and 3232 deletions

View file

@ -32,7 +32,7 @@ import core.plugin.Initializable;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import rs09.game.content.activity.barrows.RewardChest; import rs09.game.content.activity.barrows.RewardChest;
import rs09.game.world.GameWorld; import rs09.game.world.GameWorld;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import static api.ContentAPIKt.getWorldTicks; import static api.ContentAPIKt.getWorldTicks;
@ -371,8 +371,8 @@ public final class BarrowsActivityPlugin extends ActivityPlugin {
@Override @Override
public void configure() { public void configure() {
PluginManager.definePlugin(new TunnelEntranceDialogue()); ClassScanner.definePlugin(new TunnelEntranceDialogue());
PluginManager.definePlugin(BarrowsPuzzle.SHAPES); ClassScanner.definePlugin(BarrowsPuzzle.SHAPES);
registerRegion(14231); registerRegion(14231);
BarrowsCrypt.init(); BarrowsCrypt.init();
PULSE.stop(); PULSE.stop();

View file

@ -28,7 +28,7 @@ import core.game.world.map.zone.impl.WildernessZone;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import java.util.*; import java.util.*;
@ -170,7 +170,7 @@ public final class BountyHunterActivity extends ActivityPlugin {
break; break;
} }
} }
PluginManager.definePlugin(new ComponentPlugin() { ClassScanner.definePlugin(new ComponentPlugin() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
ComponentDefinition.put(657, this); ComponentDefinition.put(657, this);
@ -194,8 +194,8 @@ public final class BountyHunterActivity extends ActivityPlugin {
}); });
BHScoreBoard.init(); BHScoreBoard.init();
PluginManager.definePlugin(new BountyLocateSpell()); ClassScanner.definePlugin(new BountyLocateSpell());
PluginManager.definePlugin(new BHOptionHandler()); ClassScanner.definePlugin(new BHOptionHandler());
ActivityManager.register(new BountyHunterActivity(CraterType.MID_LEVEL)); ActivityManager.register(new BountyHunterActivity(CraterType.MID_LEVEL));
ActivityManager.register(new BountyHunterActivity(CraterType.HIGH_LEVEL)); ActivityManager.register(new BountyHunterActivity(CraterType.HIGH_LEVEL));
} }

View file

@ -12,7 +12,7 @@ import core.game.world.map.zone.ZoneRestriction;
import core.game.world.map.zone.impl.WildernessZone; import core.game.world.map.zone.impl.WildernessZone;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the clan wars challenge room. * Handles the clan wars challenge room.
@ -86,7 +86,7 @@ public final class ClanWarsChallengeRoom extends MapZone implements Plugin<Objec
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this); ZoneBuilder.configure(this);
PluginManager.definePlugin(new CWChallengeOption()); ClassScanner.definePlugin(new CWChallengeOption());
return this; return this;
} }

View file

@ -16,7 +16,7 @@ import core.game.world.map.Location;
import core.game.world.map.zone.ZoneBorders; import core.game.world.map.zone.ZoneBorders;
import core.game.world.map.zone.ZoneBuilder; import core.game.world.map.zone.ZoneBuilder;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
/** /**
@ -141,8 +141,8 @@ public final class DuelArenaActivity extends ActivityPlugin {
} }
parseScoreboard(); parseScoreboard();
register(new ZoneBorders(3325, 3201, 3396, 3280)); register(new ZoneBorders(3325, 3201, 3396, 3280));
PluginManager.definePlugin(new DuelArea.ForfeitTrapdoorPlugin()); ClassScanner.definePlugin(new DuelArea.ForfeitTrapdoorPlugin());
PluginManager.definePlugins(new DuelSession(null, null, false), new DuelComponentPlugin(), new ChallengeOptionPlugin()); ClassScanner.definePlugins(new DuelSession(null, null, false), new DuelComponentPlugin(), new ChallengeOptionPlugin());
} }
/** /**

View file

@ -8,7 +8,7 @@ import core.game.node.entity.player.Player;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.game.world.map.zone.ZoneBorders; import core.game.world.map.zone.ZoneBorders;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the fist of guthix activity. * Represents the fist of guthix activity.
@ -50,9 +50,9 @@ public class FOGActivityPlugin extends ActivityPlugin {
@Override @Override
public void configure() { public void configure() {
PluginManager.definePlugin(new FOGLobbyZone()); ClassScanner.definePlugin(new FOGLobbyZone());
PluginManager.definePlugin(new FOGWaitingZone()); ClassScanner.definePlugin(new FOGWaitingZone());
PluginManager.definePlugin(new OptionHandler() { ClassScanner.definePlugin(new OptionHandler() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
SceneryDefinition.forId(30204).getHandlers().put("option:enter", this); SceneryDefinition.forId(30204).getHandlers().put("option:enter", this);

View file

@ -15,7 +15,7 @@ import core.game.node.scenery.Scenery;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the hero guild. * Represents the hero guild.
@ -28,7 +28,7 @@ public final class HeroGuildPlugin extends OptionHandler {
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
SceneryDefinition.forId(2624).getHandlers().put("option:open", this); SceneryDefinition.forId(2624).getHandlers().put("option:open", this);
SceneryDefinition.forId(2625).getHandlers().put("option:open", this); SceneryDefinition.forId(2625).getHandlers().put("option:open", this);
PluginManager.definePlugin(new JewelleryRechargePlugin()); ClassScanner.definePlugin(new JewelleryRechargePlugin());
return this; return this;
} }

View file

@ -9,10 +9,9 @@ import core.game.component.ComponentPlugin;
import core.game.container.impl.EquipmentContainer; import core.game.container.impl.EquipmentContainer;
import core.plugin.Initializable; import core.plugin.Initializable;
import org.rs09.consts.Items; import org.rs09.consts.Items;
import core.game.node.entity.Entity;
import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.npc.AbstractNPC;
import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.entity.player.link.diary.DiaryType;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import core.game.content.dialogue.DialoguePlugin; import core.game.content.dialogue.DialoguePlugin;
import core.game.content.dialogue.FacialExpression; import core.game.content.dialogue.FacialExpression;
@ -58,7 +57,7 @@ public final class RangingGuildPlugin extends OptionHandler {
new BowArrowSalesman().init(); new BowArrowSalesman().init();
new WarningInterface().newInstance(arg); new WarningInterface().newInstance(arg);
new CompetitionJudge().init(); new CompetitionJudge().init();
PluginManager.definePlugin(new TowerArcher()); ClassScanner.definePlugin(new TowerArcher());
return this; return this;
} }

View file

@ -20,7 +20,7 @@ import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.game.content.global.action.PickupHandler; import rs09.game.content.global.action.PickupHandler;
import rs09.game.world.GameWorld; import rs09.game.world.GameWorld;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the mage arena activity. * Handles the mage arena activity.
@ -41,12 +41,12 @@ public final class MageArenaPlugin extends OptionHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(MAGE_ARENA); ClassScanner.definePlugin(MAGE_ARENA);
PluginManager.definePlugin(new KolodionNPC()); ClassScanner.definePlugin(new KolodionNPC());
PluginManager.definePlugin(new MageArenaNPC()); ClassScanner.definePlugin(new MageArenaNPC());
PluginManager.definePlugin(new LundailDialogue()); ClassScanner.definePlugin(new LundailDialogue());
PluginManager.definePlugin(new KolodionDialogue()); ClassScanner.definePlugin(new KolodionDialogue());
PluginManager.definePlugin(new ChamberGuardianDialogue()); ClassScanner.definePlugin(new ChamberGuardianDialogue());
ItemDefinition.forId(2412).getHandlers().put("option:drop", this); ItemDefinition.forId(2412).getHandlers().put("option:drop", this);
ItemDefinition.forId(2413).getHandlers().put("option:drop", this); ItemDefinition.forId(2413).getHandlers().put("option:drop", this);
ItemDefinition.forId(2414).getHandlers().put("option:drop", this); ItemDefinition.forId(2414).getHandlers().put("option:drop", this);

View file

@ -18,7 +18,7 @@ import core.game.world.update.flag.context.Animation;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.game.content.activity.mta.EnchantSpell; import rs09.game.content.activity.mta.EnchantSpell;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the mage training area interactions. * Handles the mage training area interactions.
@ -52,7 +52,7 @@ public class MageTrainingArenaPlugin extends OptionHandler {
ItemDefinition.forId(TelekineticZone.STATUE).getHandlers().put("option:observe", this); ItemDefinition.forId(TelekineticZone.STATUE).getHandlers().put("option:observe", this);
ItemDefinition.forId(TelekineticZone.STATUE).getHandlers().put("option:reset", this); ItemDefinition.forId(TelekineticZone.STATUE).getHandlers().put("option:reset", this);
NPCDefinition.forId(3102).getHandlers().put("option:talk-to", this); NPCDefinition.forId(3102).getHandlers().put("option:talk-to", this);
PluginManager.definePlugins(new CharmedWarriorDialogue(), new EntranceGuardianDialogue(), new RewardsGuardianDialogue(), new ProgressHatDialogue(), new EnchantmentGuardianDialogue(), new EnchantSpell(), new GraveyardGuardianDialogue(), new AlchemyGuardianDialogue(), new TelekineticGrabSpell(), new TelekineticGuardianDialogue(), new MazeGuardianDialogue()); ClassScanner.definePlugins(new CharmedWarriorDialogue(), new EntranceGuardianDialogue(), new RewardsGuardianDialogue(), new ProgressHatDialogue(), new EnchantmentGuardianDialogue(), new EnchantSpell(), new GraveyardGuardianDialogue(), new AlchemyGuardianDialogue(), new TelekineticGrabSpell(), new TelekineticGuardianDialogue(), new MazeGuardianDialogue());
return this; return this;
} }

View file

@ -27,7 +27,7 @@ import core.game.world.map.Location;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the party room. * Handles the party room.
@ -72,8 +72,8 @@ public final class PartyRoomPlugin extends OptionHandler {
SceneryDefinition.forId(OPEN_CHEST).getHandlers().put("option:deposit", this); SceneryDefinition.forId(OPEN_CHEST).getHandlers().put("option:deposit", this);
SceneryDefinition.forId(OPEN_CHEST).getHandlers().put("option:shut", this); SceneryDefinition.forId(OPEN_CHEST).getHandlers().put("option:shut", this);
SceneryDefinition.forId(LEVER).getHandlers().put("option:pull", this); SceneryDefinition.forId(LEVER).getHandlers().put("option:pull", this);
PluginManager.definePlugin(new DepositInterfaceHandler()); ClassScanner.definePlugin(new DepositInterfaceHandler());
PluginManager.definePlugin(new BalloonManager()); ClassScanner.definePlugin(new BalloonManager());
return this; return this;
} }

View file

@ -18,7 +18,6 @@ import core.game.node.entity.state.EntityState;
import core.game.node.item.GroundItemManager; import core.game.node.item.GroundItemManager;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.system.task.Pulse; import core.game.system.task.Pulse;
import rs09.game.ai.AIPlayer;
import rs09.game.world.GameWorld; import rs09.game.world.GameWorld;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.game.world.map.build.DynamicRegion; import core.game.world.map.build.DynamicRegion;
@ -26,7 +25,7 @@ import core.game.world.map.zone.RegionZone;
import core.game.world.map.zone.ZoneBuilder; import core.game.world.map.zone.ZoneBuilder;
import core.game.world.map.zone.ZoneRestriction; import core.game.world.map.zone.ZoneRestriction;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import core.tools.StringUtils; import core.tools.StringUtils;
import core.game.content.activity.pestcontrol.monsters.*; import core.game.content.activity.pestcontrol.monsters.*;
@ -220,18 +219,18 @@ public final class PestControlActivityPlugin extends ActivityPlugin {
ActivityManager.register(activities[1]); ActivityManager.register(activities[1]);
ActivityManager.register(activities[2]); ActivityManager.register(activities[2]);
// Load abstract NPC plugins // Load abstract NPC plugins
PluginManager.definePlugin(new PCPortalNPC()); ClassScanner.definePlugin(new PCPortalNPC());
PluginManager.definePlugin(new PCSquireNPC()); ClassScanner.definePlugin(new PCSquireNPC());
PluginManager.definePlugin(new PCTorcherNPC()); ClassScanner.definePlugin(new PCTorcherNPC());
PluginManager.definePlugin(new PCDefilerNPC()); ClassScanner.definePlugin(new PCDefilerNPC());
PluginManager.definePlugin(new PCRavagerNPC()); ClassScanner.definePlugin(new PCRavagerNPC());
PluginManager.definePlugin(new PCShifterNPC()); ClassScanner.definePlugin(new PCShifterNPC());
PluginManager.definePlugin(new PCSplatterNPC()); ClassScanner.definePlugin(new PCSplatterNPC());
PluginManager.definePlugin(new PCSpinnerNPC()); ClassScanner.definePlugin(new PCSpinnerNPC());
PluginManager.definePlugin(new PCBrawlerNPC()); ClassScanner.definePlugin(new PCBrawlerNPC());
PluginManager.definePlugin(new PCObjectHandler()); ClassScanner.definePlugin(new PCObjectHandler());
PluginManager.definePlugin(new PestControlSquire()); ClassScanner.definePlugin(new PestControlSquire());
PluginManager.definePlugin(new VoidSealPlugin()); ClassScanner.definePlugin(new VoidSealPlugin());
ZoneBuilder.configure(new PCLanderZone(activities)); ZoneBuilder.configure(new PCLanderZone(activities));
ZoneBuilder.configure(new PCIslandZone()); ZoneBuilder.configure(new PCIslandZone());
} }

View file

@ -6,7 +6,7 @@ import core.game.node.Node;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the option plugin used to handle the pc island related nodes. * Represents the option plugin used to handle the pc island related nodes.
@ -20,7 +20,7 @@ public final class PCIslandOptionPlugin extends OptionHandler {
for (int id : new int[] { 3786, 3788, 3789, 5956 }) { for (int id : new int[] { 3786, 3788, 3789, 5956 }) {
NPCDefinition.forId(id).getHandlers().put("option:exchange", this); NPCDefinition.forId(id).getHandlers().put("option:exchange", this);
} }
PluginManager.definePlugin(new PCRewardInterface()); ClassScanner.definePlugin(new PCRewardInterface());
return this; return this;
} }

View file

@ -9,7 +9,7 @@ import core.game.node.entity.skill.hunter.bnet.ImplingNode;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.game.content.activity.puropuro.ElnockInquisitorDialogue.ElnockExchangeInterfaceHandler.ElnockExchange; import core.game.content.activity.puropuro.ElnockInquisitorDialogue.ElnockExchangeInterfaceHandler.ElnockExchange;
@ -188,7 +188,7 @@ public final class ElnockInquisitorDialogue extends DialoguePlugin {
@Override @Override
public void init() { public void init() {
super.init(); super.init();
PluginManager.definePlugin(new ElnockExchangeInterfaceHandler()); ClassScanner.definePlugin(new ElnockExchangeInterfaceHandler());
} }
@Override @Override

View file

@ -32,7 +32,7 @@ import core.net.packet.PacketRepository;
import core.net.packet.context.MinimapStateContext; import core.net.packet.context.MinimapStateContext;
import core.net.packet.out.MinimapState; import core.net.packet.out.MinimapState;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
/** /**
@ -74,11 +74,11 @@ public final class PuroPuroPlugin extends MapZone implements Plugin<Object> {
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PULSE.stop(); PULSE.stop();
ZoneBuilder.configure(this); ZoneBuilder.configure(this);
PluginManager.definePlugin(new FairyAerykaDialogue()); ClassScanner.definePlugin(new FairyAerykaDialogue());
PluginManager.definePlugin(new WanderingImplingDialogue()); ClassScanner.definePlugin(new WanderingImplingDialogue());
PluginManager.definePlugin(new ElnockInquisitorDialogue()); ClassScanner.definePlugin(new ElnockInquisitorDialogue());
PluginManager.definePlugin(new PuroOptionHandler()); ClassScanner.definePlugin(new PuroOptionHandler());
PluginManager.definePlugin(new ImpDefenderNPC()); ClassScanner.definePlugin(new ImpDefenderNPC());
return this; return this;
} }

View file

@ -11,8 +11,6 @@ import core.game.node.entity.skill.Skills;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.node.scenery.Scenery; import core.game.node.scenery.Scenery;
import core.game.node.scenery.SceneryBuilder; import core.game.node.scenery.SceneryBuilder;
import core.game.system.task.LocationLogoutTask;
import core.game.system.task.LogoutTask;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.game.world.map.zone.MapZone; import core.game.world.map.zone.MapZone;
import core.game.world.map.zone.ZoneBorders; import core.game.world.map.zone.ZoneBorders;
@ -21,6 +19,7 @@ import core.game.world.update.flag.context.Animation;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import kotlin.Unit;
import rs09.game.Varp; import rs09.game.Varp;
import rs09.game.content.activity.pyramidplunder.PlunderSession; import rs09.game.content.activity.pyramidplunder.PlunderSession;
@ -112,12 +111,21 @@ public class PlunderZones implements Plugin<Object> {
if(session != null){ if(session != null){
session.resetVars(); session.resetVars();
} }
e.asPlayer().addExtension(LogoutTask.class, new LocationLogoutTask(12, Location.create(3288, 2801, 0))); e.asPlayer().logoutListeners.put("plunder-logout", player -> {
player.setLocation(Location.create(3288, 2801, 0));
return Unit.INSTANCE;
});
updateRoomVarp(e.asPlayer()); updateRoomVarp(e.asPlayer());
} }
return true; return true;
} }
@Override
public boolean leave(Entity e, boolean logout) {
e.asPlayer().logoutListeners.remove("plunder-logout");
return super.leave(e, logout);
}
public void updateRoomVarp(Player player){ public void updateRoomVarp(Player player){
Varp varp = player.varpManager.get(822); Varp varp = player.varpManager.get(822);
varp.setVarbit(0,room.reqLevel); varp.setVarbit(0,room.reqLevel);

View file

@ -7,7 +7,7 @@ import core.game.node.entity.player.Player;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.game.content.activity.pyramidplunder.PlunderSession; import rs09.game.content.activity.pyramidplunder.PlunderSession;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the Pyramid plunder activity. * Handles the Pyramid plunder activity.
@ -64,8 +64,8 @@ public final class PyramidPlunderActivity extends ActivityPlugin {
@Override @Override
public void register() { public void register() {
PluginManager.definePlugin(new GuardMummyDialogue()); ClassScanner.definePlugin(new GuardMummyDialogue());
PluginManager.definePlugin(new PyramidOptionHandler()); ClassScanner.definePlugin(new PyramidOptionHandler());
mummy = NPC.create(4476, Location.create(1968, 4427, 2)); mummy = NPC.create(4476, Location.create(1968, 4427, 2));
mummy.init(); mummy.init();
registerRegion(7749); registerRegion(7749);

View file

@ -13,7 +13,6 @@ import core.game.interaction.OptionHandler;
import core.game.node.Node; import core.game.node.Node;
import core.game.node.entity.Entity; import core.game.node.entity.Entity;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.diary.DiaryType;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.node.scenery.Scenery; import core.game.node.scenery.Scenery;
import core.game.system.task.Pulse; import core.game.system.task.Pulse;
@ -24,7 +23,7 @@ import core.game.world.map.zone.ZoneBorders;
import core.game.world.map.zone.ZoneBuilder; import core.game.world.map.zone.ZoneBuilder;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.tools.RandomFunction; import core.tools.RandomFunction;
@ -50,13 +49,13 @@ public final class StrongHoldSecurityPlugin extends MapZone implements Plugin<Ob
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this); ZoneBuilder.configure(this);
PluginManager.definePlugin(new ExplorerDialogue()); ClassScanner.definePlugin(new ExplorerDialogue());
PluginManager.definePlugin(new StrongholdDialogue()); ClassScanner.definePlugin(new StrongholdDialogue());
PluginManager.definePlugin(new GrainOfPlentyDialogue()); ClassScanner.definePlugin(new GrainOfPlentyDialogue());
PluginManager.definePlugin(new GiftOfPeaceDialogue()); ClassScanner.definePlugin(new GiftOfPeaceDialogue());
PluginManager.definePlugin(new CradleOfLifeDialogue()); ClassScanner.definePlugin(new CradleOfLifeDialogue());
PluginManager.definePlugin(new BoxOfHealthDialogue()); ClassScanner.definePlugin(new BoxOfHealthDialogue());
PluginManager.definePlugin(new OptionHandler() { ClassScanner.definePlugin(new OptionHandler() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
SceneryDefinition.forId(16154).getHandlers().put("option:climb-down", this); SceneryDefinition.forId(16154).getHandlers().put("option:climb-down", this);

View file

@ -12,7 +12,7 @@ import core.net.packet.context.CameraContext.CameraType;
import core.net.packet.out.CameraViewPacket; import core.net.packet.out.CameraViewPacket;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* @author Tyler Telis * @author Tyler Telis
@ -47,10 +47,10 @@ public class StrongHoldOfPlayerSafetyPlugin implements Plugin<Object> {
@Override @Override
public Plugin<Object> newInstance(Object object) throws Throwable { public Plugin<Object> newInstance(Object object) throws Throwable {
PluginManager.definePlugin(new PSOptionHandler()); ClassScanner.definePlugin(new PSOptionHandler());
PluginManager.definePlugin(new GuardDialoguePlugin()); ClassScanner.definePlugin(new GuardDialoguePlugin());
PluginManager.definePlugin(new PlayerSafetyTest()); ClassScanner.definePlugin(new PlayerSafetyTest());
PluginManager.definePlugin(new ProfessorHenryDialogue()); ClassScanner.definePlugin(new ProfessorHenryDialogue());
return this; return this;
} }

View file

@ -14,7 +14,7 @@ import core.game.node.scenery.Scenery;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the warrior guild options. * Handles the warrior guild options.
@ -35,7 +35,7 @@ public final class WarriorsGuild extends OptionHandler {
SceneryDefinition.forId(1530).getHandlers().put("option:open", this); SceneryDefinition.forId(1530).getHandlers().put("option:open", this);
NPCDefinition.forId(4287).getHandlers().put("option:claim-shield", this); NPCDefinition.forId(4287).getHandlers().put("option:claim-shield", this);
NPCDefinition.setOptionHandler("claim-tokens", this); NPCDefinition.setOptionHandler("claim-tokens", this);
PluginManager.definePlugin(new ClaimTokenDialogue()); ClassScanner.definePlugin(new ClaimTokenDialogue());
return this; return this;
} }

View file

@ -119,6 +119,7 @@ public final class AnimatedArmour extends NPC {
int amount = set.getTokenAmount(); int amount = set.getTokenAmount();
GroundItemManager.create(new Item(8851, amount), location, player); GroundItemManager.create(new Item(8851, amount), location, player);
} }
player.logoutListeners.remove("animation-room");
player.removeAttribute("animated_set"); player.removeAttribute("animated_set");
} }
} }

View file

@ -8,9 +8,8 @@ import core.game.node.entity.npc.NPC;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.node.scenery.Scenery; import core.game.node.scenery.Scenery;
import core.game.system.task.ItemLogoutTask;
import core.game.system.task.LogoutTask;
import core.game.system.task.Pulse; import core.game.system.task.Pulse;
import kotlin.Unit;
import rs09.game.world.GameWorld; import rs09.game.world.GameWorld;
import core.game.world.map.Direction; import core.game.world.map.Direction;
import core.game.world.map.zone.MapZone; import core.game.world.map.zone.MapZone;
@ -112,7 +111,7 @@ public final class AnimationRoom extends MapZone implements Plugin<Object> {
*/ */
private void animateArmour(final Player player, final Scenery object, final ArmourSet set) { private void animateArmour(final Player player, final Scenery object, final ArmourSet set) {
if (!player.getInventory().containItems(set.getPieces())) { if (!player.getInventory().containItems(set.getPieces())) {
player.getDialogueInterpreter().sendDialogue("You need a plate body, playe legs and full helm of the same type to", "activate the armour animator."); player.getDialogueInterpreter().sendDialogue("You need a plate body, plate legs and full helm of the same type to", "activate the armour animator.");
return; return;
} }
if (player.getAttribute("animated_set") != null) { if (player.getAttribute("animated_set") != null) {
@ -134,7 +133,10 @@ public final class AnimationRoom extends MapZone implements Plugin<Object> {
} }
} }
player.getAudioManager().send(1909); player.getAudioManager().send(1909);
player.addExtension(LogoutTask.class, new ItemLogoutTask(5, new Item(set.getPieces()[0]), new Item(set.getPieces()[1]), new Item(set.getPieces()[2]))); player.logoutListeners.put("animation-room", player1 -> {
for(int item : set.getPieces()) player1.getInventory().add(new Item(item));
return Unit.INSTANCE;
});
player.getDialogueInterpreter().sendPlainMessage(true, "The animator hums, something appears to be working.", "You stand back..."); player.getDialogueInterpreter().sendPlainMessage(true, "The animator hums, something appears to be working.", "You stand back...");
spawn = true; spawn = true;
super.setDelay(4); super.setDelay(4);
@ -146,7 +148,6 @@ public final class AnimationRoom extends MapZone implements Plugin<Object> {
ForceMovement.run(player, player.getLocation().transform(0, 1, 0)).setDirection(Direction.SOUTH); ForceMovement.run(player, player.getLocation().transform(0, 1, 0)).setDirection(Direction.SOUTH);
return false; return false;
} }
player.removeExtension(LogoutTask.class);
player.getInterfaceManager().closeChatbox(); player.getInterfaceManager().closeChatbox();
NPC npc = new AnimatedArmour(player, object.getLocation(), set); NPC npc = new AnimatedArmour(player, object.getLocation(), set);
player.setAttribute("animated_set", npc); player.setAttribute("animated_set", npc);

View file

@ -23,7 +23,7 @@ import core.game.world.update.flag.context.Animation;
import core.game.world.update.flag.context.Graphics; import core.game.world.update.flag.context.Graphics;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
/** /**
@ -86,7 +86,7 @@ public final class BarrelRoom extends MapZone implements Plugin<Object> {
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this); ZoneBuilder.configure(this);
pulse.stop(); pulse.stop();
PluginManager.definePlugin(new OptionHandler() { ClassScanner.definePlugin(new OptionHandler() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
SceneryDefinition.forId(15668).getHandlers().put("option:pick-up", this); SceneryDefinition.forId(15668).getHandlers().put("option:pick-up", this);

View file

@ -30,7 +30,7 @@ import core.game.world.map.zone.ZoneBorders;
import core.game.world.map.zone.ZoneBuilder; import core.game.world.map.zone.ZoneBuilder;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.tools.RandomFunction; import core.tools.RandomFunction;
@ -164,7 +164,7 @@ public final class CatapultRoom extends MapZone implements Plugin<Object> {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this); ZoneBuilder.configure(this);
PluginManager.definePlugin(new OptionHandler() { ClassScanner.definePlugin(new OptionHandler() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
ItemDefinition.forId(SHIELD_ID).getHandlers().put("option:wield", this); ItemDefinition.forId(SHIELD_ID).getHandlers().put("option:wield", this);
@ -195,7 +195,7 @@ public final class CatapultRoom extends MapZone implements Plugin<Object> {
return true; return true;
} }
}); });
PluginManager.definePlugin(new ComponentPlugin() { ClassScanner.definePlugin(new ComponentPlugin() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
ComponentDefinition.put(411, this); ComponentDefinition.put(411, this);

View file

@ -28,7 +28,7 @@ import core.game.world.map.zone.ZoneBorders;
import core.game.world.map.zone.ZoneBuilder; import core.game.world.map.zone.ZoneBuilder;
import core.game.world.map.zone.ZoneRestriction; import core.game.world.map.zone.ZoneRestriction;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
/** /**
@ -130,8 +130,8 @@ public final class CyclopesRoom extends MapZone implements Plugin<Object> {
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this); ZoneBuilder.configure(this);
PULSE.stop(); PULSE.stop();
PluginManager.definePlugin(new KamfreenaDial()); ClassScanner.definePlugin(new KamfreenaDial());
PluginManager.definePlugin(new OptionHandler() { ClassScanner.definePlugin(new OptionHandler() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {

View file

@ -22,7 +22,7 @@ import rs09.game.world.GameWorld;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
/** /**
@ -33,7 +33,7 @@ import core.tools.RandomFunction;
public final class ShotPutRoom extends DialoguePlugin { public final class ShotPutRoom extends DialoguePlugin {
static { static {
PluginManager.definePlugin(new OptionHandler() { ClassScanner.definePlugin(new OptionHandler() {
@Override @Override
public boolean handle(final Player player, Node node, String option) { public boolean handle(final Player player, Node node, String option) {

View file

@ -35,7 +35,7 @@ import core.net.packet.context.CameraContext;
import core.net.packet.context.CameraContext.CameraType; import core.net.packet.context.CameraContext.CameraType;
import core.net.packet.out.CameraViewPacket; import core.net.packet.out.CameraViewPacket;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the draynor bank robbery cutscene plugin. * Represents the draynor bank robbery cutscene plugin.
@ -228,7 +228,7 @@ public final class DBRCutscenePlugin extends CutscenePlugin {
} catch (Throwable e) { } catch (Throwable e) {
e.printStackTrace(); e.printStackTrace();
} }
PluginManager.definePlugin(new BluePhatItem()); ClassScanner.definePlugin(new BluePhatItem());
} }
@Override @Override

View file

@ -14,7 +14,7 @@ import core.net.packet.context.CameraContext;
import core.net.packet.context.CameraContext.CameraType; import core.net.packet.context.CameraContext.CameraType;
import core.net.packet.out.CameraViewPacket; import core.net.packet.out.CameraViewPacket;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the romeo and juliet cutscene plugin. * Represents the romeo and juliet cutscene plugin.
@ -35,7 +35,7 @@ public final class JulietCutscenePlugin extends CutscenePlugin {
*/ */
public JulietCutscenePlugin() { public JulietCutscenePlugin() {
this(null); this(null);
PluginManager.definePlugin(new JulietDialogue()); ClassScanner.definePlugin(new JulietDialogue());
} }
/** /**

View file

@ -8,7 +8,7 @@ import core.game.node.entity.npc.NPC;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the jiminua dialogue plugin. * Represents the jiminua dialogue plugin.
@ -38,7 +38,7 @@ public final class JiminuaDialogue extends DialoguePlugin {
@Override @Override
public DialoguePlugin newInstance(Player player) { public DialoguePlugin newInstance(Player player) {
PluginManager.definePlugin(new JiminuaUnnoteHandler()); ClassScanner.definePlugin(new JiminuaUnnoteHandler());
return new JiminuaDialogue(player); return new JiminuaDialogue(player);
} }

View file

@ -9,7 +9,7 @@ import core.game.node.entity.player.Player;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the dialogue used for martin thwait. * Represents the dialogue used for martin thwait.
@ -161,7 +161,7 @@ public final class MartinThwaitDialogue extends DialoguePlugin {
@Override @Override
public void init() { public void init() {
PluginManager.definePlugin(new OptionHandler() { ClassScanner.definePlugin(new OptionHandler() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {

View file

@ -9,7 +9,7 @@ import core.game.node.item.Item;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
/** /**
@ -67,7 +67,7 @@ public class RomilyWeaklaxDialogue extends DialoguePlugin {
@Override @Override
public void init() { public void init() {
super.init(); super.init();
PluginManager.definePlugin(new RomilyWildPieHandler()); ClassScanner.definePlugin(new RomilyWildPieHandler());
} }
@Override @Override

View file

@ -17,7 +17,7 @@ import rs09.game.world.GameWorld;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import org.rs09.consts.Items; import org.rs09.consts.Items;
import static rs09.tools.stringtools.GlobalsKt.colorize; import static rs09.tools.stringtools.GlobalsKt.colorize;
@ -65,7 +65,7 @@ public final class RugMerchantDialogue extends DialoguePlugin {
@Override @Override
public void init() { public void init() {
super.init(); super.init();
PluginManager.definePlugin(new RugMerchantPlugin()); ClassScanner.definePlugin(new RugMerchantPlugin());
} }
/** /**

View file

@ -1,6 +1,5 @@
package core.game.content.global.action; package core.game.content.global.action;
import api.ContentAPIKt;
import core.game.node.entity.Entity; import core.game.node.entity.Entity;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.audio.Audio; import core.game.node.entity.player.link.audio.Audio;
@ -8,13 +7,12 @@ import core.game.node.entity.player.link.diary.DiaryType;
import core.game.node.scenery.Constructed; import core.game.node.scenery.Constructed;
import core.game.node.scenery.Scenery; import core.game.node.scenery.Scenery;
import core.game.node.scenery.SceneryBuilder; import core.game.node.scenery.SceneryBuilder;
import core.game.system.task.LocationLogoutTask;
import core.game.system.task.LogoutTask;
import core.game.system.task.Pulse; import core.game.system.task.Pulse;
import core.game.world.map.Direction; import core.game.world.map.Direction;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.game.world.map.RegionManager; import core.game.world.map.RegionManager;
import core.game.world.map.path.Pathfinder; import core.game.world.map.path.Pathfinder;
import kotlin.Unit;
import rs09.game.system.config.DoorConfigLoader; import rs09.game.system.config.DoorConfigLoader;
import rs09.game.world.GameWorld; import rs09.game.world.GameWorld;
@ -98,9 +96,12 @@ public final class DoorActionHandler {
final Scenery second = (object.getId() == 3) ? null : getSecondDoor(object, entity); final Scenery second = (object.getId() == 3) ? null : getSecondDoor(object, entity);
entity.lock(4); entity.lock(4);
final Location loc = entity.getLocation(); final Location loc = entity.getLocation();
entity.addExtension(LogoutTask.class, new LocationLogoutTask(4, loc));
if (entity instanceof Player) { if (entity instanceof Player) {
((Player) entity).getAudioManager().send(new Audio(3419)); ((Player) entity).getAudioManager().send(new Audio(3419));
entity.asPlayer().logoutListeners.put("autowalk", player -> {
player.setLocation(loc);
return Unit.INSTANCE;
});
} }
GameWorld.getPulser().submit(new Pulse(1) { GameWorld.getPulser().submit(new Pulse(1) {
boolean opened = false; boolean opened = false;
@ -134,6 +135,8 @@ public final class DoorActionHandler {
if (object.getId() == 2406 && player.getLocation().withinDistance(Location.create(3202,3169,0))) { if (object.getId() == 2406 && player.getLocation().withinDistance(Location.create(3202,3169,0))) {
player.getAchievementDiaryManager().finishTask(player, DiaryType.LUMBRIDGE, 1, 6); player.getAchievementDiaryManager().finishTask(player, DiaryType.LUMBRIDGE, 1, 6);
} }
entity.asPlayer().logoutListeners.remove("autowalk");
} }
// Reset door to inactive // Reset door to inactive
@ -379,7 +382,13 @@ public final class DoorActionHandler {
} }
entity.lock(4); entity.lock(4);
final Location loc = entity.getLocation(); final Location loc = entity.getLocation();
entity.addExtension(LogoutTask.class, new LocationLogoutTask(4, loc)); if(entity instanceof Player)
{
entity.asPlayer().logoutListeners.put("autowalk", player -> {
player.setLocation(loc);
return Unit.INSTANCE;
});
}
object.setCharge(IN_USE_CHARGE); object.setCharge(IN_USE_CHARGE);
second.setCharge(IN_USE_CHARGE); second.setCharge(IN_USE_CHARGE);
GameWorld.getPulser().submit(new Pulse(1) { GameWorld.getPulser().submit(new Pulse(1) {
@ -395,6 +404,10 @@ public final class DoorActionHandler {
opened = true; opened = true;
return false; return false;
} }
if(entity instanceof Player)
{
entity.asPlayer().logoutListeners.remove("autowalk");
}
object.setCharge(1000); object.setCharge(1000);
if (second != null) { if (second != null) {
second.setCharge(1000); second.setCharge(1000);

View file

@ -8,7 +8,7 @@ import core.game.interaction.OptionHandler;
import core.game.node.Node; import core.game.node.Node;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.plugin.PluginManifest; import core.plugin.PluginManifest;
@PluginManifest(name="ShootingStars") @PluginManifest(name="ShootingStars")
@ -24,7 +24,7 @@ public class StarChartPlugin extends ComponentPlugin {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new StarChartOptions()); ClassScanner.definePlugin(new StarChartOptions());
ComponentDefinition.forId(iface.getId()).setPlugin(this); ComponentDefinition.forId(iface.getId()).setPlugin(this);
return this; return this;
} }

View file

@ -40,7 +40,7 @@ import rs09.game.world.repository.Repository;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.game.world.update.flag.context.Graphics; import core.game.world.update.flag.context.Graphics;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
/** /**
@ -101,7 +101,7 @@ public class ChristmasEvent extends HolidayEvent {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
if (isActive()) { if (isActive()) {
PluginManager.definePlugins(new ChristmasEventOptionPlugin(), new SnowmanItemHandler(), new SnowImpDialogue(), new SnowmanHatComponentPlugin(), new QueenOfSnowDialogue(), new SnowballItemPlugin(), new SnowmanNPC(), new PeltOptionHandler()); ClassScanner.definePlugins(new ChristmasEventOptionPlugin(), new SnowmanItemHandler(), new SnowImpDialogue(), new SnowmanHatComponentPlugin(), new QueenOfSnowDialogue(), new SnowballItemPlugin(), new SnowmanNPC(), new PeltOptionHandler());
} }
return super.newInstance(arg); return super.newInstance(arg);
} }
@ -417,7 +417,7 @@ public class ChristmasEvent extends HolidayEvent {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
addHandler(28295, OBJECT_TYPE, this); addHandler(28295, OBJECT_TYPE, this);
PluginManager.definePlugin(new SnowmanDialogue()); ClassScanner.definePlugin(new SnowmanDialogue());
return this; return this;
} }

View file

@ -23,7 +23,7 @@ import core.game.world.map.Location;
import rs09.game.world.repository.Repository; import rs09.game.world.repository.Repository;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.tools.RandomFunction; import core.tools.RandomFunction;
@ -75,7 +75,7 @@ public class BasketofEggsEvent extends HolidayEvent {
*/ */
public BasketofEggsEvent() { public BasketofEggsEvent() {
super("Basket of Eggs", HolidayType.EASTER, 1086, 16, 2); super("Basket of Eggs", HolidayType.EASTER, 1086, 16, 2);
PluginManager.definePlugins(new BasketofEggsPlugin(), new EasterBunnyDialogue(), new RubberchickenPlugin(), new ChocolateEggPlugin(), new EasterItemPlugin()); ClassScanner.definePlugins(new BasketofEggsPlugin(), new EasterBunnyDialogue(), new RubberchickenPlugin(), new ChocolateEggPlugin(), new EasterItemPlugin());
} }
@Override @Override

View file

@ -7,7 +7,7 @@ import core.game.node.item.GroundItemManager;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the ernest the chicken quest. * Represents the ernest the chicken quest.
@ -45,7 +45,7 @@ public final class ErnestTheChicken extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugins(new ErnestNPC(), new ErnestChickenNPC()); ClassScanner.definePlugins(new ErnestNPC(), new ErnestChickenNPC());
return this; return this;
} }

View file

@ -4,7 +4,7 @@ import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest; import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the black knights fortress quest. * Represents the black knights fortress quest.
@ -28,7 +28,7 @@ public final class BlackKnightsFortress extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugins(new BKCabbagePlugin(), new BKFortressPlugin(), new SirAmikVarzeDialogue()); ClassScanner.definePlugins(new BKCabbagePlugin(), new BKFortressPlugin(), new SirAmikVarzeDialogue());
return this; return this;
} }

View file

@ -11,7 +11,7 @@ import core.game.node.entity.npc.NPC;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest; import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item; import core.game.node.item.Item;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the demon slayer quest. * Represents the demon slayer quest.
@ -55,7 +55,7 @@ public class DemonSlayer extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugins(new DemonSlayerPlugin(), new DSlayerDrainPlugin(), new DemonSlayerCutscene(), new WallyCutscenePlugin(), new GypsyArisDialogue(), new SirPyrsinDialogue(), new TraibornDialogue(), new CaptainRovinDialogue()); ClassScanner.definePlugins(new DemonSlayerPlugin(), new DSlayerDrainPlugin(), new DemonSlayerCutscene(), new WallyCutscenePlugin(), new GypsyArisDialogue(), new SirPyrsinDialogue(), new TraibornDialogue(), new CaptainRovinDialogue());
return this; return this;
} }

View file

@ -15,7 +15,7 @@ import core.plugin.Initializable;
import rs09.game.content.dialogue.region.lumbridge.DukeHoracioDialogue; import rs09.game.content.dialogue.region.lumbridge.DukeHoracioDialogue;
import rs09.game.content.quest.free.dragonslayer.NedDialogue; import rs09.game.content.quest.free.dragonslayer.NedDialogue;
import rs09.game.world.GameWorld; import rs09.game.world.GameWorld;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the dragon slayer quest. * Represents the dragon slayer quest.
@ -119,7 +119,7 @@ public final class DragonSlayer extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugins(new CrandorMapPlugin(), new DragonSlayerPlugin(), new DSMagicDoorPlugin(), new DragonSlayerCutscene(), new MazeDemonNPC(), new MazeGhostNPC(), new MazeSkeletonNPC(), new MazeZombieNPC(), new MeldarMadNPC(), new WormbrainNPC(), new ZombieRatNPC(), new DSChestDialogue(), new GuildmasterDialogue(), new ElvargNPC(), new WormbrainDialogue(), new OziachDialogue(), new NedDialogue(), new DukeHoracioDialogue()); ClassScanner.definePlugins(new CrandorMapPlugin(), new DragonSlayerPlugin(), new DSMagicDoorPlugin(), new DragonSlayerCutscene(), new MazeDemonNPC(), new MazeGhostNPC(), new MazeSkeletonNPC(), new MazeZombieNPC(), new MeldarMadNPC(), new WormbrainNPC(), new ZombieRatNPC(), new DSChestDialogue(), new GuildmasterDialogue(), new ElvargNPC(), new WormbrainDialogue(), new OziachDialogue(), new NedDialogue(), new DukeHoracioDialogue());
return this; return this;
} }

View file

@ -6,7 +6,7 @@ import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest; import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.GroundItemManager; import core.game.node.item.GroundItemManager;
import core.game.node.item.Item; import core.game.node.item.Item;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the demon slayer quest. * Represents the demon slayer quest.
@ -50,7 +50,7 @@ public class GoblinDiplomacy extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugins(new GDiplomacyCutscene(), new GoblinDiplomacyPlugin(), new GrubfootDialogue()); ClassScanner.definePlugins(new GDiplomacyCutscene(), new GoblinDiplomacyPlugin(), new GrubfootDialogue());
return this; return this;
} }

View file

@ -12,7 +12,7 @@ import core.game.node.item.Item;
import core.game.node.scenery.Scenery; import core.game.node.scenery.Scenery;
import rs09.game.world.GameWorld; import rs09.game.world.GameWorld;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.StringUtils; import core.tools.StringUtils;
/** /**
@ -42,7 +42,7 @@ public final class GoblinDiplomacyPlugin extends OptionHandler {
for (GoblinMailPlugin.GoblinMail mail : GoblinMailPlugin.GoblinMail.values()) { for (GoblinMailPlugin.GoblinMail mail : GoblinMailPlugin.GoblinMail.values()) {
ItemDefinition.forId(mail.getProduct().getId()).getHandlers().put("option:wear", this); ItemDefinition.forId(mail.getProduct().getId()).getHandlers().put("option:wear", this);
} }
PluginManager.definePlugin(new GoblinMailPlugin()); ClassScanner.definePlugin(new GoblinMailPlugin());
return this; return this;
} }

View file

@ -6,7 +6,7 @@ import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.GroundItemManager; import core.game.node.item.GroundItemManager;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the pirates treasure quest. * Represents the pirates treasure quest.
@ -55,7 +55,7 @@ public final class PiratesTreasure extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugin(new PiratesTreasurePlugin()); ClassScanner.definePlugin(new PiratesTreasurePlugin());
return this; return this;
} }

View file

@ -5,7 +5,7 @@ import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.GroundItemManager; import core.game.node.item.GroundItemManager;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the prince ali rescue quest. * Represents the prince ali rescue quest.
@ -49,7 +49,7 @@ public class PrinceAliRescue extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugins(new LadyKeliDialogue(), new LadyKeliNPC(), new PrinceAliRescuePlugin(), new WigDyePlugin()); ClassScanner.definePlugins(new LadyKeliDialogue(), new LadyKeliNPC(), new PrinceAliRescuePlugin(), new WigDyePlugin());
return this; return this;
} }

View file

@ -5,7 +5,7 @@ import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.game.content.dialogue.region.varrock.KingRoaldDialogue; import rs09.game.content.dialogue.region.varrock.KingRoaldDialogue;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the shield of arrav quest. * Represents the shield of arrav quest.
@ -59,7 +59,7 @@ public class ShieldofArrav extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugins(new CertificatePlugin(), new CuratorHaigHalenDialogue(), new JohnnyBeardNPC(), new JonnytheBeardPlugin(), new KatrineDialogue(), new KingRoaldDialogue(), new ReldoDialogue(), new ShieldArravPlugin(), new ShieldofArravBook(), new StravenDialogue(), new WeaponsMasterDialogue()); ClassScanner.definePlugins(new CertificatePlugin(), new CuratorHaigHalenDialogue(), new JohnnyBeardNPC(), new JonnytheBeardPlugin(), new KatrineDialogue(), new KingRoaldDialogue(), new ReldoDialogue(), new ShieldArravPlugin(), new ShieldofArravBook(), new StravenDialogue(), new WeaponsMasterDialogue());
return this; return this;
} }

View file

@ -6,7 +6,7 @@ import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest; import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the restless ghost quest. * Represents the restless ghost quest.
@ -35,7 +35,7 @@ public class RestlessGhost extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugin(new OldCronDialogue()); ClassScanner.definePlugin(new OldCronDialogue());
return this; return this;
} }

View file

@ -21,7 +21,7 @@ import core.net.packet.PacketRepository;
import core.net.packet.context.CameraContext; import core.net.packet.context.CameraContext;
import core.net.packet.context.CameraContext.CameraType; import core.net.packet.context.CameraContext.CameraType;
import core.net.packet.out.CameraViewPacket; import core.net.packet.out.CameraViewPacket;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the husband of alice's npc dialogue. * Handles the husband of alice's npc dialogue.
@ -64,7 +64,7 @@ public final class AliceHusbandDialogue extends DialoguePlugin {
@Override @Override
public void init() { public void init() {
super.init(); super.init();
PluginManager.definePlugin(new ChickenCatchScene()); ClassScanner.definePlugin(new ChickenCatchScene());
} }
@Override @Override

View file

@ -4,7 +4,7 @@ import core.game.node.entity.skill.Skills;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest; import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item; import core.game.node.item.Item;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.game.content.quest.members.animalmagnetism.AnimalMagnetismPlugin.ContainerHandler; import core.game.content.quest.members.animalmagnetism.AnimalMagnetismPlugin.ContainerHandler;
import core.game.content.quest.members.animalmagnetism.AnimalMagnetismPlugin.HammerMagnetPlugin; import core.game.content.quest.members.animalmagnetism.AnimalMagnetismPlugin.HammerMagnetPlugin;
@ -108,16 +108,16 @@ public final class AnimalMagnetism extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugin(new AvaDialogue()); ClassScanner.definePlugin(new AvaDialogue());
PluginManager.definePlugin(new AliceDialogue()); ClassScanner.definePlugin(new AliceDialogue());
PluginManager.definePlugin(new WitchDialogue()); ClassScanner.definePlugin(new WitchDialogue());
PluginManager.definePlugin(new ContainerHandler()); ClassScanner.definePlugin(new ContainerHandler());
PluginManager.definePlugin(new UndeadTreePlugin()); ClassScanner.definePlugin(new UndeadTreePlugin());
PluginManager.definePlugin(new AvasDevicePlugin()); ClassScanner.definePlugin(new AvasDevicePlugin());
PluginManager.definePlugin(new HammerMagnetPlugin()); ClassScanner.definePlugin(new HammerMagnetPlugin());
PluginManager.definePlugin(new ResearchNoteHandler()); ClassScanner.definePlugin(new ResearchNoteHandler());
PluginManager.definePlugin(new AliceHusbandDialogue()); ClassScanner.definePlugin(new AliceHusbandDialogue());
PluginManager.definePlugin(new AnimalMagnetismPlugin()); ClassScanner.definePlugin(new AnimalMagnetismPlugin());
return this; return this;
} }

View file

@ -31,7 +31,7 @@ import core.game.world.map.zone.ZoneBorders;
import core.game.world.map.zone.ZoneBuilder; import core.game.world.map.zone.ZoneBuilder;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
/** /**
@ -219,7 +219,7 @@ public final class AnimalMagnetismPlugin extends OptionHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new OptionHandler() { ClassScanner.definePlugin(new OptionHandler() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
NPCDefinition.forId(5208).getHandlers().put("option:chop", this); NPCDefinition.forId(5208).getHandlers().put("option:chop", this);

View file

@ -7,7 +7,7 @@ import core.game.node.entity.player.Player;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.game.node.entity.state.newsys.states.AvaDeviceState; import rs09.game.node.entity.state.newsys.states.AvaDeviceState;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the equippage event of an ava device. * Handles the equippage event of an ava device.
@ -19,7 +19,7 @@ public final class AvasDevicePlugin implements Plugin<Object> {
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
AnimalMagnetism.AVAS_ACCUMULATOR.getDefinition().getHandlers().put("equipment", this); AnimalMagnetism.AVAS_ACCUMULATOR.getDefinition().getHandlers().put("equipment", this);
AnimalMagnetism.AVAS_ATTRACTOR.getDefinition().getHandlers().put("equipment", this); AnimalMagnetism.AVAS_ATTRACTOR.getDefinition().getHandlers().put("equipment", this);
PluginManager.definePlugin(new DisableDevicePlugin()); ClassScanner.definePlugin(new DisableDevicePlugin());
return this; return this;
} }

View file

@ -4,7 +4,7 @@ import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest; import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.game.node.entity.skill.Skills; import core.game.node.entity.skill.Skills;
/** /**
@ -48,11 +48,11 @@ public class DwarfCannon extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugin(new LollkDialogue()); ClassScanner.definePlugin(new LollkDialogue());
PluginManager.definePlugin(new NulodionDialogue()); ClassScanner.definePlugin(new NulodionDialogue());
PluginManager.definePlugin(new CaptainLawgofNPC()); ClassScanner.definePlugin(new CaptainLawgofNPC());
PluginManager.definePlugin(new CaptainLawgofDialogue()); ClassScanner.definePlugin(new CaptainLawgofDialogue());
PluginManager.definePlugin(new DwarfCannonPlugin()); ClassScanner.definePlugin(new DwarfCannonPlugin());
return this; return this;
} }

View file

@ -9,7 +9,7 @@ import core.game.node.scenery.Scenery;
import core.game.node.scenery.SceneryBuilder; import core.game.node.scenery.SceneryBuilder;
import core.game.system.task.Pulse; import core.game.system.task.Pulse;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import core.tools.StringUtils; import core.tools.StringUtils;
@ -37,9 +37,9 @@ public final class JunglePotion extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugin(new TrufitusDialogue()); ClassScanner.definePlugin(new TrufitusDialogue());
PluginManager.definePlugin(new JogreCavernDialogue()); ClassScanner.definePlugin(new JogreCavernDialogue());
PluginManager.definePlugin(new JunglePotionPlugin()); ClassScanner.definePlugin(new JunglePotionPlugin());
return this; return this;
} }

View file

@ -5,7 +5,7 @@ import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest; import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* The main type for the lost city Quest. * The main type for the lost city Quest.
@ -93,11 +93,11 @@ public class LostCity extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugin(new LostCityPlugin()); ClassScanner.definePlugin(new LostCityPlugin());
PluginManager.definePlugin(new TreeSpiritNPC()); ClassScanner.definePlugin(new TreeSpiritNPC());
PluginManager.definePlugin(new ShamusDialogue()); ClassScanner.definePlugin(new ShamusDialogue());
PluginManager.definePlugin(new WarriorDialogue()); ClassScanner.definePlugin(new WarriorDialogue());
PluginManager.definePlugin(new DramenStaffPlugin()); ClassScanner.definePlugin(new DramenStaffPlugin());
return this; return this;
} }

View file

@ -10,7 +10,7 @@ import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.game.system.config.ShopParser; import rs09.game.system.config.ShopParser;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the dialogue plugin used to handle the candle maker npc. * Represents the dialogue plugin used to handle the candle maker npc.
@ -45,7 +45,7 @@ public final class CandleMakerDialogue extends DialoguePlugin {
@Override @Override
public void init() { public void init() {
super.init(); super.init();
PluginManager.definePlugin(new OptionHandler() { ClassScanner.definePlugin(new OptionHandler() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {

View file

@ -4,7 +4,7 @@ import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest; import core.game.node.entity.player.link.quest.Quest;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.game.content.quest.members.merlinsquest.TheLadyOfTheLake; import rs09.game.content.quest.members.merlinsquest.TheLadyOfTheLake;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the merlin's crystal quest. * Represents the merlin's crystal quest.
@ -77,7 +77,7 @@ public final class MerlinCrystal extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugins(new CrateCutscenePlugin(), ClassScanner.definePlugins(new CrateCutscenePlugin(),
new MerlinCrystalPlugin(), new MerlinCrystalPlugin(),
new ArheinShopDialogue(), new ArheinShopDialogue(),
new BeggarDialogue(), new BeggarDialogue(),

View file

@ -29,7 +29,7 @@ import core.game.world.map.Location;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.game.world.update.flag.context.Graphics; import core.game.world.update.flag.context.Graphics;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the Merlin's Crystal Dialogue/Interactions. * Handles the Merlin's Crystal Dialogue/Interactions.
@ -59,8 +59,8 @@ public final class MerlinCrystalPlugin extends OptionHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new MerlinCrystalDialogue()); ClassScanner.definePlugin(new MerlinCrystalDialogue());
PluginManager.definePlugin(new MerlinCrystalItemHandler()); ClassScanner.definePlugin(new MerlinCrystalItemHandler());
SceneryDefinition.forId(63).getHandlers().put("option:hide-in", this); SceneryDefinition.forId(63).getHandlers().put("option:hide-in", this);
SceneryDefinition.forId(40026).getHandlers().put("option:climb-up", this); SceneryDefinition.forId(40026).getHandlers().put("option:climb-up", this);
SceneryDefinition.forId(72).getHandlers().put("option:open", this); SceneryDefinition.forId(72).getHandlers().put("option:open", this);

View file

@ -12,7 +12,7 @@ import core.game.node.item.GroundItemManager;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* The level 84 Moss Giant in Glarial's tomb. * The level 84 Moss Giant in Glarial's tomb.
@ -57,7 +57,7 @@ public final class MossGiantGuardianNPC extends AbstractNPC {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new OptionHandler() { ClassScanner.definePlugin(new OptionHandler() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {

View file

@ -5,7 +5,7 @@ import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest; import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* The Roving Elves quest. * The Roving Elves quest.
@ -94,11 +94,11 @@ public class RovingElves extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugin(new RovingElvesPlugin()); ClassScanner.definePlugin(new RovingElvesPlugin());
PluginManager.definePlugin(new RovingElvesObstacles()); ClassScanner.definePlugin(new RovingElvesObstacles());
PluginManager.definePlugin(new ElunedDialogue()); ClassScanner.definePlugin(new ElunedDialogue());
PluginManager.definePlugin(new IslwynDialogue()); ClassScanner.definePlugin(new IslwynDialogue());
PluginManager.definePlugin(new MossGiantGuardianNPC()); ClassScanner.definePlugin(new MossGiantGuardianNPC());
return this; return this;
} }

View file

@ -12,7 +12,7 @@ import rs09.game.world.GameWorld;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.game.world.map.RegionManager; import core.game.world.map.RegionManager;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* The dialogue plugin used to handle the ana npc. * The dialogue plugin used to handle the ana npc.
@ -51,8 +51,8 @@ public final class AnaDialogue extends DialoguePlugin {
@Override @Override
public void init() { public void init() {
super.init(); super.init();
PluginManager.definePlugin(new AnaNPC()); ClassScanner.definePlugin(new AnaNPC());
PluginManager.definePlugin(new AnaBarrelHandler()); ClassScanner.definePlugin(new AnaBarrelHandler());
} }
@Override @Override

View file

@ -11,7 +11,7 @@ import core.game.system.task.Pulse;
import rs09.game.world.GameWorld; import rs09.game.world.GameWorld;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.game.world.map.RegionManager; import core.game.world.map.RegionManager;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
/** /**
@ -51,7 +51,7 @@ public final class DesertGuardDialogue extends DialoguePlugin {
@Override @Override
public void init() { public void init() {
super.init(); super.init();
PluginManager.definePlugin(new DesertGuardNPC()); ClassScanner.definePlugin(new DesertGuardNPC());
} }
@Override @Override

View file

@ -7,7 +7,7 @@ import core.game.node.entity.npc.NPC;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest; import core.game.node.entity.player.link.quest.Quest;
import core.game.world.map.Location; import core.game.world.map.Location;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the mercenary captain dialogue plugin. * Represents the mercenary captain dialogue plugin.
@ -46,7 +46,7 @@ public final class MercenaryCaptainDialogue extends DialoguePlugin {
@Override @Override
public void init() { public void init() {
super.init(); super.init();
PluginManager.definePlugin(new MercenaryCaptain()); ClassScanner.definePlugin(new MercenaryCaptain());
} }
@Override @Override

View file

@ -11,7 +11,7 @@ import core.game.node.item.GroundItemManager;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
/** /**
@ -65,7 +65,7 @@ public final class RowdySlaveNPC extends AbstractNPC {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new OptionHandler() { ClassScanner.definePlugin(new OptionHandler() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {

View file

@ -11,7 +11,7 @@ import rs09.game.world.GameWorld;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.game.world.map.zone.ZoneBorders; import core.game.world.map.zone.ZoneBorders;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* The main type for the tourist trap quest. * The main type for the tourist trap quest.
@ -116,7 +116,7 @@ public final class TouristTrap extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugins(new TouristTrapPlugin(), new AnaDialogue(), new CaptainSiadDialogue(), new DesertGuardDialogue(), new IrenaDialogue(), new MaleSlaveDialogue(), new MercenaryCaptainDialogue(), new MercenaryDialogue(), new MinecartDriverDialogue(), new MineSlaveNPC(), new MiningCampZone(), new RowdySlaveNPC(), new AlShabimDialogue(), new BedabinNomadDialogue()); ClassScanner.definePlugins(new TouristTrapPlugin(), new AnaDialogue(), new CaptainSiadDialogue(), new DesertGuardDialogue(), new IrenaDialogue(), new MaleSlaveDialogue(), new MercenaryCaptainDialogue(), new MercenaryDialogue(), new MinecartDriverDialogue(), new MineSlaveNPC(), new MiningCampZone(), new RowdySlaveNPC(), new AlShabimDialogue(), new BedabinNomadDialogue());
return this; return this;
} }

View file

@ -32,7 +32,7 @@ import core.game.world.map.RegionManager;
import core.game.world.map.build.DynamicRegion; import core.game.world.map.build.DynamicRegion;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import core.game.content.quest.members.thetouristrap.TouristTrapPlugin.AnnaCartHandler.AnnaCartCutscene; import core.game.content.quest.members.thetouristrap.TouristTrapPlugin.AnnaCartHandler.AnnaCartCutscene;
@ -117,16 +117,16 @@ public final class TouristTrapPlugin extends OptionHandler {
TouristTrap.TECHNICAL_PLANS.getDefinition().getHandlers().put("option:read", this); TouristTrap.TECHNICAL_PLANS.getDefinition().getHandlers().put("option:read", this);
TouristTrap.ANNA_BARREL.getDefinition().getHandlers().put("option:look", this); TouristTrap.ANNA_BARREL.getDefinition().getHandlers().put("option:look", this);
TouristTrap.ANNA_BARREL.getDefinition().getHandlers().put("option:drop", this); TouristTrap.ANNA_BARREL.getDefinition().getHandlers().put("option:drop", this);
PluginManager.definePlugin(new BedabinKeyHandler()); ClassScanner.definePlugin(new BedabinKeyHandler());
PluginManager.definePlugin(new BedabinAnvilHandler()); ClassScanner.definePlugin(new BedabinAnvilHandler());
PluginManager.definePlugin(new BarrelDialogue()); ClassScanner.definePlugin(new BarrelDialogue());
PluginManager.definePlugin(new WinchDialogue()); ClassScanner.definePlugin(new WinchDialogue());
PluginManager.definePlugin(new MineCartDialogue()); ClassScanner.definePlugin(new MineCartDialogue());
PluginManager.definePlugin(new AnnaCartHandler()); ClassScanner.definePlugin(new AnnaCartHandler());
PluginManager.definePlugin(new AnnaCartCutscene()); ClassScanner.definePlugin(new AnnaCartCutscene());
PluginManager.definePlugin(new AnnaWinchHandler()); ClassScanner.definePlugin(new AnnaWinchHandler());
PluginManager.definePlugin(new WinchCutscene()); ClassScanner.definePlugin(new WinchCutscene());
PluginManager.definePlugin(new CartDialogue()); ClassScanner.definePlugin(new CartDialogue());
return this; return this;
} }
@ -963,7 +963,7 @@ public final class TouristTrapPlugin extends OptionHandler {
@Override @Override
public void init() { public void init() {
super.init(); super.init();
PluginManager.definePlugin(new MiningCartCutscene()); ClassScanner.definePlugin(new MiningCartCutscene());
} }
@Override @Override
@ -1386,8 +1386,8 @@ public final class TouristTrapPlugin extends OptionHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) { public Plugin<Object> newInstance(Object arg) {
addHandler(2672, OBJECT_TYPE, this); addHandler(2672, OBJECT_TYPE, this);
PluginManager.definePlugin(new PrototypeDartHandler()); ClassScanner.definePlugin(new PrototypeDartHandler());
PluginManager.definePlugin(new BedabinAnvilDialogue()); ClassScanner.definePlugin(new BedabinAnvilDialogue());
return this; return this;
} }
@ -1459,7 +1459,7 @@ public final class TouristTrapPlugin extends OptionHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) { public Plugin<Object> newInstance(Object arg) {
addHandler(TouristTrap.PROTOTYPE_DART_TIP.getId(), ITEM_TYPE, this); addHandler(TouristTrap.PROTOTYPE_DART_TIP.getId(), ITEM_TYPE, this);
PluginManager.definePlugin(new ProtoTypeDialogue()); ClassScanner.definePlugin(new ProtoTypeDialogue());
return this; return this;
} }

View file

@ -5,7 +5,7 @@ import core.game.node.entity.skill.Skills;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest; import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item; import core.game.node.item.Item;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* The main type for the waterfall quest. * The main type for the waterfall quest.
@ -84,7 +84,7 @@ public class WaterFall extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugins(new AlmeraDialogue(), new BookOnBaxtorianPlugin(), new GolrieDialogue(), new HadleyDialogue(), new HudonDialogue(), new WaterfallPlugin(), new WaterfallTreeDialogue()); ClassScanner.definePlugins(new AlmeraDialogue(), new BookOnBaxtorianPlugin(), new GolrieDialogue(), new HadleyDialogue(), new HudonDialogue(), new WaterfallPlugin(), new WaterfallTreeDialogue());
return this; return this;
} }

View file

@ -21,13 +21,12 @@ import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.node.scenery.Scenery; import core.game.node.scenery.Scenery;
import core.game.node.scenery.SceneryBuilder; import core.game.node.scenery.SceneryBuilder;
import core.game.system.task.LocationLogoutTask;
import core.game.system.task.LogoutTask;
import core.game.system.task.Pulse; import core.game.system.task.Pulse;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import kotlin.Unit;
import rs09.plugin.ClassScanner;
/** /**
* Master plugin file for the Waterfall quest. * Master plugin file for the Waterfall quest.
@ -101,7 +100,7 @@ public final class WaterfallPlugin extends OptionHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new WaterfallUseWithHandler()); ClassScanner.definePlugin(new WaterfallUseWithHandler());
NPCDefinition.forId(305).getHandlers().put("option:talk-to", this); NPCDefinition.forId(305).getHandlers().put("option:talk-to", this);
SceneryDefinition.forId(1987).getHandlers().put("option:board", this); SceneryDefinition.forId(1987).getHandlers().put("option:board", this);
SceneryDefinition.forId(2020).getHandlers().put("option:climb", this); SceneryDefinition.forId(2020).getHandlers().put("option:climb", this);
@ -276,7 +275,10 @@ public final class WaterfallPlugin extends OptionHandler {
break; break;
case 10283: case 10283:
case 1996: case 1996:
player.addExtension(LogoutTask.class, new LocationLogoutTask(10, player.getLocation())); player.logoutListeners.put("waterfall", player1 -> {
player1.setLocation(player.getLocation().transform(0,0,0));
return Unit.INSTANCE;
});
player.getPacketDispatch().sendGraphic(68); player.getPacketDispatch().sendGraphic(68);
player.lock(6); player.lock(6);
AgilityHandler.walk(player, -1, player.getLocation(), new Location(2512, 3471, 0), Animation.create(164), 0, null); AgilityHandler.walk(player, -1, player.getLocation(), new Location(2512, 3471, 0), Animation.create(164), 0, null);
@ -287,6 +289,7 @@ public final class WaterfallPlugin extends OptionHandler {
public boolean pulse() { public boolean pulse() {
player.getPacketDispatch().sendMessage("You are washed downstream but feel lucky to be alive."); player.getPacketDispatch().sendMessage("You are washed downstream but feel lucky to be alive.");
player.teleport(new Location(2527, 3413)); player.teleport(new Location(2527, 3413));
player.logoutListeners.remove("waterfall");
return true; return true;
} }
}); });
@ -431,7 +434,10 @@ public final class WaterfallPlugin extends OptionHandler {
if (SWIMMERS.size() == 0 || ROPES.size() == 0) { if (SWIMMERS.size() == 0 || ROPES.size() == 0) {
handleObjects(true, player); handleObjects(true, player);
} }
player.addExtension(LogoutTask.class, new LocationLogoutTask(13, player.getLocation())); player.logoutListeners.put("waterfall", player1 -> {
player1.setLocation(player.getLocation().transform(0,0,0));
return Unit.INSTANCE;
});
player.getPulseManager().run(new Pulse(2, player) { player.getPulseManager().run(new Pulse(2, player) {
@Override @Override
public boolean pulse() { public boolean pulse() {
@ -443,6 +449,7 @@ public final class WaterfallPlugin extends OptionHandler {
player.teleport(new Location(2513, 3468)); player.teleport(new Location(2513, 3468));
player.faceLocation(new Location(2512, 3468, 0)); player.faceLocation(new Location(2512, 3468, 0));
player.animate(Animation.create(780)); player.animate(Animation.create(780));
player.logoutListeners.remove("waterfall");
return true; return true;
} }

View file

@ -19,7 +19,7 @@ import rs09.game.world.GameWorld;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the what lies below options. * Handles the what lies below options.
@ -30,14 +30,14 @@ public class WLBelowPlugin extends OptionHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new OutlawNPC()); ClassScanner.definePlugin(new OutlawNPC());
PluginManager.definePlugin(new KingRoaldNPC()); ClassScanner.definePlugin(new KingRoaldNPC());
ActivityManager.register(new WLBelowCutscene()); ActivityManager.register(new WLBelowCutscene());
PluginManager.definePlugin(new FolderHandler()); ClassScanner.definePlugin(new FolderHandler());
PluginManager.definePlugin(new MetalWandHandler()); ClassScanner.definePlugin(new MetalWandHandler());
PluginManager.definePlugin(new AnnaJonesDialogue()); ClassScanner.definePlugin(new AnnaJonesDialogue());
PluginManager.definePlugin(new SurokMagisDialogue()); ClassScanner.definePlugin(new SurokMagisDialogue());
PluginManager.definePlugin(new RatBurgissDialogue()); ClassScanner.definePlugin(new RatBurgissDialogue());
SceneryDefinition.forId(23095).getHandlers().put("option:use", this); SceneryDefinition.forId(23095).getHandlers().put("option:use", this);
SceneryDefinition.forId(23058).getHandlers().put("option:enter", this); SceneryDefinition.forId(23058).getHandlers().put("option:enter", this);
SceneryDefinition.forId(23057).getHandlers().put("option:excavate", this); SceneryDefinition.forId(23057).getHandlers().put("option:excavate", this);

View file

@ -6,7 +6,7 @@ import core.game.node.entity.skill.Skills;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest; import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item; import core.game.node.item.Item;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* The what lies below quest. * The what lies below quest.
@ -100,7 +100,7 @@ public class WhatLiesBelow extends Quest {
@Override @Override
public Quest newInstance(Object object) { public Quest newInstance(Object object) {
PluginManager.definePlugin(new WLBelowPlugin()); ClassScanner.definePlugin(new WLBelowPlugin());
return this; return this;
} }

View file

@ -16,7 +16,7 @@ import core.game.node.scenery.Scenery;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
/** /**
@ -169,8 +169,8 @@ public class WitchsHousePlugin extends OptionHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new WitchsHouseUseWithHandler()); ClassScanner.definePlugin(new WitchsHouseUseWithHandler());
PluginManager.definePlugin(new MouseNPC()); ClassScanner.definePlugin(new MouseNPC());
SceneryDefinition.forId(2867).getHandlers().put("option:look-under", this); SceneryDefinition.forId(2867).getHandlers().put("option:look-under", this);
SceneryDefinition.forId(2861).getHandlers().put("option:open", this); SceneryDefinition.forId(2861).getHandlers().put("option:open", this);
SceneryDefinition.forId(2865).getHandlers().put("option:open", this); SceneryDefinition.forId(2865).getHandlers().put("option:open", this);

View file

@ -6,7 +6,7 @@ import core.game.node.Node;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the hunt for surok mini quest. * Handles the hunt for surok mini quest.
@ -17,10 +17,10 @@ public class HuntForSurokPlugin extends OptionHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new DakhThoulanAegisDialogue()); ClassScanner.definePlugin(new DakhThoulanAegisDialogue());
PluginManager.definePlugin(new MishkalunDornDialogue()); ClassScanner.definePlugin(new MishkalunDornDialogue());
PluginManager.definePlugin(new SilasDahcsnuDialogue()); ClassScanner.definePlugin(new SilasDahcsnuDialogue());
PluginManager.definePlugin(new SurokMagisDialogue()); ClassScanner.definePlugin(new SurokMagisDialogue());
SceneryDefinition.forId(28780).getHandlers().put("option:use", this); SceneryDefinition.forId(28780).getHandlers().put("option:use", this);
return this; return this;
} }

View file

@ -1,44 +0,0 @@
package core.game.content.quest.tutorials.tutorialisland;
import core.game.node.entity.player.Player;
import core.plugin.Initializable;
import core.plugin.Plugin;
import core.plugin.PluginManifest;
import core.plugin.PluginType;
/**
* Basic starter until tutorial is completed.
*
* @author Michael Sasse (https://github.com/mikeysasse/)
*/
@Initializable
@PluginManifest(type = PluginType.LOGIN)
public class BasicStarter implements Plugin<Player> {
private static final int[][] STARTER_ITEMS = { { 1351, 1 }, { 590, 1 },
{ 303, 1 }, { 315, 1 }, { 1925, 1 }, { 1931, 1 }, { 2309, 1 },
{ 1265, 1 }, { 1205, 1 }, { 1277, 1 }, { 1171, 1 }, { 841, 1 },
{ 882, 25 }, { 556, 25 }, { 558, 15 }, { 555, 6 }, { 557, 4 },
{ 559, 2 } };
public BasicStarter() { }
@Override
public Plugin<Player> newInstance(Player player) throws Throwable {
if (player.getDetails().getLastLogin() == 0) {
//Redundant if the Tutorial Completion Dialogue is going to clear the bank, inventory and equipment after teleporting to Lumbridge.
//Causes a full inventory on tutorial island when the instructors are giving the player more items.
//The Starter pack array exists in the TutorialCompletionDialogue file... So could this file be deleted?
/*for (int[] item : STARTER_ITEMS) {
player.getInventory().add(new Item(item[0], item[1]));
}*/
}
return this;
}
@Override
public Object fireEvent(String identifier, Object... args) {
return null;
}
}

View file

@ -3,7 +3,7 @@ package core.game.content.ttrail;
import core.game.node.entity.player.link.emote.Emotes; import core.game.node.entity.player.link.emote.Emotes;
import core.game.world.map.zone.ZoneBorders; import core.game.world.map.zone.ZoneBorders;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Initializes the emote clue plugins. * Initializes the emote clue plugins.
@ -140,7 +140,7 @@ public final class EmoteCluePlugin extends EmoteClueScroll {
register(new EmoteCluePlugin("draynor-market-yawn", 2737, ClueLevel.EASY, emote, new int[][] { { 1097 }, { 1191 }, { 1295 } }, "Yawn in Draynor<br>Marketplace.<br>Equip studded leather<br>chaps, an iron<br>kiteshield and a steel<br>longsword.", new ZoneBorders(3075, 3245, 3086, 3255))); register(new EmoteCluePlugin("draynor-market-yawn", 2737, ClueLevel.EASY, emote, new int[][] { { 1097 }, { 1191 }, { 1295 } }, "Yawn in Draynor<br>Marketplace.<br>Equip studded leather<br>chaps, an iron<br>kiteshield and a steel<br>longsword.", new ZoneBorders(3075, 3245, 3086, 3255)));
register(new EmoteCluePlugin("castle-wars-yawn", 2739, ClueLevel.MEDIUM, emote, Emotes.SHRUG, new int[][] { { 1698 }, { 1329 }, WILDY_CAPES }, "Yawn in the Castle<br>Wars lobby. Shrug<br>before you talk to me.<br>Equip ruby amulet, a<br>mithril scimitar and a<br>Wilderness cape.", new ZoneBorders(2434, 3061, 2464, 3102))); register(new EmoteCluePlugin("castle-wars-yawn", 2739, ClueLevel.MEDIUM, emote, Emotes.SHRUG, new int[][] { { 1698 }, { 1329 }, WILDY_CAPES }, "Yawn in the Castle<br>Wars lobby. Shrug<br>before you talk to me.<br>Equip ruby amulet, a<br>mithril scimitar and a<br>Wilderness cape.", new ZoneBorders(2434, 3061, 2464, 3102)));
register(new EmoteCluePlugin("rogue-gen-yawn", 2741, ClueLevel.HARD, emote, new int[][] { { 1183 }, { 2487 }, { 1275 } }, "Yawn in the rogues'<br>general store. Beware<br>of double agents!<br>Equip an adamant<br>square shield, blue<br>dragon vambraces<br>and a rune pickaxe.", new ZoneBorders(3024, 3699, 3027, 3704))); register(new EmoteCluePlugin("rogue-gen-yawn", 2741, ClueLevel.HARD, emote, new int[][] { { 1183 }, { 2487 }, { 1275 } }, "Yawn in the rogues'<br>general store. Beware<br>of double agents!<br>Equip an adamant<br>square shield, blue<br>dragon vambraces<br>and a rune pickaxe.", new ZoneBorders(3024, 3699, 3027, 3704)));
PluginManager.definePlugin(new UriNPC()); ClassScanner.definePlugin(new UriNPC());
return this; return this;
} }

View file

@ -17,8 +17,7 @@ import core.game.world.map.Location;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.game.system.config.NPCConfigParser; import rs09.plugin.ClassScanner;
import rs09.plugin.PluginManager;
/** /**
* Handles the clue scroll options. * Handles the clue scroll options.
@ -41,14 +40,14 @@ public final class TreasureTrailPlugin extends OptionHandler {
ItemDefinition.forId(level.getCasket().getId()).getHandlers().put("option:open", this); ItemDefinition.forId(level.getCasket().getId()).getHandlers().put("option:open", this);
} }
ItemDefinition.forId(CoordinateClueScroll.SEXTANT.getId()).getHandlers().put("option:look through", this); ItemDefinition.forId(CoordinateClueScroll.SEXTANT.getId()).getHandlers().put("option:look through", this);
PluginManager.definePlugin(new MapCluePlugin()); ClassScanner.definePlugin(new MapCluePlugin());
PluginManager.definePlugin(new ClueItemPlugin()); ClassScanner.definePlugin(new ClueItemPlugin());
PluginManager.definePlugin(new EmoteCluePlugin()); ClassScanner.definePlugin(new EmoteCluePlugin());
PluginManager.definePlugin(new TTrailOptionHandler()); ClassScanner.definePlugin(new TTrailOptionHandler());
PluginManager.definePlugin(new SextantComponentPlugin()); ClassScanner.definePlugin(new SextantComponentPlugin());
PluginManager.definePlugin(new CoordinateCluePlugin()); ClassScanner.definePlugin(new CoordinateCluePlugin());
PluginManager.definePlugin(new SaradominWizardNPC()); ClassScanner.definePlugin(new SaradominWizardNPC());
PluginManager.definePlugin(new ZamorakWizardNPC()); ClassScanner.definePlugin(new ZamorakWizardNPC());
return this; return this;
} }

View file

@ -9,7 +9,7 @@ import core.game.node.entity.player.Player;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.game.world.map.RegionManager; import core.game.world.map.RegionManager;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
/** /**
@ -120,7 +120,7 @@ public final class UriNPC extends AbstractNPC {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new UriDialogue()); ClassScanner.definePlugin(new UriDialogue());
return super.newInstance(arg); return super.newInstance(arg);
} }

View file

@ -24,7 +24,7 @@ import core.game.world.map.zone.ZoneRestriction;
import core.game.world.update.flag.context.Graphics; import core.game.world.update.flag.context.Graphics;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
/** /**
@ -59,7 +59,7 @@ public final class ChaosTunnelZone extends MapZone implements Plugin<Object> {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this); ZoneBuilder.configure(this);
PluginManager.definePlugin(new OptionHandler() { ClassScanner.definePlugin(new OptionHandler() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
for (int i = 0; i < ENTRANCE_DATA.length; i++) { for (int i = 0; i < ENTRANCE_DATA.length; i++) {

View file

@ -25,7 +25,7 @@ import core.game.world.map.zone.ZoneBorders;
import core.game.world.map.zone.ZoneBuilder; import core.game.world.map.zone.ZoneBuilder;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -54,7 +54,7 @@ public class WildernessAreaZone extends MapZone implements Plugin<Object> {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this); ZoneBuilder.configure(this);
PluginManager.definePlugins(new MandrithDialoguePlugin(), new PilesDialoguePlugin(), new PilesItemHandler(), new RuniteGolemNPC()); ClassScanner.definePlugins(new MandrithDialoguePlugin(), new PilesDialoguePlugin(), new PilesItemHandler(), new RuniteGolemNPC());
return this; return this;
} }

View file

@ -8,7 +8,7 @@ import core.game.world.map.zone.MapZone;
import core.game.world.map.zone.ZoneBuilder; import core.game.world.map.zone.ZoneBuilder;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the neitiznot zone. * Handles the neitiznot zone.
@ -27,7 +27,7 @@ public class NeitiznotZone extends MapZone implements Plugin<Object> {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this); ZoneBuilder.configure(this);
PluginManager.definePlugins(new MawnisBurowgarDialogue(), new ThakkradYakDialogue(), new YakArmourPlugin(), new YakArmourPlugin()); ClassScanner.definePlugins(new MawnisBurowgarDialogue(), new ThakkradYakDialogue(), new YakArmourPlugin(), new YakArmourPlugin());
return this; return this;
} }

View file

@ -5,7 +5,7 @@ import core.game.node.entity.npc.AbstractNPC;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
/** /**
@ -50,7 +50,7 @@ public final class GravingasNPC extends AbstractNPC {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new GravingasDialogue()); ClassScanner.definePlugin(new GravingasDialogue());
return super.newInstance(arg); return super.newInstance(arg);
} }

View file

@ -22,7 +22,7 @@ import core.game.world.map.zone.ZoneBuilder;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the phasmatyz zone area. * Handles the phasmatyz zone area.
@ -48,13 +48,13 @@ public final class PhasmatysZone extends MapZone implements Plugin<Object> {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this); ZoneBuilder.configure(this);
PluginManager.definePlugin(new GravingasNPC()); ClassScanner.definePlugin(new GravingasNPC());
PluginManager.definePlugin(new NecrovarusDialogue()); ClassScanner.definePlugin(new NecrovarusDialogue());
PluginManager.definePlugin(new GhostSailorDialogue()); ClassScanner.definePlugin(new GhostSailorDialogue());
PluginManager.definePlugin(new EctoplasmFillPlugin()); ClassScanner.definePlugin(new EctoplasmFillPlugin());
PluginManager.definePlugin(new GhostDiscipleDialogue()); ClassScanner.definePlugin(new GhostDiscipleDialogue());
PluginManager.definePlugin(new GhostVillagerDialogue()); ClassScanner.definePlugin(new GhostVillagerDialogue());
PluginManager.definePlugin(new GhostInkeeperDialogue()); ClassScanner.definePlugin(new GhostInkeeperDialogue());
return this; return this;
} }

View file

@ -5,9 +5,8 @@ import core.game.content.dialogue.DialoguePlugin;
import core.game.node.entity.npc.NPC; import core.game.node.entity.npc.NPC;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.system.task.LocationLogoutTask;
import core.game.system.task.LogoutTask;
import core.game.system.task.Pulse; import core.game.system.task.Pulse;
import kotlin.Unit;
import rs09.game.world.GameWorld; import rs09.game.world.GameWorld;
import core.game.world.map.Location; import core.game.world.map.Location;
@ -199,7 +198,10 @@ public final class JarvaldDialogue extends DialoguePlugin {
public void sail(final Player player, final boolean to) { public void sail(final Player player, final boolean to) {
player.lock(); player.lock();
player.getInterfaceManager().open(new Component(224)); player.getInterfaceManager().open(new Component(224));
player.addExtension(LogoutTask.class, new LocationLogoutTask(5, to ? Location.create(2544, 3759, 0) : Location.create(2620, 3685, 0))); player.logoutListeners.put("jarvald", player1 -> {
player.setLocation(to ? Location.create(2544, 3759, 0) : Location.create(2620, 3685, 0));
return Unit.INSTANCE;
});
GameWorld.getPulser().submit(new Pulse(1, player) { GameWorld.getPulser().submit(new Pulse(1, player) {
int count; int count;
@ -212,6 +214,7 @@ public final class JarvaldDialogue extends DialoguePlugin {
player.getProperties().setTeleportLocation(to ? Location.create(2544, 3759, 0) : Location.create(2620, 3685, 0)); player.getProperties().setTeleportLocation(to ? Location.create(2544, 3759, 0) : Location.create(2620, 3685, 0));
player.getDialogueInterpreter().close(); player.getDialogueInterpreter().close();
player.getDialogueInterpreter().sendDialogue("The ship arrives at " + (to ? "Waterbirth Island" : "Rellekka") + "."); player.getDialogueInterpreter().sendDialogue("The ship arrives at " + (to ? "Waterbirth Island" : "Rellekka") + ".");
player.logoutListeners.remove("jarvald");
return true; return true;
} }
return false; return false;

View file

@ -1,8 +1,6 @@
package core.game.content.zone.rellekka; package core.game.content.zone.rellekka;
import core.cache.def.impl.SceneryDefinition; import core.cache.def.impl.SceneryDefinition;
import core.game.system.task.LocationLogoutTask;
import core.game.system.task.LogoutTask;
import core.game.system.task.Pulse; import core.game.system.task.Pulse;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.game.node.entity.skill.agility.AgilityHandler; import core.game.node.entity.skill.agility.AgilityHandler;
@ -12,7 +10,6 @@ import core.game.component.Component;
import core.game.node.Node; import core.game.node.Node;
import core.game.node.entity.Entity; import core.game.node.entity.Entity;
import core.game.node.entity.impl.ForceMovement; import core.game.node.entity.impl.ForceMovement;
import core.game.node.entity.npc.NPC;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.scenery.Scenery; import core.game.node.scenery.Scenery;
import core.game.world.map.Location; import core.game.world.map.Location;
@ -21,8 +18,9 @@ import core.game.world.map.zone.ZoneBorders;
import core.game.world.map.zone.ZoneBuilder; import core.game.world.map.zone.ZoneBuilder;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import kotlin.Unit;
import rs09.game.world.GameWorld; import rs09.game.world.GameWorld;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the rellekka zone. * Handles the rellekka zone.
@ -41,9 +39,9 @@ public final class RellekkaZone extends MapZone implements Plugin<Object> {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this); ZoneBuilder.configure(this);
PluginManager.definePlugin(new JarvaldDialogue()); ClassScanner.definePlugin(new JarvaldDialogue());
PluginManager.definePlugins(new RellekaOptionHandler(), new MariaGunnarsDialogue()); ClassScanner.definePlugins(new RellekaOptionHandler(), new MariaGunnarsDialogue());
PluginManager.definePlugin(new OptionHandler() { ClassScanner.definePlugin(new OptionHandler() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
@ -115,7 +113,10 @@ public final class RellekkaZone extends MapZone implements Plugin<Object> {
public static void sail(final Player player, final String name, final Location destination) { public static void sail(final Player player, final String name, final Location destination) {
player.lock(); player.lock();
player.getInterfaceManager().open(new Component(224)); player.getInterfaceManager().open(new Component(224));
player.addExtension(LogoutTask.class, new LocationLogoutTask(5, destination)); player.logoutListeners.put("rellekka-sail", player1 -> {
player1.setLocation(destination);
return Unit.INSTANCE;
});
GameWorld.getPulser().submit(new Pulse(1, player) { GameWorld.getPulser().submit(new Pulse(1, player) {
int count; int count;
@ -127,6 +128,7 @@ public final class RellekkaZone extends MapZone implements Plugin<Object> {
player.getInterfaceManager().close(); player.getInterfaceManager().close();
player.getProperties().setTeleportLocation(destination); player.getProperties().setTeleportLocation(destination);
player.getDialogueInterpreter().sendDialogue("The ship arrives at " + name + "."); player.getDialogueInterpreter().sendDialogue("The ship arrives at " + name + ".");
player.logoutListeners.remove("rellekka-sail");
return true; return true;
} }
return false; return false;

View file

@ -30,7 +30,7 @@ import rs09.game.world.repository.Repository;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the waterbirth dungeon zone. * Handles the waterbirth dungeon zone.
@ -49,10 +49,10 @@ public final class WaterBirthDungeonZone extends MapZone implements Plugin<Objec
*/ */
public WaterBirthDungeonZone() { public WaterBirthDungeonZone() {
super("Water birth dungeon", true, ZoneRestriction.RANDOM_EVENTS); super("Water birth dungeon", true, ZoneRestriction.RANDOM_EVENTS);
PluginManager.definePlugin(new DagannothKingNPC()); ClassScanner.definePlugin(new DagannothKingNPC());
PluginManager.definePlugin(new DoorSupportNPC()); ClassScanner.definePlugin(new DoorSupportNPC());
PluginManager.definePlugin(new DungeonOptionHandler()); ClassScanner.definePlugin(new DungeonOptionHandler());
PluginManager.definePlugin(new SpinolypNPC()); ClassScanner.definePlugin(new SpinolypNPC());
} }
@Override @Override

View file

@ -1,5 +1,7 @@
package core.game.ge; package core.game.ge;
import api.ShutdownListener;
import api.StartupListener;
import rs09.ServerConstants; import rs09.ServerConstants;
import core.cache.def.impl.ItemDefinition; import core.cache.def.impl.ItemDefinition;
import rs09.game.system.SystemLogger; import rs09.game.system.SystemLogger;
@ -19,11 +21,14 @@ import java.io.File;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import static rs09.game.system.SystemLogger.logShutdown;
import static rs09.game.system.SystemLogger.logStartup;
/** /**
* Represents the grand exchange database. * Represents the grand exchange database.
* @author Ceikry * @author Ceikry
*/ */
public final class GrandExchangeDatabase { public final class GrandExchangeDatabase implements StartupListener, ShutdownListener {
/** /**
* The grand exchange database mapping. * The grand exchange database mapping.
@ -51,10 +56,9 @@ public final class GrandExchangeDatabase {
*/ */
private static boolean initialized; private static boolean initialized;
/** @Override
* Initializes the database public void startup() {
*/ logStartup("Parsing Grand Exchange Price Index DB");
public static void init() {
try { try {
File db = new File(ServerConstants.GRAND_EXCHANGE_DATA_PATH + "gedb.xml"); File db = new File(ServerConstants.GRAND_EXCHANGE_DATA_PATH + "gedb.xml");
if(!db.exists()){ if(!db.exists()){
@ -125,6 +129,12 @@ public final class GrandExchangeDatabase {
} }
} }
@Override
public void shutdown() {
logShutdown("Saving Grand Exchange Price Index DB");
save();
}
/** /**
* Dumps the grand exchange database. * Dumps the grand exchange database.
*/ */

View file

@ -13,7 +13,7 @@ import core.game.node.item.Item;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.game.world.map.RegionManager; import core.game.world.map.RegionManager;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles shilo village interactions. * Handles shilo village interactions.
@ -34,7 +34,7 @@ public final class ShiloVillagePlugin extends OptionHandler {
// travel. // travel.
SceneryDefinition.forId(2265).getHandlers().put("option:pay-fare", this);// cart SceneryDefinition.forId(2265).getHandlers().put("option:pay-fare", this);// cart
// travel. // travel.
PluginManager.definePlugin(new VillageCartDialogue()); ClassScanner.definePlugin(new VillageCartDialogue());
return this; return this;
} }

View file

@ -33,7 +33,7 @@ import core.net.packet.context.CameraContext.CameraType;
import core.net.packet.out.CameraViewPacket; import core.net.packet.out.CameraViewPacket;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the plugin used to handle all trollheim node interations. * Represents the plugin used to handle all trollheim node interations.
@ -156,12 +156,12 @@ public final class TrollheimPlugin extends OptionHandler {
// ladder // ladder
SceneryDefinition.forId(18833).getHandlers().put("option:climb-down", this);// stronghold SceneryDefinition.forId(18833).getHandlers().put("option:climb-down", this);// stronghold
// ladder // ladder
PluginManager.definePlugin(new SabaDialogue()); ClassScanner.definePlugin(new SabaDialogue());
PluginManager.definePlugin(new WoundedSoldier()); ClassScanner.definePlugin(new WoundedSoldier());
PluginManager.definePlugin(new WarningZone()); ClassScanner.definePlugin(new WarningZone());
ActivityManager.register(new WarningCutscene()); ActivityManager.register(new WarningCutscene());
PluginManager.definePlugin(new TenzingDialogue()); ClassScanner.definePlugin(new TenzingDialogue());
PluginManager.definePlugin(new TrollNPC()); ClassScanner.definePlugin(new TrollNPC());
return this; return this;
} }

View file

@ -38,7 +38,7 @@ import core.tools.StringUtils;
import kotlin.Unit; import kotlin.Unit;
import rs09.game.content.global.travel.EssenceTeleport; import rs09.game.content.global.travel.EssenceTeleport;
import rs09.game.world.GameWorld; import rs09.game.world.GameWorld;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the plugins used related to the wizard tower. * Represents the plugins used related to the wizard tower.
@ -67,13 +67,13 @@ public final class WizardTowerPlugin extends OptionHandler {
SceneryDefinition.forId(32015).getHandlers().put("option:climb-up", this); SceneryDefinition.forId(32015).getHandlers().put("option:climb-up", this);
NPCDefinition.forId(300).getHandlers().put("option:teleport", this); NPCDefinition.forId(300).getHandlers().put("option:teleport", this);
SceneryDefinition.forId(11993).getHandlers().put("option:open", this); SceneryDefinition.forId(11993).getHandlers().put("option:open", this);
PluginManager.definePlugin(new WizardtowerWizardNPC()); ClassScanner.definePlugin(new WizardtowerWizardNPC());
PluginManager.definePlugin(new WizardTowerDialogue()); ClassScanner.definePlugin(new WizardTowerDialogue());
PluginManager.definePlugin(new WizardMizgogDialogue()); ClassScanner.definePlugin(new WizardMizgogDialogue());
PluginManager.definePlugin(new WizardGrayzagDialogue()); ClassScanner.definePlugin(new WizardGrayzagDialogue());
PluginManager.definePlugin(new WizardDialogue()); ClassScanner.definePlugin(new WizardDialogue());
PluginManager.definePlugin(new SedridorDialogue()); ClassScanner.definePlugin(new SedridorDialogue());
PluginManager.definePlugin(new AuburyDialoguePlugin()); ClassScanner.definePlugin(new AuburyDialoguePlugin());
return this; return this;
} }

View file

@ -13,7 +13,7 @@ import core.game.node.entity.player.link.TeleportManager.TeleportType;
import core.game.node.scenery.Scenery; import core.game.node.scenery.Scenery;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the zanaris city plugin. * Handles the zanaris city plugin.
@ -24,7 +24,7 @@ public final class ZanarisPlugin extends OptionHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new MagicDoorDialogue()); ClassScanner.definePlugin(new MagicDoorDialogue());
SceneryDefinition.forId(12094).getHandlers().put("option:use", this); SceneryDefinition.forId(12094).getHandlers().put("option:use", this);
SceneryDefinition.forId(12045).getHandlers().put("option:open", this); SceneryDefinition.forId(12045).getHandlers().put("option:open", this);
SceneryDefinition.forId(12047).getHandlers().put("option:open", this); SceneryDefinition.forId(12047).getHandlers().put("option:open", this);

View file

@ -13,7 +13,7 @@ import core.game.system.task.Pulse;
import core.game.world.map.Location; import core.game.world.map.Location;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles an orb viewing interface. * Handles an orb viewing interface.
@ -54,7 +54,7 @@ public final class OrbViewingInterface extends ComponentPlugin {
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
ComponentDefinition.put(374, this); ComponentDefinition.put(374, this);
ComponentDefinition.put(649, this); ComponentDefinition.put(649, this);
PluginManager.definePlugin(new OptionHandler() { ClassScanner.definePlugin(new OptionHandler() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
SceneryDefinition.forId(9391).getHandlers().put("option:look-into", this); SceneryDefinition.forId(9391).getHandlers().put("option:look-into", this);

View file

@ -19,7 +19,7 @@ import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.game.node.entity.combat.CombatPulse; import rs09.game.node.entity.combat.CombatPulse;
import rs09.game.world.GameWorld; import rs09.game.world.GameWorld;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -37,7 +37,7 @@ public final class DragonfireShieldPlugin extends OptionHandler {
ItemDefinition.forId(11283).getHandlers().put("option:operate", this); ItemDefinition.forId(11283).getHandlers().put("option:operate", this);
ItemDefinition.forId(11284).getHandlers().put("option:inspect", this); ItemDefinition.forId(11284).getHandlers().put("option:inspect", this);
ItemDefinition.forId(11284).getHandlers().put("option:operate", this); ItemDefinition.forId(11284).getHandlers().put("option:operate", this);
PluginManager.definePlugin(new DFSItemPlugin()); ClassScanner.definePlugin(new DFSItemPlugin());
return this; return this;
} }

View file

@ -17,8 +17,8 @@ import core.game.world.update.flag.context.Graphics
import org.json.simple.JSONObject import org.json.simple.JSONObject
import org.rs09.consts.Items import org.rs09.consts.Items
import rs09.ServerStore import rs09.ServerStore
import rs09.ServerStore.getBoolean import rs09.ServerStore.Companion.getBoolean
import rs09.ServerStore.getInt import rs09.ServerStore.Companion.getInt
import rs09.game.interaction.InteractionListener import rs09.game.interaction.InteractionListener
/** /**

View file

@ -15,7 +15,7 @@ import core.game.node.item.WeightedChanceItem;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
import core.game.content.dialogue.DialogueInterpreter; import core.game.content.dialogue.DialogueInterpreter;
import core.game.content.dialogue.DialoguePlugin; import core.game.content.dialogue.DialoguePlugin;
@ -55,8 +55,8 @@ public class FishbowlPlugin extends OptionHandler {
def.getHandlers().put("option:feed", this); def.getHandlers().put("option:feed", this);
def.getHandlers().put("option:drop", this); def.getHandlers().put("option:drop", this);
} }
PluginManager.definePlugin(new FishbowlDialogue()); ClassScanner.definePlugin(new FishbowlDialogue());
PluginManager.definePlugin(new FeedPetFishHandler()); ClassScanner.definePlugin(new FeedPetFishHandler());
new AquariumPlugin().newInstance(arg); new AquariumPlugin().newInstance(arg);
return this; return this;
} }
@ -220,7 +220,7 @@ public class FishbowlPlugin extends OptionHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
SceneryDefinition.forId(10091).getHandlers().put("option:fish-in", this); SceneryDefinition.forId(10091).getHandlers().put("option:fish-in", this);
PluginManager.definePlugin(new TinyNetHandler()); ClassScanner.definePlugin(new TinyNetHandler());
return this; return this;
} }

View file

@ -1,8 +1,6 @@
package core.game.interaction.item; package core.game.interaction.item;
import core.game.content.dialogue.DialogueAction; import core.game.content.dialogue.DialogueAction;
import core.game.content.dialogue.DialogueInterpreter;
import core.game.content.dialogue.DialoguePlugin;
import core.game.content.global.GodBook; import core.game.content.global.GodBook;
import core.game.node.entity.skill.Skills; import core.game.node.entity.skill.Skills;
import core.game.interaction.NodeUsageEvent; import core.game.interaction.NodeUsageEvent;
@ -13,12 +11,9 @@ import core.game.node.entity.player.Player;
import core.game.node.item.GroundItem; import core.game.node.item.GroundItem;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.node.item.ItemPlugin; import core.game.node.item.ItemPlugin;
import core.game.system.task.Pulse;
import rs09.game.world.GameWorld;
import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the god books. * Handles the god books.
@ -32,7 +27,7 @@ public class GodBookPlugin extends OptionHandler {
for (GodBook book : GodBook.values()) { for (GodBook book : GodBook.values()) {
book.getDamagedBook().getDefinition().getHandlers().put("option:check", this); book.getDamagedBook().getDefinition().getHandlers().put("option:check", this);
} }
PluginManager.definePlugins(new PageHandler(), new GodBookItem(), new SymbolBlessHandler()); ClassScanner.definePlugins(new PageHandler(), new GodBookItem(), new SymbolBlessHandler());
return this; return this;
} }

View file

@ -10,7 +10,7 @@ import core.game.node.item.Item;
import rs09.game.world.GameWorld; import rs09.game.world.GameWorld;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.tools.RandomFunction; import core.tools.RandomFunction;
/** /**
@ -42,7 +42,7 @@ public class MorphItemPlugin implements Plugin<Object> {
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
ItemDefinition.forId(7927).getHandlers().put("equipment", this); ItemDefinition.forId(7927).getHandlers().put("equipment", this);
ItemDefinition.forId(6583).getHandlers().put("equipment", this); ItemDefinition.forId(6583).getHandlers().put("equipment", this);
PluginManager.definePlugin(new MorphInterfacePlugin()); ClassScanner.definePlugin(new MorphInterfacePlugin());
return this; return this;
} }

View file

@ -1,6 +1,5 @@
package core.game.interaction.item.toys; package core.game.interaction.item.toys;
import core.cache.def.impl.ItemDefinition;
import core.game.component.Component; import core.game.component.Component;
import core.game.component.ComponentDefinition; import core.game.component.ComponentDefinition;
import core.game.component.ComponentPlugin; import core.game.component.ComponentPlugin;
@ -13,7 +12,7 @@ import core.game.world.update.flag.context.Animation;
import core.game.world.update.flag.context.Graphics; import core.game.world.update.flag.context.Graphics;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
@Initializable @Initializable
public class SnowGlobePlugin extends OptionHandler { public class SnowGlobePlugin extends OptionHandler {
@ -25,7 +24,7 @@ public class SnowGlobePlugin extends OptionHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new SnowGlobeInterface()); ClassScanner.definePlugin(new SnowGlobeInterface());
return this; return this;
} }

View file

@ -6,7 +6,7 @@ import core.game.node.entity.player.Player;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* The plugin used to dye a dark bow into a more <fashionable> one. * The plugin used to dye a dark bow into a more <fashionable> one.
@ -30,7 +30,7 @@ public final class DarkBowDyePlugin extends UseWithHandler {
addHandler(14797, ITEM_TYPE, this); addHandler(14797, ITEM_TYPE, this);
addHandler(14799, ITEM_TYPE, this); addHandler(14799, ITEM_TYPE, this);
addHandler(14801, ITEM_TYPE, this); addHandler(14801, ITEM_TYPE, this);
PluginManager.definePlugin(new DarkBowCleanPlugin()); ClassScanner.definePlugin(new DarkBowCleanPlugin());
return this; return this;
} }

View file

@ -10,7 +10,7 @@ import core.game.node.Node;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* The plugin used to make the granite maul into the ornamental version. * The plugin used to make the granite maul into the ornamental version.
@ -30,7 +30,7 @@ public final class GraniteMaulPlugin extends UseWithHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new GraniteMaulRevertHandler()); ClassScanner.definePlugin(new GraniteMaulRevertHandler());
addHandler(14793, ITEM_TYPE, this); addHandler(14793, ITEM_TYPE, this);
return this; return this;
} }

View file

@ -7,7 +7,7 @@ import core.game.node.entity.player.Player;
import core.game.node.item.Item; import core.game.node.item.Item;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
import core.plugin.Initializable; import core.plugin.Initializable;
import core.tools.RandomFunction; import core.tools.RandomFunction;
@ -29,7 +29,7 @@ public final class LavaScalePlugin extends UseWithHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
addHandler(233, ITEM_TYPE, this); addHandler(233, ITEM_TYPE, this);
PluginManager.definePlugin(new AntifireMakePlugin()); ClassScanner.definePlugin(new AntifireMakePlugin());
return this; return this;
} }

View file

@ -13,7 +13,7 @@ import core.plugin.Initializable;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.tools.StringUtils; import core.tools.StringUtils;
import rs09.game.node.entity.state.newsys.states.IncubatorState; import rs09.game.node.entity.state.newsys.states.IncubatorState;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the incubator. * Handles the incubator.
@ -24,7 +24,7 @@ public class IncubatorPlugin extends OptionHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new IncubatorEggHandler()); ClassScanner.definePlugin(new IncubatorEggHandler());
SceneryDefinition.forId(28359).getHandlers().put("option:take-egg", this); SceneryDefinition.forId(28359).getHandlers().put("option:take-egg", this);
SceneryDefinition.forId(28359).getHandlers().put("option:inspect", this); SceneryDefinition.forId(28359).getHandlers().put("option:inspect", this);
return this; return this;

View file

@ -14,7 +14,7 @@ import core.game.node.scenery.Scenery;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.game.node.entity.skill.skillcapeperks.SkillcapePerks; import rs09.game.node.entity.skill.skillcapeperks.SkillcapePerks;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Represents the option handler used for smithing. * Represents the option handler used for smithing.
@ -46,7 +46,7 @@ public final class SmithingPlugin extends UseWithHandler {
addHandler(26817, OBJECT_TYPE, this); addHandler(26817, OBJECT_TYPE, this);
addHandler(37622, OBJECT_TYPE, this); addHandler(37622, OBJECT_TYPE, this);
addHandler(42027, OBJECT_TYPE, this); addHandler(42027, OBJECT_TYPE, this);
PluginManager.definePlugin(new OptionHandler() { ClassScanner.definePlugin(new OptionHandler() {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {

View file

@ -10,7 +10,7 @@ import rs09.game.world.repository.Repository;
import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin; import core.plugin.Plugin;
import core.plugin.Initializable; import core.plugin.Initializable;
import rs09.plugin.PluginManager; import rs09.plugin.ClassScanner;
/** /**
* Handles the blessing of Spirit shields. * Handles the blessing of Spirit shields.
@ -29,7 +29,7 @@ public class SpiritShieldBlessPlugin extends UseWithHandler {
@Override @Override
public Plugin<Object> newInstance(Object arg) throws Throwable { public Plugin<Object> newInstance(Object arg) throws Throwable {
addHandler(24343, OBJECT_TYPE, this); addHandler(24343, OBJECT_TYPE, this);
PluginManager.definePlugin(new SpiritShieldMakePlugin()); ClassScanner.definePlugin(new SpiritShieldMakePlugin());
return this; return this;
} }

Some files were not shown because too many files have changed in this diff Show more