From 29b76c0c4c13465804e6bc002b75d7492f91e311 Mon Sep 17 00:00:00 2001 From: Byte Date: Sat, 22 Oct 2022 04:39:47 +0000 Subject: [PATCH] Updated ChestKey plugin to listener (applies to Pirate Treasure chest key being used on chest in Blue Moon Inn) --- .../item/withitem/ChestKeyPlugin.java | 56 ------------------- .../item/withobject/ChestKeyListener.kt | 35 ++++++++++++ 2 files changed, 35 insertions(+), 56 deletions(-) delete mode 100644 Server/src/main/java/core/game/interaction/item/withitem/ChestKeyPlugin.java create mode 100644 Server/src/main/kotlin/rs09/game/interaction/item/withobject/ChestKeyListener.kt diff --git a/Server/src/main/java/core/game/interaction/item/withitem/ChestKeyPlugin.java b/Server/src/main/java/core/game/interaction/item/withitem/ChestKeyPlugin.java deleted file mode 100644 index c3bb454f3..000000000 --- a/Server/src/main/java/core/game/interaction/item/withitem/ChestKeyPlugin.java +++ /dev/null @@ -1,56 +0,0 @@ -package core.game.interaction.item.withitem; - -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.entity.player.Player; -import core.game.node.item.Item; -import core.game.node.scenery.Scenery; -import core.game.node.scenery.SceneryBuilder; -import core.plugin.Initializable; -import core.plugin.Plugin; - -/** - * Represents the plugin used to handle the usage of a chest key on the chest. - * @author 'Vexia - * @version 1.0 - */ -@Initializable -public final class ChestKeyPlugin extends UseWithHandler { - - /** - * Represents the chest key item. - */ - private static final Item CHEST_KEY = new Item(432); - - /** - * Represents the pirate message item. - */ - private static final Item PIRATE_MESSAGE = new Item(433); - - /** - * Constructs a new {@code ChestKeyPlugin} {@code Object}. - */ - public ChestKeyPlugin() { - super(432); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - addHandler(2079, OBJECT_TYPE, this); - return this; - } - - @Override - public boolean handle(NodeUsageEvent event) { - final Player player = event.getPlayer(); - if (player.getInventory().remove(CHEST_KEY)) { - SceneryBuilder.replace((Scenery) event.getUsedWith(), ((Scenery) event.getUsedWith()).transform(2080), 3); - player.getInventory().add(PIRATE_MESSAGE); - player.getPacketDispatch().sendMessage("You unlock the chest."); - player.getPacketDispatch().sendMessage("All that's in the chest is a message..."); - player.getPacketDispatch().sendMessage("You take the message from the chest."); - } - return true; - } - -} diff --git a/Server/src/main/kotlin/rs09/game/interaction/item/withobject/ChestKeyListener.kt b/Server/src/main/kotlin/rs09/game/interaction/item/withobject/ChestKeyListener.kt new file mode 100644 index 000000000..a810b7e49 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/interaction/item/withobject/ChestKeyListener.kt @@ -0,0 +1,35 @@ +package rs09.game.interaction.item.withobject + +import api.addItem +import api.removeItem +import api.replaceScenery +import api.sendMessage +import org.rs09.consts.Items +import org.rs09.consts.Scenery +import rs09.game.interaction.IntType +import rs09.game.interaction.InteractionListener + +/** + * Listener for using key on pirate chest in Blue Moon Inn + * @author Byte + */ +@Suppress("unused") +class ChestKeyListener : InteractionListener { + + override fun defineListeners() { + onUseWith(IntType.SCENERY, Items.CHEST_KEY_432, Scenery.CHEST_2079) { player, used, with -> + if (!removeItem(player, used)) { + return@onUseWith false + } + + replaceScenery(with as core.game.node.scenery.Scenery, 2080, 3) + + addItem(player, Items.PIRATE_MESSAGE_433) + sendMessage(player, "You unlock the chest.") + sendMessage(player, "All that's in the chest is a message...") + sendMessage(player, "You take the message from the chest.") + + return@onUseWith true + } + } +}