From 0fa8a1c87e2aa872d89563e8d7854eb076ca243b Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 21 Feb 2023 06:25:56 +0000 Subject: [PATCH] Converted plugin for making gem tipped bolt tips and bolts to listener --- .../global/skill/fletching/GemBoltListener.kt | 70 ++++++++++++ .../global/skill/fletching/GemBoltPlugin.java | 104 ------------------ 2 files changed, 70 insertions(+), 104 deletions(-) create mode 100644 Server/src/main/content/global/skill/fletching/GemBoltListener.kt delete mode 100644 Server/src/main/content/global/skill/fletching/GemBoltPlugin.java diff --git a/Server/src/main/content/global/skill/fletching/GemBoltListener.kt b/Server/src/main/content/global/skill/fletching/GemBoltListener.kt new file mode 100644 index 000000000..fb2bcca60 --- /dev/null +++ b/Server/src/main/content/global/skill/fletching/GemBoltListener.kt @@ -0,0 +1,70 @@ +package content.global.skill.fletching + +import content.global.skill.fletching.Fletching.GemBolts +import content.global.skill.fletching.items.gem.GemBoltCutPulse +import content.global.skill.fletching.items.gem.GemBoltPulse +import core.api.amountInInventory +import core.game.dialogue.SkillDialogueHandler +import core.game.interaction.IntType +import core.game.interaction.InteractionListener +import core.game.node.item.Item +import core.net.packet.PacketRepository +import core.net.packet.context.ChildPositionContext +import core.net.packet.out.RepositionChild +import org.rs09.consts.Items +import kotlin.math.min + +class GemBoltListener : InteractionListener { + val gems = intArrayOf( + Items.OYSTER_PEARL_411, + Items.OYSTER_PEARLS_413, + Items.OPAL_1609, + Items.JADE_1611, + Items.RED_TOPAZ_1613, + Items.SAPPHIRE_1607, + Items.EMERALD_1605, + Items.RUBY_1603, + Items.DIAMOND_1601, + Items.DRAGONSTONE_1615, + Items.ONYX_6573 + ) + val boltBases = GemBolts.values().map { it.base }.toIntArray() + val boltTips = GemBolts.values().map { it.tip }.toIntArray() + + override fun defineListeners() { + onUseWith(IntType.ITEM, Items.CHISEL_1755, *gems) { player, used, with -> + val gem = Fletching.gemMap[with.id] ?: return@onUseWith true + + object : SkillDialogueHandler(player, SkillDialogue.ONE_OPTION, Item(gem.gem)) { + override fun create(amount: Int, index: Int) { + player.pulseManager.run(GemBoltCutPulse(player, used as? Item, gem, amount)) + } + + override fun getAll(index: Int): Int { + return player.inventory.getAmount(gem.gem) + } + }.open() + return@onUseWith true + } + + onUseWith(IntType.ITEM, boltBases, *boltTips) {player, used, with -> + val bolt = Fletching.tipMap[with.id] ?: return@onUseWith true + if (used.id != bolt.base || with.id != bolt.tip) return@onUseWith true + + + val handler: SkillDialogueHandler = + object : SkillDialogueHandler(player, SkillDialogue.ONE_OPTION, Item(bolt.product)) { + override fun create(amount: Int, index: Int) { + player.pulseManager.run(GemBoltPulse(player, used as? Item, bolt, amount)) + } + + override fun getAll(index: Int): Int { + return min(amountInInventory(player, used.id), amountInInventory(player, with.id)) + } + } + handler.open() + PacketRepository.send(RepositionChild::class.java, ChildPositionContext(player, 309, 2, 210, 10)) + return@onUseWith true + } + } +} \ No newline at end of file diff --git a/Server/src/main/content/global/skill/fletching/GemBoltPlugin.java b/Server/src/main/content/global/skill/fletching/GemBoltPlugin.java deleted file mode 100644 index 5c5d264d0..000000000 --- a/Server/src/main/content/global/skill/fletching/GemBoltPlugin.java +++ /dev/null @@ -1,104 +0,0 @@ -package content.global.skill.fletching; - -import content.global.skill.fletching.items.gem.GemBoltCutPulse; -import content.global.skill.fletching.items.gem.GemBoltPulse; -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.net.packet.PacketRepository; -import core.net.packet.context.ChildPositionContext; -import core.net.packet.out.RepositionChild; -import core.plugin.Initializable; -import core.plugin.Plugin; -import core.game.dialogue.SkillDialogueHandler; -import core.game.dialogue.SkillDialogueHandler.SkillDialogue; -import org.rs09.consts.Items; - -/** - * Represents the gem bolt creating plugin. - * @author Ceikry - * @version 2.0 - */ -@Initializable -public final class GemBoltPlugin extends UseWithHandler { - Fletching.GemBolts bolt; - - /** - * Constructs a new {@code GemBoltPlugin} {@code Object}. - */ - public GemBoltPlugin() { - super(Items.OPAL_BOLT_TIPS_45, - Items.PEARL_BOLT_TIPS_46, - Items.JADE_BOLT_TIPS_9187, - Items.TOPAZ_BOLT_TIPS_9188, - Items.SAPPHIRE_BOLT_TIPS_9189, - Items.EMERALD_BOLT_TIPS_9190, - Items.RUBY_BOLT_TIPS_9191, - Items.DIAMOND_BOLT_TIPS_9192, - Items.DRAGON_BOLT_TIPS_9193, - Items.ONYX_BOLT_TIPS_9194, - Items.OYSTER_PEARL_411, - Items.OYSTER_PEARLS_413, - Items.OPAL_1609, - Items.JADE_1611, - Items.RED_TOPAZ_1613, - Items.SAPPHIRE_1607, - Items.EMERALD_1605, - Items.RUBY_1603, - Items.DIAMOND_1601, - Items.DRAGONSTONE_1615, - Items.ONYX_6573); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - addHandler(Items.CHISEL_1755, ITEM_TYPE, this); - for(Fletching.GemBolts gem : Fletching.GemBolts.values()){ - addHandler(gem.base, ITEM_TYPE,this); - } - return this; - } - - @Override - public boolean handle(final NodeUsageEvent event) { - final Player player = event.getPlayer(); - bolt = Fletching.tipMap.get(event.getUsedItem().getId()); - if(bolt == null){ - bolt = Fletching.tipMap.get(event.getUsedWith().getId()); - } - if(bolt != null && (event.getUsedItem().getId() == bolt.tip && event.getUsedWith().getId() == bolt.base) - || event.getUsedItem().getId() == bolt.base && event.getUsedWith().getId() == bolt.tip ) { - SkillDialogueHandler handler = new SkillDialogueHandler(player, SkillDialogue.ONE_OPTION, new Item(bolt.product)) { - @Override - public void create(final int amount, int index) { - player.getPulseManager().run(new GemBoltPulse(player, event.getUsedItem(), bolt, amount)); - } - @Override - public int getAll(int index) { - return player.getInventory().getAmount(event.getUsedItem()); - } - }; - handler.open(); - PacketRepository.send(RepositionChild.class, new ChildPositionContext(player, 309, 2, 210, 10)); - } else { - final Fletching.GemBolts gem = Fletching.gemMap.get(event.getUsedItem().getId() == Items.CHISEL_1755 ? event.getBaseItem().getId() : event.getUsedItem().getId()); - if(gem == null){ - return false; - } - new SkillDialogueHandler(player, SkillDialogue.ONE_OPTION, new Item(gem.gem)) { - @Override - public void create(final int amount, final int index) { - player.getPulseManager().run(new GemBoltCutPulse(player, event.getUsedItem(), gem, amount)); - } - - @Override - public int getAll(int index) { - return player.getInventory().getAmount(gem.gem); - } - - }.open(); - } - return true; - } -}