diff --git a/src/main/java/li/cil/oc2/OpenComputers.java b/src/main/java/li/cil/oc2/OpenComputers.java index db07459d..08d626d0 100644 --- a/src/main/java/li/cil/oc2/OpenComputers.java +++ b/src/main/java/li/cil/oc2/OpenComputers.java @@ -4,66 +4,19 @@ import li.cil.ceres.Ceres; import li.cil.oc2.api.API; import li.cil.oc2.client.ClientSetup; import li.cil.oc2.common.CommonSetup; -import li.cil.oc2.common.block.BusCableBlock; -import li.cil.oc2.common.block.ComputerBlock; -import li.cil.oc2.common.block.RedstoneInterfaceBlock; -import li.cil.oc2.common.block.ScreenBlock; -import li.cil.oc2.common.block.entity.BusCableTileEntity; -import li.cil.oc2.common.block.entity.ComputerTileEntity; -import li.cil.oc2.common.block.entity.RedstoneInterfaceTileEntity; -import li.cil.oc2.common.container.ComputerContainer; +import li.cil.oc2.common.init.*; import li.cil.sedna.devicetree.DeviceTreeRegistry; -import net.minecraft.block.Block; -import net.minecraft.inventory.container.ContainerType; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntityType; -import net.minecraftforge.common.extensions.IForgeContainerType; -import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; @Mod(API.MOD_ID) public final class OpenComputers { - public static final ItemGroup ITEM_GROUP = new ItemGroup(API.MOD_ID) { - @Override - public ItemStack createIcon() { - return new ItemStack(COMPUTER_ITEM.get()); - } - }; - - public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, API.MOD_ID); - public static final RegistryObject COMPUTER_BLOCK = BLOCKS.register(Constants.COMPUTER_BLOCK_NAME, ComputerBlock::new); - public static final RegistryObject BUS_CABLE_BLOCK = BLOCKS.register(Constants.BUS_CABLE_BLOCK_NAME, BusCableBlock::new); - public static final RegistryObject REDSTONE_INTERFACE_BLOCK = BLOCKS.register(Constants.REDSTONE_INTERFACE_BLOCK_NAME, RedstoneInterfaceBlock::new); - public static final RegistryObject SCREEN_BLOCK = BLOCKS.register(Constants.SCREEN_BLOCK_NAME, ScreenBlock::new); - - public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, API.MOD_ID); - public static final RegistryObject COMPUTER_ITEM = ITEMS.register(Constants.COMPUTER_BLOCK_NAME, () -> new BlockItem(COMPUTER_BLOCK.get(), new Item.Properties().group(ITEM_GROUP))); - public static final RegistryObject BUS_CABLE_ITEM = ITEMS.register(Constants.BUS_CABLE_BLOCK_NAME, () -> new BlockItem(BUS_CABLE_BLOCK.get(), new Item.Properties().group(ITEM_GROUP))); - public static final RegistryObject REDSTONE_INTERFACE_ITEM = ITEMS.register(Constants.REDSTONE_INTERFACE_BLOCK_NAME, () -> new BlockItem(REDSTONE_INTERFACE_BLOCK.get(), new Item.Properties().group(ITEM_GROUP))); - public static final RegistryObject SCREEN_ITEM = ITEMS.register(Constants.SCREEN_BLOCK_NAME, () -> new BlockItem(SCREEN_BLOCK.get(), new Item.Properties().group(ITEM_GROUP))); - - public static final RegistryObject RAM_8M_ITEM = ITEMS.register(Constants.RAM_NAME, () -> new Item(new Item.Properties().group(ITEM_GROUP))); - public static final RegistryObject HDD_ITEM = ITEMS.register(Constants.HDD_NAME, () -> new Item(new Item.Properties().maxStackSize(1).group(ITEM_GROUP))); - - public static final DeferredRegister> TILES = DeferredRegister.create(ForgeRegistries.TILE_ENTITIES, API.MOD_ID); - public static final RegistryObject> COMPUTER_TILE_ENTITY = TILES.register(Constants.COMPUTER_BLOCK_NAME, () -> TileEntityType.Builder.create(ComputerTileEntity::new, COMPUTER_BLOCK.get()).build(null)); - public static final RegistryObject> BUS_CABLE_TILE_ENTITY = TILES.register(Constants.BUS_CABLE_BLOCK_NAME, () -> TileEntityType.Builder.create(BusCableTileEntity::new, BUS_CABLE_BLOCK.get()).build(null)); - public static final RegistryObject> REDSTONE_INTERFACE_TILE_ENTITY = TILES.register(Constants.REDSTONE_INTERFACE_BLOCK_NAME, () -> TileEntityType.Builder.create(RedstoneInterfaceTileEntity::new, REDSTONE_INTERFACE_BLOCK.get()).build(null)); - - public static final DeferredRegister> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, API.MOD_ID); - public static final RegistryObject> COMPUTER_CONTAINER = CONTAINERS.register(Constants.COMPUTER_BLOCK_NAME, () -> IForgeContainerType.create(ComputerContainer::create)); - public OpenComputers() { - ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus()); - BLOCKS.register(FMLJavaModLoadingContext.get().getModEventBus()); - TILES.register(FMLJavaModLoadingContext.get().getModEventBus()); - CONTAINERS.register(FMLJavaModLoadingContext.get().getModEventBus()); + Items.initialize(); + Blocks.initialize(); + TileEntities.initialize(); + Containers.initialize(); + Providers.initialize(); FMLJavaModLoadingContext.get().getModEventBus().addListener(CommonSetup::run); FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::run); diff --git a/src/main/java/li/cil/oc2/client/ClientSetup.java b/src/main/java/li/cil/oc2/client/ClientSetup.java index 5e412f70..4ba692bd 100644 --- a/src/main/java/li/cil/oc2/client/ClientSetup.java +++ b/src/main/java/li/cil/oc2/client/ClientSetup.java @@ -1,16 +1,17 @@ package li.cil.oc2.client; -import li.cil.oc2.OpenComputers; import li.cil.oc2.client.gui.ComputerContainerScreen; import li.cil.oc2.client.render.tile.ComputerTileEntityRenderer; +import li.cil.oc2.common.init.Containers; +import li.cil.oc2.common.init.TileEntities; import net.minecraft.client.gui.ScreenManager; import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; public final class ClientSetup { public static void run(final FMLClientSetupEvent event) { - ScreenManager.registerFactory(OpenComputers.COMPUTER_CONTAINER.get(), ComputerContainerScreen::new); + ScreenManager.registerFactory(Containers.COMPUTER_CONTAINER.get(), ComputerContainerScreen::new); - ClientRegistry.bindTileEntityRenderer(OpenComputers.COMPUTER_TILE_ENTITY.get(), ComputerTileEntityRenderer::new); + ClientRegistry.bindTileEntityRenderer(TileEntities.COMPUTER_TILE_ENTITY.get(), ComputerTileEntityRenderer::new); } } diff --git a/src/main/java/li/cil/oc2/common/block/BusCableBlock.java b/src/main/java/li/cil/oc2/common/block/BusCableBlock.java index f4c17f10..81c6a8f9 100644 --- a/src/main/java/li/cil/oc2/common/block/BusCableBlock.java +++ b/src/main/java/li/cil/oc2/common/block/BusCableBlock.java @@ -1,9 +1,9 @@ package li.cil.oc2.common.block; import com.google.common.collect.Maps; -import li.cil.oc2.OpenComputers; import li.cil.oc2.common.block.entity.BusCableTileEntity; import li.cil.oc2.common.capabilities.Capabilities; +import li.cil.oc2.common.init.TileEntities; import li.cil.oc2.common.util.WorldUtils; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -96,7 +96,7 @@ public final class BusCableBlock extends Block { @Nullable @Override public TileEntity createTileEntity(final BlockState state, final IBlockReader world) { - return OpenComputers.BUS_CABLE_TILE_ENTITY.get().create(); + return TileEntities.BUS_CABLE_TILE_ENTITY.get().create(); } @SuppressWarnings("deprecation") diff --git a/src/main/java/li/cil/oc2/common/block/ComputerBlock.java b/src/main/java/li/cil/oc2/common/block/ComputerBlock.java index 905c8670..3d8a7c37 100644 --- a/src/main/java/li/cil/oc2/common/block/ComputerBlock.java +++ b/src/main/java/li/cil/oc2/common/block/ComputerBlock.java @@ -1,9 +1,9 @@ package li.cil.oc2.common.block; -import li.cil.oc2.OpenComputers; import li.cil.oc2.client.gui.TerminalScreen; import li.cil.oc2.common.block.entity.ComputerTileEntity; import li.cil.oc2.common.container.ComputerContainer; +import li.cil.oc2.common.init.TileEntities; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.HorizontalBlock; @@ -49,7 +49,7 @@ public final class ComputerBlock extends HorizontalBlock { @Nullable @Override public TileEntity createTileEntity(final BlockState state, final IBlockReader world) { - return OpenComputers.COMPUTER_TILE_ENTITY.get().create(); + return TileEntities.COMPUTER_TILE_ENTITY.get().create(); } @SuppressWarnings("deprecation") diff --git a/src/main/java/li/cil/oc2/common/block/RedstoneInterfaceBlock.java b/src/main/java/li/cil/oc2/common/block/RedstoneInterfaceBlock.java index da199614..2fd5b7e5 100644 --- a/src/main/java/li/cil/oc2/common/block/RedstoneInterfaceBlock.java +++ b/src/main/java/li/cil/oc2/common/block/RedstoneInterfaceBlock.java @@ -1,7 +1,7 @@ package li.cil.oc2.common.block; -import li.cil.oc2.OpenComputers; import li.cil.oc2.common.block.entity.RedstoneInterfaceTileEntity; +import li.cil.oc2.common.init.TileEntities; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.HorizontalBlock; @@ -35,7 +35,7 @@ public final class RedstoneInterfaceBlock extends HorizontalBlock { @Nullable @Override public TileEntity createTileEntity(final BlockState state, final IBlockReader world) { - return OpenComputers.REDSTONE_INTERFACE_TILE_ENTITY.get().create(); + return TileEntities.REDSTONE_INTERFACE_TILE_ENTITY.get().create(); } @SuppressWarnings("deprecation") diff --git a/src/main/java/li/cil/oc2/common/block/entity/BusCableTileEntity.java b/src/main/java/li/cil/oc2/common/block/entity/BusCableTileEntity.java index f36c4fba..c771b306 100644 --- a/src/main/java/li/cil/oc2/common/block/entity/BusCableTileEntity.java +++ b/src/main/java/li/cil/oc2/common/block/entity/BusCableTileEntity.java @@ -1,9 +1,9 @@ package li.cil.oc2.common.block.entity; -import li.cil.oc2.OpenComputers; import li.cil.oc2.common.block.BusCableBlock; import li.cil.oc2.common.bus.TileEntityDeviceBusElement; import li.cil.oc2.common.capabilities.Capabilities; +import li.cil.oc2.common.init.TileEntities; import li.cil.oc2.common.serialization.NBTSerialization; import net.minecraft.block.BlockState; import net.minecraft.nbt.CompoundNBT; @@ -21,7 +21,7 @@ public class BusCableTileEntity extends AbstractTileEntity { /////////////////////////////////////////////////////////////////// public BusCableTileEntity() { - super(OpenComputers.BUS_CABLE_TILE_ENTITY.get()); + super(TileEntities.BUS_CABLE_TILE_ENTITY.get()); busElement = new BusElement(); setCapabilityIfAbsent(Capabilities.DEVICE_BUS_ELEMENT_CAPABILITY, busElement); diff --git a/src/main/java/li/cil/oc2/common/block/entity/ComputerTileEntity.java b/src/main/java/li/cil/oc2/common/block/entity/ComputerTileEntity.java index d021e5e9..9aa22938 100644 --- a/src/main/java/li/cil/oc2/common/block/entity/ComputerTileEntity.java +++ b/src/main/java/li/cil/oc2/common/block/entity/ComputerTileEntity.java @@ -3,7 +3,6 @@ package li.cil.oc2.common.block.entity; import it.unimi.dsi.fastutil.bytes.ByteArrayFIFOQueue; import li.cil.ceres.api.Serialized; import li.cil.oc2.Constants; -import li.cil.oc2.OpenComputers; import li.cil.oc2.api.bus.DeviceBusElement; import li.cil.oc2.api.bus.device.Device; import li.cil.oc2.api.bus.device.vm.VMContext; @@ -13,6 +12,8 @@ import li.cil.oc2.common.bus.AbstractDeviceBusController; import li.cil.oc2.common.bus.TileEntityDeviceBusElement; import li.cil.oc2.common.capabilities.Capabilities; import li.cil.oc2.common.container.DeviceItemStackHandler; +import li.cil.oc2.common.init.Items; +import li.cil.oc2.common.init.TileEntities; import li.cil.oc2.common.network.Network; import li.cil.oc2.common.network.message.ComputerBusStateMessage; import li.cil.oc2.common.network.message.ComputerRunStateMessage; @@ -102,7 +103,7 @@ public final class ComputerTileEntity extends AbstractTileEntity implements ITic /////////////////////////////////////////////////////////////////// public ComputerTileEntity() { - super(OpenComputers.COMPUTER_TILE_ENTITY.get()); + super(TileEntities.COMPUTER_TILE_ENTITY.get()); busElement = new BusElement(); busController = new BusController(); @@ -121,11 +122,11 @@ public final class ComputerTileEntity extends AbstractTileEntity implements ITic setCapabilityIfAbsent(Capabilities.DEVICE_BUS_ELEMENT_CAPABILITY, busElement); setCapabilityIfAbsent(Capabilities.DEVICE_BUS_CONTROLLER_CAPABILITY, busController); - itemHandler.setStackInSlot(0, new ItemStack(OpenComputers.RAM_8M_ITEM.get())); - itemHandler.setStackInSlot(1, new ItemStack(OpenComputers.RAM_8M_ITEM.get())); - itemHandler.setStackInSlot(2, new ItemStack(OpenComputers.RAM_8M_ITEM.get())); + itemHandler.setStackInSlot(0, new ItemStack(Items.RAM_8M_ITEM.get())); + itemHandler.setStackInSlot(1, new ItemStack(Items.RAM_8M_ITEM.get())); + itemHandler.setStackInSlot(2, new ItemStack(Items.RAM_8M_ITEM.get())); - final ItemStack hdd = new ItemStack(OpenComputers.HDD_ITEM.get()); + final ItemStack hdd = new ItemStack(Items.HDD_ITEM.get()); final CompoundNBT hddInfo = new CompoundNBT(); hddInfo.putString(Constants.HDD_BASE_NBT_TAG_NAME, "linux"); hdd.setTagInfo(Constants.HDD_INFO_NBT_TAG_NAME, hddInfo); diff --git a/src/main/java/li/cil/oc2/common/block/entity/RedstoneInterfaceTileEntity.java b/src/main/java/li/cil/oc2/common/block/entity/RedstoneInterfaceTileEntity.java index 0fd82973..5fdec17d 100644 --- a/src/main/java/li/cil/oc2/common/block/entity/RedstoneInterfaceTileEntity.java +++ b/src/main/java/li/cil/oc2/common/block/entity/RedstoneInterfaceTileEntity.java @@ -1,10 +1,10 @@ package li.cil.oc2.common.block.entity; -import li.cil.oc2.OpenComputers; import li.cil.oc2.api.bus.device.object.Callback; import li.cil.oc2.api.bus.device.object.DocumentedDevice; import li.cil.oc2.api.bus.device.object.NamedDevice; import li.cil.oc2.api.bus.device.object.Parameter; +import li.cil.oc2.common.init.TileEntities; import li.cil.oc2.common.util.HorizontalBlockUtils; import net.minecraft.block.BlockState; import net.minecraft.nbt.CompoundNBT; @@ -36,7 +36,7 @@ public class RedstoneInterfaceTileEntity extends TileEntity implements NamedDevi /////////////////////////////////////////////////////////////////// public RedstoneInterfaceTileEntity() { - super(OpenComputers.REDSTONE_INTERFACE_TILE_ENTITY.get()); + super(TileEntities.REDSTONE_INTERFACE_TILE_ENTITY.get()); } @Override diff --git a/src/main/java/li/cil/oc2/common/container/ComputerContainer.java b/src/main/java/li/cil/oc2/common/container/ComputerContainer.java index dd09c3ea..fe7e585f 100644 --- a/src/main/java/li/cil/oc2/common/container/ComputerContainer.java +++ b/src/main/java/li/cil/oc2/common/container/ComputerContainer.java @@ -1,7 +1,8 @@ package li.cil.oc2.common.container; -import li.cil.oc2.OpenComputers; import li.cil.oc2.common.block.entity.ComputerTileEntity; +import li.cil.oc2.common.init.Blocks; +import li.cil.oc2.common.init.Containers; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.Container; @@ -31,7 +32,7 @@ public final class ComputerContainer extends Container { /////////////////////////////////////////////////////////////////// public ComputerContainer(final int id, @Nullable final ComputerTileEntity tileEntity) { - super(OpenComputers.COMPUTER_CONTAINER.get(), id); + super(Containers.COMPUTER_CONTAINER.get(), id); this.tileEntity = tileEntity; } @@ -40,6 +41,6 @@ public final class ComputerContainer extends Container { if (tileEntity == null) return false; final World world = tileEntity.getWorld(); if (world == null) return false; - return isWithinUsableDistance(IWorldPosCallable.of(world, tileEntity.getPos()), player, OpenComputers.COMPUTER_BLOCK.get()); + return isWithinUsableDistance(IWorldPosCallable.of(world, tileEntity.getPos()), player, Blocks.COMPUTER_BLOCK.get()); } } diff --git a/src/main/java/li/cil/oc2/common/init/Blocks.java b/src/main/java/li/cil/oc2/common/init/Blocks.java new file mode 100644 index 00000000..1b4e1646 --- /dev/null +++ b/src/main/java/li/cil/oc2/common/init/Blocks.java @@ -0,0 +1,30 @@ +package li.cil.oc2.common.init; + +import li.cil.oc2.Constants; +import li.cil.oc2.api.API; +import li.cil.oc2.common.block.BusCableBlock; +import li.cil.oc2.common.block.ComputerBlock; +import li.cil.oc2.common.block.RedstoneInterfaceBlock; +import li.cil.oc2.common.block.ScreenBlock; +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 BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, API.MOD_ID); + + /////////////////////////////////////////////////////////////////// + + public static final RegistryObject COMPUTER_BLOCK = BLOCKS.register(Constants.COMPUTER_BLOCK_NAME, ComputerBlock::new); + public static final RegistryObject BUS_CABLE_BLOCK = BLOCKS.register(Constants.BUS_CABLE_BLOCK_NAME, BusCableBlock::new); + public static final RegistryObject REDSTONE_INTERFACE_BLOCK = BLOCKS.register(Constants.REDSTONE_INTERFACE_BLOCK_NAME, RedstoneInterfaceBlock::new); + public static final RegistryObject SCREEN_BLOCK = BLOCKS.register(Constants.SCREEN_BLOCK_NAME, ScreenBlock::new); + + /////////////////////////////////////////////////////////////////// + + public static void initialize() { + BLOCKS.register(FMLJavaModLoadingContext.get().getModEventBus()); + } +} diff --git a/src/main/java/li/cil/oc2/common/init/Containers.java b/src/main/java/li/cil/oc2/common/init/Containers.java new file mode 100644 index 00000000..ace15100 --- /dev/null +++ b/src/main/java/li/cil/oc2/common/init/Containers.java @@ -0,0 +1,25 @@ +package li.cil.oc2.common.init; + +import li.cil.oc2.Constants; +import li.cil.oc2.api.API; +import li.cil.oc2.common.container.ComputerContainer; +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> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, API.MOD_ID); + + /////////////////////////////////////////////////////////////////// + + public static final RegistryObject> COMPUTER_CONTAINER = CONTAINERS.register(Constants.COMPUTER_BLOCK_NAME, () -> IForgeContainerType.create(ComputerContainer::create)); + + /////////////////////////////////////////////////////////////////// + + public static void initialize() { + CONTAINERS.register(FMLJavaModLoadingContext.get().getModEventBus()); + } +} diff --git a/src/main/java/li/cil/oc2/common/init/Items.java b/src/main/java/li/cil/oc2/common/init/Items.java new file mode 100644 index 00000000..d84d479b --- /dev/null +++ b/src/main/java/li/cil/oc2/common/init/Items.java @@ -0,0 +1,48 @@ +package li.cil.oc2.common.init; + +import li.cil.oc2.Constants; +import li.cil.oc2.api.API; +import li.cil.oc2.common.item.ItemGroup; +import net.minecraft.block.Block; +import net.minecraft.item.BlockItem; +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; + +public final class Items { + private static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, API.MOD_ID); + + /////////////////////////////////////////////////////////////////// + + public static final RegistryObject COMPUTER_ITEM = register(Constants.COMPUTER_BLOCK_NAME, Blocks.COMPUTER_BLOCK); + public static final RegistryObject BUS_CABLE_ITEM = register(Constants.BUS_CABLE_BLOCK_NAME, Blocks.BUS_CABLE_BLOCK); + public static final RegistryObject REDSTONE_INTERFACE_ITEM = register(Constants.REDSTONE_INTERFACE_BLOCK_NAME, Blocks.REDSTONE_INTERFACE_BLOCK); + public static final RegistryObject SCREEN_ITEM = register(Constants.SCREEN_BLOCK_NAME, Blocks.SCREEN_BLOCK); + + /////////////////////////////////////////////////////////////////// + + public static final RegistryObject HDD_ITEM = register(Constants.HDD_ITEM_NAME); + public static final RegistryObject RAM_8M_ITEM = register(Constants.RAM_ITEM_NAME); + + /////////////////////////////////////////////////////////////////// + + public static void initialize() { + ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus()); + } + + /////////////////////////////////////////////////////////////////// + + private static RegistryObject register(final String name) { + return ITEMS.register(name, () -> new Item(commonProperties())); + } + + private static RegistryObject register(final String name, final RegistryObject block) { + return ITEMS.register(name, () -> new BlockItem(block.get(), commonProperties())); + } + + private static Item.Properties commonProperties() { + return new Item.Properties().group(ItemGroup.COMMON); + } +} diff --git a/src/main/java/li/cil/oc2/common/init/TileEntities.java b/src/main/java/li/cil/oc2/common/init/TileEntities.java new file mode 100644 index 00000000..02fdb841 --- /dev/null +++ b/src/main/java/li/cil/oc2/common/init/TileEntities.java @@ -0,0 +1,38 @@ +package li.cil.oc2.common.init; + +import li.cil.oc2.Constants; +import li.cil.oc2.api.API; +import li.cil.oc2.common.block.entity.BusCableTileEntity; +import li.cil.oc2.common.block.entity.ComputerTileEntity; +import li.cil.oc2.common.block.entity.RedstoneInterfaceTileEntity; +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> TILES = DeferredRegister.create(ForgeRegistries.TILE_ENTITIES, API.MOD_ID); + + /////////////////////////////////////////////////////////////////// + + public static final RegistryObject> REDSTONE_INTERFACE_TILE_ENTITY = register(Constants.REDSTONE_INTERFACE_BLOCK_NAME, Blocks.REDSTONE_INTERFACE_BLOCK, RedstoneInterfaceTileEntity::new); + public static final RegistryObject> BUS_CABLE_TILE_ENTITY = register(Constants.BUS_CABLE_BLOCK_NAME, Blocks.BUS_CABLE_BLOCK, BusCableTileEntity::new); + public static final RegistryObject> COMPUTER_TILE_ENTITY = register(Constants.COMPUTER_BLOCK_NAME, Blocks.COMPUTER_BLOCK, ComputerTileEntity::new); + + /////////////////////////////////////////////////////////////////// + + public static void initialize() { + TileEntities.TILES.register(FMLJavaModLoadingContext.get().getModEventBus()); + } + + /////////////////////////////////////////////////////////////////// + + private static RegistryObject> register(final String name, final RegistryObject block, final Supplier factory) { + return TILES.register(name, () -> TileEntityType.Builder.create(factory, block.get()).build(null)); + } +} diff --git a/src/main/java/li/cil/oc2/common/item/ItemGroup.java b/src/main/java/li/cil/oc2/common/item/ItemGroup.java new file mode 100644 index 00000000..297480b4 --- /dev/null +++ b/src/main/java/li/cil/oc2/common/item/ItemGroup.java @@ -0,0 +1,15 @@ +package li.cil.oc2.common.item; + +import li.cil.oc2.Constants; +import li.cil.oc2.api.API; +import li.cil.oc2.common.init.Items; +import net.minecraft.item.ItemStack; + +public final class ItemGroup { + public static final net.minecraft.item.ItemGroup COMMON = new net.minecraft.item.ItemGroup(API.MOD_ID + "." + Constants.COMMON_ITEM_GROUP_NAME) { + @Override + public ItemStack createIcon() { + return new ItemStack(Items.COMPUTER_ITEM.get()); + } + }; +} diff --git a/src/main/java/li/cil/oc2/data/BlockStates.java b/src/main/java/li/cil/oc2/data/BlockStates.java index cdf9b3aa..55c7d172 100644 --- a/src/main/java/li/cil/oc2/data/BlockStates.java +++ b/src/main/java/li/cil/oc2/data/BlockStates.java @@ -1,9 +1,10 @@ package li.cil.oc2.data; import com.google.common.collect.Maps; -import li.cil.oc2.OpenComputers; import li.cil.oc2.api.API; import li.cil.oc2.common.block.BusCableBlock; +import li.cil.oc2.common.init.Blocks; +import li.cil.oc2.common.init.Items; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.data.DataGenerator; @@ -30,9 +31,9 @@ public class BlockStates extends BlockStateProvider { @Override protected void registerStatesAndModels() { - horizontalBlock(OpenComputers.COMPUTER_BLOCK, OpenComputers.COMPUTER_ITEM); - horizontalBlock(OpenComputers.REDSTONE_INTERFACE_BLOCK, OpenComputers.REDSTONE_INTERFACE_ITEM); - horizontalBlock(OpenComputers.SCREEN_BLOCK, OpenComputers.SCREEN_ITEM); + horizontalBlock(Blocks.COMPUTER_BLOCK, Items.COMPUTER_ITEM); + horizontalBlock(Blocks.REDSTONE_INTERFACE_BLOCK, Items.REDSTONE_INTERFACE_ITEM); + horizontalBlock(Blocks.SCREEN_BLOCK, Items.SCREEN_ITEM); registerCableStates(); } @@ -47,7 +48,7 @@ public class BlockStates extends BlockStateProvider { final ModelFile plugModel = models().getExistingFile(new ResourceLocation(API.MOD_ID, "block/cable_plug")); final ModelFile straightModel = models().getExistingFile(new ResourceLocation(API.MOD_ID, "block/cable_straight")); - final MultiPartBlockStateBuilder builder = getMultipartBuilder(OpenComputers.BUS_CABLE_BLOCK.get()); + final MultiPartBlockStateBuilder builder = getMultipartBuilder(Blocks.BUS_CABLE_BLOCK.get()); // Core element, use straight connections if and only if two opposite ends are // links and there are no other connections. Since there's no "not" condition we @@ -76,7 +77,7 @@ public class BlockStates extends BlockStateProvider { map.put(BusCableBlock.CONNECTION_EAST, BusCableBlock.ConnectionType.LINK); map.put(BusCableBlock.CONNECTION_WEST, BusCableBlock.ConnectionType.LINK); }); - for (final BlockState state : OpenComputers.BUS_CABLE_BLOCK.get().getStateContainer().getValidStates()) { + for (final BlockState state : Blocks.BUS_CABLE_BLOCK.get().getStateContainer().getValidStates()) { final ConfiguredModel.Builder model = builder.part(); final PartBuilder part; if (doesStateMatches(state, straightX)) { @@ -126,7 +127,7 @@ public class BlockStates extends BlockStateProvider { .end(); }); - itemModels().getBuilder(OpenComputers.BUS_CABLE_ITEM.getId().getPath()) + itemModels().getBuilder(Items.BUS_CABLE_ITEM.getId().getPath()) .parent(baseModel); }