mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-10-30 05:12:58 +00:00
Eagerly create upgrade registries for Fabric
Instead of creating the upgrade serialiser registries in mod initialisation, we now do it when the API is created. This ensures the registries are available for other mods, irrespective of mod load order. This feels a little sad (we're doing side effects in the static initialiser), but is /fine/ - it's pretty much what other mods do.
This commit is contained in:
@@ -9,6 +9,7 @@ import dan200.computercraft.api.ComputerCraftAPI;
|
||||
import dan200.computercraft.api.detail.DetailRegistry;
|
||||
import dan200.computercraft.impl.detail.DetailRegistryImpl;
|
||||
import dan200.computercraft.shared.details.FluidDetails;
|
||||
import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
|
||||
import net.fabricmc.fabric.api.transfer.v1.storage.StorageView;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
@@ -19,6 +20,14 @@ import javax.annotation.Nullable;
|
||||
public final class ComputerCraftAPIImpl extends AbstractComputerCraftAPI implements ComputerCraftAPIFabricService {
|
||||
private final DetailRegistry<StorageView<FluidVariant>> fluidDetails = new DetailRegistryImpl<>(FluidDetails::fillBasic);
|
||||
|
||||
static {
|
||||
// This We create the registries here (rather than in the mod initialiser) to guarantee that they're available
|
||||
// when people come to register upgrade serialisers.
|
||||
// This is a little nasty (side effects in static constructors and all that!), but seems to be the easiest way.
|
||||
FabricRegistryBuilder.createSimple(turtleUpgradeRegistryId).buildAndRegister();
|
||||
FabricRegistryBuilder.createSimple(pocketUpgradeRegistryId).buildAndRegister();
|
||||
}
|
||||
|
||||
private @Nullable String version;
|
||||
|
||||
@Override
|
||||
|
||||
@@ -8,8 +8,6 @@ import dan200.computercraft.api.ComputerCraftAPI;
|
||||
import dan200.computercraft.api.detail.FabricDetailRegistries;
|
||||
import dan200.computercraft.api.node.wired.WiredElementLookup;
|
||||
import dan200.computercraft.api.peripheral.PeripheralLookup;
|
||||
import dan200.computercraft.api.pocket.PocketUpgradeSerialiser;
|
||||
import dan200.computercraft.api.turtle.TurtleUpgradeSerialiser;
|
||||
import dan200.computercraft.shared.command.CommandComputerCraft;
|
||||
import dan200.computercraft.shared.config.Config;
|
||||
import dan200.computercraft.shared.config.ConfigSpec;
|
||||
@@ -28,7 +26,6 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
|
||||
import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents;
|
||||
import net.fabricmc.fabric.api.event.player.UseBlockCallback;
|
||||
import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder;
|
||||
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup;
|
||||
import net.fabricmc.fabric.api.loot.v2.LootTableEvents;
|
||||
import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener;
|
||||
@@ -50,8 +47,6 @@ public class ComputerCraft {
|
||||
|
||||
public static void init() {
|
||||
NetworkHandler.init();
|
||||
FabricRegistryBuilder.createSimple(TurtleUpgradeSerialiser.REGISTRY_ID).buildAndRegister();
|
||||
FabricRegistryBuilder.createSimple(PocketUpgradeSerialiser.REGISTRY_ID).buildAndRegister();
|
||||
ModRegistry.register();
|
||||
ModRegistry.registerMainThread();
|
||||
ModRegistry.registerCreativeTab(FabricItemGroup.builder(new ResourceLocation(ComputerCraftAPI.MOD_ID, "tab"))).build();
|
||||
|
||||
Reference in New Issue
Block a user