Skip to content

Commit 50d8362

Browse files
authored
Bump version to 3.17.1 and refactor registry serializer (#365)
2 parents 713ab76 + 5052c0f commit 50d8362

2 files changed

Lines changed: 50 additions & 38 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
77
javaVersion=25
88
mcVersion=26.1.2
99
group=dev.slne.surf.api
10-
version=3.17.0
10+
version=3.17.1
1111
relocationPrefix=dev.slne.surf.api.libs
1212
snapshot=false

surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/config/serializers/PaperSpongeConfigSerializers.kt

Lines changed: 49 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import org.bukkit.inventory.meta.trim.TrimPattern
2727
import org.bukkit.map.MapCursor
2828
import org.bukkit.potion.PotionEffectType
2929
import 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

Comments
 (0)