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

@@ -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