mirror of
https://github.com/Artillex-Studios/AxMinions.git
synced 2025-01-24 21:31:29 +01:00
So much work
This commit is contained in:
parent
2bb47ffae7
commit
2069ced74f
@ -0,0 +1,19 @@
|
|||||||
|
package com.artillexstudios.axminions.api.events
|
||||||
|
|
||||||
|
import com.artillexstudios.axminions.api.minions.Minion
|
||||||
|
import org.bukkit.entity.LivingEntity
|
||||||
|
import org.bukkit.event.HandlerList
|
||||||
|
import org.bukkit.inventory.ItemStack
|
||||||
|
|
||||||
|
class MinionKillEntityEvent(minion: Minion, val target: LivingEntity, val loot: List<ItemStack>) : MinionEvent(minion) {
|
||||||
|
companion object {
|
||||||
|
private val handlerList = HandlerList()
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun getHandlerList(): HandlerList = handlerList
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getHandlers(): HandlerList {
|
||||||
|
return handlerList
|
||||||
|
}
|
||||||
|
}
|
@ -5,7 +5,7 @@ import org.bukkit.entity.LivingEntity
|
|||||||
import org.bukkit.event.Cancellable
|
import org.bukkit.event.Cancellable
|
||||||
import org.bukkit.event.HandlerList
|
import org.bukkit.event.HandlerList
|
||||||
|
|
||||||
class MinionDamageEntityEvent(minion: Minion, val target: LivingEntity, val damage: Double) : MinionEvent(minion), Cancellable {
|
class PreMinionDamageEntityEvent(minion: Minion, val target: LivingEntity, val damage: Double) : MinionEvent(minion), Cancellable {
|
||||||
companion object {
|
companion object {
|
||||||
private val handlerList = HandlerList()
|
private val handlerList = HandlerList()
|
||||||
|
|
@ -2,7 +2,7 @@ package com.artillexstudios.axminions.api.minions.miniontype
|
|||||||
|
|
||||||
import com.artillexstudios.axapi.config.Config
|
import com.artillexstudios.axapi.config.Config
|
||||||
import com.artillexstudios.axapi.libs.boostedyaml.boostedyaml.block.implementation.Section
|
import com.artillexstudios.axapi.libs.boostedyaml.boostedyaml.block.implementation.Section
|
||||||
import com.artillexstudios.axapi.libs.kyori.adventure.text.minimessage.tag.resolver.Placeholder
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder
|
||||||
import com.artillexstudios.axapi.utils.ItemBuilder
|
import com.artillexstudios.axapi.utils.ItemBuilder
|
||||||
import com.artillexstudios.axminions.api.AxMinionsAPI
|
import com.artillexstudios.axminions.api.AxMinionsAPI
|
||||||
import com.artillexstudios.axminions.api.minions.Minion
|
import com.artillexstudios.axminions.api.minions.Minion
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.artillexstudios.axminions.api.warnings
|
package com.artillexstudios.axminions.api.warnings
|
||||||
|
|
||||||
import com.artillexstudios.axapi.hologram.HologramFactory
|
import com.artillexstudios.axapi.hologram.HologramFactory
|
||||||
import com.artillexstudios.axapi.libs.kyori.adventure.text.Component
|
import net.kyori.adventure.text.Component
|
||||||
import com.artillexstudios.axminions.api.minions.Minion
|
import com.artillexstudios.axminions.api.minions.Minion
|
||||||
|
|
||||||
abstract class Warning(private val name: String) {
|
abstract class Warning(private val name: String) {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.artillexstudios.axminions.api.warnings.impl
|
package com.artillexstudios.axminions.api.warnings.impl
|
||||||
|
|
||||||
import com.artillexstudios.axapi.libs.kyori.adventure.text.Component
|
import net.kyori.adventure.text.Component
|
||||||
import com.artillexstudios.axapi.utils.StringUtils
|
import com.artillexstudios.axapi.utils.StringUtils
|
||||||
import com.artillexstudios.axminions.api.config.Messages
|
import com.artillexstudios.axminions.api.config.Messages
|
||||||
import com.artillexstudios.axminions.api.warnings.Warning
|
import com.artillexstudios.axminions.api.warnings.Warning
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.artillexstudios.axminions.api.warnings.impl
|
package com.artillexstudios.axminions.api.warnings.impl
|
||||||
|
|
||||||
import com.artillexstudios.axapi.libs.kyori.adventure.text.Component
|
import net.kyori.adventure.text.Component
|
||||||
import com.artillexstudios.axapi.utils.StringUtils
|
import com.artillexstudios.axapi.utils.StringUtils
|
||||||
import com.artillexstudios.axminions.api.config.Messages
|
import com.artillexstudios.axminions.api.config.Messages
|
||||||
import com.artillexstudios.axminions.api.warnings.Warning
|
import com.artillexstudios.axminions.api.warnings.Warning
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.artillexstudios.axminions.api.warnings.impl
|
package com.artillexstudios.axminions.api.warnings.impl
|
||||||
|
|
||||||
import com.artillexstudios.axapi.libs.kyori.adventure.text.Component
|
import net.kyori.adventure.text.Component
|
||||||
import com.artillexstudios.axapi.utils.StringUtils
|
import com.artillexstudios.axapi.utils.StringUtils
|
||||||
import com.artillexstudios.axminions.api.config.Messages
|
import com.artillexstudios.axminions.api.config.Messages
|
||||||
import com.artillexstudios.axminions.api.warnings.Warning
|
import com.artillexstudios.axminions.api.warnings.Warning
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.artillexstudios.axminions.api.warnings.impl
|
package com.artillexstudios.axminions.api.warnings.impl
|
||||||
|
|
||||||
import com.artillexstudios.axapi.libs.kyori.adventure.text.Component
|
import net.kyori.adventure.text.Component
|
||||||
import com.artillexstudios.axapi.utils.StringUtils
|
import com.artillexstudios.axapi.utils.StringUtils
|
||||||
import com.artillexstudios.axminions.api.config.Messages
|
import com.artillexstudios.axminions.api.config.Messages
|
||||||
import com.artillexstudios.axminions.api.warnings.Warning
|
import com.artillexstudios.axminions.api.warnings.Warning
|
||||||
|
@ -2,7 +2,6 @@ package com.artillexstudios.axminions
|
|||||||
|
|
||||||
import com.artillexstudios.axapi.AxPlugin
|
import com.artillexstudios.axapi.AxPlugin
|
||||||
import com.artillexstudios.axapi.data.ThreadedQueue
|
import com.artillexstudios.axapi.data.ThreadedQueue
|
||||||
import com.artillexstudios.axapi.libs.lamp.bukkit.BukkitCommandHandler
|
|
||||||
import com.artillexstudios.axapi.libs.libby.libby.BukkitLibraryManager
|
import com.artillexstudios.axapi.libs.libby.libby.BukkitLibraryManager
|
||||||
import com.artillexstudios.axapi.libs.libby.libby.Library
|
import com.artillexstudios.axapi.libs.libby.libby.Library
|
||||||
import com.artillexstudios.axminions.api.AxMinionsAPI
|
import com.artillexstudios.axminions.api.AxMinionsAPI
|
||||||
@ -28,8 +27,9 @@ import com.artillexstudios.axminions.minions.miniontype.LumberMinionType
|
|||||||
import com.artillexstudios.axminions.minions.miniontype.MinerMinionType
|
import com.artillexstudios.axminions.minions.miniontype.MinerMinionType
|
||||||
import com.artillexstudios.axminions.minions.miniontype.SellerMinionType
|
import com.artillexstudios.axminions.minions.miniontype.SellerMinionType
|
||||||
import com.artillexstudios.axminions.minions.miniontype.SlayerMinionType
|
import com.artillexstudios.axminions.minions.miniontype.SlayerMinionType
|
||||||
import org.bukkit.Bukkit
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import org.bukkit.Bukkit
|
||||||
|
import revxrsal.commands.bukkit.BukkitCommandHandler
|
||||||
|
|
||||||
class AxMinionsPlugin : AxPlugin() {
|
class AxMinionsPlugin : AxPlugin() {
|
||||||
companion object {
|
companion object {
|
||||||
@ -43,8 +43,10 @@ class AxMinionsPlugin : AxPlugin() {
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
val manager = BukkitLibraryManager(this, "../../libraries")
|
val manager = BukkitLibraryManager(this, "../../libraries")
|
||||||
val stdLib = Library.builder().groupId("org{}jetbrains{}kotlin").artifactId("kotlin-stdlib").version("1.9.0").relocate("org{}jetbrains{}kotlin", "com{}artillexstudios{}axminions{}libs{}kotlin").build()
|
val stdLib = Library.builder().groupId("org{}jetbrains{}kotlin").artifactId("kotlin-stdlib").version("1.9.0")
|
||||||
val h2 = Library.builder().groupId("com{}h2database").artifactId("h2").version("2.2.220").relocate("org{}h2", "com{}artillexstudios{}axminions{}libs{}h2").build()
|
.relocate("org{}jetbrains{}kotlin", "com{}artillexstudios{}axminions{}libs{}kotlin").build()
|
||||||
|
val h2 = Library.builder().groupId("com{}h2database").artifactId("h2").version("2.2.220")
|
||||||
|
.relocate("org{}h2", "com{}artillexstudios{}axminions{}libs{}h2").build()
|
||||||
manager.addMavenCentral()
|
manager.addMavenCentral()
|
||||||
manager.loadLibrary(stdLib)
|
manager.loadLibrary(stdLib)
|
||||||
manager.loadLibrary(h2)
|
manager.loadLibrary(h2)
|
||||||
@ -101,6 +103,7 @@ class AxMinionsPlugin : AxPlugin() {
|
|||||||
Bukkit.getPluginManager().registerEvents(ChunkListener(), this)
|
Bukkit.getPluginManager().registerEvents(ChunkListener(), this)
|
||||||
Bukkit.getPluginManager().registerEvents(MinionDamageListener(), this)
|
Bukkit.getPluginManager().registerEvents(MinionDamageListener(), this)
|
||||||
|
|
||||||
|
|
||||||
MinionTicker.startTicking()
|
MinionTicker.startTicking()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,13 +1,6 @@
|
|||||||
package com.artillexstudios.axminions.commands
|
package com.artillexstudios.axminions.commands
|
||||||
|
|
||||||
import com.artillexstudios.axapi.libs.kyori.adventure.text.minimessage.tag.resolver.Placeholder
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder
|
||||||
import com.artillexstudios.axapi.libs.lamp.annotation.AutoComplete
|
|
||||||
import com.artillexstudios.axapi.libs.lamp.annotation.Command
|
|
||||||
import com.artillexstudios.axapi.libs.lamp.annotation.Default
|
|
||||||
import com.artillexstudios.axapi.libs.lamp.annotation.Description
|
|
||||||
import com.artillexstudios.axapi.libs.lamp.annotation.Range
|
|
||||||
import com.artillexstudios.axapi.libs.lamp.annotation.Subcommand
|
|
||||||
import com.artillexstudios.axapi.libs.lamp.bukkit.annotation.CommandPermission
|
|
||||||
import com.artillexstudios.axapi.utils.StringUtils
|
import com.artillexstudios.axapi.utils.StringUtils
|
||||||
import com.artillexstudios.axminions.AxMinionsPlugin
|
import com.artillexstudios.axminions.AxMinionsPlugin
|
||||||
import com.artillexstudios.axminions.api.AxMinionsAPI
|
import com.artillexstudios.axminions.api.AxMinionsAPI
|
||||||
@ -17,6 +10,13 @@ import com.artillexstudios.axminions.api.minions.miniontype.MinionTypes
|
|||||||
import com.artillexstudios.axminions.api.utils.fastFor
|
import com.artillexstudios.axminions.api.utils.fastFor
|
||||||
import org.bukkit.command.CommandSender
|
import org.bukkit.command.CommandSender
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
|
import revxrsal.commands.annotation.AutoComplete
|
||||||
|
import revxrsal.commands.annotation.Command
|
||||||
|
import revxrsal.commands.annotation.Default
|
||||||
|
import revxrsal.commands.annotation.Description
|
||||||
|
import revxrsal.commands.annotation.Range
|
||||||
|
import revxrsal.commands.annotation.Subcommand
|
||||||
|
import revxrsal.commands.bukkit.annotation.CommandPermission
|
||||||
|
|
||||||
@Command("axminions", "minion", "minions")
|
@Command("axminions", "minion", "minions")
|
||||||
class AxMinionsCommand {
|
class AxMinionsCommand {
|
||||||
|
@ -1,21 +1,22 @@
|
|||||||
package com.artillexstudios.axminions.integrations.prices
|
package com.artillexstudios.axminions.integrations.prices
|
||||||
|
|
||||||
import com.Zrips.CMI.CMI
|
//import com.Zrips.CMI.CMI
|
||||||
import com.artillexstudios.axminions.api.integrations.types.PricesIntegration
|
import com.artillexstudios.axminions.api.integrations.types.PricesIntegration
|
||||||
import org.bukkit.inventory.ItemStack
|
import org.bukkit.inventory.ItemStack
|
||||||
|
|
||||||
|
|
||||||
class CMIIntegration : PricesIntegration {
|
class CMIIntegration : PricesIntegration {
|
||||||
private lateinit var manager: CMI
|
// private lateinit var manager: CMI
|
||||||
|
|
||||||
|
|
||||||
override fun getPrice(itemStack: ItemStack): Double {
|
override fun getPrice(itemStack: ItemStack): Double {
|
||||||
val worth = manager.worthManager.getWorth(itemStack) ?: return -1.0
|
// val worth = manager.worthManager.getWorth(itemStack) ?: return -1.0
|
||||||
|
//
|
||||||
return if (worth.sellPrice == 0.0) -1.0 else worth.sellPrice
|
// return if (worth.sellPrice == 0.0) -1.0 else worth.sellPrice
|
||||||
|
return -1.0
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun register() {
|
override fun register() {
|
||||||
manager = CMI.getInstance();
|
// manager = CMI.getInstance();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,16 +1,16 @@
|
|||||||
package com.artillexstudios.axminions.integrations.protection
|
package com.artillexstudios.axminions.integrations.protection
|
||||||
|
|
||||||
import com.artillexstudios.axminions.api.integrations.types.ProtectionIntegration
|
import com.artillexstudios.axminions.api.integrations.types.ProtectionIntegration
|
||||||
import com.iridium.iridiumskyblock.api.IridiumSkyblockAPI
|
|
||||||
import org.bukkit.Location
|
import org.bukkit.Location
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
|
|
||||||
class IridiumSkyBlockIntegration : ProtectionIntegration {
|
class IridiumSkyBlockIntegration : ProtectionIntegration {
|
||||||
|
|
||||||
override fun canBuildAt(player: Player, location: Location): Boolean {
|
override fun canBuildAt(player: Player, location: Location): Boolean {
|
||||||
val island = IridiumSkyblockAPI.getInstance().getIslandViaLocation(location)
|
/* val island = IridiumSkyblockAPI.getInstance().getIslandViaLocation(location)
|
||||||
|
|
||||||
return island.map { IridiumSkyblockAPI.getInstance().getUser(player) in it.members }.orElse(true)
|
return island.map { IridiumSkyblockAPI.getInstance().getUser(player) in it.members }.orElse(true)*/
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun register() {
|
override fun register() {
|
||||||
|
@ -3,16 +3,15 @@ package com.artillexstudios.axminions.integrations.protection
|
|||||||
import com.artillexstudios.axminions.api.integrations.types.ProtectionIntegration
|
import com.artillexstudios.axminions.api.integrations.types.ProtectionIntegration
|
||||||
import org.bukkit.Location
|
import org.bukkit.Location
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
import org.kingdoms.constants.land.Land
|
|
||||||
import org.kingdoms.constants.player.KingdomPlayer
|
|
||||||
|
|
||||||
class KingdomsXIntegration : ProtectionIntegration {
|
class KingdomsXIntegration : ProtectionIntegration {
|
||||||
|
|
||||||
override fun canBuildAt(player: Player, location: Location): Boolean {
|
override fun canBuildAt(player: Player, location: Location): Boolean {
|
||||||
val localPlayer = KingdomPlayer.getKingdomPlayer(player.uniqueId);
|
// val localPlayer = KingdomPlayer.getKingdomPlayer(player.uniqueId);
|
||||||
val land = Land.getLand(location) ?: return true
|
// val land = Land.getLand(location) ?: return true
|
||||||
|
//
|
||||||
return land.kingdom.isMember(localPlayer);
|
// return land.kingdom.isMember(localPlayer);
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun register() {
|
override fun register() {
|
||||||
|
@ -1,19 +1,35 @@
|
|||||||
package com.artillexstudios.axminions.listeners
|
package com.artillexstudios.axminions.listeners
|
||||||
|
|
||||||
import com.artillexstudios.axminions.AxMinionsPlugin
|
import com.artillexstudios.axminions.AxMinionsPlugin
|
||||||
import com.artillexstudios.axminions.api.events.MinionDamageEntityEvent
|
import com.artillexstudios.axminions.api.events.MinionKillEntityEvent
|
||||||
|
import com.artillexstudios.axminions.api.utils.fastFor
|
||||||
|
import com.artillexstudios.axminions.api.warnings.Warnings
|
||||||
import java.util.concurrent.ThreadLocalRandom
|
import java.util.concurrent.ThreadLocalRandom
|
||||||
|
import org.bukkit.entity.Item
|
||||||
import org.bukkit.event.EventHandler
|
import org.bukkit.event.EventHandler
|
||||||
import org.bukkit.event.Listener
|
import org.bukkit.event.Listener
|
||||||
|
|
||||||
class MinionDamageListener : Listener {
|
class MinionDamageListener : Listener {
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
fun onMinionDamageEntityEvent(event: MinionDamageEntityEvent) {
|
fun onPreMinionDamageEntityEvent(event: MinionKillEntityEvent) {
|
||||||
if (event.damage < event.target.health) return
|
println("MINION KILL ENTITY EVENT")
|
||||||
|
|
||||||
val entitySize = AxMinionsPlugin.integrations.getStackerIntegration().getStackSize(event.target)
|
val entitySize = AxMinionsPlugin.integrations.getStackerIntegration().getStackSize(event.target)
|
||||||
|
|
||||||
event.minion.setStorage(event.minion.getStorage() + ThreadLocalRandom.current().nextInt(1, 4) * entitySize)
|
event.minion.setStorage(event.minion.getStorage() + ThreadLocalRandom.current().nextInt(1, 4) * entitySize)
|
||||||
|
|
||||||
|
event.target.location.world!!.getNearbyEntities(event.target.location, 4.0, 4.0, 4.0).filterIsInstance<Item>().fastFor { item ->
|
||||||
|
if (event.minion.getLinkedInventory()?.firstEmpty() == -1) {
|
||||||
|
Warnings.CONTAINER_FULL.display(event.minion)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
val amount = AxMinionsPlugin.integrations.getStackerIntegration().getStackSize(item)
|
||||||
|
val stack = item.itemStack
|
||||||
|
stack.amount = amount.toInt()
|
||||||
|
|
||||||
|
event.minion.addToContainerOrDrop(stack)
|
||||||
|
item.remove()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,15 +1,16 @@
|
|||||||
package com.artillexstudios.axminions.listeners
|
package com.artillexstudios.axminions.listeners
|
||||||
|
|
||||||
import com.artillexstudios.axapi.utils.StringUtils
|
import com.artillexstudios.axapi.utils.StringUtils
|
||||||
|
import com.artillexstudios.axminions.AxMinionsPlugin
|
||||||
import com.artillexstudios.axminions.api.AxMinionsAPI
|
import com.artillexstudios.axminions.api.AxMinionsAPI
|
||||||
import com.artillexstudios.axminions.api.config.Messages
|
import com.artillexstudios.axminions.api.config.Messages
|
||||||
import com.artillexstudios.axminions.api.minions.Direction
|
import com.artillexstudios.axminions.api.minions.Direction
|
||||||
import com.artillexstudios.axminions.api.minions.Minion
|
import com.artillexstudios.axminions.api.minions.Minion
|
||||||
|
import com.artillexstudios.axminions.api.minions.miniontype.MinionTypes
|
||||||
import com.artillexstudios.axminions.api.utils.CoolDown
|
import com.artillexstudios.axminions.api.utils.CoolDown
|
||||||
import com.artillexstudios.axminions.api.utils.Keys
|
import com.artillexstudios.axminions.api.utils.Keys
|
||||||
import com.artillexstudios.axminions.api.utils.fastFor
|
import com.artillexstudios.axminions.api.utils.fastFor
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
import java.util.concurrent.TimeUnit
|
|
||||||
import org.bukkit.Material
|
import org.bukkit.Material
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
import org.bukkit.event.EventHandler
|
import org.bukkit.event.EventHandler
|
||||||
@ -117,6 +118,43 @@ class MinionInventoryListener : Listener {
|
|||||||
player.sendMessage(StringUtils.formatToString(Messages.PREFIX() + Messages.LINK_START()))
|
player.sendMessage(StringUtils.formatToString(Messages.PREFIX() + Messages.LINK_START()))
|
||||||
LinkingListener.linking[player.uniqueId] = minion
|
LinkingListener.linking[player.uniqueId] = minion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"upgrade" -> {
|
||||||
|
val money = minion.getType().getDouble("requirements.money", minion.getLevel() + 1)
|
||||||
|
val actions = minion.getType().getDouble("requirements.actions", minion.getLevel() + 1)
|
||||||
|
|
||||||
|
if (minion.getType().hasReachedMaxLevel(minion)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (minion.getActionAmount() < actions) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
AxMinionsPlugin.integrations.getEconomyIntegration()?.let {
|
||||||
|
if (it.getBalance(player) < money) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
it.takeBalance(player, money)
|
||||||
|
}
|
||||||
|
|
||||||
|
minion.setLevel(minion.getLevel() + 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
"statistics" -> {
|
||||||
|
val stored = minion.getStorage()
|
||||||
|
|
||||||
|
if (stored == 0.0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (minion.getType() == MinionTypes.getMinionTypes()["seller"]) {
|
||||||
|
// TODO: Give money
|
||||||
|
} else {
|
||||||
|
player.giveExp(stored.toInt())
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
minion.updateInventories()
|
minion.updateInventories()
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.artillexstudios.axminions.listeners
|
package com.artillexstudios.axminions.listeners
|
||||||
|
|
||||||
import com.artillexstudios.axapi.libs.kyori.adventure.text.minimessage.tag.resolver.Placeholder
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder
|
||||||
import com.artillexstudios.axapi.scheduler.Scheduler
|
import com.artillexstudios.axapi.scheduler.Scheduler
|
||||||
import com.artillexstudios.axapi.utils.StringUtils
|
import com.artillexstudios.axapi.utils.StringUtils
|
||||||
import com.artillexstudios.axminions.AxMinionsPlugin
|
import com.artillexstudios.axminions.AxMinionsPlugin
|
||||||
|
@ -6,7 +6,7 @@ import com.artillexstudios.axapi.entity.impl.PacketEntity
|
|||||||
import com.artillexstudios.axapi.events.PacketEntityInteractEvent
|
import com.artillexstudios.axapi.events.PacketEntityInteractEvent
|
||||||
import com.artillexstudios.axapi.hologram.Hologram
|
import com.artillexstudios.axapi.hologram.Hologram
|
||||||
import com.artillexstudios.axapi.hologram.HologramFactory
|
import com.artillexstudios.axapi.hologram.HologramFactory
|
||||||
import com.artillexstudios.axapi.libs.kyori.adventure.text.minimessage.tag.resolver.Placeholder
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder
|
||||||
import com.artillexstudios.axapi.scheduler.Scheduler
|
import com.artillexstudios.axapi.scheduler.Scheduler
|
||||||
import com.artillexstudios.axapi.serializers.Serializers
|
import com.artillexstudios.axapi.serializers.Serializers
|
||||||
import com.artillexstudios.axapi.utils.EquipmentSlot
|
import com.artillexstudios.axapi.utils.EquipmentSlot
|
||||||
@ -57,6 +57,7 @@ class Minion(
|
|||||||
private lateinit var entity: PacketArmorStand
|
private lateinit var entity: PacketArmorStand
|
||||||
private var nextAction = 0
|
private var nextAction = 0
|
||||||
private var range = 0.0
|
private var range = 0.0
|
||||||
|
@Volatile
|
||||||
private var dirty = true
|
private var dirty = true
|
||||||
private var armTick = 2.0
|
private var armTick = 2.0
|
||||||
private var warning: Warning? = null
|
private var warning: Warning? = null
|
||||||
@ -84,6 +85,24 @@ class Minion(
|
|||||||
entity.setHasBasePlate(false)
|
entity.setHasBasePlate(false)
|
||||||
entity.setSmall(true)
|
entity.setSmall(true)
|
||||||
entity.setHasArms(true)
|
entity.setHasArms(true)
|
||||||
|
|
||||||
|
entity.onClick { event ->
|
||||||
|
println("bbbbbbbbbbbbbb")
|
||||||
|
if (event.isAttack) {
|
||||||
|
if (ownerUUID == event.player.uniqueId && Config.ONLY_OWNER_BREAK()) {
|
||||||
|
breakMinion(event)
|
||||||
|
} else if (AxMinionsPlugin.integrations.getProtectionIntegration().canBuildAt(event.player, event.packetEntity.location)) {
|
||||||
|
breakMinion(event)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (ownerUUID == event.player.uniqueId || AxMinionsPlugin.integrations.getProtectionIntegration().canBuildAt(event.player, event.packetEntity.location)) {
|
||||||
|
Scheduler.get().run {
|
||||||
|
openInventory(event.player)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
entity.name = StringUtils.format(
|
entity.name = StringUtils.format(
|
||||||
type.getConfig().get("entity.name"),
|
type.getConfig().get("entity.name"),
|
||||||
Placeholder.unparsed("owner", owner.name ?: "???"),
|
Placeholder.unparsed("owner", owner.name ?: "???"),
|
||||||
@ -98,23 +117,6 @@ class Minion(
|
|||||||
|
|
||||||
setDirection(direction)
|
setDirection(direction)
|
||||||
updateArmour()
|
updateArmour()
|
||||||
entity.onClick { event ->
|
|
||||||
if (event.isAttack) {
|
|
||||||
// if (ownerUUID == event.player.uniqueId && Config.ONLY_OWNER_BREAK()) {
|
|
||||||
// breakMinion(event)
|
|
||||||
// } else if (AxMinionsPlugin.integrations.getProtectionIntegration().canBuildAt(event.player, event.packetEntity.location)) {
|
|
||||||
breakMinion(event)
|
|
||||||
// }
|
|
||||||
} else {
|
|
||||||
/* if (ownerUUID == event.player.uniqueId || AxMinionsPlugin.integrations.getProtectionIntegration().canBuildAt(event.player, event.packetEntity.location)) {
|
|
||||||
|
|
||||||
}*/
|
|
||||||
|
|
||||||
Scheduler.get().run {
|
|
||||||
openInventory(event.player)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun breakMinion(event: PacketEntityInteractEvent) {
|
private fun breakMinion(event: PacketEntityInteractEvent) {
|
||||||
@ -235,8 +237,9 @@ class Minion(
|
|||||||
inventory.setItem(i, filler)
|
inventory.setItem(i, filler)
|
||||||
}
|
}
|
||||||
|
|
||||||
updateInventory(inventory)
|
println("aaaaa")
|
||||||
player.openInventory(inventory)
|
player.openInventory(inventory)
|
||||||
|
updateInventory(inventory)
|
||||||
openInventories.add(inventory)
|
openInventories.add(inventory)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -291,6 +294,7 @@ class Minion(
|
|||||||
}
|
}
|
||||||
|
|
||||||
AxMinionsPlugin.dataQueue.submit {
|
AxMinionsPlugin.dataQueue.submit {
|
||||||
|
println("Saving minion!")
|
||||||
AxMinionsPlugin.dataHandler.saveMinion(this)
|
AxMinionsPlugin.dataHandler.saveMinion(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -375,6 +379,7 @@ class Minion(
|
|||||||
entity.teleport(location)
|
entity.teleport(location)
|
||||||
|
|
||||||
AxMinionsPlugin.dataQueue.submit {
|
AxMinionsPlugin.dataQueue.submit {
|
||||||
|
println("Saving minion!")
|
||||||
AxMinionsPlugin.dataHandler.saveMinion(this)
|
AxMinionsPlugin.dataHandler.saveMinion(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,6 @@ object Minions {
|
|||||||
|
|
||||||
if (pos === null) {
|
if (pos === null) {
|
||||||
pos = ChunkPos(chunkX, chunkZ)
|
pos = ChunkPos(chunkX, chunkZ)
|
||||||
println("Adding new pos! $pos")
|
|
||||||
minions.add(pos!!)
|
minions.add(pos!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,6 @@ import com.artillexstudios.axminions.nms.NMSHandler
|
|||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
import org.bukkit.Material
|
import org.bukkit.Material
|
||||||
import org.bukkit.enchantments.Enchantment
|
import org.bukkit.enchantments.Enchantment
|
||||||
import org.bukkit.entity.Item
|
|
||||||
import org.bukkit.entity.LivingEntity
|
import org.bukkit.entity.LivingEntity
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
import org.bukkit.entity.Tameable
|
import org.bukkit.entity.Tameable
|
||||||
@ -63,19 +62,6 @@ class SlayerMinionType : MinionType("slayer", AxMinionsPlugin.INSTANCE.getResour
|
|||||||
}
|
}
|
||||||
|
|
||||||
NMSHandler.get().attack(minion, it)
|
NMSHandler.get().attack(minion, it)
|
||||||
it.location.world!!.getNearbyEntities(it.location, 2.0, 2.0, 2.0).filterIsInstance<Item>().fastFor { item ->
|
|
||||||
if (minion.getLinkedInventory()?.firstEmpty() == -1) {
|
|
||||||
Warnings.CONTAINER_FULL.display(minion)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
val amount = AxMinionsPlugin.integrations.getStackerIntegration().getStackSize(item)
|
|
||||||
val stack = item.itemStack
|
|
||||||
stack.amount = amount.toInt()
|
|
||||||
|
|
||||||
minion.addToContainerOrDrop(stack)
|
|
||||||
item.remove()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Binary file not shown.
BIN
nms/libs/AxAPI-1.0-SNAPSHOT.jar
Normal file
BIN
nms/libs/AxAPI-1.0-SNAPSHOT.jar
Normal file
Binary file not shown.
@ -1,6 +1,7 @@
|
|||||||
package com.artillexstudios.axminions.nms.v1_20_R1
|
package com.artillexstudios.axminions.nms.v1_20_R1
|
||||||
|
|
||||||
import com.artillexstudios.axminions.api.events.MinionDamageEntityEvent
|
import com.artillexstudios.axminions.api.events.MinionKillEntityEvent
|
||||||
|
import com.artillexstudios.axminions.api.events.PreMinionDamageEntityEvent
|
||||||
import com.artillexstudios.axminions.api.minions.Minion
|
import com.artillexstudios.axminions.api.minions.Minion
|
||||||
import net.minecraft.core.particles.ParticleTypes
|
import net.minecraft.core.particles.ParticleTypes
|
||||||
import net.minecraft.server.level.ServerLevel
|
import net.minecraft.server.level.ServerLevel
|
||||||
@ -85,7 +86,7 @@ object DamageHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val event = MinionDamageEntityEvent(source, entity as org.bukkit.entity.LivingEntity, f.toDouble())
|
val event = PreMinionDamageEntityEvent(source, entity as org.bukkit.entity.LivingEntity, f.toDouble())
|
||||||
Bukkit.getPluginManager().callEvent(event)
|
Bukkit.getPluginManager().callEvent(event)
|
||||||
if (event.isCancelled) {
|
if (event.isCancelled) {
|
||||||
return
|
return
|
||||||
@ -94,6 +95,11 @@ object DamageHandler {
|
|||||||
val flag5 = nmsEntity.hurt(nmsEntity.damageSources().magic(), f.toFloat())
|
val flag5 = nmsEntity.hurt(nmsEntity.damageSources().magic(), f.toFloat())
|
||||||
|
|
||||||
if (flag5) {
|
if (flag5) {
|
||||||
|
if ((nmsEntity as LivingEntity).isDeadOrDying) {
|
||||||
|
val killEvent = MinionKillEntityEvent(source, entity, nmsEntity.drops)
|
||||||
|
Bukkit.getPluginManager().callEvent(killEvent)
|
||||||
|
}
|
||||||
|
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
if (nmsEntity is LivingEntity) {
|
if (nmsEntity is LivingEntity) {
|
||||||
(nmsEntity).knockback(
|
(nmsEntity).knockback(
|
||||||
@ -120,11 +126,16 @@ object DamageHandler {
|
|||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
val entityliving: LivingEntity = iterator.next() as LivingEntity
|
val entityliving: LivingEntity = iterator.next() as LivingEntity
|
||||||
|
|
||||||
if ((entityliving !is ArmorStand || !(entityliving).isMarker) && source.getLocation().distanceSquared(
|
if ((entityliving !is ArmorStand || !(entityliving).isMarker) && source.getLocation()
|
||||||
(entity as Entity).location
|
.distanceSquared(
|
||||||
) < 9.0
|
(entity as Entity).location
|
||||||
|
) < 9.0
|
||||||
) {
|
) {
|
||||||
val damageEvent = MinionDamageEntityEvent(source, entityliving.bukkitEntity as org.bukkit.entity.LivingEntity, f4.toDouble())
|
val damageEvent = PreMinionDamageEntityEvent(
|
||||||
|
source,
|
||||||
|
entityliving.bukkitEntity as org.bukkit.entity.LivingEntity,
|
||||||
|
f4.toDouble()
|
||||||
|
)
|
||||||
Bukkit.getPluginManager().callEvent(damageEvent)
|
Bukkit.getPluginManager().callEvent(damageEvent)
|
||||||
if (event.isCancelled) {
|
if (event.isCancelled) {
|
||||||
return
|
return
|
||||||
@ -132,6 +143,10 @@ object DamageHandler {
|
|||||||
|
|
||||||
// CraftBukkit start - Only apply knockback if the damage hits
|
// CraftBukkit start - Only apply knockback if the damage hits
|
||||||
if (entityliving.hurt(nmsEntity.damageSources().magic(), f4)) {
|
if (entityliving.hurt(nmsEntity.damageSources().magic(), f4)) {
|
||||||
|
if (entityliving.isDeadOrDying) {
|
||||||
|
val killEvent = MinionKillEntityEvent(source, entity, entityliving.drops)
|
||||||
|
Bukkit.getPluginManager().callEvent(killEvent)
|
||||||
|
}
|
||||||
entityliving.knockback(
|
entityliving.knockback(
|
||||||
0.4000000059604645,
|
0.4000000059604645,
|
||||||
Mth.sin(source.getLocation().yaw * 0.017453292f).toDouble(),
|
Mth.sin(source.getLocation().yaw * 0.017453292f).toDouble(),
|
||||||
|
Loading…
Reference in New Issue
Block a user