Skip to content

Commit d1da5fb

Browse files
committed
Change up the use of Forge registries.
Adapted from 5a81113.
1 parent 6cbf251 commit d1da5fb

28 files changed

+178
-133
lines changed

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/MagicDoorknobMod.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ public final class MagicDoorknobMod {
2323

2424
public MagicDoorknobMod() {
2525
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
26-
modEventBus.register(BlockColorHandlers.class);
27-
modEventBus.register(Blocks.class);
28-
modEventBus.register(DataGenerators.class);
29-
modEventBus.register(Items.class);
30-
modEventBus.register(TileEntities.class);
26+
BlockColorHandlers.register(modEventBus);
27+
Blocks.register(modEventBus);
28+
DataGenerators.register(modEventBus);
29+
Items.register(modEventBus);
30+
TileEntities.register(modEventBus);
3131

32-
DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> modEventBus.register(ModelLoaders.class));
32+
DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> ModelLoaders.register(modEventBus));
3333
}
3434
}

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/blocks/Blocks.java

+12-10
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
import net.minecraft.block.material.Material;
77
import net.minecraft.block.material.MaterialColor;
88
import net.minecraft.block.material.PushReaction;
9-
import net.minecraftforge.event.RegistryEvent.Register;
10-
import net.minecraftforge.eventbus.api.SubscribeEvent;
9+
import net.minecraftforge.eventbus.api.IEventBus;
10+
import net.minecraftforge.fml.RegistryObject;
1111
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
12+
import net.minecraftforge.registries.DeferredRegister;
13+
import net.minecraftforge.registries.ForgeRegistries;
1214

1315
import javax.annotation.ParametersAreNonnullByDefault;
1416

@@ -19,6 +21,8 @@
1921
@ParametersAreNonnullByDefault
2022
@MethodsReturnNonnullByDefault
2123
public final class Blocks {
24+
private static final DeferredRegister<Block> BLOCKS = new DeferredRegister<>(ForgeRegistries.BLOCKS, MagicDoorknobMod.MOD_ID);
25+
2226
/**
2327
* The material the magic door and doorway are made of:
2428
* - Not liquid
@@ -35,21 +39,19 @@ public final class Blocks {
3539
/**
3640
* A magic doorway block. Generated by a magic doorknob.
3741
*/
38-
public static final Block MAGIC_DOORWAY = new MagicDoorwayBlock(Block.Properties.create(DOORWAY_MATERIAL).notSolid())
39-
.setRegistryName(MagicDoorknobMod.MOD_ID, "magic_doorway");
42+
public static final RegistryObject<Block> MAGIC_DOORWAY =
43+
BLOCKS.register("magic_doorway", () -> new MagicDoorwayBlock(Block.Properties.create(DOORWAY_MATERIAL).notSolid()));
4044

4145
/**
4246
* A magic door block. Generated by a magic doorknob and the entrance to a magic doorway.
4347
*/
44-
public static final Block MAGIC_DOOR = new MagicDoorBlock(Block.Properties.create(DOORWAY_MATERIAL).notSolid())
45-
.setRegistryName(MagicDoorknobMod.MOD_ID, "magic_door");
48+
public static final RegistryObject<Block> MAGIC_DOOR =
49+
BLOCKS.register("magic_door", () -> new MagicDoorBlock(Block.Properties.create(DOORWAY_MATERIAL).notSolid()));
4650

4751
private Blocks() {
4852
}
4953

50-
@SuppressWarnings("BoundedWildcard")
51-
@SubscribeEvent
52-
public static void registerBlocks(Register<Block> event) {
53-
event.getRegistry().registerAll(MAGIC_DOORWAY, MAGIC_DOOR);
54+
public static void register(IEventBus eventBus) {
55+
BLOCKS.register(eventBus);
5456
}
5557
}

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/blocks/MagicDoorBlock.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ private static void breakDoorway(World world, BlockPos pos, Direction facing) {
138138
for (int i = 1; i <= depth; ++i) {
139139
BlockPos blockPos = pos.offset(doorwayFacing, i);
140140
BlockState state = world.getBlockState(blockPos);
141-
if (state.getBlock() == Blocks.MAGIC_DOORWAY) {
141+
if (state.getBlock() == Blocks.MAGIC_DOORWAY.get()) {
142142
world.destroyBlock(blockPos, false);
143143
}
144144
}

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/blocks/colorhandlers/BlockColorHandlers.java

+8-5
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import net.minecraftforge.api.distmarker.Dist;
88
import net.minecraftforge.api.distmarker.OnlyIn;
99
import net.minecraftforge.client.event.ColorHandlerEvent;
10-
import net.minecraftforge.eventbus.api.SubscribeEvent;
10+
import net.minecraftforge.eventbus.api.IEventBus;
1111

1212
import javax.annotation.ParametersAreNonnullByDefault;
1313

@@ -20,16 +20,19 @@ public final class BlockColorHandlers {
2020
private BlockColorHandlers() {
2121
}
2222

23+
public static void register(IEventBus eventBus) {
24+
eventBus.addListener(BlockColorHandlers::registerBlockColorHandlers);
25+
}
26+
2327
/**
2428
* Register all color handlers.
2529
*/
2630
@OnlyIn(Dist.CLIENT)
27-
@SubscribeEvent
28-
public static void registerBlockColorHandlers(ColorHandlerEvent.Block event) {
31+
private static void registerBlockColorHandlers(ColorHandlerEvent.Block event) {
2932
BlockColors blockColors = event.getBlockColors();
3033

3134
IBlockColor doorwayBlockColorHandler = new DoorwayBlockColorHandler();
32-
blockColors.register(doorwayBlockColorHandler, Blocks.MAGIC_DOORWAY);
33-
blockColors.register(doorwayBlockColorHandler, Blocks.MAGIC_DOOR);
35+
blockColors.register(doorwayBlockColorHandler, Blocks.MAGIC_DOORWAY.get());
36+
blockColors.register(doorwayBlockColorHandler, Blocks.MAGIC_DOOR.get());
3437
}
3538
}

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/blocks/tileentities/MagicDoorTileEntity.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@
1111
@MethodsReturnNonnullByDefault
1212
public class MagicDoorTileEntity extends MagicDoorwayPartBaseTileEntity {
1313
public MagicDoorTileEntity() {
14-
super(TileEntities.MAGIC_DOOR);
14+
super(TileEntities.MAGIC_DOOR.get());
1515
}
1616
}

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/blocks/tileentities/MagicDoorwayTileEntity.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@
1111
@MethodsReturnNonnullByDefault
1212
public class MagicDoorwayTileEntity extends MagicDoorwayPartBaseTileEntity {
1313
public MagicDoorwayTileEntity() {
14-
super(TileEntities.MAGIC_DOORWAY);
14+
super(TileEntities.MAGIC_DOORWAY.get());
1515
}
1616
}

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/blocks/tileentities/TileEntities.java

+18-12
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,28 @@
33
import com.tomboshoven.minecraft.magicdoorknob.MagicDoorknobMod;
44
import com.tomboshoven.minecraft.magicdoorknob.blocks.Blocks;
55
import net.minecraft.tileentity.TileEntityType;
6-
import net.minecraftforge.event.RegistryEvent;
7-
import net.minecraftforge.eventbus.api.SubscribeEvent;
8-
import net.minecraftforge.registries.IForgeRegistry;
6+
import net.minecraftforge.eventbus.api.IEventBus;
7+
import net.minecraftforge.fml.RegistryObject;
8+
import net.minecraftforge.registries.DeferredRegister;
9+
import net.minecraftforge.registries.ForgeRegistries;
910

1011
@SuppressWarnings("ConstantConditions")
1112
public final class TileEntities {
12-
static final TileEntityType<MagicDoorTileEntity> MAGIC_DOOR = TileEntityType.Builder.create(MagicDoorTileEntity::new, Blocks.MAGIC_DOOR).build(null);
13-
static final TileEntityType<MagicDoorwayTileEntity> MAGIC_DOORWAY = TileEntityType.Builder.create(MagicDoorwayTileEntity::new, Blocks.MAGIC_DOORWAY).build(null);
13+
private static final DeferredRegister<TileEntityType<?>> TILE_ENTITIES = new DeferredRegister<>(ForgeRegistries.TILE_ENTITIES, MagicDoorknobMod.MOD_ID);
1414

15-
@SubscribeEvent
16-
public static void registerTileEntities(RegistryEvent.Register<TileEntityType<?>> evt) {
17-
IForgeRegistry<TileEntityType<?>> registry = evt.getRegistry();
15+
static final RegistryObject<TileEntityType<MagicDoorTileEntity>> MAGIC_DOOR =
16+
TILE_ENTITIES.register("magic_door",
17+
() -> TileEntityType.Builder.create(MagicDoorTileEntity::new, Blocks.MAGIC_DOOR.get()).build(null)
18+
);
19+
static final RegistryObject<TileEntityType<MagicDoorwayTileEntity>> MAGIC_DOORWAY =
20+
TILE_ENTITIES.register("magic_doorway",
21+
() -> TileEntityType.Builder.create(MagicDoorwayTileEntity::new, Blocks.MAGIC_DOORWAY.get()).build(null)
22+
);
1823

19-
MAGIC_DOOR.setRegistryName(MagicDoorknobMod.MOD_ID, "magic_door");
20-
registry.register(MAGIC_DOOR);
21-
MAGIC_DOORWAY.setRegistryName(MagicDoorknobMod.MOD_ID, "magic_doorway");
22-
registry.register(MAGIC_DOORWAY);
24+
private TileEntities() {
25+
}
26+
27+
public static void register(IEventBus eventBus) {
28+
TILE_ENTITIES.register(eventBus);
2329
}
2430
}

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/data/BlockStates.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ protected void registerStatesAndModels() {
3333
private void registerDoor() {
3434
ModelFile doorBottom = models().getExistingFile(modLoc("block/magic_door_bottom"));
3535
ModelFile doorTop = models().getExistingFile(modLoc("block/magic_door_top"));
36-
horizontalBlock(Blocks.MAGIC_DOOR, blockState -> blockState.get(MagicDoorBlock.PART) == TOP ? doorTop : doorBottom, 270);
36+
horizontalBlock(Blocks.MAGIC_DOOR.get(), blockState -> blockState.get(MagicDoorBlock.PART) == TOP ? doorTop : doorBottom, 270);
3737
}
3838

3939
private void registerDoorway() {
@@ -44,7 +44,7 @@ private void registerDoorway() {
4444
ModelFile doorwayOpenBottom = models().getExistingFile(modLoc("block/magic_doorway_open_bottom"));
4545
ModelFile doorwayOpenTop = models().getExistingFile(modLoc("block/magic_doorway_open_top"));
4646

47-
getVariantBuilder(Blocks.MAGIC_DOORWAY).forAllStates(
47+
getVariantBuilder(Blocks.MAGIC_DOORWAY.get()).forAllStates(
4848
blockState -> {
4949
boolean openEastWest = blockState.get(MagicDoorwayBlock.OPEN_EAST_WEST);
5050
boolean openNorthSouth = blockState.get(MagicDoorwayBlock.OPEN_NORTH_SOUTH);

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/data/DataGenerators.java

+9-3
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,22 @@
33
import mcp.MethodsReturnNonnullByDefault;
44
import net.minecraft.data.DataGenerator;
55
import net.minecraftforge.client.model.generators.ExistingFileHelper;
6-
import net.minecraftforge.eventbus.api.SubscribeEvent;
6+
import net.minecraftforge.eventbus.api.IEventBus;
77
import net.minecraftforge.fml.event.lifecycle.GatherDataEvent;
88

99
import javax.annotation.ParametersAreNonnullByDefault;
1010

1111
@ParametersAreNonnullByDefault
1212
@MethodsReturnNonnullByDefault
1313
public final class DataGenerators {
14-
@SubscribeEvent
15-
public static void gatherData(GatherDataEvent event) {
14+
private DataGenerators() {
15+
}
16+
17+
public static void register(IEventBus eventBus) {
18+
eventBus.addListener(DataGenerators::gatherData);
19+
}
20+
21+
private static void gatherData(GatherDataEvent event) {
1622
DataGenerator generator = event.getGenerator();
1723
ExistingFileHelper existingFileHelper = event.getExistingFileHelper();
1824

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/data/Language.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ class Language extends LanguageProvider {
2121

2222
@Override
2323
protected void addTranslations() {
24-
add(Blocks.MAGIC_DOOR, "Magic Door");
25-
add(Blocks.MAGIC_DOORWAY, "Magic Doorway");
24+
add(Blocks.MAGIC_DOOR.get(), "Magic Door");
25+
add(Blocks.MAGIC_DOORWAY.get(), "Magic Doorway");
2626

2727
addDoorknob("diamond");
2828
addDoorknob("gold", "Golden");

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/items/Items.java

+22-19
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import net.minecraft.util.ResourceLocation;
1313
import net.minecraftforge.common.Tags;
1414
import net.minecraftforge.event.RegistryEvent.Register;
15-
import net.minecraftforge.eventbus.api.SubscribeEvent;
15+
import net.minecraftforge.eventbus.api.IEventBus;
1616
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
1717
import net.minecraftforge.registries.IForgeRegistry;
1818

@@ -31,15 +31,6 @@ public final class Items {
3131
*/
3232
public static final Map<String, MagicDoorknobItem> DOORKNOBS = Maps.newHashMap();
3333

34-
static {
35-
// Add all Vanilla tool materials
36-
addDoorknob("wood", ItemTier.WOOD, "oak_planks", ItemTags.PLANKS);
37-
addDoorknob("stone", ItemTier.STONE, "stone", Tags.Items.COBBLESTONE);
38-
addDoorknob("iron", ItemTier.IRON, "iron_block", Tags.Items.INGOTS_IRON);
39-
addDoorknob("gold", ItemTier.GOLD, "gold_block", Tags.Items.INGOTS_GOLD);
40-
addDoorknob("diamond", ItemTier.DIAMOND, "diamond_block", Tags.Items.GEMS_DIAMOND);
41-
}
42-
4334
private Items() {
4435
}
4536

@@ -48,32 +39,44 @@ private Items() {
4839
* <p>
4940
* Make sure to add a translation key.
5041
*
42+
* @param registry The registry to which to add the doorknob item.
5143
* @param typeName The type name of the item. Keep this stable, since it is used in NBT data.
5244
* @param tier The material this doorknob is made of
5345
* @param mainTexture The main texture of the doorknob
5446
* @param recipeTag The tag to use in recipes
5547
*/
56-
private static void addDoorknob(String typeName, IItemTier tier, ResourceLocation mainTexture, Tag<Item> recipeTag) {
57-
Item i = new MagicDoorknobItem(new Item.Properties().group(ItemGroup.TOOLS), typeName, tier, mainTexture, recipeTag)
58-
.setRegistryName(MagicDoorknobMod.MOD_ID, String.format("magic_doorknob_%s", typeName));
59-
DOORKNOBS.put(typeName, (MagicDoorknobItem) i);
48+
private static void addDoorknob(IForgeRegistry<? super Item> registry, String typeName, IItemTier tier, ResourceLocation mainTexture, Tag<Item> recipeTag) {
49+
MagicDoorknobItem i = new MagicDoorknobItem(new Item.Properties().group(ItemGroup.TOOLS), typeName, tier, mainTexture, recipeTag);
50+
i.setRegistryName(MagicDoorknobMod.MOD_ID, String.format("magic_doorknob_%s", typeName));
51+
registry.register(i);
52+
DOORKNOBS.put(typeName, i);
6053
}
6154

6255
/**
6356
* Convenience function for doorknobs using Vanilla materials.
6457
*
58+
* @param registry The registry to which to add the doorknob item.
6559
* @param typeName The type name of the item. Keep this stable, since it is used in NBT data.
6660
* @param tier The material this doorknob is made of
6761
* @param blockName The name of the block that provides the texture of the doorknob
6862
* @param recipeTag The tag to use in recipes
6963
*/
70-
private static void addDoorknob(String typeName, IItemTier tier, String blockName, Tag<Item> recipeTag) {
71-
addDoorknob(typeName, tier, new ResourceLocation("minecraft", String.format("block/%s", blockName)), recipeTag);
64+
private static void addDoorknob(IForgeRegistry<? super Item> registry, String typeName, IItemTier tier, String blockName, Tag<Item> recipeTag) {
65+
addDoorknob(registry, typeName, tier, new ResourceLocation("minecraft", String.format("block/%s", blockName)), recipeTag);
7266
}
7367

74-
@SubscribeEvent
75-
public static void registerItems(Register<Item> event) {
68+
public static void register(IEventBus eventBus) {
69+
eventBus.addGenericListener(Item.class, Items::registerItems);
70+
}
71+
72+
private static void registerItems(Register<Item> event) {
7673
IForgeRegistry<Item> registry = event.getRegistry();
77-
DOORKNOBS.values().forEach(registry::register);
74+
75+
// Add all Vanilla tool materials
76+
addDoorknob(registry, "wood", ItemTier.WOOD, "oak_planks", ItemTags.PLANKS);
77+
addDoorknob(registry, "stone", ItemTier.STONE, "stone", Tags.Items.COBBLESTONE);
78+
addDoorknob(registry, "iron", ItemTier.IRON, "iron_block", Tags.Items.INGOTS_IRON);
79+
addDoorknob(registry, "gold", ItemTier.GOLD, "gold_block", Tags.Items.INGOTS_GOLD);
80+
addDoorknob(registry, "diamond", ItemTier.DIAMOND, "diamond_block", Tags.Items.GEMS_DIAMOND);
7881
}
7982
}

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/items/MagicDoorknobItem.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.tomboshoven.minecraft.magicdoorknob.blocks.tileentities.MagicDoorwayPartBaseTileEntity;
88
import com.tomboshoven.minecraft.magicdoorknob.blocks.tileentities.MagicDoorwayTileEntity;
99
import mcp.MethodsReturnNonnullByDefault;
10+
import net.minecraft.block.Block;
1011
import net.minecraft.block.BlockState;
1112
import net.minecraft.client.renderer.model.Material;
1213
import net.minecraft.inventory.container.PlayerContainer;
@@ -109,9 +110,10 @@ public ActionResultType onItemUse(ItemUseContext context) {
109110
*/
110111
private void placeDoor(World world, BlockPos pos, Direction facing) {
111112
BlockPos doorPos = pos.offset(facing);
113+
Block block = Blocks.MAGIC_DOOR.get();
112114
world.setBlockState(
113115
doorPos,
114-
Blocks.MAGIC_DOOR.getDefaultState()
116+
block.getDefaultState()
115117
.with(MagicDoorBlock.HORIZONTAL_FACING, facing)
116118
.with(MagicDoorBlock.PART, MagicDoorBlock.EnumPartType.TOP)
117119
);
@@ -122,7 +124,7 @@ private void placeDoor(World world, BlockPos pos, Direction facing) {
122124
}
123125
world.setBlockState(
124126
doorPos.down(),
125-
Blocks.MAGIC_DOOR.getDefaultState()
127+
block.getDefaultState()
126128
.with(MagicDoorBlock.HORIZONTAL_FACING, facing)
127129
.with(MagicDoorBlock.PART, MagicDoorBlock.EnumPartType.BOTTOM)
128130
);
@@ -173,7 +175,8 @@ private void placeDoorway(World world, BlockPos pos, Direction facing, BlockItem
173175
private void placeDoorwayElement(World world, BlockPos pos, boolean isNorthSouth, MagicDoorwayBlock.EnumPartType part) {
174176
if (isReplaceable(world, pos)) {
175177
BlockState state = world.getBlockState(pos);
176-
world.setBlockState(pos, Blocks.MAGIC_DOORWAY.getDefaultState().with(MagicDoorwayBlock.OPEN_NORTH_SOUTH, isNorthSouth).with(MagicDoorwayBlock.OPEN_EAST_WEST, !isNorthSouth).with(MagicDoorwayBlock.PART, part));
178+
Block block = Blocks.MAGIC_DOORWAY.get();
179+
world.setBlockState(pos, block.getDefaultState().with(MagicDoorwayBlock.OPEN_NORTH_SOUTH, isNorthSouth).with(MagicDoorwayBlock.OPEN_EAST_WEST, !isNorthSouth).with(MagicDoorwayBlock.PART, part));
177180

178181
TileEntity tileEntity = world.getTileEntity(pos);
179182
if (tileEntity instanceof MagicDoorwayTileEntity) {

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/modelloaders/ModelLoaders.java

+8-5
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import net.minecraftforge.api.distmarker.OnlyIn;
1212
import net.minecraftforge.client.event.ModelRegistryEvent;
1313
import net.minecraftforge.client.model.ModelLoaderRegistry;
14-
import net.minecraftforge.eventbus.api.SubscribeEvent;
14+
import net.minecraftforge.eventbus.api.IEventBus;
1515

1616
import static com.tomboshoven.minecraft.magicdoorknob.MagicDoorknobMod.MOD_ID;
1717

@@ -23,15 +23,18 @@ public final class ModelLoaders {
2323
private ModelLoaders() {
2424
}
2525

26-
@SubscribeEvent
27-
public static void registerModelLoaders(ModelRegistryEvent event) {
26+
public static void register(IEventBus eventBus) {
27+
eventBus.addListener(ModelLoaders::registerModelLoaders);
28+
}
29+
30+
private static void registerModelLoaders(ModelRegistryEvent event) {
2831
// Initialize textured model loader
2932
TexturedModelLoader modelLoader = new TexturedModelLoader();
3033
modelLoader.registerTexture(new Material(PlayerContainer.LOCATION_BLOCKS_TEXTURE, new ResourceLocation(MOD_ID, "block/empty")));
3134
ModelLoaderRegistry.registerLoader(new ResourceLocation(MOD_ID, "textured"), modelLoader);
3235

3336
// Translucent has the best results across block types
34-
RenderTypeLookup.setRenderLayer(Blocks.MAGIC_DOOR, RenderType.getTranslucent());
35-
RenderTypeLookup.setRenderLayer(Blocks.MAGIC_DOORWAY, RenderType.getTranslucent());
37+
RenderTypeLookup.setRenderLayer(Blocks.MAGIC_DOOR.get(), RenderType.getTranslucent());
38+
RenderTypeLookup.setRenderLayer(Blocks.MAGIC_DOORWAY.get(), RenderType.getTranslucent());
3639
}
3740
}

0 commit comments

Comments
 (0)