From ee7726100cae34b3a02d72bc7e9942e2ab4007ec Mon Sep 17 00:00:00 2001 From: TomTom <93038247+AverageGithub@users.noreply.github.com> Date: Wed, 7 Feb 2024 17:51:07 +0100 Subject: [PATCH] Add itemsadder support --- build.gradle | 1 + .../axminions/integrations/Integrations.kt | 7 +++++++ .../minions/miniontype/FarmerMinionType.kt | 12 ++++++++++++ .../minions/miniontype/MinerMinionType.kt | 14 ++++++++++++++ 4 files changed, 34 insertions(+) diff --git a/build.gradle b/build.gradle index 9718b69..3218260 100644 --- a/build.gradle +++ b/build.gradle @@ -122,6 +122,7 @@ allprojects { compileOnly 'com.github.angeschossen:LandsAPI:6.29.12' compileOnly 'com.intellectualsites.plotsquared:plotsquared-core:7.0.0-rc.4' compileOnly 'com.intellectualsites.plotsquared:plotsquared-bukkit:7.0.0-rc.4' + compileOnly 'com.github.LoneDev6:api-itemsadder:3.6.1' implementation platform('com.intellectualsites.bom:bom-newest:1.35') implementation("com.artillexstudios.axapi:axapi:1.4.23") implementation("net.byteflux:libby-bukkit:1.3.0") diff --git a/common/src/main/kotlin/com/artillexstudios/axminions/integrations/Integrations.kt b/common/src/main/kotlin/com/artillexstudios/axminions/integrations/Integrations.kt index 7a035e8..3e3a977 100644 --- a/common/src/main/kotlin/com/artillexstudios/axminions/integrations/Integrations.kt +++ b/common/src/main/kotlin/com/artillexstudios/axminions/integrations/Integrations.kt @@ -35,6 +35,7 @@ class Integrations : Integrations { private var economyIntegration: EconomyIntegration? = null private val protectionIntegrations = com.artillexstudios.axminions.integrations.protection.ProtectionIntegrations() internal var kGeneratorsIntegration = false + internal var itemsAdderIntegration = false override fun getStackerIntegration(): StackerIntegration { return stackerIntegration @@ -164,6 +165,12 @@ class Integrations : Integrations { Bukkit.getConsoleSender() .sendMessage(StringUtils.formatToString("<#33FF33>[AxMinions] Hooked into KGenerators!")) } + + if (Bukkit.getPluginManager().getPlugin("ItemsAdder") != null) { + itemsAdderIntegration = true + Bukkit.getConsoleSender() + .sendMessage(StringUtils.formatToString("<#33FF33>[AxMinions] Hooked into ItemsAdder!")) + } } override fun register(integration: Integration) { diff --git a/common/src/main/kotlin/com/artillexstudios/axminions/minions/miniontype/FarmerMinionType.kt b/common/src/main/kotlin/com/artillexstudios/axminions/minions/miniontype/FarmerMinionType.kt index 4329c60..d6a74ef 100644 --- a/common/src/main/kotlin/com/artillexstudios/axminions/minions/miniontype/FarmerMinionType.kt +++ b/common/src/main/kotlin/com/artillexstudios/axminions/minions/miniontype/FarmerMinionType.kt @@ -8,6 +8,7 @@ import com.artillexstudios.axminions.api.utils.MinionUtils import com.artillexstudios.axminions.api.utils.fastFor import com.artillexstudios.axminions.api.warnings.Warnings import com.artillexstudios.axminions.minions.MinionTicker +import dev.lone.itemsadder.api.CustomBlock import kotlin.math.roundToInt import org.bukkit.Material import org.bukkit.block.data.Ageable @@ -56,6 +57,17 @@ class FarmerMinionType : MinionType("farmer", AxMinionsPlugin.INSTANCE.getResour LocationUtils.getAllBlocksInRadius(minion.getLocation(), minion.getRange(), false).fastFor { location -> val block = location.block + if (AxMinionsPlugin.integrations.itemsAdderIntegration) { + val customBlock = CustomBlock.byAlreadyPlaced(block) + if (customBlock !== null) { + val blockDrops = customBlock.getLoot(minion.getTool(), false) + size += blockDrops.size + drops.addAll(blockDrops) + customBlock.remove() + return@fastFor + } + } + when (block.type) { Material.CACTUS, Material.SUGAR_CANE, Material.BAMBOO -> { MinionUtils.getPlant(block).fastFor { diff --git a/common/src/main/kotlin/com/artillexstudios/axminions/minions/miniontype/MinerMinionType.kt b/common/src/main/kotlin/com/artillexstudios/axminions/minions/miniontype/MinerMinionType.kt index 33d7f34..303350e 100644 --- a/common/src/main/kotlin/com/artillexstudios/axminions/minions/miniontype/MinerMinionType.kt +++ b/common/src/main/kotlin/com/artillexstudios/axminions/minions/miniontype/MinerMinionType.kt @@ -10,6 +10,7 @@ import com.artillexstudios.axminions.api.utils.MinionUtils import com.artillexstudios.axminions.api.utils.fastFor import com.artillexstudios.axminions.api.warnings.Warnings import com.artillexstudios.axminions.minions.MinionTicker +import dev.lone.itemsadder.api.CustomBlock import java.util.Locale import java.util.concurrent.ExecutorService import java.util.concurrent.Executors @@ -185,6 +186,19 @@ class MinerMinionType : MinionType("miner", AxMinionsPlugin.INSTANCE.getResource } } + if (AxMinionsPlugin.integrations.itemsAdderIntegration) { + val block = CustomBlock.byAlreadyPlaced(location.block) + if (block !== null) { + val drops = block.getLoot(minion.getTool(), false) + drops.forEach { + amount += it.amount + } + minion.addToContainerOrDrop(drops) + block.remove() + return@fastFor + } + } + val isStoneGenerator = MinionUtils.isStoneGenerator(location) if (isStoneGenerator) {