Skip to content

Commit 9e947e4

Browse files
committed
更新 XSeries
1 parent 8c54e8b commit 9e947e4

File tree

10 files changed

+717
-170
lines changed

10 files changed

+717
-170
lines changed

module/bukkit/bukkit-util/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ dependencies {
1515
compileOnly(project(":platform:platform-bukkit-impl"))
1616
compileOnly(project(":platform:platform-bukkit"))
1717
// 服务端
18-
compileOnly("ink.ptms.core:v12107:12107-minimize:universal")
18+
compileOnly("ink.ptms.core:v12110:12110-minimize:universal")
1919
compileOnly("ink.ptms.core:v12101:12101-minimize:universal")
2020
compileOnly("ink.ptms.core:v11200:11200-minimize")
2121
}

platform/platform-bukkit-impl/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ dependencies {
1616
compileOnly(project(":module:minecraft:minecraft-chat"))
1717

1818
// 服务端
19-
compileOnly("ink.ptms.core:v12104:12104:mapped")
19+
compileOnly("ink.ptms.core:v12110:12110:mapped")
2020
compileOnly("io.paper:folia-api:1.21.4")
2121
compileOnly("net.md-5:bungeecord-chat:1.20")
2222

platform/platform-bukkit-impl/src/main/java/taboolib/library/xseries/XBlock.java

Lines changed: 416 additions & 54 deletions
Large diffs are not rendered by default.

platform/platform-bukkit-impl/src/main/java/taboolib/library/xseries/XEntityType.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,12 @@ public enum XEntityType implements XBase<XEntityType, EntityType> {
202202
ZOMBIE,
203203
ZOMBIE_HORSE,
204204
ZOMBIE_VILLAGER,
205-
ZOMBIFIED_PIGLIN;
205+
ZOMBIFIED_PIGLIN,
206+
207+
@XInfo(since = "1.21.9") COPPER_GOLEM,
208+
@XInfo(since = "1.21.9") MANNEQUIN,
209+
210+
;
206211

207212
public static final XRegistry<XEntityType, EntityType> REGISTRY = Data.REGISTRY;
208213

platform/platform-bukkit-impl/src/main/java/taboolib/library/xseries/XItemStack.java

Lines changed: 60 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -93,14 +93,16 @@ public final class XItemStack {
9393
SUPPORTS_POTION_COLOR,
9494
SUPPORTS_Inventory_getStorageContents,
9595
SUPPORTS_CUSTOM_MODEL_DATA,
96-
SUPPORTS_ADVANCED_CUSTOM_MODEL_DATA;
96+
SUPPORTS_ADVANCED_CUSTOM_MODEL_DATA,
97+
SUPPORTS_ITEM_MODEL;
9798

9899
static {
99100
boolean supportsPotionColor = false,
100101
supportsUnbreakable = false,
101102
supportsGetStorageContents = false,
102103
supportSCustomModelData = false,
103-
supportsAdvancedCustomModelData = false;
104+
supportsAdvancedCustomModelData = false,
105+
supportsItemModel = false;
104106

105107

106108
try {
@@ -121,6 +123,12 @@ public final class XItemStack {
121123
} catch (ClassNotFoundException ignored) {
122124
}
123125

126+
try {
127+
ItemMeta.class.getDeclaredMethod("getItemModel");
128+
supportsItemModel = true;
129+
} catch (NoSuchMethodException ignored) {
130+
}
131+
124132
try {
125133
Class.forName("org.bukkit.inventory.meta.PotionMeta").getMethod("setColor", Color.class);
126134
supportsPotionColor = true;
@@ -138,6 +146,7 @@ public final class XItemStack {
138146
SUPPORTS_Inventory_getStorageContents = supportsGetStorageContents;
139147
SUPPORTS_CUSTOM_MODEL_DATA = supportSCustomModelData;
140148
SUPPORTS_ADVANCED_CUSTOM_MODEL_DATA = supportsAdvancedCustomModelData;
149+
SUPPORTS_ITEM_MODEL = supportsItemModel;
141150
}
142151

143152
private interface MetaHandler<M extends ItemMeta> {
@@ -454,7 +463,7 @@ public void handle() {
454463
if (meta.hasLore())
455464
config.set("lore", meta.getLore().stream().map(translator).collect(Collectors.toList()));
456465

457-
handleCustomModelData();
466+
customModelData();
458467
if (SUPPORTS_UNBREAKABLE) {
459468
if (meta.isUnbreakable()) config.set("unbreakable", true);
460469
}
@@ -468,35 +477,40 @@ public void handle() {
468477
}
469478

470479
@SuppressWarnings("UnstableApiUsage")
471-
private void handleCustomModelData() {
480+
private void customModelData() {
481+
if (SUPPORTS_ITEM_MODEL) {
482+
String itemModel = config.getString("item-model");
483+
if (itemModel != null && !itemModel.isEmpty()) {
484+
meta.setItemModel(NamespacedKey.fromString(itemModel));
485+
}
486+
}
487+
472488
if (SUPPORTS_CUSTOM_MODEL_DATA) {
473-
if (meta.hasCustomModelData()) {
474-
if (SUPPORTS_ADVANCED_CUSTOM_MODEL_DATA) {
475-
CustomModelDataComponent customModelData = meta.getCustomModelDataComponent();
476-
List<String> strings = customModelData.getStrings();
477-
List<Float> floats = customModelData.getFloats();
478-
List<Boolean> flags = customModelData.getFlags();
479-
List<Color> colors = customModelData.getColors();
480-
481-
int idCount = (int) Stream.of(strings, floats, flags, colors).filter(x -> !x.isEmpty()).count();
482-
if (idCount == 0) return;
483-
if (idCount == 1) {
484-
if (!strings.isEmpty()) config.set("custom-model-data", singleOrList(strings));
485-
if (!floats.isEmpty()) config.set("custom-model-data", singleOrList(floats));
486-
if (!flags.isEmpty()) config.set("custom-model-data", singleOrList(flags));
487-
if (!colors.isEmpty())
488-
config.set("custom-model-data", singleOrList(colors.stream().map(Serializer::colorString).collect(Collectors.toList())));
489-
} else {
490-
ConfigurationSection cfgCustomModelData = config.createSection("custom-model-data");
491-
if (!strings.isEmpty()) cfgCustomModelData.set("strings", strings);
492-
if (!floats.isEmpty()) cfgCustomModelData.set("floats", floats);
493-
if (!flags.isEmpty()) cfgCustomModelData.set("flags", flags);
494-
if (!colors.isEmpty())
495-
cfgCustomModelData.set("colors", colors.stream().map(Serializer::colorString).collect(Collectors.toList()));
496-
}
489+
if (SUPPORTS_ADVANCED_CUSTOM_MODEL_DATA && meta.hasCustomModelDataComponent()) {
490+
CustomModelDataComponent customModelData = meta.getCustomModelDataComponent();
491+
List<String> strings = customModelData.getStrings();
492+
List<Float> floats = customModelData.getFloats();
493+
List<Boolean> flags = customModelData.getFlags();
494+
List<Color> colors = customModelData.getColors();
495+
496+
int idCount = (int) Stream.of(strings, floats, flags, colors).filter(x -> !x.isEmpty()).count();
497+
if (idCount == 0) return;
498+
if (idCount == 1) {
499+
if (!strings.isEmpty()) config.set("custom-model-data", singleOrList(strings));
500+
if (!floats.isEmpty()) config.set("custom-model-data", singleOrList(floats));
501+
if (!flags.isEmpty()) config.set("custom-model-data", singleOrList(flags));
502+
if (!colors.isEmpty())
503+
config.set("custom-model-data", singleOrList(colors.stream().map(Serializer::colorString).collect(Collectors.toList())));
497504
} else {
498-
config.set("custom-model-data", meta.getCustomModelData());
505+
ConfigurationSection cfgCustomModelData = config.createSection("custom-model-data");
506+
if (!strings.isEmpty()) cfgCustomModelData.set("strings", strings);
507+
if (!floats.isEmpty()) cfgCustomModelData.set("floats", floats);
508+
if (!flags.isEmpty()) cfgCustomModelData.set("flags", flags);
509+
if (!colors.isEmpty())
510+
cfgCustomModelData.set("colors", colors.stream().map(Serializer::colorString).collect(Collectors.toList()));
499511
}
512+
} else if (meta.hasCustomModelData()) {
513+
config.set("custom-model-data", meta.getCustomModelData());
500514
}
501515
}
502516
}
@@ -877,6 +891,12 @@ private void unbreakable() {
877891

878892
@SuppressWarnings("UnstableApiUsage")
879893
private void customModelData() {
894+
if (SUPPORTS_ITEM_MODEL) {
895+
if (meta.hasItemModel()) {
896+
config.set("item-model", meta.getItemModel().toString());
897+
}
898+
}
899+
880900
if (SUPPORTS_ADVANCED_CUSTOM_MODEL_DATA) {
881901
CustomModelDataComponent customModelData = meta.getCustomModelDataComponent();
882902

@@ -1502,11 +1522,19 @@ private static <T> List<T> parseRawOrList(String singular, String plural, Config
15021522
if (!list.isEmpty()) {
15031523
return list.stream().map(convert).collect(Collectors.toList());
15041524
}
1525+
list = section.getStringList(singular);
1526+
if (!list.isEmpty()) {
1527+
return list.stream().map(convert).collect(Collectors.toList());
1528+
}
15051529

15061530
String single = section.getString(singular);
15071531
if (single != null && !single.isEmpty()) {
15081532
return Collections.singletonList(convert.apply(single));
15091533
}
1534+
single = section.getString(plural);
1535+
if (single != null && !single.isEmpty()) {
1536+
return Collections.singletonList(convert.apply(single));
1537+
}
15101538

15111539
return Collections.emptyList();
15121540
}
@@ -1710,6 +1738,9 @@ public static List<ItemStack> stack(@NotNull Collection<ItemStack> items, @NotNu
17101738
for (ItemStack item : items) {
17111739
if (item == null) continue;
17121740

1741+
// AssertionError: TRAP ItemStack.setCount -> ItemStack.updateEmptyCacheFlag
1742+
if (item.getType() == Material.AIR) continue;
1743+
17131744
boolean add = true;
17141745
for (ItemStack stack : stacked) {
17151746
if (similarity.test(item, stack)) {

platform/platform-bukkit-impl/src/main/java/taboolib/library/xseries/XMaterial.java

Lines changed: 97 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ public enum XMaterial implements XBase<XMaterial, Material> {
316316
CARROTS("CARROT"),
317317
CARROT_ON_A_STICK("CARROT_STICK"),
318318
CARTOGRAPHY_TABLE,
319-
CARVED_PUMPKIN,
319+
CARVED_PUMPKIN("PUMPKIN"),
320320
CAT_SPAWN_EGG,
321321
CAULDRON("CAULDRON", "CAULDRON_ITEM"),
322322
/**
@@ -328,7 +328,6 @@ public enum XMaterial implements XBase<XMaterial, Material> {
328328
CAVE_SPIDER_SPAWN_EGG(59, "MONSTER_EGG"),
329329
CAVE_VINES,
330330
CAVE_VINES_PLANT,
331-
CHAIN,
332331
CHAINMAIL_BOOTS,
333332
CHAINMAIL_CHESTPLATE,
334333
CHAINMAIL_HELMET,
@@ -1019,6 +1018,8 @@ public enum XMaterial implements XBase<XMaterial, Material> {
10191018
MUSIC_DISC_CREATOR,
10201019
MUSIC_DISC_CREATOR_MUSIC_BOX,
10211020
MUSIC_DISC_FAR("RECORD_5"),
1021+
@XInfo(since = "1.21.7")
1022+
MUSIC_DISC_LAVA_CHICKEN,
10221023
MUSIC_DISC_MALL("RECORD_6"),
10231024
MUSIC_DISC_MELLOHI("RECORD_7"),
10241025
MUSIC_DISC_OTHERSIDE,
@@ -1797,6 +1798,83 @@ public enum XMaterial implements XBase<XMaterial, Material> {
17971798
ZOMBIE_WALL_HEAD(2, "SKULL", "SKULL_ITEM"),
17981799
ZOMBIFIED_PIGLIN_SPAWN_EGG(57, "MONSTER_EGG", "ZOMBIE_PIGMAN_SPAWN_EGG"),
17991800

1801+
@XInfo(since = "1.21.9") ACACIA_SHELF,
1802+
@XInfo(since = "1.21.9") BAMBOO_SHELF,
1803+
@XInfo(since = "1.21.9") BIRCH_SHELF,
1804+
@XInfo(since = "1.21.9") CHERRY_SHELF,
1805+
@XInfo(since = "1.21.9") CRIMSON_SHELF,
1806+
@XInfo(since = "1.21.9") DARK_OAK_SHELF,
1807+
@XInfo(since = "1.21.9") JUNGLE_SHELF,
1808+
@XInfo(since = "1.21.9") MANGROVE_SHELF,
1809+
@XInfo(since = "1.21.9") OAK_SHELF,
1810+
@XInfo(since = "1.21.9") PALE_OAK_SHELF,
1811+
@XInfo(since = "1.21.9") SPRUCE_SHELF,
1812+
@XInfo(since = "1.21.9") WARPED_SHELF,
1813+
@XInfo(since = "1.21.9") COPPER_TORCH,
1814+
@XInfo(since = "1.21.9") COPPER_BARS,
1815+
@XInfo(since = "1.21.9") EXPOSED_COPPER_BARS,
1816+
@XInfo(since = "1.21.9") WEATHERED_COPPER_BARS,
1817+
@XInfo(since = "1.21.9") OXIDIZED_COPPER_BARS,
1818+
@XInfo(since = "1.21.9") WAXED_COPPER_BARS,
1819+
@XInfo(since = "1.21.9") WAXED_EXPOSED_COPPER_BARS,
1820+
@XInfo(since = "1.21.9") WAXED_WEATHERED_COPPER_BARS,
1821+
@XInfo(since = "1.21.9") WAXED_OXIDIZED_COPPER_BARS,
1822+
@XInfo(since = "1.21.9")
1823+
@XChange(version = "1.21.9", from = "CHAIN", to = "IRON_CHAIN")
1824+
IRON_CHAIN("CHAIN"),
1825+
@XInfo(since = "1.21.9") COPPER_CHAIN,
1826+
@XInfo(since = "1.21.9") EXPOSED_COPPER_CHAIN,
1827+
@XInfo(since = "1.21.9") WEATHERED_COPPER_CHAIN,
1828+
@XInfo(since = "1.21.9") OXIDIZED_COPPER_CHAIN,
1829+
@XInfo(since = "1.21.9") WAXED_COPPER_CHAIN,
1830+
@XInfo(since = "1.21.9") WAXED_EXPOSED_COPPER_CHAIN,
1831+
@XInfo(since = "1.21.9") WAXED_WEATHERED_COPPER_CHAIN,
1832+
@XInfo(since = "1.21.9") WAXED_OXIDIZED_COPPER_CHAIN,
1833+
@XInfo(since = "1.21.9") EXPOSED_LIGHTNING_ROD,
1834+
@XInfo(since = "1.21.9") WEATHERED_LIGHTNING_ROD,
1835+
@XInfo(since = "1.21.9") OXIDIZED_LIGHTNING_ROD,
1836+
@XInfo(since = "1.21.9") WAXED_LIGHTNING_ROD,
1837+
@XInfo(since = "1.21.9") WAXED_EXPOSED_LIGHTNING_ROD,
1838+
@XInfo(since = "1.21.9") WAXED_WEATHERED_LIGHTNING_ROD,
1839+
@XInfo(since = "1.21.9") WAXED_OXIDIZED_LIGHTNING_ROD,
1840+
@XInfo(since = "1.21.9") COPPER_SWORD,
1841+
@XInfo(since = "1.21.9") COPPER_SHOVEL,
1842+
@XInfo(since = "1.21.9") COPPER_PICKAXE,
1843+
@XInfo(since = "1.21.9") COPPER_AXE,
1844+
@XInfo(since = "1.21.9") COPPER_HOE,
1845+
@XInfo(since = "1.21.9") COPPER_HELMET,
1846+
@XInfo(since = "1.21.9") COPPER_CHESTPLATE,
1847+
@XInfo(since = "1.21.9") COPPER_LEGGINGS,
1848+
@XInfo(since = "1.21.9") COPPER_BOOTS,
1849+
@XInfo(since = "1.21.9") COPPER_GOLEM_SPAWN_EGG,
1850+
@XInfo(since = "1.21.9") COPPER_HORSE_ARMOR,
1851+
@XInfo(since = "1.21.9") COPPER_NUGGET,
1852+
@XInfo(since = "1.21.9") COPPER_LANTERN,
1853+
@XInfo(since = "1.21.9") EXPOSED_COPPER_LANTERN,
1854+
@XInfo(since = "1.21.9") WEATHERED_COPPER_LANTERN,
1855+
@XInfo(since = "1.21.9") OXIDIZED_COPPER_LANTERN,
1856+
@XInfo(since = "1.21.9") WAXED_COPPER_LANTERN,
1857+
@XInfo(since = "1.21.9") WAXED_EXPOSED_COPPER_LANTERN,
1858+
@XInfo(since = "1.21.9") WAXED_WEATHERED_COPPER_LANTERN,
1859+
@XInfo(since = "1.21.9") WAXED_OXIDIZED_COPPER_LANTERN,
1860+
@XInfo(since = "1.21.9") COPPER_CHEST,
1861+
@XInfo(since = "1.21.9") EXPOSED_COPPER_CHEST,
1862+
@XInfo(since = "1.21.9") WEATHERED_COPPER_CHEST,
1863+
@XInfo(since = "1.21.9") OXIDIZED_COPPER_CHEST,
1864+
@XInfo(since = "1.21.9") WAXED_COPPER_CHEST,
1865+
@XInfo(since = "1.21.9") WAXED_EXPOSED_COPPER_CHEST,
1866+
@XInfo(since = "1.21.9") WAXED_WEATHERED_COPPER_CHEST,
1867+
@XInfo(since = "1.21.9") WAXED_OXIDIZED_COPPER_CHEST,
1868+
@XInfo(since = "1.21.9") COPPER_GOLEM_STATUE,
1869+
@XInfo(since = "1.21.9") EXPOSED_COPPER_GOLEM_STATUE,
1870+
@XInfo(since = "1.21.9") WEATHERED_COPPER_GOLEM_STATUE,
1871+
@XInfo(since = "1.21.9") OXIDIZED_COPPER_GOLEM_STATUE,
1872+
@XInfo(since = "1.21.9") WAXED_COPPER_GOLEM_STATUE,
1873+
@XInfo(since = "1.21.9") WAXED_EXPOSED_COPPER_GOLEM_STATUE,
1874+
@XInfo(since = "1.21.9") WAXED_WEATHERED_COPPER_GOLEM_STATUE,
1875+
@XInfo(since = "1.21.9") WAXED_OXIDIZED_COPPER_GOLEM_STATUE,
1876+
@XInfo(since = "1.21.9") COPPER_WALL_TORCH,
1877+
18001878
;
18011879

18021880

@@ -2055,7 +2133,7 @@ public static XMaterial matchXMaterial(@NotNull ItemStack item) {
20552133
byte data = (byte) (Data.ISFLAT || material.equals("MAP") || item.getType().getMaxDurability() > 0 ? 0 : item.getDurability());
20562134

20572135
// Versions 1.9-1.12 didn't really use the items data value.
2058-
if (supports(9) && !supports(13) && item.hasItemMeta() && material.equals("MONSTER_EGG")) {
2136+
if (Data.SUPPORTS_SpawnEggMeta && !supports(13) && item.hasItemMeta() && material.equals("MONSTER_EGG")) {
20592137
ItemMeta meta = item.getItemMeta();
20602138
if (meta instanceof SpawnEggMeta) {
20612139
SpawnEggMeta egg = (SpawnEggMeta) meta;
@@ -2517,5 +2595,21 @@ private static Material getExactMaterial(String name) {
25172595
* @since 3.0.0
25182596
*/
25192597
private static final boolean ISFLAT = supports(13);
2598+
2599+
/**
2600+
* Added around Minecraft v1.11
2601+
*/
2602+
private static final boolean SUPPORTS_SpawnEggMeta;
2603+
2604+
static {
2605+
boolean supportsSpawnEggMeta;
2606+
try {
2607+
Class.forName("org.bukkit.inventory.meta.SpawnEggMeta");
2608+
supportsSpawnEggMeta = true;
2609+
} catch (ClassNotFoundException ex) {
2610+
supportsSpawnEggMeta = false;
2611+
}
2612+
SUPPORTS_SpawnEggMeta = supportsSpawnEggMeta;
2613+
}
25202614
}
25212615
}

platform/platform-bukkit-impl/src/main/java/taboolib/library/xseries/XParticle.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,8 @@ public enum XParticle implements XBase<XParticle, Particle> {
8686
DRIPPING_DRIPSTONE_LAVA,
8787
DRIPPING_DRIPSTONE_WATER,
8888
DRIPPING_HONEY,
89-
9089
@XChange(version = "v1.20.5", from = "DRIP_LAVA", to = "DRIPPING_LAVA")
9190
DRIPPING_LAVA("DRIP_LAVA"),
92-
9391
DRIPPING_OBSIDIAN_TEAR,
9492

9593
@XChange(version = "v1.20.5", from = "DRIP_WATER", to = "DRIPPING_WATER")
@@ -288,7 +286,10 @@ public enum XParticle implements XBase<XParticle, Particle> {
288286
WHITE_SMOKE,
289287

290288
@XChange(version = "1.20.5", from = "SPELL_WITCH", to = "WITCH")
291-
WITCH("SPELL_WITCH");
289+
WITCH("SPELL_WITCH"),
290+
291+
@XInfo(since = "1.21.9") COPPER_FIRE_FLAME,
292+
;
292293

293294
public static final XRegistry<XParticle, Particle> REGISTRY = Data.REGISTRY;
294295

0 commit comments

Comments
 (0)