@@ -11,6 +11,7 @@ import com.cobblemon.mod.common.api.data.DataProvider
1111import com.cobblemon.mod.common.api.spawning.detail.SpawnDetail.Companion.registerSpawnType
1212import com.cobblemon.mod.common.api.storage.player.PlayerDataExtensionRegistry.register
1313import com.mojang.logging.LogUtils
14+ import com.mojang.serialization.MapCodec
1415import dev.architectury.event.events.common.LootEvent
1516import generations.gg.generations.core.generationscore.common.api.GenerationsMolangFunctions
1617import generations.gg.generations.core.generationscore.common.api.data.GenerationsCoreEntityDataSerializers
@@ -38,13 +39,14 @@ import generations.gg.generations.core.generationscore.common.world.level.block.
3839import generations.gg.generations.core.generationscore.common.world.level.block.entities.GenerationsBlockEntities
3940import generations.gg.generations.core.generationscore.common.world.loot.LootItemConditionTypes
4041import generations.gg.generations.core.generationscore.common.world.loot.LootPoolEntryTypes
41- import generations.gg.generations.core.generationscore.common.world.recipe.GenerationsCoreRecipeSerializers
42- import generations.gg.generations.core.generationscore.common.world.recipe.GenerationsCoreRecipeTypes
43- import generations.gg.generations.core.generationscore.common.world.recipe.RksResultType
42+ import generations.gg.generations.core.generationscore.common.world.recipe.*
4443import generations.gg.generations.core.generationscore.common.world.sound.GenerationsSounds
4544import generations.gg.generations.core.generationscore.common.world.spawning.ZygardeCellDetail
4645import net.minecraft.core.registries.Registries
46+ import net.minecraft.network.RegistryFriendlyByteBuf
4747import net.minecraft.network.chat.MutableComponent
48+ import net.minecraft.network.codec.ByteBufCodecs
49+ import net.minecraft.network.codec.StreamCodec
4850import net.minecraft.resources.ResourceKey
4951import net.minecraft.resources.ResourceLocation
5052import net.minecraft.server.level.ServerPlayer
@@ -65,6 +67,7 @@ import java.util.function.IntConsumer
6567 * @author Joseph T. McQuigg, WaterPicker
6668 */
6769object GenerationsCore {
70+
6871 /* * The mod id of the Generations-Core mod. */
6972 const val MOD_ID : String = " generations_core"
7073
@@ -80,6 +83,8 @@ object GenerationsCore {
8083 @JvmField
8184 var dataProvider: DataProvider = GenerationsDataProvider .INSTANCE
8285
86+ lateinit var RKS_RESULT_TYPE : RegistryContainer <RksResultType <* >, RksResult <* >>
87+
8388 /* *
8489 * Initializes the Generations-Core mod.
8590 */
@@ -90,6 +95,7 @@ object GenerationsCore {
9095 )
9196 GenerationsCore .implementation = implementation
9297
98+ RKS_RESULT_TYPE = RegistryContainer ( " rks_result" , RksResult <* >::type, RksResultType <* >::codec, RksResultType <* >::streamCodec)
9399
94100 // GenerationsDataProvider.INSTANCE.register(ShopPresets.instance());
95101// GenerationsDataProvider.INSTANCE.register(Shops.instance());
@@ -123,32 +129,10 @@ object GenerationsCore {
123129
124130 GenerationsCoreEntityDataSerializers .init ()
125131 GenerationsStorage .init ()
126- GenerationsDataComponents .init ()
127- GenerationsSounds .init ()
128- GenerationsBlocks .init ()
129- GenerationsPokeDolls .init ()
130- GenerationsWood .init ()
131- GenerationsOres .init ()
132- GenerationsDecorationBlocks .init ()
133- LootPoolEntryTypes .init ()
134- LootItemConditionTypes .init ()
135- GenerationsUtilityBlocks .init ()
136- GenerationsShrines .init ()
137- GenerationsBlocks .initItems()
138- GenerationsItems .init ()
139- GenerationsBlockEntities .init ()
140- GenerationsEntities .init ()
141- GenerationsArmorMaterials .init ()
142- GenerationsArmor .init ()
143- GenerationsTools .init ()
144- GenerationsCreativeTabs .init ()
145- GenerationsContainers .init ()
146132 GenerationsResources .init ()
147- RksResultType .init ()
148133 GenerationsIngredidents .init ()
149- GenerationsCoreRecipeTypes .init ()
150- GenerationsCoreRecipeSerializers .init ()
151- GenerationsCoreStats .init ()
134+
135+ registerRegistires()
152136
153137 GenerationsDataProvider .INSTANCE .registerDefaults()
154138
@@ -175,7 +159,6 @@ object GenerationsCore {
175159 registerDefaultCustomInteractions()
176160
177161
178- // BuiltInRegistries.BLOCK.stream().map(a -> a.arch$registryName() + ": " + a.getLootTable()).forEach(a -> System.out.println(a));
179162 }
180163
181164 fun initBuiltinPacks (consumer : TriConsumer <PackType ?, ResourceLocation ?, MutableComponent ?>? ) {
@@ -206,6 +189,40 @@ object GenerationsCore {
206189 fun id (path : String ): ResourceLocation {
207190 return ResourceLocation .fromNamespaceAndPath(MOD_ID , path)
208191 }
192+
193+ fun registerRegistires () {
194+ implementation.register(GenerationsDataComponents )
195+ implementation.register(GenerationsSounds )
196+ GenerationsBlocks .init (implementation::register)
197+ implementation.register(GenerationsPokeDolls )
198+ GenerationsWood .init (implementation::register)
199+ implementation.register(GenerationsOres )
200+ implementation.register(GenerationsDecorationBlocks )
201+ implementation.register(LootPoolEntryTypes )
202+ implementation.register(LootItemConditionTypes )
203+ implementation.register(GenerationsUtilityBlocks )
204+ implementation.register(GenerationsShrines )
205+ GenerationsItems .init (implementation::register)
206+ GenerationsBlocks .initItems(implementation::register)
207+ implementation.register(GenerationsBlockEntities )
208+ implementation.register(GenerationsEntities )
209+ implementation.register(GenerationsArmorMaterials )
210+ implementation.register(GenerationsArmor )
211+ implementation.register(GenerationsTools )
212+ implementation.register(GenerationsCreativeTabs )
213+ implementation.register(GenerationsContainers )
214+ implementation.register(GenerationsCoreRecipeTypes )
215+ implementation.register(GenerationsCoreRecipeSerializers )
216+ implementation.register(GenerationsCoreStats )
217+ implementation.register(GenerationsRksTypes )
218+ }
219+ }
220+
221+ class RegistryContainer <T : Any , V : Any >(name : String , from : (V ) -> T , mapCodec : (T ) -> MapCodec <out V >, streamCodec : (T ) -> StreamCodec <RegistryFriendlyByteBuf , out V >) {
222+ val key = ResourceKey .createRegistryKey<T >(name.generationsResource())
223+ val registry = GenerationsCore .implementation.createRegistry(key, true )
224+ val codec = registry.byNameCodec().dispatch(from::invoke, mapCodec::invoke)
225+ val streamCodec = ByteBufCodecs .registry(key).dispatch(from::invoke, streamCodec::invoke)
209226}
210227
211228fun <T > T?.orFalse (predicate : (T ) -> Boolean ): Boolean = this ?.let (predicate) ? : false
0 commit comments