diff --git a/README.md b/README.md index 87256b95e..4c6e8fa0b 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,6 @@ This project draws inspiration and refers to some implementations from the follo ### Core Dependencies The implementation relies on these fundamental libraries: + [cloud-minecraft](https://github.com/Incendo/cloud-minecraft) -+ [rtag](https://github.com/saicone/rtag) + [adventure](https://github.com/KyoriPowered/adventure) + [byte-buddy](https://github.com/raphw/byte-buddy) @@ -63,7 +62,7 @@ The code you contribute will be open-sourced under the GPLv3 license. If you pre ### 💖 Support the Developer Help sustain CraftEngine's development by going Premium! -- **Polymart**: [None] +- **Polymart**: [Support via Polymart](https://polymart.org/product/7624/craftengine) - **BuiltByBit**: [None] - **Afdian**: [Support via Afdian](https://afdian.com/@xiaomomi/) @@ -76,7 +75,7 @@ repositories { ``` ```kotlin dependencies { - compileOnly("net.momirealms:craft-engine-core:0.0.57") - compileOnly("net.momirealms:craft-engine-bukkit:0.0.57") + compileOnly("net.momirealms:craft-engine-core:0.0.59") + compileOnly("net.momirealms:craft-engine-bukkit:0.0.59") } ``` \ No newline at end of file diff --git a/bukkit/build.gradle.kts b/bukkit/build.gradle.kts index ac2d03e6a..7426c520a 100644 --- a/bukkit/build.gradle.kts +++ b/bukkit/build.gradle.kts @@ -46,9 +46,6 @@ dependencies { compileOnly("org.incendo:cloud-paper:${rootProject.properties["cloud_paper_version"]}") // YAML compileOnly(files("${rootProject.rootDir}/libs/boosted-yaml-${rootProject.properties["boosted_yaml_version"]}.jar")) - // Item Tag - compileOnly("com.saicone.rtag:rtag:${rootProject.properties["rtag_version"]}") - compileOnly("com.saicone.rtag:rtag-item:${rootProject.properties["rtag_version"]}") // Adventure compileOnly("net.kyori:adventure-api:${rootProject.properties["adventure_bundle_version"]}") compileOnly("net.kyori:adventure-text-minimessage:${rootProject.properties["adventure_bundle_version"]}") @@ -89,7 +86,6 @@ tasks { relocate("net.kyori", "net.momirealms.craftengine.libraries") relocate("net.momirealms.sparrow.nbt", "net.momirealms.craftengine.libraries.nbt") relocate("net.momirealms.antigrieflib", "net.momirealms.craftengine.libraries.antigrieflib") - relocate("com.saicone.rtag", "net.momirealms.craftengine.libraries.tag") relocate("org.incendo", "net.momirealms.craftengine.libraries") relocate("dev.dejvokep", "net.momirealms.craftengine.libraries") relocate("org.bstats", "net.momirealms.craftengine.libraries.bstats") diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/skript/expression/ExprItemCustomItemID.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/skript/expression/ExprItemCustomItemID.java index e9531c7b2..ce92f9857 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/skript/expression/ExprItemCustomItemID.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/skript/expression/ExprItemCustomItemID.java @@ -55,10 +55,9 @@ public class ExprItemCustomItemID extends SimplePropertyExpression item1 = BukkitItemManager.instance().wrap(itemStack); Item item2 = BukkitItemManager.instance().createWrappedItem(id, null); item1.merge(item2); - item1.load(); } else if (item instanceof ItemType itemType) { Item item2 = BukkitItemManager.instance().createWrappedItem(id, null); - itemType.setItemMeta(item2.load().getItemMeta()); + itemType.setItemMeta(item2.getItem().getItemMeta()); } } } diff --git a/bukkit/loader/build.gradle.kts b/bukkit/loader/build.gradle.kts index f9eb2411d..cc6493188 100644 --- a/bukkit/loader/build.gradle.kts +++ b/bukkit/loader/build.gradle.kts @@ -21,7 +21,6 @@ dependencies { implementation(project(":bukkit:compatibility:legacy")) implementation(project(":common-files")) - implementation("com.saicone.rtag:rtag-item:${rootProject.properties["rtag_version"]}") implementation("net.momirealms:sparrow-util:${rootProject.properties["sparrow_util_version"]}") implementation("net.momirealms:antigrieflib:${rootProject.properties["anti_grief_version"]}") implementation("net.momirealms:craft-engine-nms-helper:${rootProject.properties["nms_helper_version"]}") @@ -48,7 +47,7 @@ bukkit { name = "CraftEngine" apiVersion = "1.20" authors = listOf("XiaoMoMi") - contributors = listOf("jhqwqmc", "iqtesterrr") + contributors = listOf("jhqwqmc", "iqtesterrr", "WhiteProject1", "Catnies", "xiaozhangup", "TamashiiMon") softDepend = listOf("PlaceholderAPI", "WorldEdit", "FastAsyncWorldEdit", "Skript") foliaSupported = true } @@ -64,7 +63,6 @@ tasks { relocate("net.kyori", "net.momirealms.craftengine.libraries") relocate("net.momirealms.sparrow.nbt", "net.momirealms.craftengine.libraries.nbt") relocate("net.momirealms.antigrieflib", "net.momirealms.craftengine.libraries.antigrieflib") - relocate("com.saicone.rtag", "net.momirealms.craftengine.libraries.tag") relocate("org.incendo", "net.momirealms.craftengine.libraries") relocate("dev.dejvokep", "net.momirealms.craftengine.libraries") relocate("org.bstats", "net.momirealms.craftengine.libraries.bstats") diff --git a/bukkit/paper-loader/build.gradle.kts b/bukkit/paper-loader/build.gradle.kts index 48c20fc80..ab8645de3 100644 --- a/bukkit/paper-loader/build.gradle.kts +++ b/bukkit/paper-loader/build.gradle.kts @@ -23,7 +23,6 @@ dependencies { implementation(project(":bukkit:compatibility:legacy")) implementation(project(":common-files")) - implementation("com.saicone.rtag:rtag-item:${rootProject.properties["rtag_version"]}") implementation("net.momirealms:sparrow-util:${rootProject.properties["sparrow_util_version"]}") implementation("net.momirealms:antigrieflib:${rootProject.properties["anti_grief_version"]}") implementation("net.momirealms:craft-engine-nms-helper-mojmap:${rootProject.properties["nms_helper_version"]}") @@ -51,7 +50,7 @@ paper { name = "CraftEngine" apiVersion = "1.20" authors = listOf("XiaoMoMi") - contributors = listOf("jhqwqmc", "iqtesterrr") + contributors = listOf("jhqwqmc", "iqtesterrr", "WhiteProject1", "Catnies", "xiaozhangup", "TamashiiMon") foliaSupported = true serverDependencies { register("PlaceholderAPI") { @@ -137,7 +136,6 @@ tasks { relocate("net.kyori", "net.momirealms.craftengine.libraries") relocate("net.momirealms.sparrow.nbt", "net.momirealms.craftengine.libraries.nbt") relocate("net.momirealms.antigrieflib", "net.momirealms.craftengine.libraries.antigrieflib") - relocate("com.saicone.rtag", "net.momirealms.craftengine.libraries.tag") relocate("org.incendo", "net.momirealms.craftengine.libraries") relocate("dev.dejvokep", "net.momirealms.craftengine.libraries") relocate("org.bstats", "net.momirealms.craftengine.libraries.bstats") diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java index d345f3772..5e5f77a9c 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java @@ -33,7 +33,6 @@ import net.momirealms.craftengine.core.pack.LoadingSequence; import net.momirealms.craftengine.core.pack.Pack; import net.momirealms.craftengine.core.pack.ResourceLocation; import net.momirealms.craftengine.core.pack.model.generation.ModelGeneration; -import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.config.ConfigParser; import net.momirealms.craftengine.core.plugin.config.StringKeyConstructor; import net.momirealms.craftengine.core.plugin.context.event.EventFunctions; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureElement.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureElement.java index 55f574ac7..b87e63107 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureElement.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureElement.java @@ -63,7 +63,6 @@ public class BukkitFurnitureElement extends AbstractFurnitureElement { } else { if (color != null) { item.dyedColor(color); - item.load(); } } ItemDisplayEntityData.DisplayedItem.addEntityDataIfNotDefaultValue(item.getLiteralObject(), cachedValues); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java index 9a7e03d73..06f4a5c9c 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java @@ -153,7 +153,7 @@ public class BukkitFontManager extends AbstractFontManager implements Listener { if (replaceProcessResult.changed()) { Item wrapped = this.plugin.itemManager().wrap(result); wrapped.customNameJson(AdventureHelper.componentToJson(replaceProcessResult.newText())); - event.setResult(wrapped.load()); + event.setResult(wrapped.getItem()); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java index 7586e1919..40f031022 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java @@ -38,7 +38,7 @@ public class BukkitCustomItem extends AbstractCustomItem { for (ItemDataModifier modifier : this.modifiers) { modifier.apply(wrapped, context); } - return wrapped.load(); + return wrapped.getItem(); } @Override @@ -48,7 +48,7 @@ public class BukkitCustomItem extends AbstractCustomItem { for (ItemDataModifier modifier : dataModifiers()) { modifier.apply(wrapped, context); } - return BukkitCraftEngine.instance().itemManager().wrap(wrapped.load()); + return BukkitCraftEngine.instance().itemManager().wrap(wrapped.getItem()); } public Object clientItem() { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java index cb842868f..b291bccc7 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java @@ -83,7 +83,7 @@ public class BukkitItemManager extends AbstractItemManager { try { Item wrapped = wrap(itemStack); if (wrapped == null) return Optional.empty(); - return this.networkItemHandler.s2c(wrapped, player).map(Item::load); + return this.networkItemHandler.s2c(wrapped, player).map(Item::getItem); } catch (Throwable e) { if (Config.debug()) { this.plugin.logger().warn("Failed to handle s2c items.", e); @@ -96,7 +96,7 @@ public class BukkitItemManager extends AbstractItemManager { try { Item wrapped = wrap(itemStack); if (wrapped == null) return Optional.empty(); - return this.networkItemHandler.c2s(wrapped).map(Item::load); + return this.networkItemHandler.c2s(wrapped).map(Item::getItem); } catch (Throwable e) { if (Config.debug()) { this.plugin.logger().warn("Failed to handle c2s items.", e); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ComponentItemWrapper.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ComponentItemWrapper.java index c5adeb680..4414f8e54 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ComponentItemWrapper.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ComponentItemWrapper.java @@ -153,11 +153,6 @@ public class ComponentItemWrapper implements ItemWrapper { return this.item; } - @Override - public ItemStack load() { - return this.item; - } - @Override public Object getLiteralObject() { return this.handle; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyItemWrapper.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyItemWrapper.java index 4615433fc..93c9cad48 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyItemWrapper.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyItemWrapper.java @@ -1,36 +1,60 @@ package net.momirealms.craftengine.bukkit.item; -import com.saicone.rtag.RtagItem; +import net.momirealms.craftengine.bukkit.nms.FastNMS; +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MRegistryOps; +import net.momirealms.craftengine.bukkit.util.ItemUtils; import net.momirealms.craftengine.core.item.ItemWrapper; import net.momirealms.sparrow.nbt.Tag; import org.bukkit.inventory.ItemStack; public class LegacyItemWrapper implements ItemWrapper { - private final RtagItem rtagItem; + private final Object nmsStack; + private final ItemStack itemStack; - public LegacyItemWrapper(RtagItem rtagItem) { - this.rtagItem = rtagItem; + public LegacyItemWrapper(ItemStack item) { + this.itemStack = ItemUtils.ensureCraftItemStack(item); + this.nmsStack = FastNMS.INSTANCE.field$CraftItemStack$handle(this.itemStack); } public boolean setTag(Object value, Object... path) { + Object finalNMSTag; if (value instanceof Tag tag) { - return this.rtagItem.set(MRegistryOps.SPARROW_NBT.convertTo(MRegistryOps.NBT, tag), path); + finalNMSTag = MRegistryOps.SPARROW_NBT.convertTo(MRegistryOps.NBT, tag); } else { - return this.rtagItem.set(value, path); - } - } - - public boolean add(Object value, Object... path) { - if (value instanceof Tag tag) { - return this.rtagItem.add(MRegistryOps.SPARROW_NBT.convertTo(MRegistryOps.NBT, tag), path); - } else { - return this.rtagItem.add(value, path); + finalNMSTag = MRegistryOps.JAVA.convertTo(MRegistryOps.NBT, value); } + + Object currentTag = FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(this.nmsStack); + if (path == null || path.length == 0) { + if (CoreReflections.clazz$CompoundTag.isInstance(finalNMSTag)) { + FastNMS.INSTANCE.method$ItemStack$setTag(this.nmsStack, finalNMSTag); + return true; + } + return false; + } + + for (int i = 0; i < path.length - 1; i++) { + Object pathSegment = path[i]; + if (pathSegment == null) return false; + Object childTag = FastNMS.INSTANCE.method$CompoundTag$get(currentTag, pathSegment.toString()); + if (!CoreReflections.clazz$CompoundTag.isInstance(childTag)) { + childTag = FastNMS.INSTANCE.constructor$CompoundTag(); + FastNMS.INSTANCE.method$CompoundTag$put(currentTag, pathSegment.toString(), childTag); + } + currentTag = childTag; + } + + String finalKey = path[path.length - 1].toString(); + FastNMS.INSTANCE.method$CompoundTag$put(currentTag, finalKey, finalNMSTag); + return true; } + @SuppressWarnings("unchecked") public V getJavaTag(Object... path) { - return this.rtagItem.get(path); + Object tag = getExactTag(path); + if (tag == null) return null; + return (V) MRegistryOps.NBT.convertTo(MRegistryOps.JAVA, tag); } public Tag getNBTTag(Object... path) { @@ -49,41 +73,73 @@ public class LegacyItemWrapper implements ItemWrapper { } public Object getExactTag(Object... path) { - return this.rtagItem.getExact(path); + Object compoundTag = FastNMS.INSTANCE.method$ItemStack$getTag(this.nmsStack); + if (compoundTag == null) return null; + Object currentTag = compoundTag; + for (int i = 0; i < path.length; i++) { + Object pathSegment = path[i]; + if (pathSegment == null) return null; + currentTag = FastNMS.INSTANCE.method$CompoundTag$get(currentTag, path[i].toString()); + if (currentTag == null) return null; + if (i == path.length - 1) { + return currentTag; + } + if (!CoreReflections.clazz$CompoundTag.isInstance(currentTag)) { + return null; + } + } + return null; } public boolean remove(Object... path) { - return this.rtagItem.remove(path); + Object compoundTag = FastNMS.INSTANCE.method$ItemStack$getTag(this.nmsStack); + if (compoundTag == null || path == null || path.length == 0) return false; + + if (path.length == 1) { + String key = path[0].toString(); + if (FastNMS.INSTANCE.method$CompoundTag$get(compoundTag, key) != null) { + FastNMS.INSTANCE.method$CompoundTag$remove(compoundTag, key); + return true; + } + } + + Object currentTag = compoundTag; + for (int i = 0; i < path.length - 1; i++) { + Object pathSegment = path[i]; + if (pathSegment == null) return false; + currentTag = FastNMS.INSTANCE.method$CompoundTag$get(currentTag, path[i].toString()); + if (!CoreReflections.clazz$CompoundTag.isInstance(currentTag)) { + return false; + } + } + + String finalKey = path[path.length - 1].toString(); + if (FastNMS.INSTANCE.method$CompoundTag$get(currentTag, finalKey) != null) { + FastNMS.INSTANCE.method$CompoundTag$remove(currentTag, finalKey); + return true; + } + return false; } public boolean hasTag(Object... path) { - return this.rtagItem.hasTag(path); - } - - public void update() { - this.rtagItem.update(); - } - - @Override - public ItemStack load() { - return this.rtagItem.load(); + return getExactTag(path) != null; } @Override public ItemStack getItem() { - return this.rtagItem.getItem(); + return this.itemStack; } @Override public Object getLiteralObject() { - return this.rtagItem.getLiteralObject(); + return this.nmsStack; } @Override public ItemWrapper copyWithCount(int count) { - ItemStack copied = this.rtagItem.loadCopy(); + ItemStack copied = this.itemStack.clone(); copied.setAmount(count); - return new LegacyItemWrapper(new RtagItem(copied)); + return new LegacyItemWrapper(copied); } @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BlockItemBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BlockItemBehavior.java index e5d913639..8c4fc7b99 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BlockItemBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BlockItemBehavior.java @@ -157,7 +157,6 @@ public class BlockItemBehavior extends BlockBoundItemBehavior { if (!player.isCreativeMode()) { Item item = context.getItem(); item.count(item.count() - 1); - item.load(); } block.setPlacedBy(context, blockStateToPlace); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/FurnitureItemBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/FurnitureItemBehavior.java index 570f7c1a3..054c9302f 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/FurnitureItemBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/FurnitureItemBehavior.java @@ -158,7 +158,6 @@ public class FurnitureItemBehavior extends ItemBehavior { if (!player.isCreativeMode()) { item.count(item.count() - 1); - item.load(); } context.getLevel().playBlockSound(finalPlacePosition, customFurniture.settings().sounds().placeSound()); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/BukkitItemFactory.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/BukkitItemFactory.java index e95f7f779..fd7467d98 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/BukkitItemFactory.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/BukkitItemFactory.java @@ -69,11 +69,6 @@ public abstract class BukkitItemFactory> extend return customId(item).orElse(vanillaId(item)); } - @Override - protected ItemStack load(W item) { - return item.load(); - } - @Override protected ItemStack getItem(W item) { return item.getItem(); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_20_5.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_20_5.java index 1a3c19dc9..d995d84a2 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_20_5.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_20_5.java @@ -52,8 +52,7 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory) currentObj).get(key); + currentObj = ((Map) currentObj).get(pathSegment.toString()); if (currentObj == null) return null; if (i == path.length - 1) { return currentObj; @@ -74,8 +73,7 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory map = EnchantmentUtils.toMap(enchant); - map.put(enchantment.id().toString(), enchantment.level()); - item.setJavaComponent(ComponentTypes.ENCHANTMENTS, map); - } catch (ReflectiveOperationException e) { - plugin.logger().warn("Failed to add enchantment", e); - } - } - - @Override - protected void addStoredEnchantment(ComponentItemWrapper item, Enchantment enchantment) { - Object enchant = item.getComponentExact(ComponentTypes.STORED_ENCHANTMENTS); - try { - Map map = EnchantmentUtils.toMap(enchant); - map.put(enchantment.id().toString(), enchantment.level()); - item.setJavaComponent(ComponentTypes.STORED_ENCHANTMENTS, map); - } catch (ReflectiveOperationException e) { - plugin.logger().warn("Failed to add stored enchantment", e); - } - } - @Override protected void itemFlags(ComponentItemWrapper item, List flags) { throw new UnsupportedOperationException("This feature is not available on 1.20.5+"); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java index 3d4adaf74..aba395cee 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java @@ -2,7 +2,6 @@ package net.momirealms.craftengine.bukkit.item.factory; import com.google.gson.JsonArray; import com.google.gson.JsonElement; -import com.saicone.rtag.data.ComponentType; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.bukkit.item.ComponentItemWrapper; import net.momirealms.craftengine.bukkit.item.ComponentTypes; @@ -17,7 +16,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; -@SuppressWarnings("UnstableApiUsage") public class ComponentItemFactory1_21_5 extends ComponentItemFactory1_21_4 { public ComponentItemFactory1_21_5(CraftEngine plugin) { @@ -116,9 +114,7 @@ public class ComponentItemFactory1_21_5 extends ComponentItemFactory1_21_4 { @Override protected Optional jukeboxSong(ComponentItemWrapper item) { if (!item.hasComponent(ComponentTypes.JUKEBOX_PLAYABLE)) return Optional.empty(); - String song = (String) ComponentType.encodeJava( - ComponentTypes.JUKEBOX_PLAYABLE, - item.getComponentExact(ComponentTypes.JUKEBOX_PLAYABLE)).orElse(null); + String song = (String) item.getJavaComponent(ComponentTypes.JUKEBOX_PLAYABLE).orElse(null); if (song == null) return Optional.empty(); return Optional.of(new JukeboxPlayable(song, true)); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/UniversalItemFactory.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/UniversalItemFactory.java index ff274ca22..aa71360c2 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/UniversalItemFactory.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/UniversalItemFactory.java @@ -1,10 +1,5 @@ package net.momirealms.craftengine.bukkit.item.factory; -import com.saicone.rtag.RtagItem; -import com.saicone.rtag.item.ItemObject; -import com.saicone.rtag.tag.TagBase; -import com.saicone.rtag.tag.TagCompound; -import com.saicone.rtag.tag.TagList; import net.momirealms.craftengine.bukkit.item.LegacyItemWrapper; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBuiltInRegistries; @@ -32,7 +27,7 @@ public class UniversalItemFactory extends BukkitItemFactory { @Override protected LegacyItemWrapper wrapInternal(ItemStack item) { - return new LegacyItemWrapper(new RtagItem(item)); + return new LegacyItemWrapper(item); } @Override @@ -212,38 +207,6 @@ public class UniversalItemFactory extends BukkitItemFactory { item.setTag(tags, "StoredEnchantments"); } - @Override - protected void addEnchantment(LegacyItemWrapper item, Enchantment enchantment) { - Object enchantments = item.getExactTag("Enchantments"); - if (enchantments != null) { - for (Object enchant : TagList.getValue(enchantments)) { - if (TagBase.getValue(TagCompound.get(enchant, "id")).equals(enchant.toString())) { - TagCompound.set(enchant, "lvl", TagBase.newTag(enchantment.level())); - return; - } - } - item.add(Map.of("id", enchantment.id().toString(), "lvl", (short) enchantment.level()), "Enchantments"); - } else { - item.setTag(List.of(Map.of("id", enchantment.id().toString(), "lvl", (short) enchantment.level())), "Enchantments"); - } - } - - @Override - protected void addStoredEnchantment(LegacyItemWrapper item, Enchantment enchantment) { - Object enchantments = item.getExactTag("StoredEnchantments"); - if (enchantments != null) { - for (Object enchant : TagList.getValue(enchantments)) { - if (TagBase.getValue(TagCompound.get(enchant, "id")).equals(enchant.toString())) { - TagCompound.set(enchant, "lvl", TagBase.newTag(enchantment.level())); - return; - } - } - item.add(Map.of("id", enchantment.id().toString(), "lvl", (short) enchantment.level()), "StoredEnchantments"); - } else { - item.setTag(List.of(Map.of("id", enchantment.id().toString(), "lvl", (short) enchantment.level())), "StoredEnchantments"); - } - } - @SuppressWarnings("deprecation") @Override protected Optional getEnchantment(LegacyItemWrapper item, Key key) { @@ -307,33 +270,33 @@ public class UniversalItemFactory extends BukkitItemFactory { @Override protected LegacyItemWrapper mergeCopy(LegacyItemWrapper item1, LegacyItemWrapper item2) { - Object itemStack = ItemObject.copy(item2.getLiteralObject()); - FastNMS.INSTANCE.method$ItemStack$setTag(itemStack, TagCompound.clone(FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(item1.getLiteralObject()))); - // one more step than vanilla - TagCompound.merge(FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(itemStack), FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(item2.getLiteralObject()), true, true); - return new LegacyItemWrapper(new RtagItem(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(itemStack))); + Object copied = FastNMS.INSTANCE.constructor$ItemStack(FastNMS.INSTANCE.method$ItemStack$getItem(item2.getLiteralObject()), item2.count()); + Object copiedTag = FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(copied); + FastNMS.INSTANCE.method$CompoundTag$merge(copiedTag, FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(item1.getLiteralObject())); + FastNMS.INSTANCE.method$CompoundTag$merge(copiedTag, FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(item2.getLiteralObject())); + return new LegacyItemWrapper(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(copied)); } @Override protected void merge(LegacyItemWrapper item1, LegacyItemWrapper item2) { - // load previous changes on nms items - item1.load(); - TagCompound.merge(FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(item1.getLiteralObject()), FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(item2.getLiteralObject()), true, true); - // update wrapped item - item1.update(); + Object item1Tag = FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(item1.getLiteralObject()); + Object item2Tag = FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(item2.getLiteralObject()); + FastNMS.INSTANCE.method$CompoundTag$merge(item1Tag, item2Tag); } @Override protected LegacyItemWrapper transmuteCopy(LegacyItemWrapper item, Key newItem, int amount) { - Object newItemStack = FastNMS.INSTANCE.constructor$ItemStack(FastNMS.INSTANCE.method$Registry$getValue(MBuiltInRegistries.ITEM, KeyUtils.toResourceLocation(newItem)), amount); - FastNMS.INSTANCE.method$ItemStack$setTag(newItemStack, TagCompound.clone(FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(item.getLiteralObject()))); - return new LegacyItemWrapper(new RtagItem(ItemObject.asCraftMirror(newItemStack))); + Object copied = FastNMS.INSTANCE.constructor$ItemStack(FastNMS.INSTANCE.method$Registry$getValue(MBuiltInRegistries.ITEM, KeyUtils.toResourceLocation(newItem)), amount); + Object copiedTag = FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(copied); + Object thisTag = FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(item.getLiteralObject()); + FastNMS.INSTANCE.method$CompoundTag$merge(copiedTag, thisTag); + return new LegacyItemWrapper(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(copied)); } @Override protected LegacyItemWrapper unsafeTransmuteCopy(LegacyItemWrapper item, Object newItem, int amount) { Object newItemStack = FastNMS.INSTANCE.constructor$ItemStack(newItem, amount); - FastNMS.INSTANCE.method$ItemStack$setTag(newItemStack, TagCompound.clone(FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(item.getLiteralObject()))); - return new LegacyItemWrapper(new RtagItem(ItemObject.asCraftMirror(newItemStack))); + FastNMS.INSTANCE.method$ItemStack$setTag(newItemStack, FastNMS.INSTANCE.method$CompoundTag$copy(FastNMS.INSTANCE.field$ItemStack$getOrCreateTag(item.getLiteralObject()))); + return new LegacyItemWrapper(FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(newItemStack)); } } \ No newline at end of file diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/DebugStickListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/DebugStickListener.java index 01539c6f4..2b698b749 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/DebugStickListener.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/DebugStickListener.java @@ -96,7 +96,6 @@ public class DebugStickListener implements Listener { currentProperty = getRelative(properties, currentProperty, player.isSecondaryUseActive()); data.put(blockId, currentProperty.name()); wrapped.setTag(data, "craftengine:debug_stick_state"); - wrapped.load(); Object systemChatPacket = NetworkReflections.constructor$ClientboundSystemChatPacket.newInstance( ComponentUtils.adventureToMinecraft(Component.translatable("item.minecraft.debug_stick.select") .arguments( diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java index c6b7f7fed..5c0a06144 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java @@ -130,7 +130,8 @@ public class BukkitRecipeManager extends AbstractRecipeManager { } else if (VersionHelper.isOrAbove1_20_2()) { nmsRecipe = CoreReflections.constructor$RecipeHolder.newInstance(KeyUtils.toResourceLocation(id), nmsRecipe); } else { - return () -> {}; + Object finalNmsRecipe0 = nmsRecipe; + return () -> registerNMSSmithingRecipe(finalNmsRecipe0); } Object finalNmsRecipe = nmsRecipe; return () -> registerNMSSmithingRecipe(finalNmsRecipe); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java index 0b9a4b741..34ab95ee7 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java @@ -643,7 +643,7 @@ public class RecipeEventListener implements Listener { } afterPenalty = calculateIncreasedRepairCost(afterPenalty); wrappedFirst.repairCost(afterPenalty); - event.setResult(wrappedFirst.load()); + event.setResult(wrappedFirst.getItem()); } } @@ -757,7 +757,7 @@ public class RecipeEventListener implements Listener { int remainingDurability = totalMaxDamage - totalDamage; int newItemDamage = Math.max(0, newItem.maxDamage() - remainingDurability); newItem.damage(newItemDamage); - inventory.setResult(newItem.load()); + inventory.setResult(newItem.getItem()); } else if (CoreReflections.clazz$ArmorDyeRecipe.isInstance(mcRecipe)) { ItemStack[] itemStacks = inventory.getMatrix(); for (ItemStack itemStack : itemStacks) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugItemDataCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugItemDataCommand.java index d9bf2f7d1..54f936a46 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugItemDataCommand.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugItemDataCommand.java @@ -1,9 +1,8 @@ package net.momirealms.craftengine.bukkit.plugin.command.feature; -import com.saicone.rtag.item.ItemTagStream; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.format.NamedTextColor; +import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature; +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MRegistryOps; import net.momirealms.craftengine.bukkit.util.ItemUtils; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.command.CraftEngineCommandManager; @@ -28,11 +27,9 @@ public class DebugItemDataCommand extends BukkitCommandFeature { .handler(context -> { ItemStack itemInHand = context.sender().getInventory().getItemInMainHand(); if (ItemUtils.isEmpty(itemInHand)) { - plugin().senderFactory().wrap(context.sender()).sendMessage(Component.text("Please hold an item").color(NamedTextColor.RED)); return; } - Map readableMap = toReadableMap(itemInHand); - readableMap.remove("rtagDataVersion"); + Map readableMap = toMap(itemInHand); List readableList = mapToList(readableMap); StringJoiner joiner = new StringJoiner(""); for (String text : readableList) { @@ -47,13 +44,10 @@ public class DebugItemDataCommand extends BukkitCommandFeature { return "debug_item_data"; } - - public static Map toReadableMap(ItemStack item) { - return toMap(item); - } - + @SuppressWarnings("unchecked") private static Map toMap(ItemStack object) { - return ItemTagStream.INSTANCE.toMap(object); + Object tag = FastNMS.INSTANCE.method$itemStack$save(FastNMS.INSTANCE.field$CraftItemStack$handle(object), FastNMS.INSTANCE.constructor$CompoundTag()); + return (Map) MRegistryOps.NBT.convertTo(MRegistryOps.JAVA, tag); } private List mapToList(Map readableDataMap) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TotemAnimationCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TotemAnimationCommand.java index 63f72aaca..9584a7fd1 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TotemAnimationCommand.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TotemAnimationCommand.java @@ -79,7 +79,7 @@ public class TotemAnimationCommand extends BukkitCommandFeature { item.setComponent(ComponentTypes.DEATH_PROTECTION, Map.of()); } } - ItemStack totemItem = item.load(); + ItemStack totemItem = item.getItem(); MultiplePlayerSelector selector = context.get("players"); for (Player player : selector.values()) { PlayerUtils.sendTotemAnimation(player, totemItem); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java index 319446db0..f54df7ae9 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java @@ -3560,4 +3560,11 @@ public final class CoreReflections { "world.level.block.state.properties.BlockStateProperties" ) ); + + public static final Class clazz$CompoundTag = requireNonNull( + BukkitReflectionUtils.findReobfOrMojmapClass( + "nbt.NBTTagCompound", + "nbt.CompoundTag" + ) + ); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorld.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorld.java index 593435b06..ff28dbf29 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorld.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorld.java @@ -71,7 +71,7 @@ public class BukkitWorld implements World { @Override public void dropItemNaturally(Position location, Item item) { - ItemStack itemStack = (ItemStack) item.load(); + ItemStack itemStack = (ItemStack) item.getItem(); if (ItemUtils.isEmpty(itemStack)) return; if (VersionHelper.isOrAbove1_21_2()) { platformWorld().dropItemNaturally(new Location(null, location.x(), location.y(), location.z()), (ItemStack) item.getItem()); diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 1ff120cc5..61abe7288 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -87,7 +87,6 @@ tasks { archiveFileName = "craft-engine-core-${rootProject.properties["project_version"]}.jar" relocate("net.kyori", "net.momirealms.craftengine.libraries") relocate("dev.dejvokep", "net.momirealms.craftengine.libraries") - relocate("com.saicone.rtag", "net.momirealms.craftengine.libraries.rtag") relocate("org.yaml.snakeyaml", "net.momirealms.craftengine.libraries.snakeyaml") relocate("net.kyori", "net.momirealms.craftengine.libraries") relocate("org.ahocorasick", "net.momirealms.craftengine.libraries.ahocorasick") diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractFurnitureManager.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractFurnitureManager.java index 25ba60d14..a5e2274bc 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractFurnitureManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/AbstractFurnitureManager.java @@ -11,7 +11,6 @@ import net.momirealms.craftengine.core.plugin.context.event.EventFunctions; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; -import net.momirealms.craftengine.core.util.QuaternionUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.incendo.cloud.suggestion.Suggestion; import org.joml.Vector3f; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItem.java b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItem.java index 219dd5e3f..cd80b22cb 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItem.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItem.java @@ -276,24 +276,12 @@ public class AbstractItem, I> implements Item { return this; } - @Override - public Item addEnchantment(Enchantment enchantment) { - this.factory.addEnchantment(this.item, enchantment); - return this; - } - @Override public Item setStoredEnchantments(List enchantments) { this.factory.storedEnchantments(this.item, enchantments); return this; } - @Override - public Item addStoredEnchantment(Enchantment enchantment) { - this.factory.addStoredEnchantment(this.item, enchantment); - return this; - } - @Override public int maxStackSize() { return this.factory.maxStackSize(this.item); @@ -397,11 +385,6 @@ public class AbstractItem, I> implements Item { return this.factory.getItem(this.item); } - @Override - public I load() { - return this.factory.load(this.item); - } - @SuppressWarnings({"unchecked"}) @Override public AbstractItem copyWithCount(int count) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/Item.java b/core/src/main/java/net/momirealms/craftengine/core/item/Item.java index 84dcffa88..504975498 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/Item.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/Item.java @@ -122,12 +122,8 @@ public interface Item { Item setEnchantments(List enchantments); - Item addEnchantment(Enchantment enchantment); - Item setStoredEnchantments(List enchantments); - Item addStoredEnchantment(Enchantment enchantment); - Item itemFlags(List flags); Object getJavaTag(Object... path); @@ -164,8 +160,6 @@ public interface Item { I getItem(); - I load(); - int maxStackSize(); Item maxStackSize(int amount); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemFactory.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemFactory.java index 783bf3365..49f0dbb60 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemFactory.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemFactory.java @@ -57,8 +57,6 @@ public abstract class ItemFactory, I> { protected abstract void resetComponent(W item, Object type); - protected abstract I load(W item); - protected abstract I getItem(W item); protected abstract void customModelData(W item, Integer data); @@ -139,10 +137,6 @@ public abstract class ItemFactory, I> { protected abstract void storedEnchantments(W item, List enchantments); - protected abstract void addEnchantment(W item, Enchantment enchantment); - - protected abstract void addStoredEnchantment(W item, Enchantment enchantment); - protected abstract Optional getEnchantment(W item, Key key); protected abstract void itemFlags(W item, List flags); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemWrapper.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemWrapper.java index 27164ea29..896967727 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemWrapper.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemWrapper.java @@ -4,8 +4,6 @@ public interface ItemWrapper { I getItem(); - I load(); - Object getLiteralObject(); int count(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java index a02875e17..a4c76c2bf 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java @@ -102,7 +102,7 @@ public class CustomSmithingTransformRecipe implements Recipe { for (ItemDataProcessor processor : this.processors) { processor.accept(base, wrappedResult, finalResult); } - return finalResult.load(); + return finalResult.getItem(); } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/setting/EquipmentData.java b/core/src/main/java/net/momirealms/craftengine/core/item/setting/EquipmentData.java index 4d7efc707..39e4dfacf 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/setting/EquipmentData.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/setting/EquipmentData.java @@ -9,8 +9,6 @@ import net.momirealms.sparrow.nbt.CompoundTag; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.Locale; import java.util.Map; diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java index b32c6102d..feb7a9c9f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java @@ -6,7 +6,6 @@ import com.google.common.jimfs.Configuration; import com.google.common.jimfs.Jimfs; import com.google.gson.*; import dev.dejvokep.boostedyaml.YamlDocument; -import dev.dejvokep.boostedyaml.block.implementation.Section; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.momirealms.craftengine.core.font.BitmapImage; import net.momirealms.craftengine.core.font.Font; @@ -564,7 +563,7 @@ public abstract class AbstractPackManager implements PackManager { } else { if (configEntry.getValue() instanceof Map configSection0) { Map config = castToMap(configSection0, false); - if (Config.debug() && (boolean) config.getOrDefault("debug", false)) { + if ((boolean) config.getOrDefault("debug", false)) { this.plugin.logger().info(GsonHelper.get().toJson(this.plugin.templateManager().applyTemplates(id, config))); } if ((boolean) config.getOrDefault("enable", true)) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManagerImpl.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManagerImpl.java index 46a4709bc..88a341729 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManagerImpl.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManagerImpl.java @@ -167,7 +167,6 @@ public class ItemBrowserManagerImpl implements ItemBrowserManager { } item.customNameJson(AdventureHelper.componentToJson(AdventureHelper.miniMessage().deserialize(it.displayName(), ItemBuildContext.EMPTY.tagResolvers()))); item.loreJson(it.displayLore().stream().map(lore -> AdventureHelper.componentToJson(AdventureHelper.miniMessage().deserialize(lore, ItemBuildContext.EMPTY.tagResolvers()))).toList()); - item.load(); return new ItemWithAction(item, (element, click) -> { click.cancel(); player.playSound(Constants.SOUND_CLICK_BUTTON); @@ -252,12 +251,10 @@ public class ItemBrowserManagerImpl implements ItemBrowserManager { item = this.plugin.itemManager().createWrappedItem(ItemKeys.BARRIER, player); item.customNameJson(AdventureHelper.componentToJson(AdventureHelper.miniMessage().deserialize(subCategory.displayName(), ItemBuildContext.EMPTY.tagResolvers()))); item.loreJson(subCategory.displayLore().stream().map(lore -> AdventureHelper.componentToJson(AdventureHelper.miniMessage().deserialize(lore, ItemBuildContext.EMPTY.tagResolvers()))).toList()); - item.load(); } } else { item.customNameJson(AdventureHelper.componentToJson(AdventureHelper.miniMessage().deserialize(subCategory.displayName(), ItemBuildContext.EMPTY.tagResolvers()))); item.loreJson(subCategory.displayLore().stream().map(lore -> AdventureHelper.componentToJson(AdventureHelper.miniMessage().deserialize(lore, ItemBuildContext.EMPTY.tagResolvers()))).toList()); - item.load(); } return new ItemWithAction(item, (element, click) -> { click.cancel(); @@ -272,7 +269,6 @@ public class ItemBrowserManagerImpl implements ItemBrowserManager { if (!itemId.equals(ItemKeys.AIR)) { item = this.plugin.itemManager().createWrappedItem(ItemKeys.BARRIER, player); item.customNameJson(AdventureHelper.componentToJson(Component.text(it).decoration(TextDecoration.ITALIC, TextDecoration.State.FALSE).color(NamedTextColor.RED))); - item.load(); } canGoFurther = false; } else { diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/MiscUtils.java b/core/src/main/java/net/momirealms/craftengine/core/util/MiscUtils.java index 67c2fe9e7..ee228fab9 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/MiscUtils.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/MiscUtils.java @@ -93,9 +93,9 @@ public class MiscUtils { if (split.length == 4) { return new Quaternionf(Float.parseFloat(split[0]), Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); } else if (split.length == 3) { - return QuaternionUtils.toQuaternionf(Math.toRadians(-Float.parseFloat(split[2])), Math.toRadians(-Float.parseFloat(split[1])), Math.toRadians(-Float.parseFloat(split[0]))); + return QuaternionUtils.toQuaternionf((float) Math.toRadians(Float.parseFloat(split[2])), (float) Math.toRadians(Float.parseFloat(split[1])), (float) Math.toRadians(Float.parseFloat(split[0]))); } else if (split.length == 1) { - return QuaternionUtils.toQuaternionf(0, Math.toRadians(-Float.parseFloat(split[0])), 0); + return QuaternionUtils.toQuaternionf(0, (float) -Math.toRadians(Float.parseFloat(split[0])), 0); } else { throw new LocalizedResourceConfigException("warning.config.type.quaternionf", stringFormat, option); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/QuaternionUtils.java b/core/src/main/java/net/momirealms/craftengine/core/util/QuaternionUtils.java index 4b5a32d65..96c2081b7 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/QuaternionUtils.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/QuaternionUtils.java @@ -1,7 +1,6 @@ package net.momirealms.craftengine.core.util; import org.joml.Quaternionf; -import org.joml.Vector3f; public class QuaternionUtils { @@ -21,23 +20,17 @@ public class QuaternionUtils { return new Quaternionf(x, y, z, w); } - public static Vector3f toEulerAngle(Quaternionf quaternionf) { - float x = quaternionf.x; - float y = quaternionf.y; - float z = quaternionf.z; - float w = quaternionf.w; - float siny_cosp = 2 * (w * z + x * y); - float cosy_cosp = 1 - 2 * (y * y + z * z); - float yaw = (float) Math.atan2(siny_cosp, cosy_cosp); - float sinp = 2 * (w * y - z * x); - float pitch = (float) Math.asin(sinp); - float sinr_cosp = 2 * (w * x + y * z); - float cosr_cosp = 1 - 2 * (x * x + y * y); - float roll = (float) Math.atan2(sinr_cosp, cosr_cosp); - return new Vector3f(yaw, pitch, roll); - } - - public static double quaternionToPitch(Quaternionf quaternionf) { - return 2 * Math.atan2(quaternionf.y, quaternionf.w); + public static Quaternionf toQuaternionf(float yaw, float pitch, float roll) { + float cy = MCUtils.cos(yaw * 0.5f); + float sy = MCUtils.sin(yaw * 0.5f); + float cp = MCUtils.cos(pitch * 0.5f); + float sp = MCUtils.sin(pitch * 0.5f); + float cr = MCUtils.cos(roll * 0.5f); + float sr = MCUtils.sin(roll * 0.5f); + float w = cr * cp * cy + sr * sp * sy; + float x = sr * cp * cy - cr * sp * sy; + float y = cr * sp * cy + sr * cp * sy; + float z = cr * cp * sy - sr * sp * cy; + return new Quaternionf(x, y, z, w); } } diff --git a/gradle.properties b/gradle.properties index 9fa3516c6..3d48e0dba 100644 --- a/gradle.properties +++ b/gradle.properties @@ -30,7 +30,6 @@ cloud_minecraft_extras_version=2.0.0-beta.10 boosted_yaml_version=1.3.7 bstats_version=3.1.0 caffeine_version=3.2.0 -rtag_version=1.5.10 placeholder_api_version=2.11.6 vault_version=1.7 guava_version=33.4.6-jre @@ -51,7 +50,7 @@ byte_buddy_version=1.17.5 ahocorasick_version=0.6.3 snake_yaml_version=2.4 anti_grief_version=0.17 -nms_helper_version=1.0.14 +nms_helper_version=1.0.18 evalex_version=3.5.0 reactive_streams_version=1.0.4 amazon_awssdk_version=2.31.23