From 1bada835ea213ea35ee575eac9edbadf04a5435a Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sun, 23 Jun 2024 14:20:49 +0100 Subject: [PATCH] Added 1.21 item arg parsers --- eco-core/core-backend/build.gradle.kts | 14 +++++- .../entities/EntityArgParserJumpStrength.kt | 4 +- .../eco/internal/items/ArgParserColor.kt | 2 +- .../internal/items/ArgParserEnchantment.kt | 1 + .../eco/internal/items/ArgParserEntity.kt | 2 +- .../eco/internal/items/ArgParserName.kt | 34 ++++--------- .../eco/internal/items/ArgParserTexture.kt | 2 +- .../internal/items/ArgParserUnbreakable.kt | 36 +++---------- .../items/modern/ArgParserFireResistant.kt | 14 ++++++ .../internal/items/modern/ArgParserGlint.kt | 14 ++++++ .../items/modern/ArgParserItemName.kt | 27 ++++++++++ .../items/modern/ArgParserMaxDamage.kt | 35 +++++++++++++ .../items/modern/ArgParserMaxStackSize.kt | 27 ++++++++++ .../items/{ => modern}/ArgParserTrim.kt | 15 ++++-- .../internal/items/templates/FlagArgParser.kt | 44 ++++++++++++++++ .../items/templates/ValueArgParser.kt | 50 +++++++++++++++++++ .../internal/particle/ParticleFactoryRGB.kt | 13 ++++- .../eco/internal/spigot/EcoSpigotPlugin.kt | 14 +++++- 18 files changed, 283 insertions(+), 65 deletions(-) create mode 100644 eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserFireResistant.kt create mode 100644 eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserGlint.kt create mode 100644 eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserItemName.kt create mode 100644 eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserMaxDamage.kt create mode 100644 eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserMaxStackSize.kt rename eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/{ => modern}/ArgParserTrim.kt (78%) create mode 100644 eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/templates/FlagArgParser.kt create mode 100644 eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/templates/ValueArgParser.kt diff --git a/eco-core/core-backend/build.gradle.kts b/eco-core/core-backend/build.gradle.kts index f951608dc..59a77f67c 100644 --- a/eco-core/core-backend/build.gradle.kts +++ b/eco-core/core-backend/build.gradle.kts @@ -6,10 +6,22 @@ dependencies { implementation("org.reflections:reflections:0.9.12") implementation("org.objenesis:objenesis:3.2") - compileOnly("io.papermc.paper:paper-api:1.20.2-R0.1-SNAPSHOT") + compileOnly("io.papermc.paper:paper-api:1.21-R0.1-SNAPSHOT") compileOnly("me.clip:placeholderapi:2.11.4") compileOnly("net.kyori:adventure-text-minimessage:4.10.0") compileOnly("net.kyori:adventure-platform-bukkit:4.1.0") compileOnly("org.yaml:snakeyaml:1.33") compileOnly("com.moandjiezana.toml:toml4j:0.7.2") } + +tasks { + compileJava { + options.release = 21 + } + + compileKotlin { + kotlinOptions { + jvmTarget = "21" + } + } +} 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 091472e6a..515a8773d 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 @@ -28,7 +28,7 @@ object EntityArgParserJumpStrength : EntityArgParser { return@EntityArgParseResult false } - val inst = it.getAttribute(Attribute.HORSE_JUMP_STRENGTH) ?: return@EntityArgParseResult false + val inst = it.getAttribute(Attribute.GENERIC_JUMP_STRENGTH) ?: return@EntityArgParseResult false inst.value >= attributeValue }, { @@ -36,7 +36,7 @@ object EntityArgParserJumpStrength : EntityArgParser { return@EntityArgParseResult } - it.getAttribute(Attribute.HORSE_JUMP_STRENGTH)?.baseValue = attributeValue + it.getAttribute(Attribute.GENERIC_JUMP_STRENGTH)?.baseValue = attributeValue } ) } 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 7a219eba9..7b513ff43 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 @@ -49,4 +49,4 @@ object ArgParserColor : LookupArgParser { return "color:#${Integer.toHexString(meta.color.asRGB())}" } -} \ No newline at end of file +} 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 06adf5316..8e28bb7f2 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 @@ -20,6 +20,7 @@ object ArgParserEnchantment : LookupArgParser { continue } + @Suppress("DEPRECATION") val enchant = Enchantment.getByKey(NamespacedKeyUtils.create("minecraft", argSplit[0])) val level = argSplit[1].toIntOrNull() diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserEntity.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserEntity.kt index 05387c11b..8a47e509d 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserEntity.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserEntity.kt @@ -61,4 +61,4 @@ object ArgParserEntity : LookupArgParser { return state.spawnedType?.let { "entity:${state.spawnedType!!.name}" } ?: return null } -} \ No newline at end of file +} 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 608f04761..7d964d669 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 @@ -1,44 +1,30 @@ package com.willfp.eco.internal.items -import com.willfp.eco.core.items.args.LookupArgParser +import com.willfp.eco.internal.items.templates.ValueArgParser import com.willfp.eco.util.StringUtils import org.bukkit.inventory.ItemStack import org.bukkit.inventory.meta.ItemMeta import java.util.function.Predicate -object ArgParserName : LookupArgParser { - override fun parseArguments(args: Array, meta: ItemMeta): Predicate? { - var name: String? = null - - for (arg in args) { - if (!arg.lowercase().startsWith("name:")) { - continue - } - name = arg.substring(5, arg.length) - } - - name ?: return null +object ArgParserName : ValueArgParser("name") { + override fun parse(arg: String): String { + return arg + } - val formatted = StringUtils.format(name) + override fun apply(meta: ItemMeta, value: String) { + val formatted = StringUtils.format(value) // I don't know why it says it's redundant, the compiler yells at me @Suppress("UsePropertyAccessSyntax", "RedundantSuppression", "DEPRECATION") meta.setDisplayName(formatted) - - return Predicate { - val testMeta = it.itemMeta ?: return@Predicate false - - @Suppress("DEPRECATION") - testMeta.displayName == formatted - } } - override fun serializeBack(meta: ItemMeta): String? { + override fun test(meta: ItemMeta): String? { if (!meta.hasDisplayName()) { return null } @Suppress("DEPRECATION") - return "name:\"${meta.displayName}\"" + return meta.displayName } -} \ No newline at end of file +} 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 1d3e1e5eb..9350e8301 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 @@ -44,4 +44,4 @@ object ArgParserTexture : LookupArgParser { return "texture:${SkullUtils.getSkullTexture(meta)}" } -} \ No newline at end of file +} 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 23766b65b..001168d83 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 @@ -1,38 +1,14 @@ package com.willfp.eco.internal.items -import com.willfp.eco.core.items.args.LookupArgParser -import org.bukkit.inventory.ItemStack +import com.willfp.eco.internal.items.templates.FlagArgParser import org.bukkit.inventory.meta.ItemMeta -import java.util.function.Predicate - -object ArgParserUnbreakable : LookupArgParser { - override fun parseArguments(args: Array, meta: ItemMeta): Predicate? { - var unbreakable = false - - for (arg in args) { - if (arg.equals("unbreakable", true)) { - unbreakable = true - } - } - - if (!unbreakable) { - return null - } +object ArgParserUnbreakable : FlagArgParser("unbreakable") { + override fun apply(meta: ItemMeta) { meta.isUnbreakable = true - - return Predicate { - val testMeta = it.itemMeta ?: return@Predicate false - - testMeta.isUnbreakable - } } - override fun serializeBack(meta: ItemMeta): String? { - if (!meta.isUnbreakable) { - return null - } - - return "unbreakable" + override fun test(meta: ItemMeta): Boolean { + return meta.isUnbreakable } -} \ No newline at end of file +} diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserFireResistant.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserFireResistant.kt new file mode 100644 index 000000000..9a2c2b57d --- /dev/null +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserFireResistant.kt @@ -0,0 +1,14 @@ +package com.willfp.eco.internal.items.modern + +import com.willfp.eco.internal.items.templates.FlagArgParser +import org.bukkit.inventory.meta.ItemMeta + +object ArgParserFireResistant : FlagArgParser("fire_resistant") { + override fun apply(meta: ItemMeta) { + meta.isFireResistant = true + } + + override fun test(meta: ItemMeta): Boolean { + return meta.isFireResistant + } +} diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserGlint.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserGlint.kt new file mode 100644 index 000000000..4efe6d990 --- /dev/null +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserGlint.kt @@ -0,0 +1,14 @@ +package com.willfp.eco.internal.items.modern + +import com.willfp.eco.internal.items.templates.FlagArgParser +import org.bukkit.inventory.meta.ItemMeta + +object ArgParserGlint : FlagArgParser("glint") { + override fun apply(meta: ItemMeta) { + meta.setEnchantmentGlintOverride(true) + } + + override fun test(meta: ItemMeta): Boolean { + return meta.hasEnchantmentGlintOverride() + } +} diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserItemName.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserItemName.kt new file mode 100644 index 000000000..d390455cb --- /dev/null +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserItemName.kt @@ -0,0 +1,27 @@ +package com.willfp.eco.internal.items.modern + +import com.willfp.eco.internal.items.templates.ValueArgParser +import com.willfp.eco.util.StringUtils +import net.kyori.adventure.text.Component +import net.kyori.adventure.text.minimessage.MiniMessage +import org.bukkit.inventory.meta.ItemMeta + +object ArgParserItemName : ValueArgParser("item_name") { + override fun parse(arg: String): Component { + return StringUtils.formatToComponent(arg) + } + + override fun apply(meta: ItemMeta, value: Component) { + meta.itemName(value) + } + + override fun test(meta: ItemMeta): String? { + if (!meta.hasItemName()) { + return null + } + + val name = MiniMessage.miniMessage().serialize(meta.itemName()) + + return name + } +} diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserMaxDamage.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserMaxDamage.kt new file mode 100644 index 000000000..d815e19eb --- /dev/null +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserMaxDamage.kt @@ -0,0 +1,35 @@ +package com.willfp.eco.internal.items.modern + +import com.willfp.eco.internal.items.templates.ValueArgParser +import com.willfp.eco.util.StringUtils +import net.kyori.adventure.text.Component +import net.kyori.adventure.text.minimessage.MiniMessage +import org.bukkit.inventory.meta.Damageable +import org.bukkit.inventory.meta.ItemMeta +import org.checkerframework.checker.units.qual.m + +object ArgParserMaxDamage : ValueArgParser("max_damage") { + override fun parse(arg: String): Int? { + return arg.toIntOrNull() + } + + override fun apply(meta: ItemMeta, value: Int) { + if (meta !is Damageable) { + return + } + + meta.setMaxDamage(value) + } + + override fun test(meta: ItemMeta): String? { + if (meta !is Damageable) { + return null + } + + if (!meta.hasMaxDamage()) { + return null + } + + return meta.maxDamage.toString() + } +} diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserMaxStackSize.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserMaxStackSize.kt new file mode 100644 index 000000000..4c9af0f79 --- /dev/null +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserMaxStackSize.kt @@ -0,0 +1,27 @@ +package com.willfp.eco.internal.items.modern + +import com.willfp.eco.internal.items.templates.ValueArgParser +import com.willfp.eco.util.StringUtils +import net.kyori.adventure.text.Component +import net.kyori.adventure.text.minimessage.MiniMessage +import org.bukkit.inventory.meta.Damageable +import org.bukkit.inventory.meta.ItemMeta +import org.checkerframework.checker.units.qual.m + +object ArgParserMaxStackSize : ValueArgParser("max_stack_size") { + override fun parse(arg: String): Int? { + return arg.toIntOrNull() + } + + override fun apply(meta: ItemMeta, value: Int) { + meta.setMaxStackSize(value) + } + + override fun test(meta: ItemMeta): String? { + if (!meta.hasMaxStackSize()) { + return null + } + + return meta.maxStackSize.toString() + } +} diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserTrim.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserTrim.kt similarity index 78% rename from eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserTrim.kt rename to eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserTrim.kt index 80d7f40b0..8c7122e7a 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/ArgParserTrim.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/modern/ArgParserTrim.kt @@ -1,4 +1,4 @@ -package com.willfp.eco.internal.items +package com.willfp.eco.internal.items.modern import com.willfp.eco.core.items.args.LookupArgParser import org.bukkit.NamespacedKey @@ -23,7 +23,11 @@ object ArgParserTrim : LookupArgParser { if (!argSplit[0].equals("trim", ignoreCase = true)) { continue } + + @Suppress("DEPRECATION") material = Registry.TRIM_MATERIAL.get(NamespacedKey.minecraft(argSplit.getOrElse(1) {""})) + + @Suppress("DEPRECATION") pattern = Registry.TRIM_PATTERN.get(NamespacedKey.minecraft(argSplit.getOrElse(2) {""})) } @@ -43,6 +47,11 @@ object ArgParserTrim : LookupArgParser { override fun serializeBack(meta: ItemMeta): String? { val trim = (meta as? ArmorMeta)?.trim ?: return null - return "trim:${trim.material.key.key.lowercase()}:${trim.pattern.key.key.lowercase()}" + @Suppress("DEPRECATION") + val materialKey = Registry.TRIM_MATERIAL.getKey(trim.material) ?: return null + @Suppress("DEPRECATION") + val patternKey = Registry.TRIM_PATTERN.getKey(trim.pattern) ?: return null + + return "trim:${materialKey.key.lowercase()}:${patternKey.key.lowercase()}" } -} \ No newline at end of file +} diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/templates/FlagArgParser.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/templates/FlagArgParser.kt new file mode 100644 index 000000000..f8afa4f1d --- /dev/null +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/templates/FlagArgParser.kt @@ -0,0 +1,44 @@ +package com.willfp.eco.internal.items.templates + +import com.willfp.eco.core.items.args.LookupArgParser +import org.bukkit.inventory.ItemStack +import org.bukkit.inventory.meta.ItemMeta +import java.util.function.Predicate + +abstract class FlagArgParser( + protected val flag: String +) : LookupArgParser { + abstract fun apply(meta: ItemMeta) + + abstract fun test(meta: ItemMeta): Boolean + + override fun parseArguments(args: Array, meta: ItemMeta): Predicate? { + var has = false + + for (arg in args) { + if (arg.equals(flag, true)) { + has = true + } + } + + if (!has) { + return null + } + + apply(meta) + + return Predicate { + val testMeta = it.itemMeta ?: return@Predicate false + + test(testMeta) + } + } + + override fun serializeBack(meta: ItemMeta): String? { + if (!test(meta)) { + return null + } + + return flag + } +} diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/templates/ValueArgParser.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/templates/ValueArgParser.kt new file mode 100644 index 000000000..c15a0a5a3 --- /dev/null +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/items/templates/ValueArgParser.kt @@ -0,0 +1,50 @@ +package com.willfp.eco.internal.items.templates + +import com.willfp.eco.core.items.args.LookupArgParser +import com.willfp.eco.util.StringUtils +import org.bukkit.inventory.ItemStack +import org.bukkit.inventory.meta.ItemMeta +import java.util.function.Predicate + +abstract class ValueArgParser( + protected val flag: String +) : LookupArgParser { + abstract fun parse(arg: String): T? + + abstract fun apply(meta: ItemMeta, value: T) + + abstract fun test(meta: ItemMeta): String? + + override fun parseArguments(args: Array, meta: ItemMeta): Predicate? { + var argument: String? = null + + for (arg in args) { + if (!arg.lowercase().startsWith("${flag}:")) { + continue + } + argument = arg.substring(flag.length + 1, arg.length) + } + + argument ?: return null + + val parsed = parse(argument) ?: return null + + apply(meta, parsed) + + return Predicate { + val testMeta = it.itemMeta ?: return@Predicate false + + test(testMeta) == parsed + } + } + + override fun serializeBack(meta: ItemMeta): String? { + val test = test(meta) + + if (test.isNullOrBlank()) { + return null + } + + return "${flag}:\"$test\"" + } +} diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/particle/ParticleFactoryRGB.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/particle/ParticleFactoryRGB.kt index a34820ed2..3fd65d6d4 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/particle/ParticleFactoryRGB.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/particle/ParticleFactoryRGB.kt @@ -1,5 +1,6 @@ package com.willfp.eco.internal.particle +import com.willfp.eco.core.Prerequisite import com.willfp.eco.core.particle.ParticleFactory import com.willfp.eco.core.particle.SpawnableParticle import org.bukkit.Color @@ -7,6 +8,14 @@ import org.bukkit.Location import org.bukkit.Particle object ParticleFactoryRGB : ParticleFactory { + private val dustParticle = runCatching { + if (Prerequisite.HAS_1_20_5.isMet) { + Particle.valueOf("DUST") + } else { + Particle.valueOf("REDSTONE_DUST") + } + }.getOrNull() + override fun getNames() = listOf( "color", "rgb", @@ -30,7 +39,9 @@ object ParticleFactoryRGB : ParticleFactory { override fun spawn(location: Location, amount: Int) { val world = location.world ?: return - world.spawnParticle(Particle.REDSTONE, location, amount, 0.0, 0.0, 0.0, 0.0, options) + val particle = dustParticle ?: return + + world.spawnParticle(particle, location, amount, 0.0, 0.0, 0.0, 0.0, options) } } } 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 fc215bf3a..137ed7110 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 @@ -24,6 +24,12 @@ import com.willfp.eco.internal.data.MavenVersionToStringAdapter import com.willfp.eco.internal.data.VersionToStringAdapter import com.willfp.eco.internal.entities.* import com.willfp.eco.internal.items.* +import com.willfp.eco.internal.items.modern.ArgParserFireResistant +import com.willfp.eco.internal.items.modern.ArgParserGlint +import com.willfp.eco.internal.items.modern.ArgParserItemName +import com.willfp.eco.internal.items.modern.ArgParserMaxDamage +import com.willfp.eco.internal.items.modern.ArgParserMaxStackSize +import com.willfp.eco.internal.items.modern.ArgParserTrim import com.willfp.eco.internal.lookup.SegmentParserGroup import com.willfp.eco.internal.lookup.SegmentParserUseIfPresent import com.willfp.eco.internal.particle.ParticleFactoryRGB @@ -97,8 +103,14 @@ abstract class EcoSpigotPlugin : EcoPlugin() { Items.registerArgParser(ArgParserName) Items.registerArgParser(ArgParserHead) Items.registerArgParser(ArgParserEntity) - if (Prerequisite.HAS_1_20.isMet) { + + if (Prerequisite.HAS_PAPER.isMet && Prerequisite.HAS_1_21.isMet) { Items.registerArgParser(ArgParserTrim) + Items.registerArgParser(ArgParserFireResistant) + Items.registerArgParser(ArgParserGlint) + Items.registerArgParser(ArgParserItemName) + Items.registerArgParser(ArgParserMaxDamage) + Items.registerArgParser(ArgParserMaxStackSize) } Entities.registerArgParser(EntityArgParserName)