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 rs09.game.content.activity.barrows.RewardChest;
import rs09.game.world.GameWorld;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import static api.ContentAPIKt.getWorldTicks;
@ -371,8 +371,8 @@ public final class BarrowsActivityPlugin extends ActivityPlugin {
@Override
public void configure() {
PluginManager.definePlugin(new TunnelEntranceDialogue());
PluginManager.definePlugin(BarrowsPuzzle.SHAPES);
ClassScanner.definePlugin(new TunnelEntranceDialogue());
ClassScanner.definePlugin(BarrowsPuzzle.SHAPES);
registerRegion(14231);
BarrowsCrypt.init();
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.plugin.Initializable;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
import java.util.*;
@ -170,7 +170,7 @@ public final class BountyHunterActivity extends ActivityPlugin {
break;
}
}
PluginManager.definePlugin(new ComponentPlugin() {
ClassScanner.definePlugin(new ComponentPlugin() {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
ComponentDefinition.put(657, this);
@ -194,8 +194,8 @@ public final class BountyHunterActivity extends ActivityPlugin {
});
BHScoreBoard.init();
PluginManager.definePlugin(new BountyLocateSpell());
PluginManager.definePlugin(new BHOptionHandler());
ClassScanner.definePlugin(new BountyLocateSpell());
ClassScanner.definePlugin(new BHOptionHandler());
ActivityManager.register(new BountyHunterActivity(CraterType.MID_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.plugin.Initializable;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Handles the clan wars challenge room.
@ -86,7 +86,7 @@ public final class ClanWarsChallengeRoom extends MapZone implements Plugin<Objec
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this);
PluginManager.definePlugin(new CWChallengeOption());
ClassScanner.definePlugin(new CWChallengeOption());
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.ZoneBuilder;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
/**
@ -141,8 +141,8 @@ public final class DuelArenaActivity extends ActivityPlugin {
}
parseScoreboard();
register(new ZoneBorders(3325, 3201, 3396, 3280));
PluginManager.definePlugin(new DuelArea.ForfeitTrapdoorPlugin());
PluginManager.definePlugins(new DuelSession(null, null, false), new DuelComponentPlugin(), new ChallengeOptionPlugin());
ClassScanner.definePlugin(new DuelArea.ForfeitTrapdoorPlugin());
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.zone.ZoneBorders;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the fist of guthix activity.
@ -50,9 +50,9 @@ public class FOGActivityPlugin extends ActivityPlugin {
@Override
public void configure() {
PluginManager.definePlugin(new FOGLobbyZone());
PluginManager.definePlugin(new FOGWaitingZone());
PluginManager.definePlugin(new OptionHandler() {
ClassScanner.definePlugin(new FOGLobbyZone());
ClassScanner.definePlugin(new FOGWaitingZone());
ClassScanner.definePlugin(new OptionHandler() {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
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.plugin.Plugin;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the hero guild.
@ -28,7 +28,7 @@ public final class HeroGuildPlugin extends OptionHandler {
public Plugin<Object> newInstance(Object arg) throws Throwable {
SceneryDefinition.forId(2624).getHandlers().put("option:open", this);
SceneryDefinition.forId(2625).getHandlers().put("option:open", this);
PluginManager.definePlugin(new JewelleryRechargePlugin());
ClassScanner.definePlugin(new JewelleryRechargePlugin());
return this;
}

View file

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

View file

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

View file

@ -27,7 +27,7 @@ import core.game.world.map.Location;
import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* 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:shut", this);
SceneryDefinition.forId(LEVER).getHandlers().put("option:pull", this);
PluginManager.definePlugin(new DepositInterfaceHandler());
PluginManager.definePlugin(new BalloonManager());
ClassScanner.definePlugin(new DepositInterfaceHandler());
ClassScanner.definePlugin(new BalloonManager());
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.Item;
import core.game.system.task.Pulse;
import rs09.game.ai.AIPlayer;
import rs09.game.world.GameWorld;
import core.game.world.map.Location;
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.ZoneRestriction;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
import core.tools.StringUtils;
import core.game.content.activity.pestcontrol.monsters.*;
@ -220,18 +219,18 @@ public final class PestControlActivityPlugin extends ActivityPlugin {
ActivityManager.register(activities[1]);
ActivityManager.register(activities[2]);
// Load abstract NPC plugins
PluginManager.definePlugin(new PCPortalNPC());
PluginManager.definePlugin(new PCSquireNPC());
PluginManager.definePlugin(new PCTorcherNPC());
PluginManager.definePlugin(new PCDefilerNPC());
PluginManager.definePlugin(new PCRavagerNPC());
PluginManager.definePlugin(new PCShifterNPC());
PluginManager.definePlugin(new PCSplatterNPC());
PluginManager.definePlugin(new PCSpinnerNPC());
PluginManager.definePlugin(new PCBrawlerNPC());
PluginManager.definePlugin(new PCObjectHandler());
PluginManager.definePlugin(new PestControlSquire());
PluginManager.definePlugin(new VoidSealPlugin());
ClassScanner.definePlugin(new PCPortalNPC());
ClassScanner.definePlugin(new PCSquireNPC());
ClassScanner.definePlugin(new PCTorcherNPC());
ClassScanner.definePlugin(new PCDefilerNPC());
ClassScanner.definePlugin(new PCRavagerNPC());
ClassScanner.definePlugin(new PCShifterNPC());
ClassScanner.definePlugin(new PCSplatterNPC());
ClassScanner.definePlugin(new PCSpinnerNPC());
ClassScanner.definePlugin(new PCBrawlerNPC());
ClassScanner.definePlugin(new PCObjectHandler());
ClassScanner.definePlugin(new PestControlSquire());
ClassScanner.definePlugin(new VoidSealPlugin());
ZoneBuilder.configure(new PCLanderZone(activities));
ZoneBuilder.configure(new PCIslandZone());
}

View file

@ -6,7 +6,7 @@ import core.game.node.Node;
import core.game.node.entity.player.Player;
import core.plugin.Initializable;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* 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 }) {
NPCDefinition.forId(id).getHandlers().put("option:exchange", this);
}
PluginManager.definePlugin(new PCRewardInterface());
ClassScanner.definePlugin(new PCRewardInterface());
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.item.Item;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.game.content.activity.puropuro.ElnockInquisitorDialogue.ElnockExchangeInterfaceHandler.ElnockExchange;
@ -188,7 +188,7 @@ public final class ElnockInquisitorDialogue extends DialoguePlugin {
@Override
public void init() {
super.init();
PluginManager.definePlugin(new ElnockExchangeInterfaceHandler());
ClassScanner.definePlugin(new ElnockExchangeInterfaceHandler());
}
@Override

View file

@ -32,7 +32,7 @@ import core.net.packet.PacketRepository;
import core.net.packet.context.MinimapStateContext;
import core.net.packet.out.MinimapState;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
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 {
PULSE.stop();
ZoneBuilder.configure(this);
PluginManager.definePlugin(new FairyAerykaDialogue());
PluginManager.definePlugin(new WanderingImplingDialogue());
PluginManager.definePlugin(new ElnockInquisitorDialogue());
PluginManager.definePlugin(new PuroOptionHandler());
PluginManager.definePlugin(new ImpDefenderNPC());
ClassScanner.definePlugin(new FairyAerykaDialogue());
ClassScanner.definePlugin(new WanderingImplingDialogue());
ClassScanner.definePlugin(new ElnockInquisitorDialogue());
ClassScanner.definePlugin(new PuroOptionHandler());
ClassScanner.definePlugin(new ImpDefenderNPC());
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.scenery.Scenery;
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.zone.MapZone;
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.Plugin;
import core.tools.RandomFunction;
import kotlin.Unit;
import rs09.game.Varp;
import rs09.game.content.activity.pyramidplunder.PlunderSession;
@ -112,12 +111,21 @@ public class PlunderZones implements Plugin<Object> {
if(session != null){
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());
}
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){
Varp varp = player.varpManager.get(822);
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.plugin.Initializable;
import rs09.game.content.activity.pyramidplunder.PlunderSession;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Handles the Pyramid plunder activity.
@ -64,8 +64,8 @@ public final class PyramidPlunderActivity extends ActivityPlugin {
@Override
public void register() {
PluginManager.definePlugin(new GuardMummyDialogue());
PluginManager.definePlugin(new PyramidOptionHandler());
ClassScanner.definePlugin(new GuardMummyDialogue());
ClassScanner.definePlugin(new PyramidOptionHandler());
mummy = NPC.create(4476, Location.create(1968, 4427, 2));
mummy.init();
registerRegion(7749);

View file

@ -13,7 +13,6 @@ import core.game.interaction.OptionHandler;
import core.game.node.Node;
import core.game.node.entity.Entity;
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.scenery.Scenery;
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.update.flag.context.Animation;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.plugin.Initializable;
import core.tools.RandomFunction;
@ -50,13 +49,13 @@ public final class StrongHoldSecurityPlugin extends MapZone implements Plugin<Ob
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this);
PluginManager.definePlugin(new ExplorerDialogue());
PluginManager.definePlugin(new StrongholdDialogue());
PluginManager.definePlugin(new GrainOfPlentyDialogue());
PluginManager.definePlugin(new GiftOfPeaceDialogue());
PluginManager.definePlugin(new CradleOfLifeDialogue());
PluginManager.definePlugin(new BoxOfHealthDialogue());
PluginManager.definePlugin(new OptionHandler() {
ClassScanner.definePlugin(new ExplorerDialogue());
ClassScanner.definePlugin(new StrongholdDialogue());
ClassScanner.definePlugin(new GrainOfPlentyDialogue());
ClassScanner.definePlugin(new GiftOfPeaceDialogue());
ClassScanner.definePlugin(new CradleOfLifeDialogue());
ClassScanner.definePlugin(new BoxOfHealthDialogue());
ClassScanner.definePlugin(new OptionHandler() {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
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.plugin.Initializable;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* @author Tyler Telis
@ -47,10 +47,10 @@ public class StrongHoldOfPlayerSafetyPlugin implements Plugin<Object> {
@Override
public Plugin<Object> newInstance(Object object) throws Throwable {
PluginManager.definePlugin(new PSOptionHandler());
PluginManager.definePlugin(new GuardDialoguePlugin());
PluginManager.definePlugin(new PlayerSafetyTest());
PluginManager.definePlugin(new ProfessorHenryDialogue());
ClassScanner.definePlugin(new PSOptionHandler());
ClassScanner.definePlugin(new GuardDialoguePlugin());
ClassScanner.definePlugin(new PlayerSafetyTest());
ClassScanner.definePlugin(new ProfessorHenryDialogue());
return this;
}

View file

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

View file

@ -119,6 +119,7 @@ public final class AnimatedArmour extends NPC {
int amount = set.getTokenAmount();
GroundItemManager.create(new Item(8851, amount), location, player);
}
player.logoutListeners.remove("animation-room");
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.item.Item;
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 kotlin.Unit;
import rs09.game.world.GameWorld;
import core.game.world.map.Direction;
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) {
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;
}
if (player.getAttribute("animated_set") != null) {
@ -134,7 +133,10 @@ public final class AnimationRoom extends MapZone implements Plugin<Object> {
}
}
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...");
spawn = true;
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);
return false;
}
player.removeExtension(LogoutTask.class);
player.getInterfaceManager().closeChatbox();
NPC npc = new AnimatedArmour(player, object.getLocation(), set);
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.plugin.Initializable;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
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 {
ZoneBuilder.configure(this);
pulse.stop();
PluginManager.definePlugin(new OptionHandler() {
ClassScanner.definePlugin(new OptionHandler() {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
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.update.flag.context.Animation;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.plugin.Initializable;
import core.tools.RandomFunction;
@ -164,7 +164,7 @@ public final class CatapultRoom extends MapZone implements Plugin<Object> {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this);
PluginManager.definePlugin(new OptionHandler() {
ClassScanner.definePlugin(new OptionHandler() {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
ItemDefinition.forId(SHIELD_ID).getHandlers().put("option:wield", this);
@ -195,7 +195,7 @@ public final class CatapultRoom extends MapZone implements Plugin<Object> {
return true;
}
});
PluginManager.definePlugin(new ComponentPlugin() {
ClassScanner.definePlugin(new ComponentPlugin() {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
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.ZoneRestriction;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
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 {
ZoneBuilder.configure(this);
PULSE.stop();
PluginManager.definePlugin(new KamfreenaDial());
PluginManager.definePlugin(new OptionHandler() {
ClassScanner.definePlugin(new KamfreenaDial());
ClassScanner.definePlugin(new OptionHandler() {
@Override
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.update.flag.context.Animation;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
/**
@ -33,7 +33,7 @@ import core.tools.RandomFunction;
public final class ShotPutRoom extends DialoguePlugin {
static {
PluginManager.definePlugin(new OptionHandler() {
ClassScanner.definePlugin(new OptionHandler() {
@Override
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.out.CameraViewPacket;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the draynor bank robbery cutscene plugin.
@ -228,7 +228,7 @@ public final class DBRCutscenePlugin extends CutscenePlugin {
} catch (Throwable e) {
e.printStackTrace();
}
PluginManager.definePlugin(new BluePhatItem());
ClassScanner.definePlugin(new BluePhatItem());
}
@Override

View file

@ -14,7 +14,7 @@ import core.net.packet.context.CameraContext;
import core.net.packet.context.CameraContext.CameraType;
import core.net.packet.out.CameraViewPacket;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the romeo and juliet cutscene plugin.
@ -35,7 +35,7 @@ public final class JulietCutscenePlugin extends CutscenePlugin {
*/
public JulietCutscenePlugin() {
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.entity.player.Player;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the jiminua dialogue plugin.
@ -38,7 +38,7 @@ public final class JiminuaDialogue extends DialoguePlugin {
@Override
public DialoguePlugin newInstance(Player player) {
PluginManager.definePlugin(new JiminuaUnnoteHandler());
ClassScanner.definePlugin(new JiminuaUnnoteHandler());
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.plugin.Plugin;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the dialogue used for martin thwait.
@ -161,7 +161,7 @@ public final class MartinThwaitDialogue extends DialoguePlugin {
@Override
public void init() {
PluginManager.definePlugin(new OptionHandler() {
ClassScanner.definePlugin(new OptionHandler() {
@Override
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.game.node.entity.player.Player;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
/**
@ -67,7 +67,7 @@ public class RomilyWeaklaxDialogue extends DialoguePlugin {
@Override
public void init() {
super.init();
PluginManager.definePlugin(new RomilyWildPieHandler());
ClassScanner.definePlugin(new RomilyWildPieHandler());
}
@Override

View file

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

View file

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

View file

@ -8,7 +8,7 @@ import core.game.interaction.OptionHandler;
import core.game.node.Node;
import core.game.node.entity.player.Player;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.plugin.PluginManifest;
@PluginManifest(name="ShootingStars")
@ -24,7 +24,7 @@ public class StarChartPlugin extends ComponentPlugin {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new StarChartOptions());
ClassScanner.definePlugin(new StarChartOptions());
ComponentDefinition.forId(iface.getId()).setPlugin(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.Graphics;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
/**
@ -101,7 +101,7 @@ public class ChristmasEvent extends HolidayEvent {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
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);
}
@ -417,7 +417,7 @@ public class ChristmasEvent extends HolidayEvent {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
addHandler(28295, OBJECT_TYPE, this);
PluginManager.definePlugin(new SnowmanDialogue());
ClassScanner.definePlugin(new SnowmanDialogue());
return this;
}

View file

@ -23,7 +23,7 @@ import core.game.world.map.Location;
import rs09.game.world.repository.Repository;
import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.plugin.Initializable;
import core.tools.RandomFunction;
@ -75,7 +75,7 @@ public class BasketofEggsEvent extends HolidayEvent {
*/
public BasketofEggsEvent() {
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

View file

@ -7,7 +7,7 @@ import core.game.node.item.GroundItemManager;
import core.game.node.item.Item;
import core.game.world.map.Location;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the ernest the chicken quest.
@ -45,7 +45,7 @@ public final class ErnestTheChicken extends Quest {
@Override
public Quest newInstance(Object object) {
PluginManager.definePlugins(new ErnestNPC(), new ErnestChickenNPC());
ClassScanner.definePlugins(new ErnestNPC(), new ErnestChickenNPC());
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.item.Item;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the black knights fortress quest.
@ -28,7 +28,7 @@ public final class BlackKnightsFortress extends Quest {
@Override
public Quest newInstance(Object object) {
PluginManager.definePlugins(new BKCabbagePlugin(), new BKFortressPlugin(), new SirAmikVarzeDialogue());
ClassScanner.definePlugins(new BKCabbagePlugin(), new BKFortressPlugin(), new SirAmikVarzeDialogue());
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.link.quest.Quest;
import core.game.node.item.Item;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the demon slayer quest.
@ -55,7 +55,7 @@ public class DemonSlayer extends Quest {
@Override
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;
}

View file

@ -15,7 +15,7 @@ import core.plugin.Initializable;
import rs09.game.content.dialogue.region.lumbridge.DukeHoracioDialogue;
import rs09.game.content.quest.free.dragonslayer.NedDialogue;
import rs09.game.world.GameWorld;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the dragon slayer quest.
@ -119,7 +119,7 @@ public final class DragonSlayer extends Quest {
@Override
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;
}

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

View file

@ -12,7 +12,7 @@ import core.game.node.item.Item;
import core.game.node.scenery.Scenery;
import rs09.game.world.GameWorld;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.StringUtils;
/**
@ -42,7 +42,7 @@ public final class GoblinDiplomacyPlugin extends OptionHandler {
for (GoblinMailPlugin.GoblinMail mail : GoblinMailPlugin.GoblinMail.values()) {
ItemDefinition.forId(mail.getProduct().getId()).getHandlers().put("option:wear", this);
}
PluginManager.definePlugin(new GoblinMailPlugin());
ClassScanner.definePlugin(new GoblinMailPlugin());
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.Item;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the pirates treasure quest.
@ -55,7 +55,7 @@ public final class PiratesTreasure extends Quest {
@Override
public Quest newInstance(Object object) {
PluginManager.definePlugin(new PiratesTreasurePlugin());
ClassScanner.definePlugin(new PiratesTreasurePlugin());
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.Item;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the prince ali rescue quest.
@ -49,7 +49,7 @@ public class PrinceAliRescue extends Quest {
@Override
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;
}

View file

@ -5,7 +5,7 @@ import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item;
import core.plugin.Initializable;
import rs09.game.content.dialogue.region.varrock.KingRoaldDialogue;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the shield of arrav quest.
@ -59,7 +59,7 @@ public class ShieldofArrav extends Quest {
@Override
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;
}

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.item.Item;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the restless ghost quest.
@ -35,7 +35,7 @@ public class RestlessGhost extends Quest {
@Override
public Quest newInstance(Object object) {
PluginManager.definePlugin(new OldCronDialogue());
ClassScanner.definePlugin(new OldCronDialogue());
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.CameraType;
import core.net.packet.out.CameraViewPacket;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Handles the husband of alice's npc dialogue.
@ -64,7 +64,7 @@ public final class AliceHusbandDialogue extends DialoguePlugin {
@Override
public void init() {
super.init();
PluginManager.definePlugin(new ChickenCatchScene());
ClassScanner.definePlugin(new ChickenCatchScene());
}
@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.link.quest.Quest;
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.HammerMagnetPlugin;
@ -108,16 +108,16 @@ public final class AnimalMagnetism extends Quest {
@Override
public Quest newInstance(Object object) {
PluginManager.definePlugin(new AvaDialogue());
PluginManager.definePlugin(new AliceDialogue());
PluginManager.definePlugin(new WitchDialogue());
PluginManager.definePlugin(new ContainerHandler());
PluginManager.definePlugin(new UndeadTreePlugin());
PluginManager.definePlugin(new AvasDevicePlugin());
PluginManager.definePlugin(new HammerMagnetPlugin());
PluginManager.definePlugin(new ResearchNoteHandler());
PluginManager.definePlugin(new AliceHusbandDialogue());
PluginManager.definePlugin(new AnimalMagnetismPlugin());
ClassScanner.definePlugin(new AvaDialogue());
ClassScanner.definePlugin(new AliceDialogue());
ClassScanner.definePlugin(new WitchDialogue());
ClassScanner.definePlugin(new ContainerHandler());
ClassScanner.definePlugin(new UndeadTreePlugin());
ClassScanner.definePlugin(new AvasDevicePlugin());
ClassScanner.definePlugin(new HammerMagnetPlugin());
ClassScanner.definePlugin(new ResearchNoteHandler());
ClassScanner.definePlugin(new AliceHusbandDialogue());
ClassScanner.definePlugin(new AnimalMagnetismPlugin());
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.update.flag.context.Animation;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
/**
@ -219,7 +219,7 @@ public final class AnimalMagnetismPlugin extends OptionHandler {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new OptionHandler() {
ClassScanner.definePlugin(new OptionHandler() {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
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.plugin.Plugin;
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.
@ -19,7 +19,7 @@ public final class AvasDevicePlugin implements Plugin<Object> {
public Plugin<Object> newInstance(Object arg) throws Throwable {
AnimalMagnetism.AVAS_ACCUMULATOR.getDefinition().getHandlers().put("equipment", this);
AnimalMagnetism.AVAS_ATTRACTOR.getDefinition().getHandlers().put("equipment", this);
PluginManager.definePlugin(new DisableDevicePlugin());
ClassScanner.definePlugin(new DisableDevicePlugin());
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.item.Item;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.game.node.entity.skill.Skills;
/**
@ -48,11 +48,11 @@ public class DwarfCannon extends Quest {
@Override
public Quest newInstance(Object object) {
PluginManager.definePlugin(new LollkDialogue());
PluginManager.definePlugin(new NulodionDialogue());
PluginManager.definePlugin(new CaptainLawgofNPC());
PluginManager.definePlugin(new CaptainLawgofDialogue());
PluginManager.definePlugin(new DwarfCannonPlugin());
ClassScanner.definePlugin(new LollkDialogue());
ClassScanner.definePlugin(new NulodionDialogue());
ClassScanner.definePlugin(new CaptainLawgofNPC());
ClassScanner.definePlugin(new CaptainLawgofDialogue());
ClassScanner.definePlugin(new DwarfCannonPlugin());
return this;
}

View file

@ -9,7 +9,7 @@ import core.game.node.scenery.Scenery;
import core.game.node.scenery.SceneryBuilder;
import core.game.system.task.Pulse;
import core.game.world.update.flag.context.Animation;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
import core.tools.StringUtils;
@ -37,9 +37,9 @@ public final class JunglePotion extends Quest {
@Override
public Quest newInstance(Object object) {
PluginManager.definePlugin(new TrufitusDialogue());
PluginManager.definePlugin(new JogreCavernDialogue());
PluginManager.definePlugin(new JunglePotionPlugin());
ClassScanner.definePlugin(new TrufitusDialogue());
ClassScanner.definePlugin(new JogreCavernDialogue());
ClassScanner.definePlugin(new JunglePotionPlugin());
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.item.Item;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* The main type for the lost city Quest.
@ -93,11 +93,11 @@ public class LostCity extends Quest {
@Override
public Quest newInstance(Object object) {
PluginManager.definePlugin(new LostCityPlugin());
PluginManager.definePlugin(new TreeSpiritNPC());
PluginManager.definePlugin(new ShamusDialogue());
PluginManager.definePlugin(new WarriorDialogue());
PluginManager.definePlugin(new DramenStaffPlugin());
ClassScanner.definePlugin(new LostCityPlugin());
ClassScanner.definePlugin(new TreeSpiritNPC());
ClassScanner.definePlugin(new ShamusDialogue());
ClassScanner.definePlugin(new WarriorDialogue());
ClassScanner.definePlugin(new DramenStaffPlugin());
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.plugin.Plugin;
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.
@ -45,7 +45,7 @@ public final class CandleMakerDialogue extends DialoguePlugin {
@Override
public void init() {
super.init();
PluginManager.definePlugin(new OptionHandler() {
ClassScanner.definePlugin(new OptionHandler() {
@Override
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.plugin.Initializable;
import rs09.game.content.quest.members.merlinsquest.TheLadyOfTheLake;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the merlin's crystal quest.
@ -77,7 +77,7 @@ public final class MerlinCrystal extends Quest {
@Override
public Quest newInstance(Object object) {
PluginManager.definePlugins(new CrateCutscenePlugin(),
ClassScanner.definePlugins(new CrateCutscenePlugin(),
new MerlinCrystalPlugin(),
new ArheinShopDialogue(),
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.Graphics;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Handles the Merlin's Crystal Dialogue/Interactions.
@ -59,8 +59,8 @@ public final class MerlinCrystalPlugin extends OptionHandler {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new MerlinCrystalDialogue());
PluginManager.definePlugin(new MerlinCrystalItemHandler());
ClassScanner.definePlugin(new MerlinCrystalDialogue());
ClassScanner.definePlugin(new MerlinCrystalItemHandler());
SceneryDefinition.forId(63).getHandlers().put("option:hide-in", this);
SceneryDefinition.forId(40026).getHandlers().put("option:climb-up", 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.world.map.Location;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* The level 84 Moss Giant in Glarial's tomb.
@ -57,7 +57,7 @@ public final class MossGiantGuardianNPC extends AbstractNPC {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new OptionHandler() {
ClassScanner.definePlugin(new OptionHandler() {
@Override
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.item.Item;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* The Roving Elves quest.
@ -94,11 +94,11 @@ public class RovingElves extends Quest {
@Override
public Quest newInstance(Object object) {
PluginManager.definePlugin(new RovingElvesPlugin());
PluginManager.definePlugin(new RovingElvesObstacles());
PluginManager.definePlugin(new ElunedDialogue());
PluginManager.definePlugin(new IslwynDialogue());
PluginManager.definePlugin(new MossGiantGuardianNPC());
ClassScanner.definePlugin(new RovingElvesPlugin());
ClassScanner.definePlugin(new RovingElvesObstacles());
ClassScanner.definePlugin(new ElunedDialogue());
ClassScanner.definePlugin(new IslwynDialogue());
ClassScanner.definePlugin(new MossGiantGuardianNPC());
return this;
}

View file

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

View file

@ -11,7 +11,7 @@ import core.game.system.task.Pulse;
import rs09.game.world.GameWorld;
import core.game.world.map.Location;
import core.game.world.map.RegionManager;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
/**
@ -51,7 +51,7 @@ public final class DesertGuardDialogue extends DialoguePlugin {
@Override
public void init() {
super.init();
PluginManager.definePlugin(new DesertGuardNPC());
ClassScanner.definePlugin(new DesertGuardNPC());
}
@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.link.quest.Quest;
import core.game.world.map.Location;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Represents the mercenary captain dialogue plugin.
@ -46,7 +46,7 @@ public final class MercenaryCaptainDialogue extends DialoguePlugin {
@Override
public void init() {
super.init();
PluginManager.definePlugin(new MercenaryCaptain());
ClassScanner.definePlugin(new MercenaryCaptain());
}
@Override

View file

@ -11,7 +11,7 @@ import core.game.node.item.GroundItemManager;
import core.game.node.item.Item;
import core.game.world.map.Location;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
/**
@ -65,7 +65,7 @@ public final class RowdySlaveNPC extends AbstractNPC {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new OptionHandler() {
ClassScanner.definePlugin(new OptionHandler() {
@Override
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.zone.ZoneBorders;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* The main type for the tourist trap quest.
@ -116,7 +116,7 @@ public final class TouristTrap extends Quest {
@Override
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;
}

View file

@ -32,7 +32,7 @@ import core.game.world.map.RegionManager;
import core.game.world.map.build.DynamicRegion;
import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
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.ANNA_BARREL.getDefinition().getHandlers().put("option:look", this);
TouristTrap.ANNA_BARREL.getDefinition().getHandlers().put("option:drop", this);
PluginManager.definePlugin(new BedabinKeyHandler());
PluginManager.definePlugin(new BedabinAnvilHandler());
PluginManager.definePlugin(new BarrelDialogue());
PluginManager.definePlugin(new WinchDialogue());
PluginManager.definePlugin(new MineCartDialogue());
PluginManager.definePlugin(new AnnaCartHandler());
PluginManager.definePlugin(new AnnaCartCutscene());
PluginManager.definePlugin(new AnnaWinchHandler());
PluginManager.definePlugin(new WinchCutscene());
PluginManager.definePlugin(new CartDialogue());
ClassScanner.definePlugin(new BedabinKeyHandler());
ClassScanner.definePlugin(new BedabinAnvilHandler());
ClassScanner.definePlugin(new BarrelDialogue());
ClassScanner.definePlugin(new WinchDialogue());
ClassScanner.definePlugin(new MineCartDialogue());
ClassScanner.definePlugin(new AnnaCartHandler());
ClassScanner.definePlugin(new AnnaCartCutscene());
ClassScanner.definePlugin(new AnnaWinchHandler());
ClassScanner.definePlugin(new WinchCutscene());
ClassScanner.definePlugin(new CartDialogue());
return this;
}
@ -963,7 +963,7 @@ public final class TouristTrapPlugin extends OptionHandler {
@Override
public void init() {
super.init();
PluginManager.definePlugin(new MiningCartCutscene());
ClassScanner.definePlugin(new MiningCartCutscene());
}
@Override
@ -1386,8 +1386,8 @@ public final class TouristTrapPlugin extends OptionHandler {
@Override
public Plugin<Object> newInstance(Object arg) {
addHandler(2672, OBJECT_TYPE, this);
PluginManager.definePlugin(new PrototypeDartHandler());
PluginManager.definePlugin(new BedabinAnvilDialogue());
ClassScanner.definePlugin(new PrototypeDartHandler());
ClassScanner.definePlugin(new BedabinAnvilDialogue());
return this;
}
@ -1459,7 +1459,7 @@ public final class TouristTrapPlugin extends OptionHandler {
@Override
public Plugin<Object> newInstance(Object arg) {
addHandler(TouristTrap.PROTOTYPE_DART_TIP.getId(), ITEM_TYPE, this);
PluginManager.definePlugin(new ProtoTypeDialogue());
ClassScanner.definePlugin(new ProtoTypeDialogue());
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.link.quest.Quest;
import core.game.node.item.Item;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* The main type for the waterfall quest.
@ -84,7 +84,7 @@ public class WaterFall extends Quest {
@Override
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;
}

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.scenery.Scenery;
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.world.map.Location;
import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import kotlin.Unit;
import rs09.plugin.ClassScanner;
/**
* Master plugin file for the Waterfall quest.
@ -101,7 +100,7 @@ public final class WaterfallPlugin extends OptionHandler {
@Override
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);
SceneryDefinition.forId(1987).getHandlers().put("option:board", this);
SceneryDefinition.forId(2020).getHandlers().put("option:climb", this);
@ -276,7 +275,10 @@ public final class WaterfallPlugin extends OptionHandler {
break;
case 10283:
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.lock(6);
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() {
player.getPacketDispatch().sendMessage("You are washed downstream but feel lucky to be alive.");
player.teleport(new Location(2527, 3413));
player.logoutListeners.remove("waterfall");
return true;
}
});
@ -431,7 +434,10 @@ public final class WaterfallPlugin extends OptionHandler {
if (SWIMMERS.size() == 0 || ROPES.size() == 0) {
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) {
@Override
public boolean pulse() {
@ -443,6 +449,7 @@ public final class WaterfallPlugin extends OptionHandler {
player.teleport(new Location(2513, 3468));
player.faceLocation(new Location(2512, 3468, 0));
player.animate(Animation.create(780));
player.logoutListeners.remove("waterfall");
return true;
}

View file

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

View file

@ -16,7 +16,7 @@ import core.game.node.scenery.Scenery;
import core.game.world.map.Location;
import core.plugin.Initializable;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
/**
@ -169,8 +169,8 @@ public class WitchsHousePlugin extends OptionHandler {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new WitchsHouseUseWithHandler());
PluginManager.definePlugin(new MouseNPC());
ClassScanner.definePlugin(new WitchsHouseUseWithHandler());
ClassScanner.definePlugin(new MouseNPC());
SceneryDefinition.forId(2867).getHandlers().put("option:look-under", this);
SceneryDefinition.forId(2861).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.world.map.Location;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Handles the hunt for surok mini quest.
@ -17,10 +17,10 @@ public class HuntForSurokPlugin extends OptionHandler {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new DakhThoulanAegisDialogue());
PluginManager.definePlugin(new MishkalunDornDialogue());
PluginManager.definePlugin(new SilasDahcsnuDialogue());
PluginManager.definePlugin(new SurokMagisDialogue());
ClassScanner.definePlugin(new DakhThoulanAegisDialogue());
ClassScanner.definePlugin(new MishkalunDornDialogue());
ClassScanner.definePlugin(new SilasDahcsnuDialogue());
ClassScanner.definePlugin(new SurokMagisDialogue());
SceneryDefinition.forId(28780).getHandlers().put("option:use", 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.world.map.zone.ZoneBorders;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* 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("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)));
PluginManager.definePlugin(new UriNPC());
ClassScanner.definePlugin(new UriNPC());
return this;
}

View file

@ -17,8 +17,7 @@ import core.game.world.map.Location;
import core.game.world.update.flag.context.Animation;
import core.plugin.Initializable;
import core.plugin.Plugin;
import rs09.game.system.config.NPCConfigParser;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* 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(CoordinateClueScroll.SEXTANT.getId()).getHandlers().put("option:look through", this);
PluginManager.definePlugin(new MapCluePlugin());
PluginManager.definePlugin(new ClueItemPlugin());
PluginManager.definePlugin(new EmoteCluePlugin());
PluginManager.definePlugin(new TTrailOptionHandler());
PluginManager.definePlugin(new SextantComponentPlugin());
PluginManager.definePlugin(new CoordinateCluePlugin());
PluginManager.definePlugin(new SaradominWizardNPC());
PluginManager.definePlugin(new ZamorakWizardNPC());
ClassScanner.definePlugin(new MapCluePlugin());
ClassScanner.definePlugin(new ClueItemPlugin());
ClassScanner.definePlugin(new EmoteCluePlugin());
ClassScanner.definePlugin(new TTrailOptionHandler());
ClassScanner.definePlugin(new SextantComponentPlugin());
ClassScanner.definePlugin(new CoordinateCluePlugin());
ClassScanner.definePlugin(new SaradominWizardNPC());
ClassScanner.definePlugin(new ZamorakWizardNPC());
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.RegionManager;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
/**
@ -120,7 +120,7 @@ public final class UriNPC extends AbstractNPC {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new UriDialogue());
ClassScanner.definePlugin(new UriDialogue());
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.plugin.Initializable;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
/**
@ -59,7 +59,7 @@ public final class ChaosTunnelZone extends MapZone implements Plugin<Object> {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this);
PluginManager.definePlugin(new OptionHandler() {
ClassScanner.definePlugin(new OptionHandler() {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
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.plugin.Initializable;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import java.util.ArrayList;
import java.util.List;
@ -54,7 +54,7 @@ public class WildernessAreaZone extends MapZone implements Plugin<Object> {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
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;
}

View file

@ -8,7 +8,7 @@ import core.game.world.map.zone.MapZone;
import core.game.world.map.zone.ZoneBuilder;
import core.plugin.Plugin;
import core.plugin.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Handles the neitiznot zone.
@ -27,7 +27,7 @@ public class NeitiznotZone extends MapZone implements Plugin<Object> {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
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;
}

View file

@ -5,7 +5,7 @@ import core.game.node.entity.npc.AbstractNPC;
import core.game.node.entity.player.Player;
import core.game.world.map.Location;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
/**
@ -50,7 +50,7 @@ public final class GravingasNPC extends AbstractNPC {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new GravingasDialogue());
ClassScanner.definePlugin(new GravingasDialogue());
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.plugin.Initializable;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Handles the phasmatyz zone area.
@ -48,13 +48,13 @@ public final class PhasmatysZone extends MapZone implements Plugin<Object> {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this);
PluginManager.definePlugin(new GravingasNPC());
PluginManager.definePlugin(new NecrovarusDialogue());
PluginManager.definePlugin(new GhostSailorDialogue());
PluginManager.definePlugin(new EctoplasmFillPlugin());
PluginManager.definePlugin(new GhostDiscipleDialogue());
PluginManager.definePlugin(new GhostVillagerDialogue());
PluginManager.definePlugin(new GhostInkeeperDialogue());
ClassScanner.definePlugin(new GravingasNPC());
ClassScanner.definePlugin(new NecrovarusDialogue());
ClassScanner.definePlugin(new GhostSailorDialogue());
ClassScanner.definePlugin(new EctoplasmFillPlugin());
ClassScanner.definePlugin(new GhostDiscipleDialogue());
ClassScanner.definePlugin(new GhostVillagerDialogue());
ClassScanner.definePlugin(new GhostInkeeperDialogue());
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.player.Player;
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 kotlin.Unit;
import rs09.game.world.GameWorld;
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) {
player.lock();
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) {
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.getDialogueInterpreter().close();
player.getDialogueInterpreter().sendDialogue("The ship arrives at " + (to ? "Waterbirth Island" : "Rellekka") + ".");
player.logoutListeners.remove("jarvald");
return true;
}
return false;

View file

@ -1,8 +1,6 @@
package core.game.content.zone.rellekka;
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.plugin.Initializable;
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.entity.Entity;
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.scenery.Scenery;
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.update.flag.context.Animation;
import core.plugin.Plugin;
import kotlin.Unit;
import rs09.game.world.GameWorld;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Handles the rellekka zone.
@ -41,9 +39,9 @@ public final class RellekkaZone extends MapZone implements Plugin<Object> {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
ZoneBuilder.configure(this);
PluginManager.definePlugin(new JarvaldDialogue());
PluginManager.definePlugins(new RellekaOptionHandler(), new MariaGunnarsDialogue());
PluginManager.definePlugin(new OptionHandler() {
ClassScanner.definePlugin(new JarvaldDialogue());
ClassScanner.definePlugins(new RellekaOptionHandler(), new MariaGunnarsDialogue());
ClassScanner.definePlugin(new OptionHandler() {
@Override
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) {
player.lock();
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) {
int count;
@ -127,6 +128,7 @@ public final class RellekkaZone extends MapZone implements Plugin<Object> {
player.getInterfaceManager().close();
player.getProperties().setTeleportLocation(destination);
player.getDialogueInterpreter().sendDialogue("The ship arrives at " + name + ".");
player.logoutListeners.remove("rellekka-sail");
return true;
}
return false;

View file

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

View file

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

View file

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

View file

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

View file

@ -38,7 +38,7 @@ import core.tools.StringUtils;
import kotlin.Unit;
import rs09.game.content.global.travel.EssenceTeleport;
import rs09.game.world.GameWorld;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* 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);
NPCDefinition.forId(300).getHandlers().put("option:teleport", this);
SceneryDefinition.forId(11993).getHandlers().put("option:open", this);
PluginManager.definePlugin(new WizardtowerWizardNPC());
PluginManager.definePlugin(new WizardTowerDialogue());
PluginManager.definePlugin(new WizardMizgogDialogue());
PluginManager.definePlugin(new WizardGrayzagDialogue());
PluginManager.definePlugin(new WizardDialogue());
PluginManager.definePlugin(new SedridorDialogue());
PluginManager.definePlugin(new AuburyDialoguePlugin());
ClassScanner.definePlugin(new WizardtowerWizardNPC());
ClassScanner.definePlugin(new WizardTowerDialogue());
ClassScanner.definePlugin(new WizardMizgogDialogue());
ClassScanner.definePlugin(new WizardGrayzagDialogue());
ClassScanner.definePlugin(new WizardDialogue());
ClassScanner.definePlugin(new SedridorDialogue());
ClassScanner.definePlugin(new AuburyDialoguePlugin());
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.world.map.Location;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Handles the zanaris city plugin.
@ -24,7 +24,7 @@ public final class ZanarisPlugin extends OptionHandler {
@Override
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(12045).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.plugin.Initializable;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Handles an orb viewing interface.
@ -54,7 +54,7 @@ public final class OrbViewingInterface extends ComponentPlugin {
public Plugin<Object> newInstance(Object arg) throws Throwable {
ComponentDefinition.put(374, this);
ComponentDefinition.put(649, this);
PluginManager.definePlugin(new OptionHandler() {
ClassScanner.definePlugin(new OptionHandler() {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
SceneryDefinition.forId(9391).getHandlers().put("option:look-into", this);

View file

@ -19,7 +19,7 @@ import core.plugin.Initializable;
import core.plugin.Plugin;
import rs09.game.node.entity.combat.CombatPulse;
import rs09.game.world.GameWorld;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
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(11284).getHandlers().put("option:inspect", this);
ItemDefinition.forId(11284).getHandlers().put("option:operate", this);
PluginManager.definePlugin(new DFSItemPlugin());
ClassScanner.definePlugin(new DFSItemPlugin());
return this;
}

View file

@ -17,8 +17,8 @@ import core.game.world.update.flag.context.Graphics
import org.json.simple.JSONObject
import org.rs09.consts.Items
import rs09.ServerStore
import rs09.ServerStore.getBoolean
import rs09.ServerStore.getInt
import rs09.ServerStore.Companion.getBoolean
import rs09.ServerStore.Companion.getInt
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.plugin.Initializable;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.tools.RandomFunction;
import core.game.content.dialogue.DialogueInterpreter;
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:drop", this);
}
PluginManager.definePlugin(new FishbowlDialogue());
PluginManager.definePlugin(new FeedPetFishHandler());
ClassScanner.definePlugin(new FishbowlDialogue());
ClassScanner.definePlugin(new FeedPetFishHandler());
new AquariumPlugin().newInstance(arg);
return this;
}
@ -220,7 +220,7 @@ public class FishbowlPlugin extends OptionHandler {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
SceneryDefinition.forId(10091).getHandlers().put("option:fish-in", this);
PluginManager.definePlugin(new TinyNetHandler());
ClassScanner.definePlugin(new TinyNetHandler());
return this;
}

View file

@ -1,8 +1,6 @@
package core.game.interaction.item;
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.node.entity.skill.Skills;
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.Item;
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.Initializable;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Handles the god books.
@ -32,7 +27,7 @@ public class GodBookPlugin extends OptionHandler {
for (GodBook book : GodBook.values()) {
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;
}

View file

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

View file

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

View file

@ -6,7 +6,7 @@ import core.game.node.entity.player.Player;
import core.game.node.item.Item;
import core.plugin.Plugin;
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.
@ -30,7 +30,7 @@ public final class DarkBowDyePlugin extends UseWithHandler {
addHandler(14797, ITEM_TYPE, this);
addHandler(14799, ITEM_TYPE, this);
addHandler(14801, ITEM_TYPE, this);
PluginManager.definePlugin(new DarkBowCleanPlugin());
ClassScanner.definePlugin(new DarkBowCleanPlugin());
return this;
}

View file

@ -10,7 +10,7 @@ import core.game.node.Node;
import core.game.node.entity.player.Player;
import core.game.node.item.Item;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* The plugin used to make the granite maul into the ornamental version.
@ -30,7 +30,7 @@ public final class GraniteMaulPlugin extends UseWithHandler {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
PluginManager.definePlugin(new GraniteMaulRevertHandler());
ClassScanner.definePlugin(new GraniteMaulRevertHandler());
addHandler(14793, ITEM_TYPE, 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.world.update.flag.context.Animation;
import core.plugin.Plugin;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
import core.plugin.Initializable;
import core.tools.RandomFunction;
@ -29,7 +29,7 @@ public final class LavaScalePlugin extends UseWithHandler {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
addHandler(233, ITEM_TYPE, this);
PluginManager.definePlugin(new AntifireMakePlugin());
ClassScanner.definePlugin(new AntifireMakePlugin());
return this;
}

View file

@ -13,7 +13,7 @@ import core.plugin.Initializable;
import core.plugin.Plugin;
import core.tools.StringUtils;
import rs09.game.node.entity.state.newsys.states.IncubatorState;
import rs09.plugin.PluginManager;
import rs09.plugin.ClassScanner;
/**
* Handles the incubator.
@ -24,7 +24,7 @@ public class IncubatorPlugin extends OptionHandler {
@Override
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:inspect", this);
return this;

View file

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

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