diff --git a/src/main/java/ru/bclib/api/PostInitAPI.java b/src/main/java/ru/bclib/api/PostInitAPI.java new file mode 100644 index 00000000..7a0afd95 --- /dev/null +++ b/src/main/java/ru/bclib/api/PostInitAPI.java @@ -0,0 +1,29 @@ +package ru.bclib.api; + +import com.google.common.collect.Lists; +import net.minecraft.core.Registry; +import ru.bclib.interfaces.PostInitable; + +import java.util.List; +import java.util.function.Consumer; + +public class PostInitAPI { + private static List> postInitFunctions = Lists.newArrayList(); + + public static void register(Consumer function) { + postInitFunctions.add(function); + } + + public static void postInit() { + if (postInitFunctions == null) { + return; + } + postInitFunctions.forEach(function -> function.accept(null)); + Registry.BLOCK.forEach(block -> { + if (block instanceof PostInitable) { + ((PostInitable) block).postInit(); + } + }); + postInitFunctions = null; + } +} diff --git a/src/main/java/ru/bclib/client/BCLibClient.java b/src/main/java/ru/bclib/client/BCLibClient.java index 7b85b66c..4c9e3698 100644 --- a/src/main/java/ru/bclib/client/BCLibClient.java +++ b/src/main/java/ru/bclib/client/BCLibClient.java @@ -5,6 +5,7 @@ import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; import net.minecraft.client.renderer.RenderType; import net.minecraft.core.Registry; import ru.bclib.api.ModIntegrationAPI; +import ru.bclib.api.PostInitAPI; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.PostInitable; import ru.bclib.interfaces.RenderLayerProvider; @@ -16,11 +17,7 @@ public class BCLibClient implements ClientModInitializer { ModIntegrationAPI.registerAll(); BaseBlockEntityRenders.register(); registerRenderLayers(); - Registry.BLOCK.forEach(block -> { - if (block instanceof PostInitable) { - ((PostInitable) block).postInit(); - } - }); + PostInitAPI.postInit(); } private void registerRenderLayers() { diff --git a/src/main/java/ru/bclib/server/BCLibServer.java b/src/main/java/ru/bclib/server/BCLibServer.java index 35520c02..402e6a2a 100644 --- a/src/main/java/ru/bclib/server/BCLibServer.java +++ b/src/main/java/ru/bclib/server/BCLibServer.java @@ -3,16 +3,13 @@ package ru.bclib.server; import net.fabricmc.api.DedicatedServerModInitializer; import net.minecraft.core.Registry; import ru.bclib.api.ModIntegrationAPI; +import ru.bclib.api.PostInitAPI; import ru.bclib.interfaces.PostInitable; public class BCLibServer implements DedicatedServerModInitializer { @Override public void onInitializeServer() { ModIntegrationAPI.registerAll(); - Registry.BLOCK.forEach(block -> { - if (block instanceof PostInitable) { - ((PostInitable) block).postInit(); - } - }); + PostInitAPI.postInit(); } }