11package dev .latvian .mods .klib ;
22
33import dev .latvian .mods .klib .command .KLibCommandArgumentTypes ;
4- import dev .latvian .mods .klib .data . DataTypeRegistry ;
5- import dev .latvian .mods .klib .data . DataTypeRegistryEvent ;
4+ import dev .latvian .mods .klib .net . SyncCustomRegistryMetaPayload ;
5+ import dev .latvian .mods .klib .net . SyncCustomRegistryValuesPayload ;
66import dev .latvian .mods .klib .platform .NeoPlatformHelper ;
77import dev .latvian .mods .klib .platform .PlatformHelper ;
8+ import dev .latvian .mods .klib .registry .CustomRegistry ;
9+ import dev .latvian .mods .klib .util .Cast ;
810import net .neoforged .bus .api .IEventBus ;
911import net .neoforged .bus .api .SubscribeEvent ;
1012import net .neoforged .fml .ModContainer ;
11- import net .neoforged .fml .ModLoader ;
1213import net .neoforged .fml .common .EventBusSubscriber ;
1314import net .neoforged .fml .common .Mod ;
1415import net .neoforged .fml .event .lifecycle .FMLCommonSetupEvent ;
16+ import net .neoforged .neoforge .event .OnDatapackSyncEvent ;
17+ import net .neoforged .neoforge .event .RegisterCommandsEvent ;
18+ import net .neoforged .neoforge .event .server .ServerStartingEvent ;
19+ import net .neoforged .neoforge .network .event .RegisterPayloadHandlersEvent ;
20+ import net .neoforged .neoforge .network .handling .IPayloadContext ;
21+
22+ import java .util .function .Function ;
23+ import java .util .stream .Collectors ;
1524
1625@ Mod (KLib .ID )
1726@ EventBusSubscriber (modid = KLib .ID )
@@ -24,11 +33,49 @@ public KLibMod(ModContainer mod, IEventBus bus) {
2433
2534 @ SubscribeEvent
2635 public static void setup (FMLCommonSetupEvent event ) {
27- DataTypeRegistry .registerAll (registry -> ModLoader .postEvent (new DataTypeRegistryEvent (registry )));
36+ KLib .setup ();
37+ }
38+
39+ @ SubscribeEvent
40+ public static void registerCommands (RegisterCommandsEvent event ) {
41+ KLibCommands .register (event .getDispatcher (), event .getBuildContext ());
42+ }
43+
44+ @ SubscribeEvent
45+ public static void serverStarting (ServerStartingEvent event ) {
46+ CustomRegistry .buildAllMeta ();
47+ }
48+
49+ @ SubscribeEvent
50+ public static void syncDataPacks (OnDatapackSyncEvent event ) {
51+ event .getRelevantPlayers ().forEach (CustomRegistry ::sync );
2852 }
2953
3054 @ SubscribeEvent
31- public static void dataTypeRegistry (DataTypeRegistryEvent event ) {
32- KLib .registerDataTypes (event .getRegistry ());
55+ public static void registerPackets (RegisterPayloadHandlersEvent event ) {
56+ var registrar = event .registrar ("1" );
57+ registrar .playToClient (SyncCustomRegistryMetaPayload .TYPE , SyncCustomRegistryMetaPayload .STREAM_CODEC , KLibMod ::handleServerRegistryMeta );
58+ registrar .playToClient (SyncCustomRegistryValuesPayload .TYPE , SyncCustomRegistryValuesPayload .STREAM_CODEC , KLibMod ::handleServerRegistryValues );
59+ }
60+
61+ private static void handleServerRegistryMeta (SyncCustomRegistryMetaPayload payload , IPayloadContext context ) {
62+ var map = payload .registries ().stream ().collect (Collectors .toMap (info -> info .registryKeys ().root (), Function .identity ()));
63+
64+ for (var registry : CustomRegistry .ALL .values ()) {
65+ if (registry .side ().isServer ()) {
66+ var info = map .get (registry .registryKeys ().root ());
67+ registry .readMeta (Cast .to (info ));
68+ }
69+ }
70+ }
71+
72+ private static void handleServerRegistryValues (SyncCustomRegistryValuesPayload payload , IPayloadContext context ) {
73+ var registry = CustomRegistry .ALL .get (payload .info ().registryKeys ().root ());
74+
75+ if (registry != null ) {
76+ var registryAccess = context .player ().registryAccess ();
77+ var platformType = PlatformHelper .CURRENT .getPlatformOf (context .player ());
78+ registry .readValues (Cast .to (payload .info ()), registryAccess , platformType );
79+ }
3380 }
3481}
0 commit comments