@@ -27,6 +27,7 @@ import org.bukkit.inventory.meta.trim.TrimPattern
2727import org.bukkit.map.MapCursor
2828import org.bukkit.potion.PotionEffectType
2929import org.spongepowered.configurate.serialize.TypeSerializerCollection
30+ import kotlin.reflect.KClass
3031
3132@Suppress(" UnstableApiUsage" )
3233@AutoService(SpongeConfigSerializers ::class )
@@ -43,44 +44,44 @@ class PaperSpongeConfigSerializers : SpongeConfigSerializers() {
4344
4445 // region Registry serializer
4546 // @formatter:off
46- builder.register(RegistryValueSerializer (GameEvent ::class .java, RegistryKey .GAME_EVENT , true ))
47- builder.register(RegistryValueSerializer (StructureType ::class .java, RegistryKey .STRUCTURE_TYPE , true ))
48- builder.register(RegistryValueSerializer (PotionEffectType ::class .java, RegistryKey .MOB_EFFECT , true ))
49- builder.register(RegistryValueSerializer (BlockType ::class .java, RegistryKey .BLOCK , true ))
50- builder.register(RegistryValueSerializer (ItemType ::class .java, RegistryKey .ITEM , true ))
51- builder.register(RegistryValueSerializer (Villager .Profession ::class .java, RegistryKey .VILLAGER_PROFESSION , true ))
52- builder.register(RegistryValueSerializer (PoiType ::class .java, RegistryKey .POINT_OF_INTEREST_TYPE , true ))
53- builder.register(RegistryValueSerializer (Villager .Type ::class .java, RegistryKey .VILLAGER_TYPE , true ))
54- builder.register(RegistryValueSerializer (MapCursor .Type ::class .java, RegistryKey .MAP_DECORATION_TYPE , true ))
55- builder.register(RegistryValueSerializer (MenuType ::class .java, RegistryKey .MENU , true ))
56- builder.register(RegistryValueSerializer (Attribute ::class .java, RegistryKey .ATTRIBUTE , true ))
57- builder.register(RegistryValueSerializer (Fluid ::class .java, RegistryKey .FLUID , true ))
58- builder.register(RegistryValueSerializer (Sound ::class .java, RegistryKey .SOUND_EVENT , true ))
59- builder.register(RegistryValueSerializer (DataComponentType ::class .java, RegistryKey .DATA_COMPONENT_TYPE , true ))
47+ builder.registerSafeRegistry({ GameEvent ::class }, { RegistryKey .GAME_EVENT })
48+ builder.registerSafeRegistry({ StructureType ::class }, { RegistryKey .STRUCTURE_TYPE })
49+ builder.registerSafeRegistry({ PotionEffectType ::class }, { RegistryKey .MOB_EFFECT })
50+ builder.registerSafeRegistry({ BlockType ::class }, { RegistryKey .BLOCK })
51+ builder.registerSafeRegistry({ ItemType ::class }, { RegistryKey .ITEM })
52+ builder.registerSafeRegistry({ Villager .Profession ::class }, { RegistryKey .VILLAGER_PROFESSION })
53+ builder.registerSafeRegistry({ PoiType ::class }, { RegistryKey .POINT_OF_INTEREST_TYPE })
54+ builder.registerSafeRegistry({ Villager .Type ::class }, { RegistryKey .VILLAGER_TYPE })
55+ builder.registerSafeRegistry({ MapCursor .Type ::class }, { RegistryKey .MAP_DECORATION_TYPE })
56+ builder.registerSafeRegistry({ MenuType ::class }, { RegistryKey .MENU })
57+ builder.registerSafeRegistry({ Attribute ::class }, { RegistryKey .ATTRIBUTE })
58+ builder.registerSafeRegistry({ Fluid ::class }, { RegistryKey .FLUID })
59+ builder.registerSafeRegistry({ Sound ::class }, { RegistryKey .SOUND_EVENT })
60+ builder.registerSafeRegistry({ DataComponentType ::class }, { RegistryKey .DATA_COMPONENT_TYPE })
61+ builder.registerSafeRegistry({ Biome ::class }, { RegistryKey .BIOME })
62+ builder.registerSafeRegistry({ Structure ::class }, { RegistryKey .STRUCTURE })
63+ builder.registerSafeRegistry({ TrimMaterial ::class }, { RegistryKey .TRIM_MATERIAL })
64+ builder.registerSafeRegistry({ TrimPattern ::class }, { RegistryKey .TRIM_PATTERN })
65+ builder.registerSafeRegistry({ DamageType ::class }, { RegistryKey .DAMAGE_TYPE })
66+ builder.registerSafeRegistry({ Wolf .Variant ::class }, { RegistryKey .WOLF_VARIANT })
67+ builder.registerSafeRegistry({ Wolf .SoundVariant ::class }, { RegistryKey .WOLF_SOUND_VARIANT })
68+ builder.registerSafeRegistry({ Enchantment ::class }, { RegistryKey .ENCHANTMENT })
69+ builder.registerSafeRegistry({ JukeboxSong ::class }, { RegistryKey .JUKEBOX_SONG })
70+ builder.registerSafeRegistry({ PatternType ::class }, { RegistryKey .BANNER_PATTERN })
71+ builder.registerSafeRegistry({ Art ::class }, { RegistryKey .PAINTING_VARIANT })
72+ builder.registerSafeRegistry({ MusicInstrument ::class }, { RegistryKey .INSTRUMENT })
73+ builder.registerSafeRegistry({ Cat .Type ::class }, { RegistryKey .CAT_VARIANT })
74+ builder.registerSafeRegistry({ Cat .SoundVariant ::class }, { RegistryKey .CAT_SOUND_VARIANT })
75+ builder.registerSafeRegistry({ Frog .Variant ::class }, { RegistryKey .FROG_VARIANT })
76+ builder.registerSafeRegistry({ Chicken .Variant ::class }, { RegistryKey .CHICKEN_VARIANT })
77+ builder.registerSafeRegistry({ Chicken .SoundVariant ::class }, { RegistryKey .CHICKEN_SOUND_VARIANT })
78+ builder.registerSafeRegistry({ Cow .Variant ::class }, { RegistryKey .COW_VARIANT })
79+ builder.registerSafeRegistry({ Cow .SoundVariant ::class }, { RegistryKey .COW_SOUND_VARIANT })
80+ builder.registerSafeRegistry({ Pig .Variant ::class }, { RegistryKey .PIG_VARIANT })
81+ builder.registerSafeRegistry({ Pig .SoundVariant ::class }, { RegistryKey .PIG_SOUND_VARIANT })
82+ builder.registerSafeRegistry({ ZombieNautilus .Variant ::class }, { RegistryKey .ZOMBIE_NAUTILUS_VARIANT })
83+ builder.registerSafeRegistry({ Dialog ::class }, { RegistryKey .DIALOG })
6084 builder.register(RegistryValueSerializer (object : TypeToken <GameRule <* >>() {}, RegistryKey .GAME_RULE , true ))
61- builder.register(RegistryValueSerializer (Biome ::class .java, RegistryKey .BIOME , true ))
62- builder.register(RegistryValueSerializer (Structure ::class .java, RegistryKey .STRUCTURE , true ))
63- builder.register(RegistryValueSerializer (TrimMaterial ::class .java, RegistryKey .TRIM_MATERIAL , true ))
64- builder.register(RegistryValueSerializer (TrimPattern ::class .java, RegistryKey .TRIM_PATTERN , true ))
65- builder.register(RegistryValueSerializer (DamageType ::class .java, RegistryKey .DAMAGE_TYPE , true ))
66- builder.register(RegistryValueSerializer (Wolf .Variant ::class .java, RegistryKey .WOLF_VARIANT , true ))
67- builder.register(RegistryValueSerializer (Wolf .SoundVariant ::class .java, RegistryKey .WOLF_SOUND_VARIANT , true ))
68- builder.register(RegistryValueSerializer (Enchantment ::class .java, RegistryKey .ENCHANTMENT , true ))
69- builder.register(RegistryValueSerializer (JukeboxSong ::class .java, RegistryKey .JUKEBOX_SONG , true ))
70- builder.register(RegistryValueSerializer (PatternType ::class .java, RegistryKey .BANNER_PATTERN , true ))
71- builder.register(RegistryValueSerializer (Art ::class .java, RegistryKey .PAINTING_VARIANT , true ))
72- builder.register(RegistryValueSerializer (MusicInstrument ::class .java, RegistryKey .INSTRUMENT , true ))
73- builder.register(RegistryValueSerializer (Cat .Type ::class .java, RegistryKey .CAT_VARIANT , true ))
74- builder.register(RegistryValueSerializer (Cat .SoundVariant ::class .java, RegistryKey .CAT_SOUND_VARIANT , true ))
75- builder.register(RegistryValueSerializer (Frog .Variant ::class .java, RegistryKey .FROG_VARIANT , true ))
76- builder.register(RegistryValueSerializer (Chicken .Variant ::class .java, RegistryKey .CHICKEN_VARIANT , true ))
77- builder.register(RegistryValueSerializer (Chicken .SoundVariant ::class .java, RegistryKey .CHICKEN_SOUND_VARIANT , true ))
78- builder.register(RegistryValueSerializer (Cow .Variant ::class .java, RegistryKey .COW_VARIANT , true ))
79- builder.register(RegistryValueSerializer (Cow .SoundVariant ::class .java, RegistryKey .COW_SOUND_VARIANT , true ))
80- builder.register(RegistryValueSerializer (Pig .Variant ::class .java, RegistryKey .PIG_VARIANT , true ))
81- builder.register(RegistryValueSerializer (Pig .SoundVariant ::class .java, RegistryKey .PIG_SOUND_VARIANT , true ))
82- builder.register(RegistryValueSerializer (ZombieNautilus .Variant ::class .java, RegistryKey .ZOMBIE_NAUTILUS_VARIANT , true ))
83- builder.register(RegistryValueSerializer (Dialog ::class .java, RegistryKey .DIALOG , true ))
8485 // @formatter:on
8586 // endregion
8687 }
@@ -91,4 +92,15 @@ class PaperSpongeConfigSerializers : SpongeConfigSerializers() {
9192 BukkitConfigurationSerializableSerializer
9293 )
9394 }
95+
96+ private fun <T : Keyed > TypeSerializerCollection.Builder.registerSafeRegistry (
97+ type : () -> KClass <T >,
98+ registryKey : () -> RegistryKey <T >,
99+ omitMinecraftNamespace : Boolean = true
100+ ) {
101+ try {
102+ register(RegistryValueSerializer (type().java, registryKey(), omitMinecraftNamespace))
103+ } catch (_: Throwable ) {
104+ }
105+ }
94106}
0 commit comments