Internal refactoring, added Model Engine support as an arg parser

This commit is contained in:
Auxilor
2022-10-02 14:12:57 +01:00
parent debb39105d
commit 0775f0992f
37 changed files with 144 additions and 73 deletions

View File

@@ -4,7 +4,7 @@ import com.willfp.eco.core.entities.args.EntityArgParseResult
import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.entity.Ageable
class EntityArgParserAdult : EntityArgParser {
object EntityArgParserAdult : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var baby = false

View File

@@ -5,7 +5,7 @@ import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.attribute.Attribute
import org.bukkit.entity.LivingEntity
class EntityArgParserAttackDamage : EntityArgParser {
object EntityArgParserAttackDamage : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var attributeValue: Double? = null

View File

@@ -5,7 +5,7 @@ import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.attribute.Attribute
import org.bukkit.entity.LivingEntity
class EntityArgParserAttackSpeed : EntityArgParser {
object EntityArgParserAttackSpeed : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var attributeValue: Double? = null

View File

@@ -4,7 +4,7 @@ import com.willfp.eco.core.entities.args.EntityArgParseResult
import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.entity.Ageable
class EntityArgParserBaby : EntityArgParser {
object EntityArgParserBaby : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var baby = false

View File

@@ -4,7 +4,7 @@ import com.willfp.eco.core.entities.args.EntityArgParseResult
import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.entity.Creeper
class EntityArgParserCharged : EntityArgParser {
object EntityArgParserCharged : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var noAI = false

View File

@@ -7,7 +7,7 @@ import com.willfp.eco.core.items.TestableItem
import org.bukkit.entity.LivingEntity
import org.bukkit.inventory.EquipmentSlot
class EntityArgParserEquipment : EntityArgParser {
object EntityArgParserEquipment : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
val equipment = mutableMapOf<EquipmentSlot, TestableItem>()

View File

@@ -4,7 +4,7 @@ import com.willfp.eco.core.entities.args.EntityArgParseResult
import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.entity.Creeper
class EntityArgParserExplosionRadius : EntityArgParser {
object EntityArgParserExplosionRadius : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var size: Int? = null

View File

@@ -5,7 +5,7 @@ import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.attribute.Attribute
import org.bukkit.entity.LivingEntity
class EntityArgParserFlySpeed : EntityArgParser {
object EntityArgParserFlySpeed : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var attributeValue: Double? = null

View File

@@ -5,7 +5,7 @@ import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.attribute.Attribute
import org.bukkit.entity.LivingEntity
class EntityArgParserFollowRange : EntityArgParser {
object EntityArgParserFollowRange : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var attributeValue: Double? = null

View File

@@ -5,7 +5,7 @@ import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.attribute.Attribute
import org.bukkit.entity.LivingEntity
class EntityArgParserHealth : EntityArgParser {
object EntityArgParserHealth : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var health: Double? = null

View File

@@ -5,7 +5,7 @@ import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.attribute.Attribute
import org.bukkit.entity.LivingEntity
class EntityArgParserJumpStrength : EntityArgParser {
object EntityArgParserJumpStrength : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var attributeValue: Double? = null

View File

@@ -5,7 +5,7 @@ import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.attribute.Attribute
import org.bukkit.entity.LivingEntity
class EntityArgParserKnockback : EntityArgParser {
object EntityArgParserKnockback : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var attributeValue: Double? = null

View File

@@ -5,7 +5,7 @@ import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.attribute.Attribute
import org.bukkit.entity.LivingEntity
class EntityArgParserKnockbackResistance : EntityArgParser {
object EntityArgParserKnockbackResistance : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var attributeValue: Double? = null

View File

@@ -4,7 +4,7 @@ import com.willfp.eco.core.entities.args.EntityArgParseResult
import com.willfp.eco.core.entities.args.EntityArgParser
import com.willfp.eco.util.StringUtils
class EntityArgParserName : EntityArgParser {
object EntityArgParserName : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var name: String? = null

View File

@@ -4,7 +4,7 @@ import com.willfp.eco.core.entities.args.EntityArgParseResult
import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.entity.LivingEntity
class EntityArgParserNoAI : EntityArgParser {
object EntityArgParserNoAI : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var noAI = false

View File

@@ -3,7 +3,7 @@ package com.willfp.eco.internal.entities
import com.willfp.eco.core.entities.args.EntityArgParseResult
import com.willfp.eco.core.entities.args.EntityArgParser
class EntityArgParserSilent : EntityArgParser {
object EntityArgParserSilent : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var silent = false

View File

@@ -5,7 +5,7 @@ import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.entity.Phantom
import org.bukkit.entity.Slime
class EntityArgParserSize : EntityArgParser {
object EntityArgParserSize : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var size: Int? = null

View File

@@ -5,7 +5,7 @@ import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.attribute.Attribute
import org.bukkit.entity.LivingEntity
class EntityArgParserSpawnReinforcements : EntityArgParser {
object EntityArgParserSpawnReinforcements : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var attributeValue: Double? = null

View File

@@ -5,7 +5,7 @@ import com.willfp.eco.core.entities.args.EntityArgParser
import org.bukkit.attribute.Attribute
import org.bukkit.entity.LivingEntity
class EntityArgParserSpeed : EntityArgParser {
object EntityArgParserSpeed : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var attributeValue: Double? = null

View File

@@ -7,7 +7,7 @@ import org.bukkit.inventory.meta.ItemMeta
import org.bukkit.inventory.meta.LeatherArmorMeta
import java.util.function.Predicate
class ArgParserColor : LookupArgParser {
object ArgParserColor : LookupArgParser {
override fun parseArguments(args: Array<out String>, meta: ItemMeta): Predicate<ItemStack>? {
if (meta !is LeatherArmorMeta) {
return null

View File

@@ -5,7 +5,7 @@ import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.ItemMeta
import java.util.function.Predicate
class ArgParserCustomModelData : LookupArgParser {
object ArgParserCustomModelData : LookupArgParser {
override fun parseArguments(args: Array<out String>, meta: ItemMeta): Predicate<ItemStack>? {
var modelData: Int? = null

View File

@@ -9,7 +9,7 @@ import org.bukkit.inventory.meta.EnchantmentStorageMeta
import org.bukkit.inventory.meta.ItemMeta
import java.util.function.Predicate
class ArgParserEnchantment : LookupArgParser {
object ArgParserEnchantment : LookupArgParser {
override fun parseArguments(args: Array<out String>, meta: ItemMeta): Predicate<ItemStack>? {
val enchants = mutableMapOf<Enchantment, Int>()

View File

@@ -6,7 +6,7 @@ import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.ItemMeta
import java.util.function.Predicate
class ArgParserFlag : LookupArgParser {
object ArgParserFlag : LookupArgParser {
override fun parseArguments(args: Array<out String>, meta: ItemMeta): Predicate<ItemStack>? {
val flags = mutableSetOf<ItemFlag>()

View File

@@ -6,7 +6,7 @@ import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.ItemMeta
import java.util.function.Predicate
class ArgParserName : LookupArgParser {
object ArgParserName : LookupArgParser {
override fun parseArguments(args: Array<out String>, meta: ItemMeta): Predicate<ItemStack>? {
var name: String? = null

View File

@@ -7,7 +7,7 @@ import org.bukkit.inventory.meta.ItemMeta
import org.bukkit.inventory.meta.SkullMeta
import java.util.function.Predicate
class ArgParserTexture : LookupArgParser {
object ArgParserTexture : LookupArgParser {
override fun parseArguments(args: Array<out String>, meta: ItemMeta): Predicate<ItemStack>? {
if (meta !is SkullMeta) {
return null

View File

@@ -5,7 +5,7 @@ import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.ItemMeta
import java.util.function.Predicate
class ArgParserUnbreakable : LookupArgParser {
object ArgParserUnbreakable : LookupArgParser {
override fun parseArguments(args: Array<out String>, meta: ItemMeta): Predicate<ItemStack>? {
var unbreakable = false

View File

@@ -4,7 +4,7 @@ import com.willfp.eco.core.lookup.LookupHandler
import com.willfp.eco.core.lookup.SegmentParser
import com.willfp.eco.core.lookup.Testable
class SegmentParserGroup : SegmentParser("||") {
object SegmentParserGroup : SegmentParser("||") {
override fun <T : Testable<*>> handleSegments(segments: Array<out String>, handler: LookupHandler<T>): T {
val possibleOptions = mutableListOf<T>()

View File

@@ -4,7 +4,7 @@ import com.willfp.eco.core.lookup.LookupHandler
import com.willfp.eco.core.lookup.SegmentParser
import com.willfp.eco.core.lookup.Testable
class SegmentParserUseIfPresent : SegmentParser("?") {
object SegmentParserUseIfPresent : SegmentParser("?") {
override fun <T : Testable<*>> handleSegments(segments: Array<out String>, handler: LookupHandler<T>): T {
for (option in segments) {
val lookup = handler.parseKey(option)

View File

@@ -49,6 +49,7 @@ dependencies {
compileOnly 'com.github.decentsoftware-eu:decentholograms:2.1.2'
compileOnly 'com.github.Gypopo:EconomyShopGUI-API:1.1.0'
compileOnly 'com.github.N0RSKA:ScytherAPI:55a'
compileOnly 'com.ticxo.modelengine:api:R3.0.1'
// MythicMobs
compileOnly 'io.lumine:Mythic:5.0.1'

View File

@@ -100,6 +100,7 @@ import com.willfp.eco.internal.spigot.integrations.customitems.CustomItemsOraxen
import com.willfp.eco.internal.spigot.integrations.customitems.CustomItemsScyther
import com.willfp.eco.internal.spigot.integrations.customrecipes.CustomRecipeCustomCrafting
import com.willfp.eco.internal.spigot.integrations.economy.EconomyVault
import com.willfp.eco.internal.spigot.integrations.entitylookup.EntityLookupModelEngine
import com.willfp.eco.internal.spigot.integrations.hologram.HologramCMI
import com.willfp.eco.internal.spigot.integrations.hologram.HologramDecentHolograms
import com.willfp.eco.internal.spigot.integrations.hologram.HologramHolographicDisplays
@@ -117,7 +118,6 @@ import com.willfp.eco.internal.spigot.recipes.listeners.ComplexInComplex
import com.willfp.eco.internal.spigot.recipes.listeners.ComplexInVanilla
import com.willfp.eco.internal.spigot.recipes.stackhandlers.ShapedCraftingRecipeStackHandler
import com.willfp.eco.internal.spigot.recipes.stackhandlers.ShapelessCraftingRecipeStackHandler
import net.kyori.adventure.platform.bukkit.BukkitAudiences
import net.milkbowl.vault.economy.Economy
import org.bukkit.Bukkit
import org.bukkit.Material
@@ -129,42 +129,42 @@ abstract class EcoSpigotPlugin : EcoPlugin() {
protected abstract val profileHandler: EcoProfileHandler
init {
Items.registerArgParser(ArgParserEnchantment())
Items.registerArgParser(ArgParserColor())
Items.registerArgParser(ArgParserTexture())
Items.registerArgParser(ArgParserCustomModelData())
Items.registerArgParser(ArgParserFlag())
Items.registerArgParser(ArgParserUnbreakable())
Items.registerArgParser(ArgParserName())
Items.registerArgParser(ArgParserEnchantment)
Items.registerArgParser(ArgParserColor)
Items.registerArgParser(ArgParserTexture)
Items.registerArgParser(ArgParserCustomModelData)
Items.registerArgParser(ArgParserFlag)
Items.registerArgParser(ArgParserUnbreakable)
Items.registerArgParser(ArgParserName)
Entities.registerArgParser(EntityArgParserName())
Entities.registerArgParser(EntityArgParserNoAI())
Entities.registerArgParser(EntityArgParserAttackDamage())
Entities.registerArgParser(EntityArgParserAttackSpeed())
Entities.registerArgParser(EntityArgParserFlySpeed())
Entities.registerArgParser(EntityArgParserFollowRange())
Entities.registerArgParser(EntityArgParserHealth())
Entities.registerArgParser(EntityArgParserJumpStrength())
Entities.registerArgParser(EntityArgParserKnockback())
Entities.registerArgParser(EntityArgParserKnockbackResistance())
Entities.registerArgParser(EntityArgParserSize())
Entities.registerArgParser(EntityArgParserSpawnReinforcements())
Entities.registerArgParser(EntityArgParserSpeed())
Entities.registerArgParser(EntityArgParserBaby())
Entities.registerArgParser(EntityArgParserAdult())
Entities.registerArgParser(EntityArgParserCharged())
Entities.registerArgParser(EntityArgParserExplosionRadius())
Entities.registerArgParser(EntityArgParserSilent())
Entities.registerArgParser(EntityArgParserEquipment())
Entities.registerArgParser(EntityArgParserName)
Entities.registerArgParser(EntityArgParserNoAI)
Entities.registerArgParser(EntityArgParserAttackDamage)
Entities.registerArgParser(EntityArgParserAttackSpeed)
Entities.registerArgParser(EntityArgParserFlySpeed)
Entities.registerArgParser(EntityArgParserFollowRange)
Entities.registerArgParser(EntityArgParserHealth)
Entities.registerArgParser(EntityArgParserJumpStrength)
Entities.registerArgParser(EntityArgParserKnockback)
Entities.registerArgParser(EntityArgParserKnockbackResistance)
Entities.registerArgParser(EntityArgParserSize)
Entities.registerArgParser(EntityArgParserSpawnReinforcements)
Entities.registerArgParser(EntityArgParserSpeed)
Entities.registerArgParser(EntityArgParserBaby)
Entities.registerArgParser(EntityArgParserAdult)
Entities.registerArgParser(EntityArgParserCharged)
Entities.registerArgParser(EntityArgParserExplosionRadius)
Entities.registerArgParser(EntityArgParserSilent)
Entities.registerArgParser(EntityArgParserEquipment)
CraftingRecipeListener.registerListener(ComplexInComplex())
CraftingRecipeListener.registerListener(ComplexInVanilla())
CraftingRecipeListener.registerListener(ComplexInComplex)
CraftingRecipeListener.registerListener(ComplexInVanilla)
StackedRecipeListener.registerHandler(ShapedCraftingRecipeStackHandler())
StackedRecipeListener.registerHandler(ShapelessCraftingRecipeStackHandler())
StackedRecipeListener.registerHandler(ShapedCraftingRecipeStackHandler)
StackedRecipeListener.registerHandler(ShapelessCraftingRecipeStackHandler)
SegmentParserGroup().register()
SegmentParserUseIfPresent().register()
SegmentParserGroup.register()
SegmentParserUseIfPresent.register()
CustomItemsManager.registerProviders()
}
@@ -317,7 +317,8 @@ abstract class EcoSpigotPlugin : EcoPlugin() {
this.eventManager.registerListener(
MultiverseInventoriesIntegration(this)
)
}
},
IntegrationLoader("ModelEngine") { EntityLookupModelEngine.register() }
)
}

View File

@@ -1,6 +1,8 @@
package com.willfp.eco.internal.spigot.arrows
import com.sun.tools.javac.jvm.ByteCodes.ret
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.items.isEmpty
import org.bukkit.Material
import org.bukkit.entity.Arrow
import org.bukkit.entity.LivingEntity
@@ -27,13 +29,9 @@ class ArrowDataListener(
val entity = arrow.shooter as LivingEntity
if (entity.equipment == null) {
return
}
val item = entity.equipment?.itemInMainHand
val item = entity.equipment!!.itemInMainHand
if (item.type == Material.AIR || !item.hasItemMeta() || item.itemMeta == null) {
if (item.isEmpty || item == null) {
return
}

View File

@@ -0,0 +1,70 @@
package com.willfp.eco.internal.spigot.integrations.entitylookup
import com.ticxo.modelengine.api.ModelEngineAPI
import com.willfp.eco.core.entities.Entities
import com.willfp.eco.core.entities.args.EntityArgParseResult
import com.willfp.eco.core.entities.args.EntityArgParser
import com.willfp.eco.core.integrations.Integration
object EntityLookupModelEngine : Integration {
fun register() {
Entities.registerArgParser(EntityArgParserModelEngine)
}
override fun getPluginName(): String {
return "ModelEngine"
}
private object EntityArgParserModelEngine : EntityArgParser {
override fun parseArguments(args: Array<out String>): EntityArgParseResult? {
var id: String? = null
var animation: String? = null
for (arg in args) {
val argSplit = arg.split(":")
if (!argSplit[0].equals("model-engine", ignoreCase = true)) {
continue
}
if (argSplit.size < 2) {
continue
}
val modelEngineInfo = argSplit[1].split(",")
id = modelEngineInfo.getOrNull(0)
animation = modelEngineInfo.getOrNull(1)
}
if (id == null) {
return null
}
return EntityArgParseResult(
{
val modelled = ModelEngineAPI.getModeledEntity(it.uniqueId)
if (modelled == null) {
return@EntityArgParseResult false
}
modelled.models.containsKey(id)
},
{
val model = ModelEngineAPI.createActiveModel(id)
if (animation != null) {
val handler = model.animationHandler
val property = handler.getAnimation(animation)
if (property != null) {
handler.playAnimation(property, true)
}
}
val modelled = ModelEngineAPI.createModeledEntity(it)
modelled.addModel(model, true)
}
)
}
}
}

View File

@@ -7,7 +7,7 @@ import com.willfp.eco.internal.spigot.recipes.GenericCraftEvent
import com.willfp.eco.internal.spigot.recipes.RecipeListener
import org.bukkit.entity.Player
class ComplexInComplex : RecipeListener {
object ComplexInComplex : RecipeListener {
override fun handle(event: GenericCraftEvent) {
val recipe = event.recipe

View File

@@ -6,7 +6,7 @@ import com.willfp.eco.internal.spigot.recipes.CraftingRecipeListener
import com.willfp.eco.internal.spigot.recipes.GenericCraftEvent
import com.willfp.eco.internal.spigot.recipes.RecipeListener
class ComplexInVanilla : RecipeListener {
object ComplexInVanilla : RecipeListener {
override fun handle(event: GenericCraftEvent) {
if (EcoPlugin.getPluginNames().contains(event.recipe.key.namespace)) {
return

View File

@@ -6,7 +6,7 @@ import com.willfp.eco.core.recipe.recipes.ShapedCraftingRecipe
import com.willfp.eco.internal.spigot.recipes.StackedRecipeHandler
import org.bukkit.inventory.ItemStack
class ShapedCraftingRecipeStackHandler : StackedRecipeHandler {
object ShapedCraftingRecipeStackHandler : StackedRecipeHandler {
override val recipeType = ShapedCraftingRecipe::class.java
override fun makeData(recipe: CraftingRecipe): Any? = null

View File

@@ -6,7 +6,7 @@ import com.willfp.eco.core.recipe.recipes.ShapelessCraftingRecipe
import com.willfp.eco.internal.spigot.recipes.StackedRecipeHandler
import org.bukkit.inventory.ItemStack
class ShapelessCraftingRecipeStackHandler :
object ShapelessCraftingRecipeStackHandler :
StackedRecipeHandler {
override val recipeType = ShapelessCraftingRecipe::class.java
override fun makeData(recipe: CraftingRecipe): Any {

View File

@@ -47,4 +47,5 @@ softdepend:
- EconomyShopGUI
- zShop
- DeluxeSellwands
- Scyther
- Scyther
- ModelEngine