diff --git a/api/src/main/java/net/momirealms/customcrops/common/item/AbstractItem.java b/api/src/main/java/net/momirealms/customcrops/common/item/AbstractItem.java index a3ee1ea..8f77588 100644 --- a/api/src/main/java/net/momirealms/customcrops/common/item/AbstractItem.java +++ b/api/src/main/java/net/momirealms/customcrops/common/item/AbstractItem.java @@ -78,7 +78,6 @@ public class AbstractItem implements Item { return factory.lore(item); } - @Override public boolean unbreakable() { return factory.unbreakable(item); diff --git a/gradle.properties b/gradle.properties index ed165c0..facd312 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,10 +13,10 @@ jetbrains_annotations_version=24.0.0 slf4j_version=2.0.16 log4j_version=2.24.1 gson_version=2.11.0 -asm_version=9.7.1 -asm_commons_version=9.7.1 +asm_version=9.8 +asm_commons_version=9.8 jar_relocator_version=1.7 -adventure_bundle_version=4.19.0 +adventure_bundle_version=4.20.0 adventure_platform_version=4.3.4 sparrow_heart_version=0.55 cloud_core_version=2.0.0 @@ -30,7 +30,7 @@ mojang_brigadier_version=1.0.18 bstats_version=3.0.2 geantyref_version=1.3.16 caffeine_version=3.1.8 -rtag_version=1.5.9 +rtag_version=1.5.10 exp4j_version=0.4.8 placeholder_api_version=2.11.6 anti_grief_version=0.13 diff --git a/plugin/src/main/java/net/momirealms/customcrops/bukkit/item/BukkitItemFactory.java b/plugin/src/main/java/net/momirealms/customcrops/bukkit/item/BukkitItemFactory.java index e3357eb..a20113e 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/bukkit/item/BukkitItemFactory.java +++ b/plugin/src/main/java/net/momirealms/customcrops/bukkit/item/BukkitItemFactory.java @@ -45,9 +45,12 @@ public abstract class BukkitItemFactory extends ItemFactory { + "1.21", "1.21.1", "1.21.2", "1.21.3", "1.21.4" -> { return new ComponentItemFactory(plugin); } + case "1.21.5" -> { + return new ComponentItemFactory1_21_5(plugin); + } default -> throw new IllegalStateException("Unsupported server version: " + plugin.getServerVersion()); } } diff --git a/plugin/src/main/java/net/momirealms/customcrops/bukkit/item/ComponentItemFactory1_21_5.java b/plugin/src/main/java/net/momirealms/customcrops/bukkit/item/ComponentItemFactory1_21_5.java new file mode 100644 index 0000000..3329d9f --- /dev/null +++ b/plugin/src/main/java/net/momirealms/customcrops/bukkit/item/ComponentItemFactory1_21_5.java @@ -0,0 +1,52 @@ +package net.momirealms.customcrops.bukkit.item; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.saicone.rtag.RtagItem; +import com.saicone.rtag.data.ComponentType; +import com.saicone.rtag.tag.TagList; +import com.saicone.rtag.util.ChatComponent; +import net.momirealms.customcrops.common.helper.GsonHelper; +import net.momirealms.customcrops.common.item.ComponentKeys; +import net.momirealms.customcrops.common.plugin.CustomCropsPlugin; +import net.momirealms.sparrow.heart.SparrowHeart; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +@SuppressWarnings("UnstableApiUsage") +public class ComponentItemFactory1_21_5 extends ComponentItemFactory { + + public ComponentItemFactory1_21_5(CustomCropsPlugin plugin) { + super(plugin); + } + + @Override + protected Optional> lore(RtagItem item) { + if (!item.hasComponent(ComponentKeys.LORE)) return Optional.empty(); + return ComponentType.encodeJson( + ComponentKeys.LORE, + item.getComponent(ComponentKeys.LORE) + ).map(list -> { + List lore = new ArrayList<>(); + for (JsonElement jsonElement : (JsonArray) list) { + lore.add(GsonHelper.get().toJson(jsonElement)); + } + return lore; + }); + } + + @Override + protected void lore(RtagItem item, List lore) { + if (lore == null || lore.isEmpty()) { + item.removeComponent(ComponentKeys.LORE); + } else { + List loreTags = new ArrayList<>(); + for (String json : lore) { + loreTags.add(ChatComponent.toTag(SparrowHeart.getInstance().getMinecraftComponent(json))); + } + item.setComponent(ComponentKeys.LORE, TagList.newTag(loreTags)); + } + } +}