|
22 | 22 | import java.util.function.Function; |
23 | 23 | import java.util.stream.Collectors; |
24 | 24 |
|
| 25 | +import static io.papermc.paper.datacomponent.item.CustomModelData.customModelData; |
25 | 26 | import static org.jetbrains.annotations.ApiStatus.Experimental; |
26 | 27 |
|
27 | 28 | /** |
@@ -73,11 +74,20 @@ public ItemBuilder(ItemStack base) { |
73 | 74 | assert lore != null; |
74 | 75 | this.lore = lore.lines(); |
75 | 76 | } |
| 77 | + |
| 78 | + if (base.isDataOverridden(DataComponentTypes.CUSTOM_MODEL_DATA)) { |
| 79 | + var cmd = base.getData(DataComponentTypes.CUSTOM_MODEL_DATA); |
| 80 | + assert cmd != null; |
| 81 | + customModelDataFloats = new FloatArrayList(cmd.floats()); |
| 82 | + customModelDataBooleans = new BooleanArrayList(cmd.flags()); |
| 83 | + customModelDataStrings = cmd.strings(); |
| 84 | + customModelDataColors = cmd.colors(); |
| 85 | + } |
76 | 86 | } |
77 | 87 |
|
78 | 88 | /** |
79 | 89 | * Builds the {@link ItemStack} in {@link Locale#US}. |
80 | | - * |
| 90 | + * |
81 | 91 | * @return The {@link ItemStack} |
82 | 92 | */ |
83 | 93 | @Override |
@@ -113,7 +123,27 @@ public ItemStack get(Locale locale) { |
113 | 123 | itemStack.setData(DataComponentTypes.LORE, lore.build()); |
114 | 124 | } |
115 | 125 |
|
116 | | - // TODO: Custom model data (1.21.4) |
| 126 | + if (customModelDataFloats != null |
| 127 | + || customModelDataBooleans != null |
| 128 | + || customModelDataStrings != null |
| 129 | + || customModelDataColors != null |
| 130 | + ) { |
| 131 | + var cmd = customModelData(); |
| 132 | + if (customModelDataFloats != null) { |
| 133 | + cmd.addFloats(customModelDataFloats); |
| 134 | + } |
| 135 | + if (customModelDataBooleans != null) { |
| 136 | + cmd.addFlags(customModelDataBooleans); |
| 137 | + } |
| 138 | + if (customModelDataStrings != null) { |
| 139 | + cmd.addStrings(customModelDataStrings); |
| 140 | + } |
| 141 | + if (customModelDataColors != null) { |
| 142 | + cmd.addColors(customModelDataColors); |
| 143 | + } |
| 144 | + |
| 145 | + itemStack.setData(DataComponentTypes.CUSTOM_MODEL_DATA, cmd.build()); |
| 146 | + } |
117 | 147 |
|
118 | 148 | if (modifiers != null) { |
119 | 149 | for (var modifier : modifiers) { |
|
0 commit comments