From 2ebab99a06012c2671933c31f6e0c358506d0acc Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 19 Feb 2022 18:31:36 +0000 Subject: [PATCH] Removed support for 1.16.5 --- build.gradle.kts | 1 - .../com/willfp/eco/core/Prerequisite.java | 3 + .../java/com/willfp/eco/util/TeamUtils.java | 21 +-- eco-core/core-nms/v1_16_R3/build.gradle | 6 - .../spigot/proxy/v1_16_R3/AutoCraft.kt | 14 -- .../spigot/proxy/v1_16_R3/BlockBreak.kt | 18 -- .../spigot/proxy/v1_16_R3/ChatComponent.kt | 93 --------- .../spigot/proxy/v1_16_R3/DummyEntity.kt | 15 -- .../proxy/v1_16_R3/FastItemStackFactory.kt | 11 -- .../internal/spigot/proxy/v1_16_R3/Skull.kt | 44 ----- .../eco/internal/spigot/proxy/v1_16_R3/TPS.kt | 11 -- .../spigot/proxy/v1_16_R3/VillagerTrade.kt | 40 ---- .../proxy/v1_16_R3/fast/FastItemStackUtils.kt | 17 -- .../proxy/v1_16_R3/fast/NMSFastItemStack.kt | 176 ------------------ .../spigot/display/PacketHeldWindowItems.kt | 8 +- .../core-plugin/src/main/resources/plugin.yml | 2 +- 16 files changed, 15 insertions(+), 465 deletions(-) delete mode 100644 eco-core/core-nms/v1_16_R3/build.gradle delete mode 100644 eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/AutoCraft.kt delete mode 100644 eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/BlockBreak.kt delete mode 100644 eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/ChatComponent.kt delete mode 100644 eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/DummyEntity.kt delete mode 100644 eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/FastItemStackFactory.kt delete mode 100644 eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/Skull.kt delete mode 100644 eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/TPS.kt delete mode 100644 eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/VillagerTrade.kt delete mode 100644 eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/fast/FastItemStackUtils.kt delete mode 100644 eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/fast/NMSFastItemStack.kt diff --git a/build.gradle.kts b/build.gradle.kts index 26fd2a24..61da86a5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -21,7 +21,6 @@ dependencies { implementation(project(":eco-core:core-plugin")) implementation(project(":eco-core:core-proxy")) implementation(project(":eco-core:core-backend")) - implementation(project(":eco-core:core-nms:v1_16_R3")) implementation(project(path = ":eco-core:core-nms:v1_17_R1", configuration = "reobf")) implementation(project(path = ":eco-core:core-nms:v1_18_R1", configuration = "reobf")) } diff --git a/eco-api/src/main/java/com/willfp/eco/core/Prerequisite.java b/eco-api/src/main/java/com/willfp/eco/core/Prerequisite.java index 223bc1d0..1006138a 100644 --- a/eco-api/src/main/java/com/willfp/eco/core/Prerequisite.java +++ b/eco-api/src/main/java/com/willfp/eco/core/Prerequisite.java @@ -51,7 +51,10 @@ public class Prerequisite { /** * Requires the server to be running 1.17. + * + * @deprecated eco no longer supports versions before 1.17. */ + @Deprecated(since = "6.25.2") public static final Prerequisite HAS_1_17 = new Prerequisite( () -> ProxyConstants.NMS_VERSION.contains("17") || HAS_1_18.isMet(), "Requires server to be running 1.17+" diff --git a/eco-api/src/main/java/com/willfp/eco/util/TeamUtils.java b/eco-api/src/main/java/com/willfp/eco/util/TeamUtils.java index c40c2458..49b85e71 100644 --- a/eco-api/src/main/java/com/willfp/eco/util/TeamUtils.java +++ b/eco-api/src/main/java/com/willfp/eco/util/TeamUtils.java @@ -2,7 +2,6 @@ package com.willfp.eco.util; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; -import com.willfp.eco.core.Prerequisite; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -91,17 +90,15 @@ public final class TeamUtils { MATERIAL_COLORS.put(Material.EMERALD_ORE, ChatColor.GREEN); MATERIAL_COLORS.put(Material.ANCIENT_DEBRIS, ChatColor.DARK_RED); - if (Prerequisite.HAS_1_17.isMet()) { - MATERIAL_COLORS.put(Material.COPPER_ORE, ChatColor.GOLD); - MATERIAL_COLORS.put(Material.DEEPSLATE_COPPER_ORE, ChatColor.GOLD); - MATERIAL_COLORS.put(Material.DEEPSLATE_COAL_ORE, ChatColor.BLACK); - MATERIAL_COLORS.put(Material.DEEPSLATE_IRON_ORE, ChatColor.GRAY); - MATERIAL_COLORS.put(Material.DEEPSLATE_GOLD_ORE, ChatColor.YELLOW); - MATERIAL_COLORS.put(Material.DEEPSLATE_LAPIS_ORE, ChatColor.BLUE); - MATERIAL_COLORS.put(Material.DEEPSLATE_REDSTONE_ORE, ChatColor.RED); - MATERIAL_COLORS.put(Material.DEEPSLATE_DIAMOND_ORE, ChatColor.AQUA); - MATERIAL_COLORS.put(Material.DEEPSLATE_EMERALD_ORE, ChatColor.GREEN); - } + MATERIAL_COLORS.put(Material.COPPER_ORE, ChatColor.GOLD); + MATERIAL_COLORS.put(Material.DEEPSLATE_COPPER_ORE, ChatColor.GOLD); + MATERIAL_COLORS.put(Material.DEEPSLATE_COAL_ORE, ChatColor.BLACK); + MATERIAL_COLORS.put(Material.DEEPSLATE_IRON_ORE, ChatColor.GRAY); + MATERIAL_COLORS.put(Material.DEEPSLATE_GOLD_ORE, ChatColor.YELLOW); + MATERIAL_COLORS.put(Material.DEEPSLATE_LAPIS_ORE, ChatColor.BLUE); + MATERIAL_COLORS.put(Material.DEEPSLATE_REDSTONE_ORE, ChatColor.RED); + MATERIAL_COLORS.put(Material.DEEPSLATE_DIAMOND_ORE, ChatColor.AQUA); + MATERIAL_COLORS.put(Material.DEEPSLATE_EMERALD_ORE, ChatColor.GREEN); } private TeamUtils() { diff --git a/eco-core/core-nms/v1_16_R3/build.gradle b/eco-core/core-nms/v1_16_R3/build.gradle deleted file mode 100644 index aa9e602b..00000000 --- a/eco-core/core-nms/v1_16_R3/build.gradle +++ /dev/null @@ -1,6 +0,0 @@ -group 'com.willfp' -version rootProject.version - -dependencies { - compileOnly 'org.spigotmc:spigot:1.16.5-R0.1-SNAPSHOT' -} \ No newline at end of file diff --git a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/AutoCraft.kt b/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/AutoCraft.kt deleted file mode 100644 index 8168a246..00000000 --- a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/AutoCraft.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_16_R3 -import com.willfp.eco.internal.spigot.proxy.AutoCraftProxy -import net.minecraft.server.v1_16_R3.MinecraftKey -import net.minecraft.server.v1_16_R3.PacketPlayOutAutoRecipe - -class AutoCraft : AutoCraftProxy { - override fun modifyPacket(packet: Any) { - val recipePacket = packet as PacketPlayOutAutoRecipe - val fKey = recipePacket.javaClass.getDeclaredField("b") - fKey.isAccessible = true - val key = fKey[recipePacket] as MinecraftKey - fKey[recipePacket] = MinecraftKey(key.namespace, key.key + "_displayed") - } -} \ No newline at end of file diff --git a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/BlockBreak.kt b/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/BlockBreak.kt deleted file mode 100644 index 32825338..00000000 --- a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/BlockBreak.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_16_R3 -import com.willfp.eco.internal.spigot.proxy.BlockBreakProxy -import net.minecraft.server.v1_16_R3.BlockPosition -import org.bukkit.block.Block -import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer -import org.bukkit.entity.Player - -class BlockBreak : BlockBreakProxy { - override fun breakBlock( - player: Player, - block: Block - ) { - if (player !is CraftPlayer) { - return - } - player.handle.playerInteractManager.breakBlock(BlockPosition(block.x, block.y, block.z)) - } -} \ No newline at end of file diff --git a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/ChatComponent.kt b/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/ChatComponent.kt deleted file mode 100644 index 04625e0d..00000000 --- a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/ChatComponent.kt +++ /dev/null @@ -1,93 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_16_R3 - -import com.willfp.eco.core.display.Display -import com.willfp.eco.internal.spigot.proxy.ChatComponentProxy -import net.kyori.adventure.nbt.api.BinaryTagHolder -import net.kyori.adventure.text.BuildableComponent -import net.kyori.adventure.text.Component -import net.kyori.adventure.text.TranslatableComponent -import net.kyori.adventure.text.event.HoverEvent -import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer -import net.minecraft.server.v1_16_R3.IChatBaseComponent -import net.minecraft.server.v1_16_R3.MojangsonParser -import org.bukkit.Material -import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack -import org.bukkit.entity.Player - -@Suppress("UNCHECKED_CAST") -class ChatComponent : ChatComponentProxy { - private val gsonComponentSerializer = GsonComponentSerializer.gson() - - override fun modifyComponent(obj: Any, player: Player): Any { - if (obj !is IChatBaseComponent) { - return obj - } - - val component = gsonComponentSerializer.deserialize( - IChatBaseComponent.ChatSerializer.a( - obj - ) - ).asComponent() as BuildableComponent<*, *> - - val newComponent = modifyBaseComponent(component, player) - - return IChatBaseComponent.ChatSerializer.a( - gsonComponentSerializer.serialize(newComponent.asComponent()) - ) ?: obj - } - - private fun modifyBaseComponent(baseComponent: Component, player: Player): Component { - var component = baseComponent - - if (component is TranslatableComponent) { - val args = mutableListOf() - for (arg in component.args()) { - args.add(modifyBaseComponent(arg, player)) - } - component = component.args(args) - } - - val children = mutableListOf() - for (child in component.children()) { - children.add(modifyBaseComponent(child, player)) - } - component = component.children(children) - - val hoverEvent: HoverEvent = component.style().hoverEvent() as HoverEvent? ?: return component - - val showItem = hoverEvent.value() - - if (showItem !is HoverEvent.ShowItem) { - return component - } - - val newShowItem = showItem.nbt( - BinaryTagHolder.of( - CraftItemStack.asNMSCopy( - Display.display( - CraftItemStack.asBukkitCopy( - CraftItemStack.asNMSCopy( - org.bukkit.inventory.ItemStack( - Material.matchMaterial( - showItem.item() - .toString() - ) ?: return component, - showItem.count() - ) - ).apply { - this.tag = MojangsonParser.parse( - showItem.nbt()?.string() ?: return component - ) ?: return component - } - ), - player - ) - ).orCreateTag.toString() - ) - ) - - val newHover = hoverEvent.value(newShowItem) - val style = component.style().hoverEvent(newHover) - return component.style(style) - } -} \ No newline at end of file diff --git a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/DummyEntity.kt b/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/DummyEntity.kt deleted file mode 100644 index 3ba96fe7..00000000 --- a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/DummyEntity.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_16_R3 - -import com.willfp.eco.internal.spigot.proxy.DummyEntityProxy -import org.bukkit.Location -import org.bukkit.craftbukkit.v1_16_R3.CraftWorld -import org.bukkit.entity.Entity -import org.bukkit.entity.EntityType - -class DummyEntity : DummyEntityProxy { - override fun createDummyEntity(location: Location): Entity { - val world = location.world as CraftWorld - @Suppress("UsePropertyAccessSyntax") - return world.createEntity(location, EntityType.ZOMBIE.entityClass).getBukkitEntity() - } -} \ No newline at end of file diff --git a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/FastItemStackFactory.kt b/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/FastItemStackFactory.kt deleted file mode 100644 index 453ca91d..00000000 --- a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/FastItemStackFactory.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_16_R3 -import com.willfp.eco.core.fast.FastItemStack -import com.willfp.eco.internal.spigot.proxy.FastItemStackFactoryProxy -import com.willfp.eco.internal.spigot.proxy.v1_16_R3.fast.NMSFastItemStack -import org.bukkit.inventory.ItemStack - -class FastItemStackFactory : FastItemStackFactoryProxy { - override fun create(itemStack: ItemStack): FastItemStack { - return NMSFastItemStack(itemStack) - } -} \ No newline at end of file diff --git a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/Skull.kt b/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/Skull.kt deleted file mode 100644 index 093e16f0..00000000 --- a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/Skull.kt +++ /dev/null @@ -1,44 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_16_R3 - -import com.mojang.authlib.GameProfile -import com.mojang.authlib.properties.Property -import com.willfp.eco.internal.spigot.proxy.SkullProxy -import org.bukkit.inventory.meta.SkullMeta -import java.lang.reflect.Field -import java.lang.reflect.Method -import java.util.UUID - -class Skull : SkullProxy { - private lateinit var setProfile: Method - private lateinit var profile: Field - - override fun setSkullTexture( - meta: SkullMeta, - base64: String - ) { - if (!this::setProfile.isInitialized) { - setProfile = meta.javaClass.getDeclaredMethod("setProfile", GameProfile::class.java) - setProfile.isAccessible = true - } - val uuid = UUID( - base64.substring(base64.length - 20).hashCode().toLong(), - base64.substring(base64.length - 10).hashCode().toLong() - ) - val profile = GameProfile(uuid, "eco") - profile.properties.put("textures", Property("textures", base64)) - setProfile.invoke(meta, profile) - } - - override fun getSkullTexture( - meta: SkullMeta - ): String? { - if (!this::profile.isInitialized) { - profile = meta.javaClass.getDeclaredField("profile") - profile.isAccessible = true - } - val profile = profile[meta] as GameProfile? ?: return null - val properties = profile.properties ?: return null - val prop = properties["textures"] ?: return null - return prop.toMutableList().firstOrNull()?.name - } -} \ No newline at end of file diff --git a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/TPS.kt b/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/TPS.kt deleted file mode 100644 index 2229fd82..00000000 --- a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/TPS.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_16_R3 - -import com.willfp.eco.internal.spigot.proxy.TPSProxy -import org.bukkit.Bukkit -import org.bukkit.craftbukkit.v1_16_R3.CraftServer - -class TPS : TPSProxy { - override fun getTPS(): Double { - return (Bukkit.getServer() as CraftServer).handle.server.recentTps[0] - } -} \ No newline at end of file diff --git a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/VillagerTrade.kt b/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/VillagerTrade.kt deleted file mode 100644 index c96e1f86..00000000 --- a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/VillagerTrade.kt +++ /dev/null @@ -1,40 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_16_R3 - -import com.willfp.eco.core.display.Display -import com.willfp.eco.internal.spigot.proxy.VillagerTradeProxy -import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftMerchantRecipe -import org.bukkit.entity.Player -import org.bukkit.inventory.MerchantRecipe -import java.lang.reflect.Field - -class VillagerTrade : VillagerTradeProxy { - private val handle: Field = CraftMerchantRecipe::class.java.getDeclaredField("handle") - - override fun displayTrade( - recipe: MerchantRecipe, - player: Player - ): MerchantRecipe { - val oldRecipe = recipe as CraftMerchantRecipe - val newRecipe = CraftMerchantRecipe( - Display.display(recipe.getResult().clone(), player), - recipe.getUses(), - recipe.getMaxUses(), - recipe.hasExperienceReward(), - recipe.getVillagerExperience(), - recipe.getPriceMultiplier() - ) - for (ingredient in recipe.getIngredients()) { - newRecipe.addIngredient(Display.display(ingredient.clone(), player)) - } - getHandle(newRecipe).specialPrice = getHandle(oldRecipe).specialPrice - return newRecipe - } - - private fun getHandle(recipe: CraftMerchantRecipe): net.minecraft.server.v1_16_R3.MerchantRecipe { - return handle[recipe] as net.minecraft.server.v1_16_R3.MerchantRecipe - } - - init { - handle.isAccessible = true - } -} \ No newline at end of file diff --git a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/fast/FastItemStackUtils.kt b/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/fast/FastItemStackUtils.kt deleted file mode 100644 index 76058373..00000000 --- a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/fast/FastItemStackUtils.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_16_R3.fast - -import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack -import org.bukkit.inventory.ItemStack -import java.lang.reflect.Field - -private val field: Field = CraftItemStack::class.java.getDeclaredField("handle").apply { - isAccessible = true -} - -fun ItemStack.getNMSStack(): net.minecraft.server.v1_16_R3.ItemStack { - return if (this !is CraftItemStack) { - CraftItemStack.asNMSCopy(this) - } else { - field[this] as net.minecraft.server.v1_16_R3.ItemStack? ?: CraftItemStack.asNMSCopy(this) - } -} \ No newline at end of file diff --git a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/fast/NMSFastItemStack.kt b/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/fast/NMSFastItemStack.kt deleted file mode 100644 index 736e71f5..00000000 --- a/eco-core/core-nms/v1_16_R3/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_16_R3/fast/NMSFastItemStack.kt +++ /dev/null @@ -1,176 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_16_R3.fast - -import com.willfp.eco.internal.fast.EcoFastItemStack -import com.willfp.eco.util.NamespacedKeyUtils -import com.willfp.eco.util.StringUtils -import net.minecraft.server.v1_16_R3.Item -import net.minecraft.server.v1_16_R3.ItemEnchantedBook -import net.minecraft.server.v1_16_R3.ItemStack -import net.minecraft.server.v1_16_R3.Items -import net.minecraft.server.v1_16_R3.NBTTagCompound -import net.minecraft.server.v1_16_R3.NBTTagList -import net.minecraft.server.v1_16_R3.NBTTagString -import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack -import org.bukkit.craftbukkit.v1_16_R3.util.CraftMagicNumbers -import org.bukkit.enchantments.Enchantment -import org.bukkit.inventory.ItemFlag -import kotlin.experimental.and - -class NMSFastItemStack(itemStack: org.bukkit.inventory.ItemStack) : EcoFastItemStack( - itemStack.getNMSStack(), itemStack -) { - private var loreCache: List? = null - override fun getEnchants(checkStored: Boolean): Map { - val enchantmentNBT = if (checkStored && handle.item === Items.ENCHANTED_BOOK) ItemEnchantedBook.d( - handle - ) else handle.enchantments - val foundEnchantments: MutableMap = HashMap() - for (base in enchantmentNBT) { - val compound = base as NBTTagCompound - val key = compound.getString("id") - val level: Int = ('\uffff'.code.toShort() and compound.getShort("lvl")).toInt() - val found = Enchantment.getByKey(NamespacedKeyUtils.fromStringOrNull(key)) - if (found != null) { - foundEnchantments[found] = level - } - } - return foundEnchantments - } - - override fun getLevelOnItem( - enchantment: Enchantment, - checkStored: Boolean - ): Int { - val enchantmentNBT = if (checkStored && handle.item === Items.ENCHANTED_BOOK) ItemEnchantedBook.d( - handle - ) else handle.enchantments - for (base in enchantmentNBT) { - val compound = base as NBTTagCompound - val key = compound.getString("id") - if (key != enchantment.key.toString()) { - continue - } - return ('\uffff'.code.toShort() and compound.getShort("lvl")).toInt() - } - return 0 - } - - override fun setLore(lore: List?) { - loreCache = null - val jsonLore: MutableList = ArrayList() - if (lore != null) { - for (s in lore) { - jsonLore.add(StringUtils.legacyToJson(s)) - } - } - val displayTag = handle.a("display") - if (!displayTag.hasKey("Lore")) { - displayTag["Lore"] = NBTTagList() - } - val loreTag = displayTag.getList("Lore", CraftMagicNumbers.NBT.TAG_STRING) - loreTag.clear() - for (s in jsonLore) { - loreTag.add(NBTTagString.a(s)) - } - apply() - } - - override fun getLore(): List { - if (loreCache != null) { - return loreCache as List - } - val lore: MutableList = ArrayList() - for (s in getLoreJSON()) { - lore.add(StringUtils.jsonToLegacy(s)) - } - loreCache = lore - return lore - } - - private fun getLoreJSON(): List { - val displayTag = handle.b("display") ?: return emptyList() - return if (displayTag.hasKey("Lore")) { - val loreTag = displayTag.getList("Lore", CraftMagicNumbers.NBT.TAG_STRING) - val lore: MutableList = ArrayList(loreTag.size) - for (i in loreTag.indices) { - lore.add(loreTag.getString(i)) - } - lore - } else { - emptyList() - } - } - - override fun addItemFlags(vararg hideFlags: ItemFlag) { - for (flag in hideFlags) { - this.flagBits = this.flagBits or getBitModifier(flag) - } - - apply() - } - - override fun removeItemFlags(vararg hideFlags: ItemFlag) { - for (flag in hideFlags) { - this.flagBits = this.flagBits and getBitModifier(flag) - } - - apply() - } - - override fun getItemFlags(): MutableSet { - val flags = mutableSetOf() - - var flagArr: Array - val size = ItemFlag.values().also { flagArr = it }.size - - for (i in 0 until size) { - val flag = flagArr[i] - if (this.hasItemFlag(flag)) { - flags.add(flag) - } - } - - return flags - } - - override fun hasItemFlag(flag: ItemFlag): Boolean { - val bitModifier = getBitModifier(flag) - return this.flagBits and bitModifier == bitModifier - } - - private var flagBits: Int - get() = - if (handle.hasTag() && handle.tag!!.hasKeyOfType( - "HideFlags", - 99 - ) - ) handle.tag!!.getInt("HideFlags") else 0 - set(value) = - handle.orCreateTag.setInt("HideFlags", value) - - override fun getRepairCost(): Int { - return handle.repairCost - } - - override fun setRepairCost(cost: Int) { - handle.repairCost = cost - } - - override fun equals(other: Any?): Boolean { - if (other !is NMSFastItemStack) { - return false - } - - return other.hashCode() == this.hashCode() - } - - override fun hashCode(): Int { - return handle.tag?.hashCode() ?: (0b00010101 * 31 + Item.getId(handle.item)) - } - - private fun apply() { - if (bukkit !is CraftItemStack) { - bukkit.itemMeta = CraftItemStack.asCraftMirror(handle).itemMeta - } - } -} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/display/PacketHeldWindowItems.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/display/PacketHeldWindowItems.kt index 4b9f79e2..1797188a 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/display/PacketHeldWindowItems.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/display/PacketHeldWindowItems.kt @@ -5,21 +5,17 @@ import com.comphenix.protocol.events.PacketContainer import com.comphenix.protocol.events.PacketEvent import com.willfp.eco.core.AbstractPacketAdapter import com.willfp.eco.core.EcoPlugin -import com.willfp.eco.core.Prerequisite import com.willfp.eco.core.display.Display import org.bukkit.entity.Player import org.bukkit.inventory.ItemStack -class PacketHeldWindowItems(plugin: EcoPlugin) : AbstractPacketAdapter(plugin, PacketType.Play.Server.WINDOW_ITEMS, false) { +class PacketHeldWindowItems(plugin: EcoPlugin) : + AbstractPacketAdapter(plugin, PacketType.Play.Server.WINDOW_ITEMS, false) { override fun onSend( packet: PacketContainer, player: Player, event: PacketEvent ) { - if (!Prerequisite.HAS_1_17.isMet) { - return - } - packet.itemModifier.modify(0) { item: ItemStack? -> Display.display( item!!, player diff --git a/eco-core/core-plugin/src/main/resources/plugin.yml b/eco-core/core-plugin/src/main/resources/plugin.yml index ea66a6f4..94ada954 100644 --- a/eco-core/core-plugin/src/main/resources/plugin.yml +++ b/eco-core/core-plugin/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: eco version: ${projectVersion} main: com.willfp.eco.internal.spigot.EcoHandler -api-version: 1.16 +api-version: 1.17 authors: [ Auxilor ] website: willfp.com load: STARTUP