From 9b47e4777a92daf66ecd4e39d1d9228c06fe29ee Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 22 Jun 2024 22:23:51 +0100 Subject: [PATCH] Dropped 1.20.6 support and made modern commons module for 1.21+ --- build.gradle.kts | 1 - .../willfp/eco/core/proxy/ProxyConstants.java | 1 - .../{nms-common => common}/build.gradle.kts | 0 .../spigot/proxy/common/NMSCommons.kt | 0 .../eco/internal/spigot/proxy/common/Skull.kt | 0 .../spigot/proxy/common/ai/CustomGoals.kt | 0 .../proxy/common/ai/EcoEntityController.kt | 0 .../spigot/proxy/common/ai/EntityGoals.kt | 0 .../spigot/proxy/common/ai/TargetGoals.kt | 0 .../ai/entity/AvoidEntityGoalFactory.kt | 0 .../common/ai/entity/BreakDoorsGoalFactory.kt | 0 .../common/ai/entity/BreatheAirGoalFactory.kt | 0 .../common/ai/entity/BreedGoalFactory.kt | 0 .../ai/entity/CatLieOnBedGoalFactory.kt | 0 .../ai/entity/CatSitOnBedGoalFactory.kt | 0 .../common/ai/entity/EatGrassGoalFactory.kt | 0 .../common/ai/entity/FleeSunGoalFactory.kt | 0 .../common/ai/entity/FloatGoalFactory.kt | 0 .../ai/entity/FollowBoatsGoalFactory.kt | 0 .../common/ai/entity/FollowMobsGoalFactory.kt | 0 .../IllusionerBlindnessSpellGoalFactory.kt | 0 .../IllusionerMirrorSpellGoalFactory.kt | 0 .../common/ai/entity/InteractGoalFactory.kt | 0 .../ai/entity/LeapAtTargetGoalFactory.kt | 0 .../ai/entity/LookAtPlayerGoalFactory.kt | 0 .../ai/entity/MeleeAttackGoalFactory.kt | 0 .../ai/entity/MoveBackToVillageGoalFactory.kt | 0 .../entity/MoveThroughVillageGoalFactory.kt | 0 .../MoveTowardsRestrictionGoalFactory.kt | 0 .../ai/entity/MoveTowardsTargetGoalFactory.kt | 0 .../ai/entity/OcelotAttackGoalFactory.kt | 0 .../common/ai/entity/OpenDoorsGoalFactory.kt | 0 .../common/ai/entity/PanicGoalFactory.kt | 0 .../ai/entity/RandomLookAroundGoalFactory.kt | 0 .../ai/entity/RandomStrollGoalFactory.kt | 0 .../ai/entity/RandomSwimmingGoalFactory.kt | 0 .../ai/entity/RangedAttackGoalFactory.kt | 0 .../ai/entity/RangedBowAttackGoalFactory.kt | 0 .../entity/RangedCrossbowAttackGoalFactory.kt | 0 .../ai/entity/RestrictSunGoalFactory.kt | 0 .../entity/StrollThroughVillageGoalFactory.kt | 0 .../common/ai/entity/TemptGoalFactory.kt | 0 .../ai/entity/TryFindWaterGoalFactory.kt | 0 .../common/ai/entity/UseItemGoalFactory.kt | 0 .../WaterAvoidingRandomFlyingGoalFactory.kt | 0 .../WaterAvoidingRandomStrollGoalFactory.kt | 0 .../common/ai/entity/WolfBegGoalFactory.kt | 0 .../ai/target/DefendVillageGoalFactory.kt | 0 .../common/ai/target/HurtByGoalFactory.kt | 0 .../ai/target/NearestAttackableGoalFactory.kt | 0 .../NearestAttackableWitchGoalFactory.kt | 0 .../NearestHealableRaiderGoalFactory.kt | 0 .../ai/target/NonTameRandomGoalFactory.kt | 0 .../ai/target/OwnerHurtByGoalFactory.kt | 0 .../ai/target/OwnerTargetGoalFactory.kt | 0 .../target/ResetUniversalAngerGoalFactory.kt | 0 .../proxy/common/item/EcoFastItemStack.kt | 0 .../common/packet/EcoChannelDuplexHandler.kt | 0 .../common/packet/PacketInjectorListener.kt | 0 .../common/packet/display/PacketAutoRecipe.kt | 0 .../packet/display/PacketHeldItemSlot.kt | 0 .../display/PacketOpenWindowMerchant.kt | 0 .../packet/display/PacketSetCreativeSlot.kt | 0 .../common/packet/display/PacketSetSlot.kt | 0 .../packet/display/PacketWindowItems.kt | 0 .../packet/display/frame/DisplayFrame.kt | 0 eco-core/core-nms/modern/build.gradle.kts | 23 + .../common/modern/NewEcoFastItemStack.kt | 403 +++++++++++++++++ eco-core/core-nms/v1_17_R1/build.gradle.kts | 2 +- eco-core/core-nms/v1_18_R1/build.gradle.kts | 2 +- eco-core/core-nms/v1_18_R2/build.gradle.kts | 2 +- eco-core/core-nms/v1_19_R1/build.gradle.kts | 2 +- eco-core/core-nms/v1_19_R2/build.gradle.kts | 2 +- eco-core/core-nms/v1_19_R3/build.gradle.kts | 2 +- eco-core/core-nms/v1_20_6/build.gradle.kts | 49 --- .../spigot/proxy/v1_20_6/BukkitCommands.kt | 35 -- .../proxy/v1_20_6/CommonsInitializer.kt | 171 -------- .../spigot/proxy/v1_20_6/DisplayName.kt | 59 --- .../proxy/v1_20_6/DummyEntityFactory.kt | 15 - .../proxy/v1_20_6/EntityControllerFactory.kt | 12 - .../ExtendedPersistentDataContainerFactory.kt | 82 ---- .../proxy/v1_20_6/FastItemStackFactory.kt | 402 ----------------- .../proxy/v1_20_6/MiniMessageTranslator.kt | 33 -- .../spigot/proxy/v1_20_6/PacketHandler.kt | 46 -- .../spigot/proxy/v1_20_6/SNBTConverter.kt | 80 ---- .../internal/spigot/proxy/v1_20_6/Skull.kt | 18 - .../eco/internal/spigot/proxy/v1_20_6/TPS.kt | 11 - .../v1_20_6/entity/EcoEntityController.kt | 95 ---- .../NewItemsPacketOpenWindowMerchant.kt | 35 -- .../packet/NewItemsPacketSetCreativeSlot.kt | 19 - eco-core/core-nms/v1_20_R1/build.gradle.kts | 2 +- eco-core/core-nms/v1_20_R2/build.gradle.kts | 2 +- eco-core/core-nms/v1_20_R3/build.gradle.kts | 2 +- eco-core/core-nms/v1_21/build.gradle.kts | 3 +- .../proxy/v1_21/FastItemStackFactory.kt | 404 +----------------- settings.gradle.kts | 4 +- 96 files changed, 440 insertions(+), 1579 deletions(-) rename eco-core/core-nms/{nms-common => common}/build.gradle.kts (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/NMSCommons.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/Skull.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/CustomGoals.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/EcoEntityController.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/EntityGoals.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/TargetGoals.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/AvoidEntityGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/BreakDoorsGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/BreatheAirGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/BreedGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/CatLieOnBedGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/CatSitOnBedGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/EatGrassGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FleeSunGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FloatGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FollowBoatsGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FollowMobsGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/IllusionerBlindnessSpellGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/IllusionerMirrorSpellGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/InteractGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/LeapAtTargetGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/LookAtPlayerGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MeleeAttackGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveBackToVillageGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveThroughVillageGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveTowardsRestrictionGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveTowardsTargetGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/OcelotAttackGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/OpenDoorsGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/PanicGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RandomLookAroundGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RandomStrollGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RandomSwimmingGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RangedAttackGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RangedBowAttackGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RangedCrossbowAttackGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RestrictSunGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/StrollThroughVillageGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/TemptGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/TryFindWaterGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/UseItemGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/WaterAvoidingRandomFlyingGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/WaterAvoidingRandomStrollGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/WolfBegGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/DefendVillageGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/HurtByGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NearestAttackableGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NearestAttackableWitchGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NearestHealableRaiderGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NonTameRandomGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/OwnerHurtByGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/OwnerTargetGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/ResetUniversalAngerGoalFactory.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/item/EcoFastItemStack.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/EcoChannelDuplexHandler.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/PacketInjectorListener.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketAutoRecipe.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketHeldItemSlot.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketOpenWindowMerchant.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketSetCreativeSlot.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketSetSlot.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketWindowItems.kt (100%) rename eco-core/core-nms/{nms-common => common}/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/frame/DisplayFrame.kt (100%) create mode 100644 eco-core/core-nms/modern/build.gradle.kts create mode 100644 eco-core/core-nms/modern/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/modern/NewEcoFastItemStack.kt delete mode 100644 eco-core/core-nms/v1_20_6/build.gradle.kts delete mode 100644 eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/BukkitCommands.kt delete mode 100644 eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/CommonsInitializer.kt delete mode 100644 eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/DisplayName.kt delete mode 100644 eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/DummyEntityFactory.kt delete mode 100644 eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/EntityControllerFactory.kt delete mode 100644 eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/ExtendedPersistentDataContainerFactory.kt delete mode 100644 eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/FastItemStackFactory.kt delete mode 100644 eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/MiniMessageTranslator.kt delete mode 100644 eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/PacketHandler.kt delete mode 100644 eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/SNBTConverter.kt delete mode 100644 eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/Skull.kt delete mode 100644 eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/TPS.kt delete mode 100644 eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/entity/EcoEntityController.kt delete mode 100644 eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/packet/NewItemsPacketOpenWindowMerchant.kt delete mode 100644 eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/packet/NewItemsPacketSetCreativeSlot.kt diff --git a/build.gradle.kts b/build.gradle.kts index 42e042030..54b5f7369 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -31,7 +31,6 @@ dependencies { implementation(project(path = ":eco-core:core-nms:v1_20_R1", configuration = "reobf")) implementation(project(path = ":eco-core:core-nms:v1_20_R2", configuration = "reobf")) implementation(project(path = ":eco-core:core-nms:v1_20_R3", configuration = "reobf")) - implementation(project(path = ":eco-core:core-nms:v1_20_6", configuration = "reobf")) implementation(project(path = ":eco-core:core-nms:v1_21", configuration = "reobf")) } diff --git a/eco-api/src/main/java/com/willfp/eco/core/proxy/ProxyConstants.java b/eco-api/src/main/java/com/willfp/eco/core/proxy/ProxyConstants.java index 3c9f05fa3..82a4e4ab2 100644 --- a/eco-api/src/main/java/com/willfp/eco/core/proxy/ProxyConstants.java +++ b/eco-api/src/main/java/com/willfp/eco/core/proxy/ProxyConstants.java @@ -28,7 +28,6 @@ public final class ProxyConstants { "v1_20_R1", "v1_20_R2", "v1_20_R3", - "v1_20_6", "v1_21" ); diff --git a/eco-core/core-nms/nms-common/build.gradle.kts b/eco-core/core-nms/common/build.gradle.kts similarity index 100% rename from eco-core/core-nms/nms-common/build.gradle.kts rename to eco-core/core-nms/common/build.gradle.kts diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/NMSCommons.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/NMSCommons.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/NMSCommons.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/NMSCommons.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/Skull.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/Skull.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/Skull.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/Skull.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/CustomGoals.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/CustomGoals.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/CustomGoals.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/CustomGoals.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/EcoEntityController.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/EcoEntityController.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/EcoEntityController.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/EcoEntityController.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/EntityGoals.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/EntityGoals.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/EntityGoals.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/EntityGoals.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/TargetGoals.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/TargetGoals.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/TargetGoals.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/TargetGoals.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/AvoidEntityGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/AvoidEntityGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/AvoidEntityGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/AvoidEntityGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/BreakDoorsGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/BreakDoorsGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/BreakDoorsGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/BreakDoorsGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/BreatheAirGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/BreatheAirGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/BreatheAirGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/BreatheAirGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/BreedGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/BreedGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/BreedGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/BreedGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/CatLieOnBedGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/CatLieOnBedGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/CatLieOnBedGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/CatLieOnBedGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/CatSitOnBedGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/CatSitOnBedGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/CatSitOnBedGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/CatSitOnBedGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/EatGrassGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/EatGrassGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/EatGrassGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/EatGrassGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FleeSunGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FleeSunGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FleeSunGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FleeSunGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FloatGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FloatGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FloatGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FloatGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FollowBoatsGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FollowBoatsGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FollowBoatsGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FollowBoatsGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FollowMobsGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FollowMobsGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FollowMobsGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/FollowMobsGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/IllusionerBlindnessSpellGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/IllusionerBlindnessSpellGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/IllusionerBlindnessSpellGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/IllusionerBlindnessSpellGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/IllusionerMirrorSpellGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/IllusionerMirrorSpellGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/IllusionerMirrorSpellGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/IllusionerMirrorSpellGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/InteractGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/InteractGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/InteractGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/InteractGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/LeapAtTargetGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/LeapAtTargetGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/LeapAtTargetGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/LeapAtTargetGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/LookAtPlayerGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/LookAtPlayerGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/LookAtPlayerGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/LookAtPlayerGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MeleeAttackGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MeleeAttackGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MeleeAttackGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MeleeAttackGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveBackToVillageGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveBackToVillageGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveBackToVillageGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveBackToVillageGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveThroughVillageGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveThroughVillageGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveThroughVillageGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveThroughVillageGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveTowardsRestrictionGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveTowardsRestrictionGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveTowardsRestrictionGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveTowardsRestrictionGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveTowardsTargetGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveTowardsTargetGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveTowardsTargetGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/MoveTowardsTargetGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/OcelotAttackGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/OcelotAttackGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/OcelotAttackGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/OcelotAttackGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/OpenDoorsGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/OpenDoorsGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/OpenDoorsGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/OpenDoorsGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/PanicGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/PanicGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/PanicGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/PanicGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RandomLookAroundGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RandomLookAroundGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RandomLookAroundGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RandomLookAroundGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RandomStrollGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RandomStrollGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RandomStrollGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RandomStrollGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RandomSwimmingGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RandomSwimmingGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RandomSwimmingGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RandomSwimmingGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RangedAttackGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RangedAttackGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RangedAttackGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RangedAttackGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RangedBowAttackGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RangedBowAttackGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RangedBowAttackGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RangedBowAttackGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RangedCrossbowAttackGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RangedCrossbowAttackGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RangedCrossbowAttackGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RangedCrossbowAttackGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RestrictSunGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RestrictSunGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RestrictSunGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/RestrictSunGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/StrollThroughVillageGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/StrollThroughVillageGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/StrollThroughVillageGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/StrollThroughVillageGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/TemptGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/TemptGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/TemptGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/TemptGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/TryFindWaterGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/TryFindWaterGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/TryFindWaterGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/TryFindWaterGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/UseItemGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/UseItemGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/UseItemGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/UseItemGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/WaterAvoidingRandomFlyingGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/WaterAvoidingRandomFlyingGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/WaterAvoidingRandomFlyingGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/WaterAvoidingRandomFlyingGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/WaterAvoidingRandomStrollGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/WaterAvoidingRandomStrollGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/WaterAvoidingRandomStrollGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/WaterAvoidingRandomStrollGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/WolfBegGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/WolfBegGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/WolfBegGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/entity/WolfBegGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/DefendVillageGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/DefendVillageGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/DefendVillageGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/DefendVillageGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/HurtByGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/HurtByGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/HurtByGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/HurtByGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NearestAttackableGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NearestAttackableGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NearestAttackableGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NearestAttackableGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NearestAttackableWitchGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NearestAttackableWitchGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NearestAttackableWitchGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NearestAttackableWitchGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NearestHealableRaiderGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NearestHealableRaiderGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NearestHealableRaiderGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NearestHealableRaiderGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NonTameRandomGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NonTameRandomGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NonTameRandomGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/NonTameRandomGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/OwnerHurtByGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/OwnerHurtByGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/OwnerHurtByGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/OwnerHurtByGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/OwnerTargetGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/OwnerTargetGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/OwnerTargetGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/OwnerTargetGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/ResetUniversalAngerGoalFactory.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/ResetUniversalAngerGoalFactory.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/ResetUniversalAngerGoalFactory.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/ai/target/ResetUniversalAngerGoalFactory.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/item/EcoFastItemStack.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/item/EcoFastItemStack.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/item/EcoFastItemStack.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/item/EcoFastItemStack.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/EcoChannelDuplexHandler.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/EcoChannelDuplexHandler.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/EcoChannelDuplexHandler.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/EcoChannelDuplexHandler.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/PacketInjectorListener.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/PacketInjectorListener.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/PacketInjectorListener.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/PacketInjectorListener.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketAutoRecipe.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketAutoRecipe.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketAutoRecipe.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketAutoRecipe.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketHeldItemSlot.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketHeldItemSlot.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketHeldItemSlot.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketHeldItemSlot.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketOpenWindowMerchant.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketOpenWindowMerchant.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketOpenWindowMerchant.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketOpenWindowMerchant.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketSetCreativeSlot.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketSetCreativeSlot.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketSetCreativeSlot.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketSetCreativeSlot.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketSetSlot.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketSetSlot.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketSetSlot.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketSetSlot.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketWindowItems.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketWindowItems.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketWindowItems.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/PacketWindowItems.kt diff --git a/eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/frame/DisplayFrame.kt b/eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/frame/DisplayFrame.kt similarity index 100% rename from eco-core/core-nms/nms-common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/frame/DisplayFrame.kt rename to eco-core/core-nms/common/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/packet/display/frame/DisplayFrame.kt diff --git a/eco-core/core-nms/modern/build.gradle.kts b/eco-core/core-nms/modern/build.gradle.kts new file mode 100644 index 000000000..720980855 --- /dev/null +++ b/eco-core/core-nms/modern/build.gradle.kts @@ -0,0 +1,23 @@ +plugins { + id("io.papermc.paperweight.userdev") +} + +group = "com.willfp" +version = rootProject.version + +dependencies { + compileOnly(project(":eco-core:core-nms:common")) + paperweight.paperDevBundle("1.21-R0.1-SNAPSHOT") +} + +tasks { + compileJava { + options.release = 21 + } + + compileKotlin { + kotlinOptions { + jvmTarget = "21" + } + } +} diff --git a/eco-core/core-nms/modern/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/modern/NewEcoFastItemStack.kt b/eco-core/core-nms/modern/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/modern/NewEcoFastItemStack.kt new file mode 100644 index 000000000..111f1e6fc --- /dev/null +++ b/eco-core/core-nms/modern/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/common/modern/NewEcoFastItemStack.kt @@ -0,0 +1,403 @@ +package com.willfp.eco.internal.spigot.proxy.common.modern + +import com.willfp.eco.internal.spigot.proxy.common.asNMSStack +import com.willfp.eco.internal.spigot.proxy.common.item.ContinuallyAppliedPersistentDataContainer +import com.willfp.eco.internal.spigot.proxy.common.item.ImplementedFIS +import com.willfp.eco.internal.spigot.proxy.common.makePdc +import com.willfp.eco.internal.spigot.proxy.common.mergeIfNeeded +import com.willfp.eco.internal.spigot.proxy.common.setPdc +import com.willfp.eco.internal.spigot.proxy.common.toAdventure +import com.willfp.eco.internal.spigot.proxy.common.toItem +import com.willfp.eco.internal.spigot.proxy.common.toMaterial +import com.willfp.eco.internal.spigot.proxy.common.toNMS +import com.willfp.eco.util.StringUtils +import com.willfp.eco.util.toComponent +import com.willfp.eco.util.toLegacy +import net.kyori.adventure.text.Component +import net.kyori.adventure.text.format.TextDecoration +import net.minecraft.core.component.DataComponentType +import net.minecraft.core.component.DataComponents +import net.minecraft.core.registries.Registries +import net.minecraft.nbt.CompoundTag +import net.minecraft.util.Unit +import net.minecraft.world.item.component.CustomData +import net.minecraft.world.item.component.CustomModelData +import net.minecraft.world.item.component.ItemLore +import org.bukkit.Bukkit +import org.bukkit.craftbukkit.CraftRegistry +import org.bukkit.craftbukkit.CraftServer +import org.bukkit.craftbukkit.enchantments.CraftEnchantment +import org.bukkit.enchantments.Enchantment +import org.bukkit.inventory.ItemFlag +import org.bukkit.inventory.ItemStack +import org.bukkit.persistence.PersistentDataContainer +import kotlin.math.max + +private val unstyledComponent = Component.empty().style { + it.color(null).decoration(TextDecoration.ITALIC, false) +} + +class NewEcoFastItemStack( + private val bukkit: ItemStack +) : ImplementedFIS { + // Cast is there because, try as I might, I can't get IntellIJ to recognise half the classes in the dev bundle + @Suppress("USELESS_CAST") + private val handle = bukkit.asNMSStack() as net.minecraft.world.item.ItemStack + + private val pdc = (handle.get(DataComponents.CUSTOM_DATA)?.copyTag() ?: CompoundTag()).makePdc() + + override fun getEnchants(checkStored: Boolean): Map { + val enchantments = handle.get(DataComponents.ENCHANTMENTS) ?: return emptyMap() + + val map = mutableMapOf() + + for ((enchantment, level) in enchantments.entrySet()) { + val bukkit = CraftEnchantment.minecraftToBukkit(enchantment.value()) + + map[bukkit] = level + } + + if (checkStored) { + val stored = handle.get(DataComponents.STORED_ENCHANTMENTS) ?: return map + + for ((enchantment, level) in stored.entrySet()) { + val bukkit = CraftEnchantment.minecraftToBukkit(enchantment.value()) + + map[bukkit] = max(map.getOrDefault(bukkit, 0), level) + } + } + + return map + } + + override fun getEnchantmentLevel( + enchantment: Enchantment, + checkStored: Boolean + ): Int { + val minecraft = + CraftRegistry.bukkitToMinecraft( + enchantment + ) + + val server = Bukkit.getServer() as CraftServer + val access = server.server.registryAccess() + + val holder = access.registryOrThrow(Registries.ENCHANTMENT).wrapAsHolder(minecraft) + + val enchantments = handle.get(DataComponents.ENCHANTMENTS) ?: return 0 + var level = enchantments.getLevel(holder) + + if (checkStored) { + val storedEnchantments = handle.get(DataComponents.STORED_ENCHANTMENTS) ?: return 0 + level = max(level, storedEnchantments.getLevel(holder)) + } + + return level + } + + override fun setLore(lore: List?) = setLoreComponents(lore?.map { it.toComponent() }) + + override fun setLoreComponents(lore: List?) { + if (lore == null) { + handle.set(DataComponents.LORE, null) + } else { + val components = lore + .map { unstyledComponent.append(it) } + .map { it.toNMS() } + + handle.set( + DataComponents.LORE, ItemLore( + components, + components + ) + ) + } + + apply() + } + + override fun getLoreComponents(): List { + return handle.get(DataComponents.LORE)?.lines?.map { it.toAdventure() } ?: emptyList() + } + + override fun getLore(): List = + getLoreComponents().map { StringUtils.toLegacy(it) } + + override fun setDisplayName(name: Component?) { + if (name == null) { + handle.set(DataComponents.CUSTOM_NAME, null) + } else { + handle.set(DataComponents.CUSTOM_NAME, name.toNMS()) + } + + apply() + } + + override fun setDisplayName(name: String?) = setDisplayName(name?.toComponent()) + + override fun getDisplayNameComponent(): Component { + return handle.get(DataComponents.CUSTOM_NAME)?.toAdventure() + ?: Component.translatable(bukkit.type.toItem().getDescriptionId()) + } + + override fun getDisplayName(): String = displayNameComponent.toLegacy() + + private fun net.minecraft.world.item.ItemStack.modifyComponent( + component: DataComponentType, + modifier: (T) -> T + ) { + val current = handle.get(component) ?: return + this.set(component, modifier(current)) + } + + override fun addItemFlags(vararg hideFlags: ItemFlag) { + for (flag in hideFlags) { + when (flag) { + ItemFlag.HIDE_ENCHANTS -> { + handle.modifyComponent(DataComponents.ENCHANTMENTS) { enchantments -> + enchantments.withTooltip(false) + } + } + + ItemFlag.HIDE_ATTRIBUTES -> { + handle.modifyComponent(DataComponents.ATTRIBUTE_MODIFIERS) { attributes -> + attributes.withTooltip(false) + } + } + + ItemFlag.HIDE_UNBREAKABLE -> { + handle.modifyComponent(DataComponents.UNBREAKABLE) { unbreakable -> + unbreakable.withTooltip(false) + } + } + + ItemFlag.HIDE_DESTROYS -> { + handle.modifyComponent(DataComponents.CAN_BREAK) { destroys -> + destroys.withTooltip(false) + } + } + + ItemFlag.HIDE_PLACED_ON -> { + handle.modifyComponent(DataComponents.CAN_PLACE_ON) { placedOn -> + placedOn.withTooltip(false) + } + } + + ItemFlag.HIDE_ADDITIONAL_TOOLTIP -> { + handle.set(DataComponents.HIDE_ADDITIONAL_TOOLTIP, Unit.INSTANCE) + } + + ItemFlag.HIDE_DYE -> { + handle.modifyComponent(DataComponents.DYED_COLOR) { dyed -> + dyed.withTooltip(false) + } + } + + ItemFlag.HIDE_ARMOR_TRIM -> { + handle.modifyComponent(DataComponents.TRIM) { trim -> + trim.withTooltip(false) + } + } + + ItemFlag.HIDE_STORED_ENCHANTS -> { + handle.modifyComponent(DataComponents.STORED_ENCHANTMENTS) { storedEnchants -> + storedEnchants.withTooltip(false) + } + } + } + } + + apply() + } + + override fun removeItemFlags(vararg hideFlags: ItemFlag) { + for (flag in hideFlags) { + when (flag) { + ItemFlag.HIDE_ENCHANTS -> { + handle.modifyComponent(DataComponents.ENCHANTMENTS) { enchantments -> + enchantments.withTooltip(true) + } + } + + ItemFlag.HIDE_ATTRIBUTES -> { + handle.modifyComponent(DataComponents.ATTRIBUTE_MODIFIERS) { attributes -> + attributes.withTooltip(true) + } + } + + ItemFlag.HIDE_UNBREAKABLE -> { + handle.modifyComponent(DataComponents.UNBREAKABLE) { unbreakable -> + unbreakable.withTooltip(true) + } + } + + ItemFlag.HIDE_DESTROYS -> { + handle.modifyComponent(DataComponents.CAN_BREAK) { destroys -> + destroys.withTooltip(true) + } + } + + ItemFlag.HIDE_PLACED_ON -> { + handle.modifyComponent(DataComponents.CAN_PLACE_ON) { placedOn -> + placedOn.withTooltip(true) + } + } + + ItemFlag.HIDE_ADDITIONAL_TOOLTIP -> { + handle.remove(DataComponents.HIDE_ADDITIONAL_TOOLTIP) + } + + ItemFlag.HIDE_DYE -> { + handle.modifyComponent(DataComponents.DYED_COLOR) { dyed -> + dyed.withTooltip(true) + } + } + + ItemFlag.HIDE_ARMOR_TRIM -> { + handle.modifyComponent(DataComponents.TRIM) { trim -> + trim.withTooltip(true) + } + } + + ItemFlag.HIDE_STORED_ENCHANTS -> { + handle.modifyComponent(DataComponents.STORED_ENCHANTMENTS) { storedEnchants -> + storedEnchants.withTooltip(true) + } + } + } + } + + apply() + } + + override fun getItemFlags(): Set { + val currentFlags = mutableSetOf() + for (f in ItemFlag.entries) { + if (hasItemFlag(f)) { + currentFlags.add(f) + } + } + return currentFlags + } + + override fun hasItemFlag(flag: ItemFlag): Boolean { + return when (flag) { + ItemFlag.HIDE_ENCHANTS -> { + val enchantments = handle.get(DataComponents.ENCHANTMENTS) ?: return false + !enchantments.showInTooltip + } + + ItemFlag.HIDE_ATTRIBUTES -> { + val attributes = handle.get(DataComponents.ATTRIBUTE_MODIFIERS) ?: return false + !attributes.showInTooltip + } + + ItemFlag.HIDE_UNBREAKABLE -> { + val unbreakable = handle.get(DataComponents.UNBREAKABLE) ?: return false + !unbreakable.showInTooltip + } + + ItemFlag.HIDE_DESTROYS -> { + val destroys = handle.get(DataComponents.CAN_BREAK) ?: return false + !destroys.showInTooltip() + } + + ItemFlag.HIDE_PLACED_ON -> { + val placedOn = handle.get(DataComponents.CAN_PLACE_ON) ?: return false + !placedOn.showInTooltip() + } + + ItemFlag.HIDE_ADDITIONAL_TOOLTIP -> { + handle.get(DataComponents.HIDE_ADDITIONAL_TOOLTIP) != null + } + + ItemFlag.HIDE_DYE -> { + val dyed = handle.get(DataComponents.DYED_COLOR) ?: return false + !dyed.showInTooltip() + } + + ItemFlag.HIDE_ARMOR_TRIM -> { + val armorTrim = handle.get(DataComponents.TRIM) ?: return false + !armorTrim.showInTooltip + } + + ItemFlag.HIDE_STORED_ENCHANTS -> { + val storedEnchants = handle.get(DataComponents.STORED_ENCHANTMENTS) ?: return false + !storedEnchants.showInTooltip + } + } + } + + override fun getRepairCost(): Int { + return handle.get(DataComponents.REPAIR_COST) ?: 0 + } + + override fun setRepairCost(cost: Int) { + handle.set(DataComponents.REPAIR_COST, cost) + + apply() + } + + override fun getPersistentDataContainer(): PersistentDataContainer { + return ContinuallyAppliedPersistentDataContainer(this.pdc, this) + } + + override fun getAmount(): Int = handle.getCount() + + override fun setAmount(amount: Int) { + handle.setCount(amount) + apply() + } + + override fun setType(material: org.bukkit.Material) { + @Suppress("DEPRECATION") + handle.setItem(material.toItem()) + apply() + } + + override fun getType(): org.bukkit.Material = handle.getItem().toMaterial() + + override fun getCustomModelData(): Int? = + handle.get(DataComponents.CUSTOM_MODEL_DATA)?.value + + override fun setCustomModelData(data: Int?) { + if (data == null) { + handle.remove(DataComponents.CUSTOM_MODEL_DATA) + } else { + handle.set(DataComponents.CUSTOM_MODEL_DATA, CustomModelData(data)) + } + + apply() + } + + override fun equals(other: Any?): Boolean { + if (other !is NewEcoFastItemStack) { + return false + } + + return other.hashCode() == this.hashCode() + } + + override fun hashCode(): Int { + return net.minecraft.world.item.ItemStack.hashItemAndComponents(handle) + } + + override fun apply() { + val customData = handle.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY) + val updated = customData.update { + it.setPdc(pdc) + } + + if (updated.isEmpty) { + handle.remove(DataComponents.CUSTOM_DATA) + } else { + handle.set(DataComponents.CUSTOM_DATA, updated) + } + + bukkit.mergeIfNeeded(handle) + } + + override fun unwrap(): ItemStack { + return bukkit + } +} diff --git a/eco-core/core-nms/v1_17_R1/build.gradle.kts b/eco-core/core-nms/v1_17_R1/build.gradle.kts index 893730a3f..95f333318 100644 --- a/eco-core/core-nms/v1_17_R1/build.gradle.kts +++ b/eco-core/core-nms/v1_17_R1/build.gradle.kts @@ -6,7 +6,7 @@ group = "com.willfp" version = rootProject.version dependencies { - implementation(project(":eco-core:core-nms:nms-common")) + implementation(project(":eco-core:core-nms:common")) paperweight.paperDevBundle("1.17.1-R0.1-SNAPSHOT") pluginRemapper("net.fabricmc:tiny-remapper:0.10.3:fat") diff --git a/eco-core/core-nms/v1_18_R1/build.gradle.kts b/eco-core/core-nms/v1_18_R1/build.gradle.kts index 9ff3aa778..979e36ba3 100644 --- a/eco-core/core-nms/v1_18_R1/build.gradle.kts +++ b/eco-core/core-nms/v1_18_R1/build.gradle.kts @@ -6,7 +6,7 @@ group = "com.willfp" version = rootProject.version dependencies { - implementation(project(":eco-core:core-nms:nms-common")) + implementation(project(":eco-core:core-nms:common")) paperweight.paperDevBundle("1.18.1-R0.1-SNAPSHOT") pluginRemapper("net.fabricmc:tiny-remapper:0.10.3:fat") diff --git a/eco-core/core-nms/v1_18_R2/build.gradle.kts b/eco-core/core-nms/v1_18_R2/build.gradle.kts index 75841efe0..5fdc98188 100644 --- a/eco-core/core-nms/v1_18_R2/build.gradle.kts +++ b/eco-core/core-nms/v1_18_R2/build.gradle.kts @@ -6,7 +6,7 @@ group = "com.willfp" version = rootProject.version dependencies { - implementation(project(":eco-core:core-nms:nms-common")) + implementation(project(":eco-core:core-nms:common")) paperweight.paperDevBundle("1.18.2-R0.1-SNAPSHOT") pluginRemapper("net.fabricmc:tiny-remapper:0.10.3:fat") diff --git a/eco-core/core-nms/v1_19_R1/build.gradle.kts b/eco-core/core-nms/v1_19_R1/build.gradle.kts index 8f7b30447..7e690e4cc 100644 --- a/eco-core/core-nms/v1_19_R1/build.gradle.kts +++ b/eco-core/core-nms/v1_19_R1/build.gradle.kts @@ -6,7 +6,7 @@ group = "com.willfp" version = rootProject.version dependencies { - implementation(project(":eco-core:core-nms:nms-common")) + implementation(project(":eco-core:core-nms:common")) paperweight.paperDevBundle("1.19-R0.1-SNAPSHOT") pluginRemapper("net.fabricmc:tiny-remapper:0.10.3:fat") diff --git a/eco-core/core-nms/v1_19_R2/build.gradle.kts b/eco-core/core-nms/v1_19_R2/build.gradle.kts index 308d72c6d..7751f8e56 100644 --- a/eco-core/core-nms/v1_19_R2/build.gradle.kts +++ b/eco-core/core-nms/v1_19_R2/build.gradle.kts @@ -6,7 +6,7 @@ group = "com.willfp" version = rootProject.version dependencies { - implementation(project(":eco-core:core-nms:nms-common")) + implementation(project(":eco-core:core-nms:common")) paperweight.paperDevBundle("1.19.3-R0.1-SNAPSHOT") pluginRemapper("net.fabricmc:tiny-remapper:0.10.3:fat") diff --git a/eco-core/core-nms/v1_19_R3/build.gradle.kts b/eco-core/core-nms/v1_19_R3/build.gradle.kts index 4a07a0c51..b9d306274 100644 --- a/eco-core/core-nms/v1_19_R3/build.gradle.kts +++ b/eco-core/core-nms/v1_19_R3/build.gradle.kts @@ -6,7 +6,7 @@ group = "com.willfp" version = rootProject.version dependencies { - implementation(project(":eco-core:core-nms:nms-common")) + implementation(project(":eco-core:core-nms:common")) paperweight.paperDevBundle("1.19.4-R0.1-SNAPSHOT") pluginRemapper("net.fabricmc:tiny-remapper:0.10.3:fat") diff --git a/eco-core/core-nms/v1_20_6/build.gradle.kts b/eco-core/core-nms/v1_20_6/build.gradle.kts deleted file mode 100644 index f9e88edb4..000000000 --- a/eco-core/core-nms/v1_20_6/build.gradle.kts +++ /dev/null @@ -1,49 +0,0 @@ -plugins { - id("io.papermc.paperweight.userdev") -} - -group = "com.willfp" -version = rootProject.version - -dependencies { - implementation(project(":eco-core:core-nms:nms-common")) - paperweight.paperDevBundle("1.20.6-R0.1-SNAPSHOT") - - implementation("net.kyori:adventure-text-minimessage:4.11.0") { - version { - strictly("4.11.0") - } - exclude(group = "net.kyori", module = "adventure-api") - } -} - -tasks { - build { - dependsOn(reobfJar) - } - - reobfJar { - mustRunAfter(shadowJar) - } - - shadowJar { - relocate( - "com.willfp.eco.internal.spigot.proxy.common", - "com.willfp.eco.internal.spigot.proxy.v1_20_6.common" - ) - relocate( - "net.kyori.adventure.text.minimessage", - "com.willfp.eco.internal.spigot.proxy.v1_20_6.minimessage" - ) - } - - compileJava { - options.release = 21 - } - - compileKotlin { - kotlinOptions { - jvmTarget = "21" - } - } -} diff --git a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/BukkitCommands.kt b/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/BukkitCommands.kt deleted file mode 100644 index 953e8c044..000000000 --- a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/BukkitCommands.kt +++ /dev/null @@ -1,35 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_20_6 - -import com.willfp.eco.core.command.PluginCommandBase -import com.willfp.eco.internal.spigot.proxy.BukkitCommandsProxy -import org.bukkit.Bukkit -import org.bukkit.command.Command -import org.bukkit.command.SimpleCommandMap -import org.bukkit.craftbukkit.CraftServer -import java.lang.reflect.Field - -class BukkitCommands : BukkitCommandsProxy { - private val knownCommandsField: Field by lazy { - SimpleCommandMap::class.java.getDeclaredField("knownCommands") - .apply { - isAccessible = true - } - } - - @Suppress("UNCHECKED_CAST") - private val knownCommands: MutableMap - get() = knownCommandsField.get(getCommandMap()) as MutableMap - - override fun getCommandMap(): SimpleCommandMap { - return (Bukkit.getServer() as CraftServer).commandMap - } - - override fun syncCommands() { - (Bukkit.getServer() as CraftServer).syncCommands() - } - - override fun unregisterCommand(command: PluginCommandBase) { - knownCommands.remove(command.name) - knownCommands.remove("${command.plugin.name.lowercase()}:${command.name}") - } -} diff --git a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/CommonsInitializer.kt b/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/CommonsInitializer.kt deleted file mode 100644 index 7fce90ee9..000000000 --- a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/CommonsInitializer.kt +++ /dev/null @@ -1,171 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_20_6 - -import com.willfp.eco.core.EcoPlugin -import com.willfp.eco.internal.spigot.proxy.CommonsInitializerProxy -import com.willfp.eco.internal.spigot.proxy.common.CommonsProvider -import com.willfp.eco.internal.spigot.proxy.common.packet.PacketInjectorListener -import com.willfp.eco.internal.spigot.proxy.common.toResourceLocation -import net.kyori.adventure.text.Component -import net.kyori.adventure.text.serializer.json.JSONComponentSerializer -import net.minecraft.core.component.DataComponents -import net.minecraft.core.registries.BuiltInRegistries -import net.minecraft.nbt.CompoundTag -import net.minecraft.nbt.Tag -import net.minecraft.resources.ResourceLocation -import net.minecraft.server.level.ServerPlayer -import net.minecraft.world.entity.PathfinderMob -import net.minecraft.world.item.Item -import org.bukkit.Bukkit -import org.bukkit.Material -import org.bukkit.NamespacedKey -import org.bukkit.craftbukkit.CraftServer -import org.bukkit.craftbukkit.entity.CraftEntity -import org.bukkit.craftbukkit.entity.CraftMob -import org.bukkit.craftbukkit.entity.CraftPlayer -import org.bukkit.craftbukkit.inventory.CraftItemStack -import org.bukkit.craftbukkit.inventory.CraftMetaArmor -import org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer -import org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry -import org.bukkit.craftbukkit.util.CraftMagicNumbers -import org.bukkit.craftbukkit.util.CraftNamespacedKey -import org.bukkit.entity.LivingEntity -import org.bukkit.entity.Mob -import org.bukkit.entity.Player -import org.bukkit.inventory.ItemStack -import org.bukkit.persistence.PersistentDataContainer -import java.lang.reflect.Field - -class CommonsInitializer : CommonsInitializerProxy { - override fun init(plugin: EcoPlugin) { - CommonsProvider.setIfNeeded(CommonsProviderImpl) - plugin.onEnable { - plugin.eventManager.registerListener(PacketInjectorListener) - } - } - - object CommonsProviderImpl : CommonsProvider { - private val cisHandle: Field = CraftItemStack::class.java.getDeclaredField("handle").apply { - isAccessible = true - } - - private val pdcRegsitry = CraftMetaArmor::class.java - .superclass // Access CraftMetaItem - .getDeclaredField("DATA_TYPE_REGISTRY") - .apply { isAccessible = true } - .get(null) as CraftPersistentDataTypeRegistry - - override val nbtTagString = CraftMagicNumbers.NBT.TAG_STRING - - override fun toPathfinderMob(mob: Mob): PathfinderMob? { - val craft = mob as? CraftMob ?: return null - return craft.handle as? PathfinderMob - } - - override fun toResourceLocation(namespacedKey: NamespacedKey): ResourceLocation = - CraftNamespacedKey.toMinecraft(namespacedKey) - - override fun asNMSStack(itemStack: ItemStack): net.minecraft.world.item.ItemStack { - return if (itemStack !is CraftItemStack) { - CraftItemStack.asNMSCopy(itemStack) - } else { - cisHandle[itemStack] as net.minecraft.world.item.ItemStack? ?: CraftItemStack.asNMSCopy(itemStack) - } - } - - override fun asBukkitStack(itemStack: net.minecraft.world.item.ItemStack): ItemStack { - return CraftItemStack.asCraftMirror(itemStack) - } - - override fun mergeIfNeeded(itemStack: ItemStack, nmsStack: net.minecraft.world.item.ItemStack) { - if (itemStack !is CraftItemStack) { - itemStack.itemMeta = CraftItemStack.asCraftMirror(nmsStack).itemMeta - } - } - - override fun toBukkitEntity(entity: net.minecraft.world.entity.LivingEntity): LivingEntity? = - CraftEntity.getEntity(Bukkit.getServer() as CraftServer, entity) as? LivingEntity - - override fun makePdc(tag: CompoundTag, base: Boolean): PersistentDataContainer { - fun emptyPdc(): CraftPersistentDataContainer = CraftPersistentDataContainer(pdcRegsitry) - - fun CompoundTag?.toPdc(): PersistentDataContainer { - val pdc = emptyPdc() - this ?: return pdc - val keys = this.allKeys - for (key in keys) { - pdc.put(key, this[key]) - } - - return pdc - } - - return if (base) { - tag.toPdc() - } else { - if (tag.contains("PublicBukkitValues")) { - tag.getCompound("PublicBukkitValues").toPdc() - } else { - emptyPdc() - } - } - } - - override fun setPdc( - tag: CompoundTag, - pdc: PersistentDataContainer?, - item: net.minecraft.world.item.ItemStack? - ) { - fun CraftPersistentDataContainer.toTag(): CompoundTag { - val compound = CompoundTag() - val rawPublicMap: Map = this.raw - for ((key, value) in rawPublicMap) { - compound.put(key, value) - } - - return compound - } - - val container = when (pdc) { - is CraftPersistentDataContainer? -> pdc - else -> null - } - - if (item != null) { - if (container != null && !container.isEmpty) { - for (key in tag.allKeys.toSet()) { - tag.remove(key) - } - - tag.merge(container.toTag()) - } else { - item.remove(DataComponents.CUSTOM_DATA) - } - } else { - if (container != null && !container.isEmpty) { - tag.put("PublicBukkitValues", container.toTag()) - } else { - tag.remove("PublicBukkitValues") - } - } - } - - override fun materialToItem(material: Material): Item = - BuiltInRegistries.ITEM.getOptional(material.key.toResourceLocation()) - .orElseThrow { IllegalArgumentException("Material is not item!") } - - override fun itemToMaterial(item: Item) = - Material.getMaterial(BuiltInRegistries.ITEM.getKey(item).path.uppercase()) - ?: throw IllegalArgumentException("Invalid material!") - - override fun toNMS(player: Player): ServerPlayer { - return (player as CraftPlayer).handle - } - - override fun toNMS(component: Component): net.minecraft.network.chat.Component { - val json = JSONComponentSerializer.json().serialize(component) - val holderLookupProvider = (Bukkit.getServer() as CraftServer).server.registryAccess() - - return net.minecraft.network.chat.Component.Serializer.fromJson(json, holderLookupProvider)!! - } - } -} diff --git a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/DisplayName.kt b/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/DisplayName.kt deleted file mode 100644 index 110675b25..000000000 --- a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/DisplayName.kt +++ /dev/null @@ -1,59 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_20_6 - -import com.willfp.eco.core.packet.Packet -import com.willfp.eco.core.packet.sendPacket -import com.willfp.eco.internal.spigot.proxy.DisplayNameProxy -import com.willfp.eco.internal.spigot.proxy.common.toNMS -import net.kyori.adventure.text.Component -import net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket -import net.minecraft.network.syncher.EntityDataAccessor -import net.minecraft.network.syncher.SynchedEntityData -import net.minecraft.world.entity.Entity -import org.bukkit.craftbukkit.entity.CraftLivingEntity -import org.bukkit.entity.LivingEntity -import org.bukkit.entity.Player -import java.util.Optional - -@Suppress("UNCHECKED_CAST") -class DisplayName : DisplayNameProxy { - private val displayNameAccessor = Entity::class.java - .declaredFields - .filter { it.type == EntityDataAccessor::class.java } - .toList()[2] - .apply { isAccessible = true } - .get(null) as EntityDataAccessor> - - private val customNameVisibleAccessor = Entity::class.java - .declaredFields - .filter { it.type == EntityDataAccessor::class.java } - .toList()[3] - .apply { isAccessible = true } - .get(null) as EntityDataAccessor - - override fun setClientsideDisplayName( - entity: LivingEntity, - player: Player, - displayName: Component, - visible: Boolean - ) { - if (entity !is CraftLivingEntity) { - return - } - - val nmsComponent = displayName.toNMS() - - val nmsEntity = entity.handle - nmsEntity.isCustomNameVisible - val entityData = SynchedEntityData.Builder(nmsEntity).build() - - entityData.set(displayNameAccessor, Optional.of(nmsComponent), true) - entityData.set(customNameVisibleAccessor, visible, true) - - val packet = ClientboundSetEntityDataPacket( - nmsEntity.id, - entityData.packDirty() ?: throw IllegalStateException("No packed entity data") - ) - - player.sendPacket(Packet(packet)) - } -} diff --git a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/DummyEntityFactory.kt b/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/DummyEntityFactory.kt deleted file mode 100644 index 0abb2fab8..000000000 --- a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/DummyEntityFactory.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_20_6 - -import com.willfp.eco.internal.entities.EcoDummyEntity -import com.willfp.eco.internal.spigot.proxy.DummyEntityFactoryProxy -import org.bukkit.Location -import org.bukkit.craftbukkit.CraftWorld -import org.bukkit.entity.Entity -import org.bukkit.entity.Zombie - -class DummyEntityFactory : DummyEntityFactoryProxy { - override fun createDummyEntity(location: Location): Entity { - val world = location.world as CraftWorld - return EcoDummyEntity(world.createEntity(location, Zombie::class.java)) - } -} diff --git a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/EntityControllerFactory.kt b/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/EntityControllerFactory.kt deleted file mode 100644 index 3e3bbef43..000000000 --- a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/EntityControllerFactory.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_20_6 - -import com.willfp.eco.core.entities.ai.EntityController -import com.willfp.eco.internal.spigot.proxy.EntityControllerFactoryProxy -import com.willfp.eco.internal.spigot.proxy.v1_20_6.entity.EcoEntityController -import org.bukkit.entity.Mob - -class EntityControllerFactory : EntityControllerFactoryProxy { - override fun createEntityController(entity: T): EntityController { - return EcoEntityController(entity) - } -} diff --git a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/ExtendedPersistentDataContainerFactory.kt b/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/ExtendedPersistentDataContainerFactory.kt deleted file mode 100644 index 99dfbdb48..000000000 --- a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/ExtendedPersistentDataContainerFactory.kt +++ /dev/null @@ -1,82 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_20_6 - -import com.willfp.eco.core.data.ExtendedPersistentDataContainer -import com.willfp.eco.internal.spigot.proxy.ExtendedPersistentDataContainerFactoryProxy -import net.minecraft.nbt.Tag -import org.bukkit.Material -import org.bukkit.craftbukkit.inventory.CraftItemStack -import org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer -import org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry -import org.bukkit.inventory.ItemStack -import org.bukkit.persistence.PersistentDataContainer -import org.bukkit.persistence.PersistentDataType - -class ExtendedPersistentDataContainerFactory : ExtendedPersistentDataContainerFactoryProxy { - private val registry: CraftPersistentDataTypeRegistry - - init { - /* - Can't grab actual instance since it's in CraftMetaItem (which is package-private) - And getting it would mean more janky reflection - */ - val item = CraftItemStack.asCraftCopy(ItemStack(Material.STONE)) - val pdc = item.itemMeta!!.persistentDataContainer - this.registry = CraftPersistentDataContainer::class.java.getDeclaredField("registry") - .apply { isAccessible = true }.get(pdc) as CraftPersistentDataTypeRegistry - } - - override fun adapt(pdc: PersistentDataContainer): ExtendedPersistentDataContainer { - return when (pdc) { - is CraftPersistentDataContainer -> EcoPersistentDataContainer(pdc) - else -> throw IllegalArgumentException("Custom PDC instance ${pdc::class.java.name} is not supported!") - } - } - - override fun newPdc(): PersistentDataContainer { - return CraftPersistentDataContainer(registry) - } - - inner class EcoPersistentDataContainer( - private val handle: CraftPersistentDataContainer - ) : ExtendedPersistentDataContainer { - @Suppress("UNCHECKED_CAST") - private val customDataTags: MutableMap = - CraftPersistentDataContainer::class.java.getDeclaredField("customDataTags") - .apply { isAccessible = true }.get(handle) as MutableMap - - override fun set(key: String, dataType: PersistentDataType, value: Z) { - customDataTags[key] = - registry.wrap(dataType, dataType.toPrimitive(value, handle.adapterContext)) - } - - override fun has(key: String, dataType: PersistentDataType): Boolean { - val value = customDataTags[key] ?: return false - return registry.isInstanceOf(dataType, value) - } - - override fun get(key: String, dataType: PersistentDataType): Z? { - val value = customDataTags[key] ?: return null - return dataType.fromPrimitive(registry.extract(dataType, value), handle.adapterContext) - } - - override fun getOrDefault( - key: String, - dataType: PersistentDataType, - defaultValue: Z - ): Z { - return get(key, dataType) ?: defaultValue - } - - override fun remove(key: String) { - customDataTags.remove(key) - } - - override fun getAllKeys(): MutableSet { - return customDataTags.keys - } - - override fun getBase(): PersistentDataContainer { - return handle - } - } -} diff --git a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/FastItemStackFactory.kt b/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/FastItemStackFactory.kt deleted file mode 100644 index ea3f3f0c0..000000000 --- a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/FastItemStackFactory.kt +++ /dev/null @@ -1,402 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_20_6 - -import com.willfp.eco.core.fast.FastItemStack -import com.willfp.eco.internal.spigot.proxy.FastItemStackFactoryProxy -import com.willfp.eco.internal.spigot.proxy.common.asNMSStack -import com.willfp.eco.internal.spigot.proxy.common.item.ContinuallyAppliedPersistentDataContainer -import com.willfp.eco.internal.spigot.proxy.common.item.ImplementedFIS -import com.willfp.eco.internal.spigot.proxy.common.makePdc -import com.willfp.eco.internal.spigot.proxy.common.mergeIfNeeded -import com.willfp.eco.internal.spigot.proxy.common.setPdc -import com.willfp.eco.internal.spigot.proxy.common.toAdventure -import com.willfp.eco.internal.spigot.proxy.common.toItem -import com.willfp.eco.internal.spigot.proxy.common.toMaterial -import com.willfp.eco.internal.spigot.proxy.common.toNMS -import com.willfp.eco.util.StringUtils -import com.willfp.eco.util.toComponent -import com.willfp.eco.util.toLegacy -import net.kyori.adventure.text.Component -import net.kyori.adventure.text.format.TextDecoration -import net.minecraft.core.component.DataComponentType -import net.minecraft.core.component.DataComponents -import net.minecraft.nbt.CompoundTag -import net.minecraft.util.Unit -import net.minecraft.world.item.component.CustomData -import net.minecraft.world.item.component.CustomModelData -import net.minecraft.world.item.component.ItemLore -import org.bukkit.craftbukkit.CraftRegistry -import org.bukkit.craftbukkit.enchantments.CraftEnchantment -import org.bukkit.enchantments.Enchantment -import org.bukkit.inventory.ItemFlag -import org.bukkit.inventory.ItemStack -import org.bukkit.persistence.PersistentDataContainer -import kotlin.math.max - -private val unstyledComponent = Component.empty().style { - it.color(null).decoration(TextDecoration.ITALIC, false) -} - -class FastItemStackFactory : FastItemStackFactoryProxy { - override fun create(itemStack: ItemStack): FastItemStack { - return NewEcoFastItemStack(itemStack) - } - - @Suppress("UsePropertyAccessSyntax") - class NewEcoFastItemStack( - private val bukkit: ItemStack - ) : ImplementedFIS { - // Cast is there because, try as I might, I can't get IntellIJ to recognise half the classes in the dev bundle - @Suppress("USELESS_CAST") - private val handle = bukkit.asNMSStack() as net.minecraft.world.item.ItemStack - - private val pdc = (handle.get(DataComponents.CUSTOM_DATA)?.copyTag() ?: CompoundTag()).makePdc() - - override fun getEnchants(checkStored: Boolean): Map { - val enchantments = handle.get(DataComponents.ENCHANTMENTS) ?: return emptyMap() - - val map = mutableMapOf() - - for ((enchantment, level) in enchantments.entrySet()) { - val bukkit = CraftEnchantment.minecraftToBukkit(enchantment.value()) - - map[bukkit] = level - } - - if (checkStored) { - val stored = handle.get(DataComponents.STORED_ENCHANTMENTS) ?: return map - - for ((enchantment, level) in stored.entrySet()) { - val bukkit = CraftEnchantment.minecraftToBukkit(enchantment.value()) - - map[bukkit] = max(map.getOrDefault(bukkit, 0), level) - } - } - - return map - } - - override fun getEnchantmentLevel( - enchantment: Enchantment, - checkStored: Boolean - ): Int { - val minecraft = CraftRegistry - .bukkitToMinecraft(enchantment) - - val enchantments = handle.get(DataComponents.ENCHANTMENTS) ?: return 0 - var level = enchantments.getLevel(minecraft) - - if (checkStored) { - val storedEnchantments = handle.get(DataComponents.STORED_ENCHANTMENTS) ?: return 0 - level = max(level, storedEnchantments.getLevel(minecraft)) - } - - return level - } - - override fun setLore(lore: List?) = setLoreComponents(lore?.map { it.toComponent() }) - - override fun setLoreComponents(lore: List?) { - if (lore == null) { - handle.set(DataComponents.LORE, null) - } else { - val components = lore - .map { unstyledComponent.append(it) } - .map { it.toNMS() } - - handle.set( - DataComponents.LORE, ItemLore( - components, - components - ) - ) - } - - apply() - } - - override fun getLoreComponents(): List { - return handle.get(DataComponents.LORE)?.lines?.map { it.toAdventure() } ?: emptyList() - } - - override fun getLore(): List = - getLoreComponents().map { StringUtils.toLegacy(it) } - - override fun setDisplayName(name: Component?) { - if (name == null) { - handle.set(DataComponents.CUSTOM_NAME, null) - } else { - handle.set(DataComponents.CUSTOM_NAME, name.toNMS()) - } - - apply() - } - - override fun setDisplayName(name: String?) = setDisplayName(name?.toComponent()) - - override fun getDisplayNameComponent(): Component { - return handle.get(DataComponents.CUSTOM_NAME)?.toAdventure() - ?: Component.translatable(bukkit.type.toItem().getDescriptionId()) - } - - override fun getDisplayName(): String = displayNameComponent.toLegacy() - - private fun net.minecraft.world.item.ItemStack.modifyComponent( - component: DataComponentType, - modifier: (T) -> T - ) { - val current = handle.get(component) ?: return - this.set(component, modifier(current)) - } - - override fun addItemFlags(vararg hideFlags: ItemFlag) { - for (flag in hideFlags) { - when (flag) { - ItemFlag.HIDE_ENCHANTS -> { - handle.modifyComponent(DataComponents.ENCHANTMENTS) { enchantments -> - enchantments.withTooltip(false) - } - } - - ItemFlag.HIDE_ATTRIBUTES -> { - handle.modifyComponent(DataComponents.ATTRIBUTE_MODIFIERS) { attributes -> - attributes.withTooltip(false) - } - } - - ItemFlag.HIDE_UNBREAKABLE -> { - handle.modifyComponent(DataComponents.UNBREAKABLE) { unbreakable -> - unbreakable.withTooltip(false) - } - } - - ItemFlag.HIDE_DESTROYS -> { - handle.modifyComponent(DataComponents.CAN_BREAK) { destroys -> - destroys.withTooltip(false) - } - } - - ItemFlag.HIDE_PLACED_ON -> { - handle.modifyComponent(DataComponents.CAN_PLACE_ON) { placedOn -> - placedOn.withTooltip(false) - } - } - - ItemFlag.HIDE_ADDITIONAL_TOOLTIP -> { - handle.set(DataComponents.HIDE_ADDITIONAL_TOOLTIP, Unit.INSTANCE) - } - - ItemFlag.HIDE_DYE -> { - handle.modifyComponent(DataComponents.DYED_COLOR) { dyed -> - dyed.withTooltip(false) - } - } - - ItemFlag.HIDE_ARMOR_TRIM -> { - handle.modifyComponent(DataComponents.TRIM) { trim -> - trim.withTooltip(false) - } - } - - ItemFlag.HIDE_STORED_ENCHANTS -> { - handle.modifyComponent(DataComponents.STORED_ENCHANTMENTS) { storedEnchants -> - storedEnchants.withTooltip(false) - } - } - } - } - - apply() - } - - override fun removeItemFlags(vararg hideFlags: ItemFlag) { - for (flag in hideFlags) { - when (flag) { - ItemFlag.HIDE_ENCHANTS -> { - handle.modifyComponent(DataComponents.ENCHANTMENTS) { enchantments -> - enchantments.withTooltip(true) - } - } - - ItemFlag.HIDE_ATTRIBUTES -> { - handle.modifyComponent(DataComponents.ATTRIBUTE_MODIFIERS) { attributes -> - attributes.withTooltip(true) - } - } - - ItemFlag.HIDE_UNBREAKABLE -> { - handle.modifyComponent(DataComponents.UNBREAKABLE) { unbreakable -> - unbreakable.withTooltip(true) - } - } - - ItemFlag.HIDE_DESTROYS -> { - handle.modifyComponent(DataComponents.CAN_BREAK) { destroys -> - destroys.withTooltip(true) - } - } - - ItemFlag.HIDE_PLACED_ON -> { - handle.modifyComponent(DataComponents.CAN_PLACE_ON) { placedOn -> - placedOn.withTooltip(true) - } - } - - ItemFlag.HIDE_ADDITIONAL_TOOLTIP -> { - handle.remove(DataComponents.HIDE_ADDITIONAL_TOOLTIP) - } - - ItemFlag.HIDE_DYE -> { - handle.modifyComponent(DataComponents.DYED_COLOR) { dyed -> - dyed.withTooltip(true) - } - } - - ItemFlag.HIDE_ARMOR_TRIM -> { - handle.modifyComponent(DataComponents.TRIM) { trim -> - trim.withTooltip(true) - } - } - - ItemFlag.HIDE_STORED_ENCHANTS -> { - handle.modifyComponent(DataComponents.STORED_ENCHANTMENTS) { storedEnchants -> - storedEnchants.withTooltip(true) - } - } - } - } - - apply() - } - - override fun getItemFlags(): Set { - val currentFlags = mutableSetOf() - for (f in ItemFlag.values()) { - if (hasItemFlag(f)) { - currentFlags.add(f) - } - } - return currentFlags - } - - override fun hasItemFlag(flag: ItemFlag): Boolean { - return when (flag) { - ItemFlag.HIDE_ENCHANTS -> { - val enchantments = handle.get(DataComponents.ENCHANTMENTS) ?: return false - !enchantments.showInTooltip - } - - ItemFlag.HIDE_ATTRIBUTES -> { - val attributes = handle.get(DataComponents.ATTRIBUTE_MODIFIERS) ?: return false - !attributes.showInTooltip - } - - ItemFlag.HIDE_UNBREAKABLE -> { - val unbreakable = handle.get(DataComponents.UNBREAKABLE) ?: return false - !unbreakable.showInTooltip - } - - ItemFlag.HIDE_DESTROYS -> { - val destroys = handle.get(DataComponents.CAN_BREAK) ?: return false - !destroys.showInTooltip() - } - - ItemFlag.HIDE_PLACED_ON -> { - val placedOn = handle.get(DataComponents.CAN_PLACE_ON) ?: return false - !placedOn.showInTooltip() - } - - ItemFlag.HIDE_ADDITIONAL_TOOLTIP -> { - handle.get(DataComponents.HIDE_ADDITIONAL_TOOLTIP) != null - } - - ItemFlag.HIDE_DYE -> { - val dyed = handle.get(DataComponents.DYED_COLOR) ?: return false - !dyed.showInTooltip() - } - - ItemFlag.HIDE_ARMOR_TRIM -> { - val armorTrim = handle.get(DataComponents.TRIM) ?: return false - !armorTrim.showInTooltip - } - - ItemFlag.HIDE_STORED_ENCHANTS -> { - val storedEnchants = handle.get(DataComponents.STORED_ENCHANTMENTS) ?: return false - !storedEnchants.showInTooltip - } - } - } - - override fun getRepairCost(): Int { - return handle.get(DataComponents.REPAIR_COST) ?: 0 - } - - override fun setRepairCost(cost: Int) { - handle.set(DataComponents.REPAIR_COST, cost) - - apply() - } - - override fun getPersistentDataContainer(): PersistentDataContainer { - return ContinuallyAppliedPersistentDataContainer(this.pdc, this) - } - - override fun getAmount(): Int = handle.getCount() - - override fun setAmount(amount: Int) { - handle.setCount(amount) - apply() - } - - override fun setType(material: org.bukkit.Material) { - @Suppress("DEPRECATION") - handle.setItem(material.toItem()) - apply() - } - - override fun getType(): org.bukkit.Material = handle.getItem().toMaterial() - - override fun getCustomModelData(): Int? = - handle.get(DataComponents.CUSTOM_MODEL_DATA)?.value - - override fun setCustomModelData(data: Int?) { - if (data == null) { - handle.remove(DataComponents.CUSTOM_MODEL_DATA) - } else { - handle.set(DataComponents.CUSTOM_MODEL_DATA, CustomModelData(data)) - } - - apply() - } - - override fun equals(other: Any?): Boolean { - if (other !is NewEcoFastItemStack) { - return false - } - - return other.hashCode() == this.hashCode() - } - - override fun hashCode(): Int { - return net.minecraft.world.item.ItemStack.hashItemAndComponents(handle) - } - - override fun apply() { - val customData = handle.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY) - val updated = customData.update { - it.setPdc(pdc) - } - - if (updated.isEmpty) { - handle.remove(DataComponents.CUSTOM_DATA) - } else { - handle.set(DataComponents.CUSTOM_DATA, updated) - } - - bukkit.mergeIfNeeded(handle) - } - - override fun unwrap(): ItemStack { - return bukkit - } - } -} diff --git a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/MiniMessageTranslator.kt b/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/MiniMessageTranslator.kt deleted file mode 100644 index 7aceb0070..000000000 --- a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/MiniMessageTranslator.kt +++ /dev/null @@ -1,33 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_20_6 - -import com.willfp.eco.core.display.Display -import com.willfp.eco.internal.spigot.proxy.MiniMessageTranslatorProxy -import com.willfp.eco.util.toLegacy -import net.kyori.adventure.text.minimessage.MiniMessage - -class MiniMessageTranslator : MiniMessageTranslatorProxy { - override fun format(message: String): String { - var mut = message - - val startsWithPrefix = mut.startsWith(Display.PREFIX) - if (startsWithPrefix) { - mut = mut.substring(2) - } - - mut = mut.replace('ยง', '&') - - val miniMessage = runCatching { - MiniMessage.miniMessage().deserialize( - mut - ).toLegacy() - }.getOrNull() ?: mut - - mut = if (startsWithPrefix) { - Display.PREFIX + miniMessage - } else { - miniMessage - } - - return mut - } -} diff --git a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/PacketHandler.kt b/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/PacketHandler.kt deleted file mode 100644 index 1fa3bae95..000000000 --- a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/PacketHandler.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_20_6 - -import com.willfp.eco.core.EcoPlugin -import com.willfp.eco.core.packet.PacketListener -import com.willfp.eco.internal.spigot.proxy.PacketHandlerProxy -import com.willfp.eco.internal.spigot.proxy.common.packet.display.PacketAutoRecipe -import com.willfp.eco.internal.spigot.proxy.common.packet.display.PacketHeldItemSlot -import com.willfp.eco.internal.spigot.proxy.common.packet.display.PacketSetSlot -import com.willfp.eco.internal.spigot.proxy.common.packet.display.PacketWindowItems -import com.willfp.eco.internal.spigot.proxy.common.packet.display.frame.clearFrames -import com.willfp.eco.internal.spigot.proxy.v1_20_6.packet.NewItemsPacketOpenWindowMerchant -import com.willfp.eco.internal.spigot.proxy.v1_20_6.packet.NewItemsPacketSetCreativeSlot -import net.minecraft.network.protocol.Packet -import org.bukkit.craftbukkit.entity.CraftPlayer -import org.bukkit.entity.Player - -class PacketHandler : PacketHandlerProxy { - override fun sendPacket(player: Player, packet: com.willfp.eco.core.packet.Packet) { - if (player !is CraftPlayer) { - return - } - - val handle = packet.handle - - if (handle !is Packet<*>) { - return - } - - player.handle.connection.send(handle) - } - - override fun clearDisplayFrames() { - clearFrames() - } - - override fun getPacketListeners(plugin: EcoPlugin): List { - return listOf( - PacketAutoRecipe(plugin), - PacketHeldItemSlot, - NewItemsPacketOpenWindowMerchant, - NewItemsPacketSetCreativeSlot, - PacketSetSlot, - PacketWindowItems(plugin) - ) - } -} diff --git a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/SNBTConverter.kt b/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/SNBTConverter.kt deleted file mode 100644 index 73eeead8d..000000000 --- a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/SNBTConverter.kt +++ /dev/null @@ -1,80 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_20_6 - -import com.mojang.serialization.Dynamic -import com.willfp.eco.core.items.TestableItem -import com.willfp.eco.core.recipe.parts.EmptyTestableItem -import com.willfp.eco.internal.spigot.proxy.SNBTConverterProxy -import net.minecraft.nbt.CompoundTag -import net.minecraft.nbt.NbtOps -import net.minecraft.nbt.SnbtPrinterTagVisitor -import net.minecraft.nbt.TagParser -import net.minecraft.server.MinecraftServer -import net.minecraft.util.datafix.fixes.References -import org.bukkit.Bukkit -import org.bukkit.craftbukkit.CraftServer -import org.bukkit.craftbukkit.inventory.CraftItemStack -import org.bukkit.craftbukkit.util.CraftMagicNumbers -import org.bukkit.inventory.ItemStack - -private val registryAccess = (Bukkit.getServer() as CraftServer).server.registryAccess() - -class SNBTConverter : SNBTConverterProxy { - private fun parseItemSNBT(snbt: String): CompoundTag? { - val nbt = runCatching { TagParser.parseTag(snbt) }.getOrNull() ?: return null - val dataVersion = if (nbt.contains("DataVersion")) { - nbt.getInt("DataVersion") - } else null - - // If the data version is the same as the server's data version, we don't need to fix it - if (dataVersion == CraftMagicNumbers.INSTANCE.dataVersion) { - return nbt - } - - return MinecraftServer.getServer().fixerUpper.update( - References.ITEM_STACK, - Dynamic(NbtOps.INSTANCE, nbt), - dataVersion ?: 3700, // 3700 is the 1.20.4 data version - CraftMagicNumbers.INSTANCE.dataVersion - ).value as CompoundTag - } - - override fun fromSNBT(snbt: String): ItemStack? { - val tag = parseItemSNBT(snbt) ?: return null - val nms = net.minecraft.world.item.ItemStack.parse(registryAccess, tag).orElse(null) ?: return null - return CraftItemStack.asBukkitCopy(nms) - } - - override fun toSNBT(itemStack: ItemStack): String { - val nms = CraftItemStack.asNMSCopy(itemStack) - val tag = nms.save(registryAccess) as CompoundTag - tag.putInt("DataVersion", CraftMagicNumbers.INSTANCE.dataVersion) - return SnbtPrinterTagVisitor().visit(tag) - } - - override fun makeSNBTTestable(snbt: String): TestableItem { - val tag = parseItemSNBT(snbt) ?: return EmptyTestableItem() - val nms = net.minecraft.world.item.ItemStack.parse(registryAccess, tag).orElse(null) - ?: return EmptyTestableItem() - - tag.remove("Count") - return SNBTTestableItem(CraftItemStack.asBukkitCopy(nms), tag) - } - - class SNBTTestableItem( - private val item: ItemStack, - private val tag: CompoundTag - ) : TestableItem { - override fun matches(itemStack: ItemStack?): Boolean { - if (itemStack == null) { - return false - } - - val nms = CraftItemStack.asNMSCopy(itemStack) - val nmsTag = nms.save(registryAccess) as CompoundTag - nmsTag.remove("Count") - return tag.copy().merge(nmsTag) == nmsTag && itemStack.type == item.type - } - - override fun getItem(): ItemStack = item - } -} diff --git a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/Skull.kt b/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/Skull.kt deleted file mode 100644 index 6809a3432..000000000 --- a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/Skull.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_20_6 - -import com.willfp.eco.internal.spigot.proxy.SkullProxy -import com.willfp.eco.internal.spigot.proxy.common.texture -import org.bukkit.inventory.meta.SkullMeta - -class Skull : SkullProxy { - override fun setSkullTexture( - meta: SkullMeta, - base64: String - ) { - meta.texture = base64 - } - - override fun getSkullTexture( - meta: SkullMeta - ): String? = meta.texture -} diff --git a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/TPS.kt b/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/TPS.kt deleted file mode 100644 index 609235e18..000000000 --- a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/TPS.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_20_6 - -import com.willfp.eco.internal.spigot.proxy.TPSProxy -import org.bukkit.Bukkit -import org.bukkit.craftbukkit.CraftServer - -class TPS : TPSProxy { - override fun getTPS(): Double { - return (Bukkit.getServer() as CraftServer).handle.server.tps1.average - } -} diff --git a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/entity/EcoEntityController.kt b/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/entity/EcoEntityController.kt deleted file mode 100644 index 589405f1a..000000000 --- a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/entity/EcoEntityController.kt +++ /dev/null @@ -1,95 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_20_6.entity - -import com.willfp.eco.core.entities.ai.CustomGoal -import com.willfp.eco.core.entities.ai.EntityController -import com.willfp.eco.core.entities.ai.EntityGoal -import com.willfp.eco.core.entities.ai.TargetGoal -import com.willfp.eco.internal.spigot.proxy.common.ai.CustomGoalFactory -import com.willfp.eco.internal.spigot.proxy.common.ai.getGoalFactory -import com.willfp.eco.internal.spigot.proxy.common.toPathfinderMob -import net.minecraft.world.entity.PathfinderMob -import net.minecraft.world.entity.ai.goal.Goal -import org.bukkit.entity.Mob - -class EcoEntityController( - private val handle: T -) : EntityController { - override fun addEntityGoal(priority: Int, goal: EntityGoal): EntityController { - val nms = getNms() ?: return this - - nms.goalSelector.addGoal( - priority, - goal.getGoalFactory()?.create(goal, nms) ?: return this - ) - - return this - } - - override fun removeEntityGoal(goal: EntityGoal): EntityController { - val nms = getNms() ?: return this - - val predicate: (Goal) -> Boolean = if (goal is CustomGoal<*>) { - { CustomGoalFactory.isGoalOfType(it, goal) } - } else { - { goal.getGoalFactory()?.isGoalOfType(it) == true } - } - - for (wrapped in nms.goalSelector.availableGoals.toSet()) { - if (predicate(wrapped.goal)) { - nms.goalSelector.removeGoal(wrapped.goal) - } - } - - return this - } - - override fun clearEntityGoals(): EntityController { - val nms = getNms() ?: return this - nms.goalSelector.availableGoals.clear() - return this - } - - override fun addTargetGoal(priority: Int, goal: TargetGoal): EntityController { - val nms = getNms() ?: return this - - nms.targetSelector.addGoal( - priority, goal.getGoalFactory()?.create(goal, nms) ?: return this - ) - - nms.targetSelector - - return this - } - - override fun removeTargetGoal(goal: TargetGoal): EntityController { - val nms = getNms() ?: return this - - val predicate: (Goal) -> Boolean = if (goal is CustomGoal<*>) { - { CustomGoalFactory.isGoalOfType(it, goal) } - } else { - { goal.getGoalFactory()?.isGoalOfType(it) == true } - } - - for (wrapped in nms.targetSelector.availableGoals.toSet()) { - if (predicate(wrapped.goal)) { - nms.targetSelector.removeGoal(wrapped.goal) - } - } - - return this - } - - override fun clearTargetGoals(): EntityController { - val nms = getNms() ?: return this - nms.targetSelector.availableGoals.clear() - return this - } - - private fun getNms(): PathfinderMob? { - return handle.toPathfinderMob() - } - - override fun getEntity(): T { - return handle - } -} \ No newline at end of file diff --git a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/packet/NewItemsPacketOpenWindowMerchant.kt b/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/packet/NewItemsPacketOpenWindowMerchant.kt deleted file mode 100644 index e131b278d..000000000 --- a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/packet/NewItemsPacketOpenWindowMerchant.kt +++ /dev/null @@ -1,35 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_20_6.packet - -import com.willfp.eco.core.display.Display -import com.willfp.eco.core.packet.PacketEvent -import com.willfp.eco.core.packet.PacketListener -import com.willfp.eco.internal.spigot.proxy.common.asBukkitStack -import net.minecraft.network.protocol.game.ClientboundMerchantOffersPacket -import net.minecraft.world.item.trading.MerchantOffers - -object NewItemsPacketOpenWindowMerchant : PacketListener { - private val field = ClientboundMerchantOffersPacket::class.java - .declaredFields - .first { it.type == MerchantOffers::class.java } - .apply { isAccessible = true } - - override fun onSend(event: PacketEvent) { - val packet = event.packet.handle as? ClientboundMerchantOffersPacket ?: return - - val offers = MerchantOffers() - - for (offer in packet.offers) { - val new = offer.copy() - - Display.display(new.baseCostA.itemStack.asBukkitStack(), event.player) - if (new.costB.isPresent) { - Display.display(new.costB.get().itemStack.asBukkitStack(), event.player) - } - Display.display(new.result.asBukkitStack(), event.player) - - offers += new - } - - field.set(packet, offers) - } -} diff --git a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/packet/NewItemsPacketSetCreativeSlot.kt b/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/packet/NewItemsPacketSetCreativeSlot.kt deleted file mode 100644 index 8e0d8f57f..000000000 --- a/eco-core/core-nms/v1_20_6/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_20_6/packet/NewItemsPacketSetCreativeSlot.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.willfp.eco.internal.spigot.proxy.v1_20_6.packet - -import com.willfp.eco.core.display.Display -import com.willfp.eco.core.packet.PacketEvent -import com.willfp.eco.core.packet.PacketListener -import com.willfp.eco.internal.spigot.proxy.common.asBukkitStack -import com.willfp.eco.internal.spigot.proxy.common.packet.display.frame.DisplayFrame -import com.willfp.eco.internal.spigot.proxy.common.packet.display.frame.lastDisplayFrame -import net.minecraft.network.protocol.game.ServerboundSetCreativeModeSlotPacket - -object NewItemsPacketSetCreativeSlot : PacketListener { - override fun onReceive(event: PacketEvent) { - val packet = event.packet.handle as? ServerboundSetCreativeModeSlotPacket ?: return - - Display.revert(packet.itemStack.asBukkitStack()) - - event.player.lastDisplayFrame = DisplayFrame.EMPTY - } -} diff --git a/eco-core/core-nms/v1_20_R1/build.gradle.kts b/eco-core/core-nms/v1_20_R1/build.gradle.kts index dac466c38..1048a5c61 100644 --- a/eco-core/core-nms/v1_20_R1/build.gradle.kts +++ b/eco-core/core-nms/v1_20_R1/build.gradle.kts @@ -6,7 +6,7 @@ group = "com.willfp" version = rootProject.version dependencies { - implementation(project(":eco-core:core-nms:nms-common")) + implementation(project(":eco-core:core-nms:common")) paperweight.paperDevBundle("1.20-R0.1-SNAPSHOT") pluginRemapper("net.fabricmc:tiny-remapper:0.10.3:fat") diff --git a/eco-core/core-nms/v1_20_R2/build.gradle.kts b/eco-core/core-nms/v1_20_R2/build.gradle.kts index f0d2e6c41..ef7d4b7fc 100644 --- a/eco-core/core-nms/v1_20_R2/build.gradle.kts +++ b/eco-core/core-nms/v1_20_R2/build.gradle.kts @@ -6,7 +6,7 @@ group = "com.willfp" version = rootProject.version dependencies { - implementation(project(":eco-core:core-nms:nms-common")) + implementation(project(":eco-core:core-nms:common")) paperweight.paperDevBundle("1.20.2-R0.1-SNAPSHOT") pluginRemapper("net.fabricmc:tiny-remapper:0.10.3:fat") diff --git a/eco-core/core-nms/v1_20_R3/build.gradle.kts b/eco-core/core-nms/v1_20_R3/build.gradle.kts index 023c955f9..33a0bca1b 100644 --- a/eco-core/core-nms/v1_20_R3/build.gradle.kts +++ b/eco-core/core-nms/v1_20_R3/build.gradle.kts @@ -6,7 +6,7 @@ group = "com.willfp" version = rootProject.version dependencies { - implementation(project(":eco-core:core-nms:nms-common")) + implementation(project(":eco-core:core-nms:common")) paperweight.paperDevBundle("1.20.4-R0.1-SNAPSHOT") pluginRemapper("net.fabricmc:tiny-remapper:0.10.3:fat") diff --git a/eco-core/core-nms/v1_21/build.gradle.kts b/eco-core/core-nms/v1_21/build.gradle.kts index c40ee8106..3f488f903 100644 --- a/eco-core/core-nms/v1_21/build.gradle.kts +++ b/eco-core/core-nms/v1_21/build.gradle.kts @@ -6,7 +6,8 @@ group = "com.willfp" version = rootProject.version dependencies { - implementation(project(":eco-core:core-nms:nms-common")) + implementation(project(":eco-core:core-nms:modern")) + implementation(project(":eco-core:core-nms:common")) paperweight.paperDevBundle("1.21-R0.1-SNAPSHOT") implementation("net.kyori:adventure-text-minimessage:4.11.0") { diff --git a/eco-core/core-nms/v1_21/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_21/FastItemStackFactory.kt b/eco-core/core-nms/v1_21/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_21/FastItemStackFactory.kt index a55549c8e..cd6fc8009 100644 --- a/eco-core/core-nms/v1_21/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_21/FastItemStackFactory.kt +++ b/eco-core/core-nms/v1_21/src/main/kotlin/com/willfp/eco/internal/spigot/proxy/v1_21/FastItemStackFactory.kt @@ -2,413 +2,11 @@ package com.willfp.eco.internal.spigot.proxy.v1_21 import com.willfp.eco.core.fast.FastItemStack import com.willfp.eco.internal.spigot.proxy.FastItemStackFactoryProxy -import com.willfp.eco.internal.spigot.proxy.common.asNMSStack -import com.willfp.eco.internal.spigot.proxy.common.item.ContinuallyAppliedPersistentDataContainer -import com.willfp.eco.internal.spigot.proxy.common.item.ImplementedFIS -import com.willfp.eco.internal.spigot.proxy.common.makePdc -import com.willfp.eco.internal.spigot.proxy.common.mergeIfNeeded -import com.willfp.eco.internal.spigot.proxy.common.setPdc -import com.willfp.eco.internal.spigot.proxy.common.toAdventure -import com.willfp.eco.internal.spigot.proxy.common.toItem -import com.willfp.eco.internal.spigot.proxy.common.toMaterial -import com.willfp.eco.internal.spigot.proxy.common.toNMS -import com.willfp.eco.util.StringUtils -import com.willfp.eco.util.toComponent -import com.willfp.eco.util.toLegacy -import net.kyori.adventure.text.Component -import net.kyori.adventure.text.format.TextDecoration -import net.minecraft.core.Holder -import net.minecraft.core.component.DataComponentType -import net.minecraft.core.component.DataComponents -import net.minecraft.core.registries.BuiltInRegistries -import net.minecraft.core.registries.Registries -import net.minecraft.nbt.CompoundTag -import net.minecraft.util.Unit -import net.minecraft.world.item.component.CustomData -import net.minecraft.world.item.component.CustomModelData -import net.minecraft.world.item.component.ItemLore -import net.minecraft.world.item.enchantment.EnchantmentHelper -import org.bukkit.Bukkit -import org.bukkit.craftbukkit.CraftRegistry -import org.bukkit.craftbukkit.CraftServer -import org.bukkit.craftbukkit.enchantments.CraftEnchantment -import org.bukkit.enchantments.Enchantment -import org.bukkit.inventory.ItemFlag +import com.willfp.eco.internal.spigot.proxy.common.modern.NewEcoFastItemStack import org.bukkit.inventory.ItemStack -import org.bukkit.persistence.PersistentDataContainer -import kotlin.math.max -import kotlin.math.min - -private val unstyledComponent = Component.empty().style { - it.color(null).decoration(TextDecoration.ITALIC, false) -} class FastItemStackFactory : FastItemStackFactoryProxy { override fun create(itemStack: ItemStack): FastItemStack { return NewEcoFastItemStack(itemStack) } - - @Suppress("UsePropertyAccessSyntax") - class NewEcoFastItemStack( - private val bukkit: ItemStack - ) : ImplementedFIS { - // Cast is there because, try as I might, I can't get IntellIJ to recognise half the classes in the dev bundle - @Suppress("USELESS_CAST") - private val handle = bukkit.asNMSStack() as net.minecraft.world.item.ItemStack - - private val pdc = (handle.get(DataComponents.CUSTOM_DATA)?.copyTag() ?: CompoundTag()).makePdc() - - override fun getEnchants(checkStored: Boolean): Map { - val enchantments = handle.get(DataComponents.ENCHANTMENTS) ?: return emptyMap() - - val map = mutableMapOf() - - for ((enchantment, level) in enchantments.entrySet()) { - val bukkit = CraftEnchantment.minecraftToBukkit(enchantment.value()) - - map[bukkit] = level - } - - if (checkStored) { - val stored = handle.get(DataComponents.STORED_ENCHANTMENTS) ?: return map - - for ((enchantment, level) in stored.entrySet()) { - val bukkit = CraftEnchantment.minecraftToBukkit(enchantment.value()) - - map[bukkit] = max(map.getOrDefault(bukkit, 0), level) - } - } - - return map - } - - override fun getEnchantmentLevel( - enchantment: Enchantment, - checkStored: Boolean - ): Int { - val minecraft = CraftRegistry - .bukkitToMinecraft(enchantment) - - val server = Bukkit.getServer() as CraftServer - val access = server.server.registryAccess() - - val holder = access.registryOrThrow(Registries.ENCHANTMENT).wrapAsHolder(minecraft) - - val enchantments = handle.get(DataComponents.ENCHANTMENTS) ?: return 0 - var level = enchantments.getLevel(holder) - - if (checkStored) { - val storedEnchantments = handle.get(DataComponents.STORED_ENCHANTMENTS) ?: return 0 - level = max(level, storedEnchantments.getLevel(holder)) - } - - return level - } - - override fun setLore(lore: List?) = setLoreComponents(lore?.map { it.toComponent() }) - - override fun setLoreComponents(lore: List?) { - if (lore == null) { - handle.set(DataComponents.LORE, null) - } else { - val components = lore - .map { unstyledComponent.append(it) } - .map { it.toNMS() } - - handle.set( - DataComponents.LORE, ItemLore( - components, - components - ) - ) - } - - apply() - } - - override fun getLoreComponents(): List { - return handle.get(DataComponents.LORE)?.lines?.map { it.toAdventure() } ?: emptyList() - } - - override fun getLore(): List = - getLoreComponents().map { StringUtils.toLegacy(it) } - - override fun setDisplayName(name: Component?) { - if (name == null) { - handle.set(DataComponents.CUSTOM_NAME, null) - } else { - handle.set(DataComponents.CUSTOM_NAME, name.toNMS()) - } - - apply() - } - - override fun setDisplayName(name: String?) = setDisplayName(name?.toComponent()) - - override fun getDisplayNameComponent(): Component { - return handle.get(DataComponents.CUSTOM_NAME)?.toAdventure() - ?: Component.translatable(bukkit.type.toItem().getDescriptionId()) - } - - override fun getDisplayName(): String = displayNameComponent.toLegacy() - - private fun net.minecraft.world.item.ItemStack.modifyComponent( - component: DataComponentType, - modifier: (T) -> T - ) { - val current = handle.get(component) ?: return - this.set(component, modifier(current)) - } - - override fun addItemFlags(vararg hideFlags: ItemFlag) { - for (flag in hideFlags) { - when (flag) { - ItemFlag.HIDE_ENCHANTS -> { - handle.modifyComponent(DataComponents.ENCHANTMENTS) { enchantments -> - enchantments.withTooltip(false) - } - } - - ItemFlag.HIDE_ATTRIBUTES -> { - handle.modifyComponent(DataComponents.ATTRIBUTE_MODIFIERS) { attributes -> - attributes.withTooltip(false) - } - } - - ItemFlag.HIDE_UNBREAKABLE -> { - handle.modifyComponent(DataComponents.UNBREAKABLE) { unbreakable -> - unbreakable.withTooltip(false) - } - } - - ItemFlag.HIDE_DESTROYS -> { - handle.modifyComponent(DataComponents.CAN_BREAK) { destroys -> - destroys.withTooltip(false) - } - } - - ItemFlag.HIDE_PLACED_ON -> { - handle.modifyComponent(DataComponents.CAN_PLACE_ON) { placedOn -> - placedOn.withTooltip(false) - } - } - - ItemFlag.HIDE_ADDITIONAL_TOOLTIP -> { - handle.set(DataComponents.HIDE_ADDITIONAL_TOOLTIP, Unit.INSTANCE) - } - - ItemFlag.HIDE_DYE -> { - handle.modifyComponent(DataComponents.DYED_COLOR) { dyed -> - dyed.withTooltip(false) - } - } - - ItemFlag.HIDE_ARMOR_TRIM -> { - handle.modifyComponent(DataComponents.TRIM) { trim -> - trim.withTooltip(false) - } - } - - ItemFlag.HIDE_STORED_ENCHANTS -> { - handle.modifyComponent(DataComponents.STORED_ENCHANTMENTS) { storedEnchants -> - storedEnchants.withTooltip(false) - } - } - } - } - - apply() - } - - override fun removeItemFlags(vararg hideFlags: ItemFlag) { - for (flag in hideFlags) { - when (flag) { - ItemFlag.HIDE_ENCHANTS -> { - handle.modifyComponent(DataComponents.ENCHANTMENTS) { enchantments -> - enchantments.withTooltip(true) - } - } - - ItemFlag.HIDE_ATTRIBUTES -> { - handle.modifyComponent(DataComponents.ATTRIBUTE_MODIFIERS) { attributes -> - attributes.withTooltip(true) - } - } - - ItemFlag.HIDE_UNBREAKABLE -> { - handle.modifyComponent(DataComponents.UNBREAKABLE) { unbreakable -> - unbreakable.withTooltip(true) - } - } - - ItemFlag.HIDE_DESTROYS -> { - handle.modifyComponent(DataComponents.CAN_BREAK) { destroys -> - destroys.withTooltip(true) - } - } - - ItemFlag.HIDE_PLACED_ON -> { - handle.modifyComponent(DataComponents.CAN_PLACE_ON) { placedOn -> - placedOn.withTooltip(true) - } - } - - ItemFlag.HIDE_ADDITIONAL_TOOLTIP -> { - handle.remove(DataComponents.HIDE_ADDITIONAL_TOOLTIP) - } - - ItemFlag.HIDE_DYE -> { - handle.modifyComponent(DataComponents.DYED_COLOR) { dyed -> - dyed.withTooltip(true) - } - } - - ItemFlag.HIDE_ARMOR_TRIM -> { - handle.modifyComponent(DataComponents.TRIM) { trim -> - trim.withTooltip(true) - } - } - - ItemFlag.HIDE_STORED_ENCHANTS -> { - handle.modifyComponent(DataComponents.STORED_ENCHANTMENTS) { storedEnchants -> - storedEnchants.withTooltip(true) - } - } - } - } - - apply() - } - - override fun getItemFlags(): Set { - val currentFlags = mutableSetOf() - for (f in ItemFlag.entries) { - if (hasItemFlag(f)) { - currentFlags.add(f) - } - } - return currentFlags - } - - override fun hasItemFlag(flag: ItemFlag): Boolean { - return when (flag) { - ItemFlag.HIDE_ENCHANTS -> { - val enchantments = handle.get(DataComponents.ENCHANTMENTS) ?: return false - !enchantments.showInTooltip - } - - ItemFlag.HIDE_ATTRIBUTES -> { - val attributes = handle.get(DataComponents.ATTRIBUTE_MODIFIERS) ?: return false - !attributes.showInTooltip - } - - ItemFlag.HIDE_UNBREAKABLE -> { - val unbreakable = handle.get(DataComponents.UNBREAKABLE) ?: return false - !unbreakable.showInTooltip - } - - ItemFlag.HIDE_DESTROYS -> { - val destroys = handle.get(DataComponents.CAN_BREAK) ?: return false - !destroys.showInTooltip() - } - - ItemFlag.HIDE_PLACED_ON -> { - val placedOn = handle.get(DataComponents.CAN_PLACE_ON) ?: return false - !placedOn.showInTooltip() - } - - ItemFlag.HIDE_ADDITIONAL_TOOLTIP -> { - handle.get(DataComponents.HIDE_ADDITIONAL_TOOLTIP) != null - } - - ItemFlag.HIDE_DYE -> { - val dyed = handle.get(DataComponents.DYED_COLOR) ?: return false - !dyed.showInTooltip() - } - - ItemFlag.HIDE_ARMOR_TRIM -> { - val armorTrim = handle.get(DataComponents.TRIM) ?: return false - !armorTrim.showInTooltip - } - - ItemFlag.HIDE_STORED_ENCHANTS -> { - val storedEnchants = handle.get(DataComponents.STORED_ENCHANTMENTS) ?: return false - !storedEnchants.showInTooltip - } - } - } - - override fun getRepairCost(): Int { - return handle.get(DataComponents.REPAIR_COST) ?: 0 - } - - override fun setRepairCost(cost: Int) { - handle.set(DataComponents.REPAIR_COST, cost) - - apply() - } - - override fun getPersistentDataContainer(): PersistentDataContainer { - return ContinuallyAppliedPersistentDataContainer(this.pdc, this) - } - - override fun getAmount(): Int = handle.getCount() - - override fun setAmount(amount: Int) { - handle.setCount(amount) - apply() - } - - override fun setType(material: org.bukkit.Material) { - @Suppress("DEPRECATION") - handle.setItem(material.toItem()) - apply() - } - - override fun getType(): org.bukkit.Material = handle.getItem().toMaterial() - - override fun getCustomModelData(): Int? = - handle.get(DataComponents.CUSTOM_MODEL_DATA)?.value - - override fun setCustomModelData(data: Int?) { - if (data == null) { - handle.remove(DataComponents.CUSTOM_MODEL_DATA) - } else { - handle.set(DataComponents.CUSTOM_MODEL_DATA, CustomModelData(data)) - } - - apply() - } - - override fun equals(other: Any?): Boolean { - if (other !is NewEcoFastItemStack) { - return false - } - - return other.hashCode() == this.hashCode() - } - - override fun hashCode(): Int { - return net.minecraft.world.item.ItemStack.hashItemAndComponents(handle) - } - - override fun apply() { - val customData = handle.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY) - val updated = customData.update { - it.setPdc(pdc) - } - - if (updated.isEmpty) { - handle.remove(DataComponents.CUSTOM_DATA) - } else { - handle.set(DataComponents.CUSTOM_DATA, updated) - } - - bukkit.mergeIfNeeded(handle) - } - - override fun unwrap(): ItemStack { - return bukkit - } - } } diff --git a/settings.gradle.kts b/settings.gradle.kts index 014b29a5f..75ed5fea6 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -15,7 +15,8 @@ rootProject.name = "eco" include(":eco-api") include(":eco-core") include(":eco-core:core-nms") -include(":eco-core:core-nms:nms-common") +include(":eco-core:core-nms:common") +include(":eco-core:core-nms:modern") include(":eco-core:core-nms:v1_17_R1") include(":eco-core:core-nms:v1_18_R1") include(":eco-core:core-nms:v1_18_R2") @@ -25,7 +26,6 @@ include(":eco-core:core-nms:v1_19_R3") include(":eco-core:core-nms:v1_20_R1") include(":eco-core:core-nms:v1_20_R2") include(":eco-core:core-nms:v1_20_R3") -include(":eco-core:core-nms:v1_20_6") include(":eco-core:core-nms:v1_21") include(":eco-core:core-proxy") include(":eco-core:core-plugin")