Add util class to avoid a bit of boilerplate in registration.

This commit is contained in:
Florian Nücke
2021-07-11 13:44:15 +02:00
parent 541ac8bc12
commit 2c2286a24b
13 changed files with 86 additions and 46 deletions

View File

@@ -33,6 +33,8 @@ public final class Main {
ConfigManager.add(Config::new);
ConfigManager.initialize();
RegistryUtils.begin();
ItemTags.initialize();
BlockTags.initialize();
Blocks.initialize();
@@ -48,6 +50,8 @@ public final class Main {
BlockDeviceDataRegistration.initialize();
Firmwares.initialize();
RegistryUtils.finish();
FMLJavaModLoadingContext.get().getModEventBus().register(CommonSetup.class);
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FMLJavaModLoadingContext.get().getModEventBus().register(ClientSetup.class));
}

View File

@@ -1,14 +1,13 @@
package li.cil.oc2.common.block;
import li.cil.oc2.api.API;
import li.cil.oc2.common.util.RegistryUtils;
import net.minecraft.block.Block;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
public final class Blocks {
private static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, API.MOD_ID);
private static final DeferredRegister<Block> BLOCKS = RegistryUtils.create(ForgeRegistries.BLOCKS);
///////////////////////////////////////////////////////////////////
@@ -24,6 +23,5 @@ public final class Blocks {
///////////////////////////////////////////////////////////////////
public static void initialize() {
BLOCKS.register(FMLJavaModLoadingContext.get().getModEventBus());
}
}

View File

@@ -3,9 +3,9 @@ package li.cil.oc2.common.bus.device;
import li.cil.oc2.api.API;
import li.cil.oc2.api.bus.device.DeviceType;
import li.cil.oc2.common.bus.device.util.DeviceTypeImpl;
import li.cil.oc2.common.util.RegistryUtils;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.registries.RegistryBuilder;
@@ -13,7 +13,7 @@ import net.minecraftforge.registries.RegistryBuilder;
import java.util.function.Supplier;
public final class DeviceTypes {
private static final DeferredRegister<DeviceType> DEVICE_TYPES = DeferredRegister.create(DeviceType.class, API.MOD_ID);
private static final DeferredRegister<DeviceType> DEVICE_TYPES = RegistryUtils.create(DeviceType.class);
///////////////////////////////////////////////////////////////////
@@ -28,8 +28,6 @@ public final class DeviceTypes {
register("card");
register("robot_module");
register("floppy");
DEVICE_TYPES.register(FMLJavaModLoadingContext.get().getModEventBus());
}
///////////////////////////////////////////////////////////////////

View File

@@ -1,9 +1,8 @@
package li.cil.oc2.common.bus.device.data;
import li.cil.oc2.api.API;
import li.cil.oc2.api.bus.device.data.BlockDeviceData;
import li.cil.oc2.common.util.RegistryUtils;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.registries.RegistryBuilder;
@@ -11,7 +10,7 @@ import net.minecraftforge.registries.RegistryBuilder;
import java.util.function.Supplier;
public final class BlockDeviceDataRegistration {
private static final DeferredRegister<BlockDeviceData> INITIALIZER = DeferredRegister.create(BlockDeviceData.class, API.MOD_ID);
private static final DeferredRegister<BlockDeviceData> INITIALIZER = RegistryUtils.create(BlockDeviceData.class);
///////////////////////////////////////////////////////////////////
@@ -24,6 +23,5 @@ public final class BlockDeviceDataRegistration {
///////////////////////////////////////////////////////////////////
public static void initialize() {
INITIALIZER.register(FMLJavaModLoadingContext.get().getModEventBus());
}
}

View File

@@ -1,9 +1,8 @@
package li.cil.oc2.common.bus.device.data;
import li.cil.oc2.api.API;
import li.cil.oc2.api.bus.device.data.Firmware;
import li.cil.oc2.common.util.RegistryUtils;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.registries.RegistryBuilder;
@@ -11,7 +10,7 @@ import net.minecraftforge.registries.RegistryBuilder;
import java.util.function.Supplier;
public final class Firmwares {
private static final DeferredRegister<Firmware> INITIALIZER = DeferredRegister.create(Firmware.class, API.MOD_ID);
private static final DeferredRegister<Firmware> INITIALIZER = RegistryUtils.create(Firmware.class);
///////////////////////////////////////////////////////////////////
@@ -24,6 +23,5 @@ public final class Firmwares {
///////////////////////////////////////////////////////////////////
public static void initialize() {
INITIALIZER.register(FMLJavaModLoadingContext.get().getModEventBus());
}
}

View File

@@ -1,11 +1,10 @@
package li.cil.oc2.common.bus.device.provider;
import li.cil.oc2.api.API;
import li.cil.oc2.api.bus.device.provider.BlockDeviceProvider;
import li.cil.oc2.api.bus.device.provider.ItemDeviceProvider;
import li.cil.oc2.common.bus.device.provider.block.*;
import li.cil.oc2.common.bus.device.provider.item.*;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import li.cil.oc2.common.util.RegistryUtils;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.registries.RegistryBuilder;
@@ -13,8 +12,8 @@ import net.minecraftforge.registries.RegistryBuilder;
import java.util.function.Supplier;
public final class Providers {
private static final DeferredRegister<BlockDeviceProvider> BLOCK_DEVICE_PROVIDERS = DeferredRegister.create(BlockDeviceProvider.class, API.MOD_ID);
private static final DeferredRegister<ItemDeviceProvider> ITEM_DEVICE_PROVIDERS = DeferredRegister.create(ItemDeviceProvider.class, API.MOD_ID);
private static final DeferredRegister<BlockDeviceProvider> BLOCK_DEVICE_PROVIDERS = RegistryUtils.create(BlockDeviceProvider.class);
private static final DeferredRegister<ItemDeviceProvider> ITEM_DEVICE_PROVIDERS = RegistryUtils.create(ItemDeviceProvider.class);
///////////////////////////////////////////////////////////////////
@@ -44,8 +43,5 @@ public final class Providers {
ITEM_DEVICE_PROVIDERS.register("inventory_operations_module", InventoryOperationsModuleDeviceProvider::new);
ITEM_DEVICE_PROVIDERS.register("block_operations_module", BlockOperationsModuleDeviceProvider::new);
BLOCK_DEVICE_PROVIDERS.register(FMLJavaModLoadingContext.get().getModEventBus());
ITEM_DEVICE_PROVIDERS.register(FMLJavaModLoadingContext.get().getModEventBus());
}
}

View File

@@ -1,15 +1,14 @@
package li.cil.oc2.common.container;
import li.cil.oc2.api.API;
import li.cil.oc2.common.util.RegistryUtils;
import net.minecraft.inventory.container.ContainerType;
import net.minecraftforge.common.extensions.IForgeContainerType;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
public final class Containers {
private static final DeferredRegister<ContainerType<?>> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, API.MOD_ID);
private static final DeferredRegister<ContainerType<?>> CONTAINERS = RegistryUtils.create(ForgeRegistries.CONTAINERS);
///////////////////////////////////////////////////////////////////
@@ -21,6 +20,5 @@ public final class Containers {
///////////////////////////////////////////////////////////////////
public static void initialize() {
CONTAINERS.register(FMLJavaModLoadingContext.get().getModEventBus());
}
}

View File

@@ -1,18 +1,17 @@
package li.cil.oc2.common.entity;
import li.cil.oc2.api.API;
import li.cil.oc2.common.util.RegistryUtils;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import java.util.function.Function;
public final class Entities {
private static final DeferredRegister<EntityType<?>> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES, API.MOD_ID);
private static final DeferredRegister<EntityType<?>> ENTITIES = RegistryUtils.create(ForgeRegistries.ENTITIES);
///////////////////////////////////////////////////////////////////
@@ -21,7 +20,6 @@ public final class Entities {
///////////////////////////////////////////////////////////////////
public static void initialize() {
ENTITIES.register(FMLJavaModLoadingContext.get().getModEventBus());
}
///////////////////////////////////////////////////////////////////

View File

@@ -1,15 +1,14 @@
package li.cil.oc2.common.item;
import li.cil.oc2.api.API;
import li.cil.oc2.common.Constants;
import li.cil.oc2.common.block.Blocks;
import li.cil.oc2.common.bus.device.data.BlockDeviceDataRegistration;
import li.cil.oc2.common.bus.device.data.Firmwares;
import li.cil.oc2.common.util.RegistryUtils;
import net.minecraft.block.Block;
import net.minecraft.item.DyeColor;
import net.minecraft.item.Item;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
@@ -17,7 +16,7 @@ import java.util.function.Function;
import java.util.function.Supplier;
public final class Items {
private static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, API.MOD_ID);
private static final DeferredRegister<Item> ITEMS = RegistryUtils.create(ForgeRegistries.ITEMS);
///////////////////////////////////////////////////////////////////
@@ -75,7 +74,6 @@ public final class Items {
///////////////////////////////////////////////////////////////////
public static void initialize() {
ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus());
}
///////////////////////////////////////////////////////////////////

View File

@@ -1,18 +1,20 @@
package li.cil.oc2.common.item.crafting;
import li.cil.oc2.api.API;
import li.cil.oc2.common.util.RegistryUtils;
import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
public final class RecipeSerializers {
private static final DeferredRegister<IRecipeSerializer<?>> RECIPE_SERIALIZERS = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, API.MOD_ID);
private static final DeferredRegister<IRecipeSerializer<?>> RECIPE_SERIALIZERS = RegistryUtils.create(ForgeRegistries.RECIPE_SERIALIZERS);
///////////////////////////////////////////////////////////////////
public static final RegistryObject<WrenchRecipe.Serializer> WRENCH = RECIPE_SERIALIZERS.register("wrench", () -> WrenchRecipe.Serializer.INSTANCE);
///////////////////////////////////////////////////////////////////
public static void initialize() {
RECIPE_SERIALIZERS.register(FMLJavaModLoadingContext.get().getModEventBus());
}
}

View File

@@ -1,19 +1,18 @@
package li.cil.oc2.common.tileentity;
import li.cil.oc2.api.API;
import li.cil.oc2.common.block.Blocks;
import li.cil.oc2.common.util.RegistryUtils;
import net.minecraft.block.Block;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityType;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import java.util.function.Supplier;
public final class TileEntities {
private static final DeferredRegister<TileEntityType<?>> TILES = DeferredRegister.create(ForgeRegistries.TILE_ENTITIES, API.MOD_ID);
private static final DeferredRegister<TileEntityType<?>> TILES = RegistryUtils.create(ForgeRegistries.TILE_ENTITIES);
///////////////////////////////////////////////////////////////////
@@ -29,7 +28,6 @@ public final class TileEntities {
///////////////////////////////////////////////////////////////////
public static void initialize() {
TileEntities.TILES.register(FMLJavaModLoadingContext.get().getModEventBus());
}
///////////////////////////////////////////////////////////////////

View File

@@ -0,0 +1,56 @@
package li.cil.oc2.common.util;
import li.cil.oc2.api.API;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.registries.IForgeRegistryEntry;
import java.util.ArrayList;
import java.util.List;
public abstract class RegistryUtils {
private enum Phase {
PRE_INIT,
INIT,
POST_INIT,
}
private static final List<DeferredRegister<?>> ENTRIES = new ArrayList<>();
private static Phase phase = Phase.PRE_INIT;
public static <T extends IForgeRegistryEntry<T>> DeferredRegister<T> create(final Class<T> type) {
if (phase != Phase.INIT) throw new IllegalStateException();
final DeferredRegister<T> entry = DeferredRegister.create(type, API.MOD_ID);
ENTRIES.add(entry);
return entry;
}
public static <T extends IForgeRegistryEntry<T>> DeferredRegister<T> create(final IForgeRegistry<T> registry) {
if (phase != Phase.INIT) throw new IllegalStateException();
final DeferredRegister<T> entry = DeferredRegister.create(registry, API.MOD_ID);
ENTRIES.add(entry);
return entry;
}
public static void begin() {
if (phase != Phase.PRE_INIT) throw new IllegalStateException();
phase = Phase.INIT;
}
public static void finish() {
if (phase != Phase.INIT) throw new IllegalStateException();
phase = Phase.POST_INIT;
for (final DeferredRegister<?> register : ENTRIES) {
register.register(FMLJavaModLoadingContext.get().getModEventBus());
}
ENTRIES.clear();
}
private RegistryUtils() {
}
}

View File

@@ -4,12 +4,11 @@ import li.cil.oc2.api.API;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.SoundEvent;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
public final class SoundEvents {
private static final DeferredRegister<SoundEvent> SOUNDS = DeferredRegister.create(ForgeRegistries.SOUND_EVENTS, API.MOD_ID);
private static final DeferredRegister<SoundEvent> SOUNDS = RegistryUtils.create(ForgeRegistries.SOUND_EVENTS);
///////////////////////////////////////////////////////////////////
@@ -22,7 +21,6 @@ public final class SoundEvents {
///////////////////////////////////////////////////////////////////
public static void initialize() {
SOUNDS.register(FMLJavaModLoadingContext.get().getModEventBus());
}
///////////////////////////////////////////////////////////////////