From b323955fc984d665956160efac77ff8d8f4febf9 Mon Sep 17 00:00:00 2001 From: yusshu Date: Tue, 25 Mar 2025 09:43:44 -0500 Subject: [PATCH] fix: update to 1.21.4 item model components --- .../nms/v1_21_R3/NMSPackets.java | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/v1_21_R3/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R3/NMSPackets.java b/v1_21_R3/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R3/NMSPackets.java index 72f1426..5349455 100644 --- a/v1_21_R3/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R3/NMSPackets.java +++ b/v1_21_R3/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R3/NMSPackets.java @@ -1,5 +1,6 @@ package me.lojosho.hibiscuscommons.nms.v1_21_R3; +import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.mojang.datafixers.util.Pair; import com.mojang.serialization.JsonOps; @@ -26,6 +27,7 @@ import net.minecraft.world.phys.Vec3; import net.minecraft.world.scores.PlayerTeam; import net.minecraft.world.scores.Team; import org.bukkit.Bukkit; +import org.bukkit.Color; import org.bukkit.Location; import org.bukkit.craftbukkit.CraftEquipmentSlot; import org.bukkit.craftbukkit.entity.CraftEntityType; @@ -39,6 +41,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.components.CustomModelDataComponent; import org.joml.Quaternionf; import org.joml.Vector3f; @@ -318,8 +321,43 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. components.addProperty("minecraft:enchantment_glint_override", true); } + if (meta.hasItemModel()) { + components.addProperty("minecraft:item_model", meta.getItemModel().toString()); + } + if (meta.hasCustomModelData()) { - components.addProperty("minecraft:custom_model_data", meta.getCustomModelData()); + CustomModelDataComponent customModelDataComponent = meta.getCustomModelDataComponent(); + JsonObject customModelDataComponentJson = new JsonObject(); + + List floats = customModelDataComponent.getFloats(); + if (!floats.isEmpty()) { + JsonArray floatsArray = new JsonArray(); + floats.forEach(floatsArray::add); + customModelDataComponentJson.add("floats", floatsArray); + } + + List flags = customModelDataComponent.getFlags(); + if (!flags.isEmpty()) { + JsonArray flagsArray = new JsonArray(); + flags.forEach(flagsArray::add); + customModelDataComponentJson.add("flags", flagsArray); + } + + List strings = customModelDataComponent.getStrings(); + if (!strings.isEmpty()) { + JsonArray stringsArray = new JsonArray(); + strings.forEach(stringsArray::add); + customModelDataComponentJson.add("strings", stringsArray); + } + + List colors = customModelDataComponent.getColors(); + if (!colors.isEmpty()) { + JsonArray colorsArray = new JsonArray(); + colors.forEach(color -> colorsArray.add(color.asRGB())); + customModelDataComponentJson.add("colors", colorsArray); + } + + components.add("minecraft:custom_model_data", customModelDataComponentJson); } iconObj.add("components", components);