Add storage limit for fisher and slayer minions

This commit is contained in:
TomTom 2024-03-12 18:26:33 +01:00
parent 9bfcb7af2e
commit 86d85ede6b
3 changed files with 22 additions and 7 deletions

View File

@ -17,8 +17,11 @@ class MinionDamageListener : Listener {
fun onMinionKillEntityEvent(event: MinionKillEntityEvent) {
val entitySize = AxMinionsPlugin.integrations.getStackerIntegration().getStackSize(event.target)
val amount = ThreadLocalRandom.current().nextInt(1, 4) * entitySize
event.minion.setActions(event.minion.getActionAmount() + entitySize)
event.minion.setStorage(event.minion.getStorage() + ThreadLocalRandom.current().nextInt(1, 4) * entitySize)
if (event.minion.getStorage() + amount < event.minion.getType().getDouble("storage", event.minion.getLevel())) {
event.minion.setStorage(event.minion.getStorage() + amount * entitySize)
}
Scheduler.get().runLaterAt(event.target.location, {
event.target.location.world!!.getNearbyEntities(event.target.location, 4.0, 4.0, 4.0).filterIsInstance<Item>().fastFor { item ->

View File

@ -76,7 +76,9 @@ class FisherMinionType : MinionType("fisher", AxMinionsPlugin.INSTANCE.getResour
val xp = ThreadLocalRandom.current().nextInt(6) + 1
minion.addToContainerOrDrop(loot)
minion.setStorage(minion.getStorage() + xp)
if (minion.getStorage() + xp < minion.getType().getDouble("storage", minion.getLevel())) {
minion.setStorage(minion.getStorage() + xp)
}
minion.setActions(minion.getActionAmount() + 1)
minion.damageTool()
}

View File

@ -68,7 +68,9 @@ class MinerMinionType : MinionType("miner", AxMinionsPlugin.INSTANCE.getResource
when (getConfig().getString("mode").lowercase(Locale.ENGLISH)) {
"sphere" -> {
LocationUtils.getAllBlocksInRadius(minion.getLocation(), minion.getRange(), false).fastFor { location ->
if (AxMinionsPlugin.integrations.kGeneratorsIntegration && Main.getPlacedGenerators().isChunkFullyLoaded(location)) {
if (AxMinionsPlugin.integrations.kGeneratorsIntegration && Main.getPlacedGenerators()
.isChunkFullyLoaded(location)
) {
val gen = Main.getPlacedGenerators().getLoaded(location)
val possible = gen?.isBlockPossibleToMine(location) ?: false
@ -100,7 +102,9 @@ class MinerMinionType : MinionType("miner", AxMinionsPlugin.INSTANCE.getResource
asyncExecutor!!.execute {
LocationUtils.getAllBlocksInRadius(minion.getLocation(), minion.getRange(), false)
.fastFor { location ->
if (AxMinionsPlugin.integrations.kGeneratorsIntegration && Main.getPlacedGenerators().isChunkFullyLoaded(location)) {
if (AxMinionsPlugin.integrations.kGeneratorsIntegration && Main.getPlacedGenerators()
.isChunkFullyLoaded(location)
) {
val gen = Main.getPlacedGenerators().getLoaded(location)
val possible = gen?.isBlockPossibleToMine(location) ?: false
@ -127,7 +131,9 @@ class MinerMinionType : MinionType("miner", AxMinionsPlugin.INSTANCE.getResource
} else {
LocationUtils.getAllBlocksInRadius(minion.getLocation(), minion.getRange(), false)
.fastFor { location ->
if (AxMinionsPlugin.integrations.kGeneratorsIntegration && Main.getPlacedGenerators().isChunkFullyLoaded(location)) {
if (AxMinionsPlugin.integrations.kGeneratorsIntegration && Main.getPlacedGenerators()
.isChunkFullyLoaded(location)
) {
val gen = Main.getPlacedGenerators().getLoaded(location)
val possible = gen?.isBlockPossibleToMine(location) ?: false
@ -154,7 +160,9 @@ class MinerMinionType : MinionType("miner", AxMinionsPlugin.INSTANCE.getResource
"line" -> {
faces.fastFor {
LocationUtils.getAllBlocksFacing(minion.getLocation(), minion.getRange(), it).fastFor { location ->
if (AxMinionsPlugin.integrations.kGeneratorsIntegration && Main.getPlacedGenerators().isChunkFullyLoaded(location)) {
if (AxMinionsPlugin.integrations.kGeneratorsIntegration && Main.getPlacedGenerators()
.isChunkFullyLoaded(location)
) {
val gen = Main.getPlacedGenerators().getLoaded(location)
val possible = gen?.isBlockPossibleToMine(location) ?: false
@ -181,7 +189,9 @@ class MinerMinionType : MinionType("miner", AxMinionsPlugin.INSTANCE.getResource
"face" -> {
LocationUtils.getAllBlocksFacing(minion.getLocation(), minion.getRange(), minion.getDirection().facing)
.fastFor { location ->
if (AxMinionsPlugin.integrations.kGeneratorsIntegration && Main.getPlacedGenerators().isChunkFullyLoaded(location)) {
if (AxMinionsPlugin.integrations.kGeneratorsIntegration && Main.getPlacedGenerators()
.isChunkFullyLoaded(location)
) {
val gen = Main.getPlacedGenerators().getLoaded(location)
val possible = gen?.isBlockPossibleToMine(location) ?: false