From 0775f0992f4611a6f49c4cea9b520384df9d242e Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sun, 2 Oct 2022 14:12:57 +0100 Subject: [PATCH] Internal refactoring, added Model Engine support as an arg parser --- .../internal/entities/EntityArgParserAdult.kt | 2 +- .../entities/EntityArgParserAttackDamage.kt | 2 +- .../entities/EntityArgParserAttackSpeed.kt | 2 +- .../internal/entities/EntityArgParserBaby.kt | 2 +- .../entities/EntityArgParserCharged.kt | 2 +- .../entities/EntityArgParserEquipment.kt | 2 +- .../EntityArgParserExplosionRadius.kt | 2 +- .../entities/EntityArgParserFlySpeed.kt | 2 +- .../entities/EntityArgParserFollowRange.kt | 2 +- .../entities/EntityArgParserHealth.kt | 2 +- .../entities/EntityArgParserJumpStrength.kt | 2 +- .../entities/EntityArgParserKnockback.kt | 2 +- .../EntityArgParserKnockbackResistance.kt | 2 +- .../internal/entities/EntityArgParserName.kt | 2 +- .../internal/entities/EntityArgParserNoAI.kt | 2 +- .../entities/EntityArgParserSilent.kt | 2 +- .../internal/entities/EntityArgParserSize.kt | 2 +- .../EntityArgParserSpawnReinforcements.kt | 2 +- .../internal/entities/EntityArgParserSpeed.kt | 2 +- .../eco/internal/items/ArgParserColor.kt | 2 +- .../items/ArgParserCustomModelData.kt | 2 +- .../internal/items/ArgParserEnchantment.kt | 2 +- .../eco/internal/items/ArgParserFlag.kt | 2 +- .../eco/internal/items/ArgParserName.kt | 2 +- .../eco/internal/items/ArgParserTexture.kt | 2 +- .../internal/items/ArgParserUnbreakable.kt | 2 +- .../eco/internal/lookup/SegmentParserGroup.kt | 2 +- .../lookup/SegmentParserUseIfPresent.kt | 2 +- eco-core/core-plugin/build.gradle | 1 + .../eco/internal/spigot/EcoSpigotPlugin.kt | 69 +++++++++--------- .../spigot/arrows/ArrowDataListener.kt | 10 ++- .../entitylookup/EntityLookupModelEngine.kt | 70 +++++++++++++++++++ .../recipes/listeners/ComplexInComplex.kt | 2 +- .../recipes/listeners/ComplexInVanilla.kt | 2 +- .../ShapedCraftingRecipeStackHandler.kt | 2 +- .../ShapelessCraftingRecipeStackHandler.kt | 2 +- .../core-plugin/src/main/resources/plugin.yml | 3 +- 37 files changed, 144 insertions(+), 73 deletions(-) create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/integrations/entitylookup/EntityLookupModelEngine.kt diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserAdult.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserAdult.kt index 9cf94851..554a8f2b 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserAdult.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserAdult.kt @@ -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): EntityArgParseResult? { var baby = false diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserAttackDamage.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserAttackDamage.kt index 2cb6faa7..372d6395 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserAttackDamage.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserAttackDamage.kt @@ -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): EntityArgParseResult? { var attributeValue: Double? = null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserAttackSpeed.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserAttackSpeed.kt index 12f3f989..bef5c575 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserAttackSpeed.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserAttackSpeed.kt @@ -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): EntityArgParseResult? { var attributeValue: Double? = null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserBaby.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserBaby.kt index 1dbcfa30..26bc5cf5 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserBaby.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserBaby.kt @@ -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): EntityArgParseResult? { var baby = false diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserCharged.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserCharged.kt index 8a6d1a8b..a788b177 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserCharged.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserCharged.kt @@ -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): EntityArgParseResult? { var noAI = false diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserEquipment.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserEquipment.kt index d83cacc5..de699b3b 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserEquipment.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserEquipment.kt @@ -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): EntityArgParseResult? { val equipment = mutableMapOf() diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserExplosionRadius.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserExplosionRadius.kt index ed722797..1bc96c1d 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserExplosionRadius.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserExplosionRadius.kt @@ -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): EntityArgParseResult? { var size: Int? = null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserFlySpeed.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserFlySpeed.kt index 8a2ca9b3..1cdc5f75 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserFlySpeed.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserFlySpeed.kt @@ -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): EntityArgParseResult? { var attributeValue: Double? = null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserFollowRange.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserFollowRange.kt index 46eed58e..64a395d4 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserFollowRange.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserFollowRange.kt @@ -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): EntityArgParseResult? { var attributeValue: Double? = null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserHealth.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserHealth.kt index 95da7e06..80c22a71 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserHealth.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserHealth.kt @@ -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): EntityArgParseResult? { var health: Double? = null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserJumpStrength.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserJumpStrength.kt index cd5764c4..091472e6 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserJumpStrength.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserJumpStrength.kt @@ -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): EntityArgParseResult? { var attributeValue: Double? = null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserKnockback.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserKnockback.kt index bb41a345..bcb483b2 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserKnockback.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserKnockback.kt @@ -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): EntityArgParseResult? { var attributeValue: Double? = null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserKnockbackResistance.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserKnockbackResistance.kt index 02f29cb8..46647c4a 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserKnockbackResistance.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserKnockbackResistance.kt @@ -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): EntityArgParseResult? { var attributeValue: Double? = null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserName.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserName.kt index f5364448..b41bd617 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserName.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserName.kt @@ -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): EntityArgParseResult? { var name: String? = null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserNoAI.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserNoAI.kt index cb2eaa17..af6289c9 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserNoAI.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserNoAI.kt @@ -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): EntityArgParseResult? { var noAI = false diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSilent.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSilent.kt index dfb2ec09..4aa263b4 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSilent.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSilent.kt @@ -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): EntityArgParseResult? { var silent = false diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSize.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSize.kt index 229aa87d..8789768f 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSize.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSize.kt @@ -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): EntityArgParseResult? { var size: Int? = null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSpawnReinforcements.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSpawnReinforcements.kt index 3840b508..609b0c8f 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSpawnReinforcements.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSpawnReinforcements.kt @@ -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): EntityArgParseResult? { var attributeValue: Double? = null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSpeed.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSpeed.kt index f23f16aa..38b7a35d 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSpeed.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/entities/EntityArgParserSpeed.kt @@ -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): EntityArgParseResult? { var attributeValue: Double? = null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserColor.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserColor.kt index e3f8abd0..7a219eba 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserColor.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserColor.kt @@ -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, meta: ItemMeta): Predicate? { if (meta !is LeatherArmorMeta) { return null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserCustomModelData.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserCustomModelData.kt index b4d0faf1..bf474979 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserCustomModelData.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserCustomModelData.kt @@ -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, meta: ItemMeta): Predicate? { var modelData: Int? = null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserEnchantment.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserEnchantment.kt index 18791c07..06adf531 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserEnchantment.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserEnchantment.kt @@ -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, meta: ItemMeta): Predicate? { val enchants = mutableMapOf() diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserFlag.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserFlag.kt index 49560696..16acdb19 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserFlag.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserFlag.kt @@ -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, meta: ItemMeta): Predicate? { val flags = mutableSetOf() diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserName.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserName.kt index 9e00b764..abaee1cd 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserName.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserName.kt @@ -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, meta: ItemMeta): Predicate? { var name: String? = null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserTexture.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserTexture.kt index 70bea9cd..1d3e1e5e 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserTexture.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserTexture.kt @@ -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, meta: ItemMeta): Predicate? { if (meta !is SkullMeta) { return null diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserUnbreakable.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserUnbreakable.kt index f2f5f523..23766b65 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserUnbreakable.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserUnbreakable.kt @@ -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, meta: ItemMeta): Predicate? { var unbreakable = false diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/lookup/SegmentParserGroup.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/lookup/SegmentParserGroup.kt index 055364e5..0c04280c 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/lookup/SegmentParserGroup.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/lookup/SegmentParserGroup.kt @@ -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 > handleSegments(segments: Array, handler: LookupHandler): T { val possibleOptions = mutableListOf() diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/lookup/SegmentParserUseIfPresent.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/lookup/SegmentParserUseIfPresent.kt index 36bda497..0bbfa2ca 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/lookup/SegmentParserUseIfPresent.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/lookup/SegmentParserUseIfPresent.kt @@ -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 > handleSegments(segments: Array, handler: LookupHandler): T { for (option in segments) { val lookup = handler.parseKey(option) diff --git a/eco-core/core-plugin/build.gradle b/eco-core/core-plugin/build.gradle index da3c0823..47415c1e 100644 --- a/eco-core/core-plugin/build.gradle +++ b/eco-core/core-plugin/build.gradle @@ -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' diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/EcoSpigotPlugin.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/EcoSpigotPlugin.kt index 7af3500e..2c24d36e 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/EcoSpigotPlugin.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/EcoSpigotPlugin.kt @@ -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() } ) } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/arrows/ArrowDataListener.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/arrows/ArrowDataListener.kt index c2cd1e9a..ab68e9c7 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/arrows/ArrowDataListener.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/arrows/ArrowDataListener.kt @@ -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 } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/integrations/entitylookup/EntityLookupModelEngine.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/integrations/entitylookup/EntityLookupModelEngine.kt new file mode 100644 index 00000000..1b3db14b --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/integrations/entitylookup/EntityLookupModelEngine.kt @@ -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): 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) + } + ) + } + } +} diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/listeners/ComplexInComplex.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/listeners/ComplexInComplex.kt index ee7e2471..6a9ad4db 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/listeners/ComplexInComplex.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/listeners/ComplexInComplex.kt @@ -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 diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/listeners/ComplexInVanilla.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/listeners/ComplexInVanilla.kt index 00849e61..e26b42ca 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/listeners/ComplexInVanilla.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/listeners/ComplexInVanilla.kt @@ -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 diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/stackhandlers/ShapedCraftingRecipeStackHandler.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/stackhandlers/ShapedCraftingRecipeStackHandler.kt index 8d69da53..7ffa9432 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/stackhandlers/ShapedCraftingRecipeStackHandler.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/stackhandlers/ShapedCraftingRecipeStackHandler.kt @@ -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 diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/stackhandlers/ShapelessCraftingRecipeStackHandler.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/stackhandlers/ShapelessCraftingRecipeStackHandler.kt index 42c8f179..0940721f 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/stackhandlers/ShapelessCraftingRecipeStackHandler.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/recipes/stackhandlers/ShapelessCraftingRecipeStackHandler.kt @@ -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 { diff --git a/eco-core/core-plugin/src/main/resources/plugin.yml b/eco-core/core-plugin/src/main/resources/plugin.yml index 758db3e0..0fce334d 100644 --- a/eco-core/core-plugin/src/main/resources/plugin.yml +++ b/eco-core/core-plugin/src/main/resources/plugin.yml @@ -47,4 +47,5 @@ softdepend: - EconomyShopGUI - zShop - DeluxeSellwands - - Scyther \ No newline at end of file + - Scyther + - ModelEngine \ No newline at end of file