diff --git a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java index 586225ed5..7621b848f 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java +++ b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java @@ -1,54 +1,30 @@ package ru.dbotthepony.mc.otm; -import com.mojang.blaze3d.systems.RenderSystem; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.MenuScreens; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.MenuType; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraftforge.client.event.RenderGameOverlayEvent; -import net.minecraftforge.client.gui.ForgeIngameGui; +import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.event.AttachCapabilitiesEvent; import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.event.TickEvent; -import net.minecraftforge.event.entity.living.LivingDeathEvent; -import net.minecraftforge.event.entity.living.LivingEvent; -import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.InterModComms; import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent; +import net.minecraftforge.fml.loading.FMLEnvironment; import net.minecraftforge.fmlserverevents.FMLServerStartingEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import ru.dbotthepony.mc.otm.block.BlockAndroidStation; -import ru.dbotthepony.mc.otm.block.entity.BlockEntityAndroidStation; import ru.dbotthepony.mc.otm.capability.AndroidCapability; import ru.dbotthepony.mc.otm.capability.AndroidCapabilityPlayer; -import ru.dbotthepony.mc.otm.capability.IAndroidCapability; import ru.dbotthepony.mc.otm.capability.MatteryCapability; import ru.dbotthepony.mc.otm.client.AndroidGui; -import ru.dbotthepony.mc.otm.menu.AndroidStationMenu; import ru.dbotthepony.mc.otm.network.MatteryNetwork; -import ru.dbotthepony.mc.otm.screen.AndroidStationScreen; -import java.math.BigDecimal; -import java.util.Optional; import java.util.stream.Collectors; // The value here should match an entry in the META-INF/mods.toml file @@ -58,21 +34,12 @@ public class OverdriveThatMatters { public static final String MOD_ID = "overdrive_that_matters"; public static final Logger LOGGER = LogManager.getLogger(); - public static Block ANDROID_STATION = new BlockAndroidStation(); - public static BlockEntityType.Builder ANDROID_STATION_BUILDER = BlockEntityType.Builder.of(BlockEntityAndroidStation::new, ANDROID_STATION); - public static BlockEntityType ANDROID_STATION_FACTORY = null; - public static Item ANDROID_STATION_ITEM = new BlockItem(ANDROID_STATION, new Item.Properties().stacksTo(64).tab(CreativeModeTab.TAB_MISC)).setRegistryName(BlockAndroidStation.REGISTRY_NAME); - public static MenuType ANDROID_STATION_MENU_TYPE = new MenuType<>(AndroidStationMenu::new); - - public static AndroidGui ANDROID_GUI = new AndroidGui(); - - static { - ANDROID_STATION_MENU_TYPE.setRegistryName(BlockAndroidStation.REGISTRY_NAME); - } + public static AndroidGui ANDROID_GUI; public OverdriveThatMatters() { // Register the setup method for modloading FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup); + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setupClient); // Register the enqueueIMC method for modloading FMLJavaModLoadingContext.get().getModEventBus().addListener(this::enqueueIMC); // Register the processIMC method for modloading @@ -82,13 +49,23 @@ public class OverdriveThatMatters { MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(AndroidCapabilityPlayer.class); MinecraftForge.EVENT_BUS.register(AndroidCapability.class); - MinecraftForge.EVENT_BUS.register(ANDROID_GUI); + + // LOGGER.info("Registered event handlers"); } private void setup(final FMLCommonSetupEvent event) { // some preinit code MatteryCapability.register(); + // LOGGER.info("Registered capabilities"); MatteryNetwork.register(); + // LOGGER.info("Registered network"); + } + + private void setupClient(final FMLClientSetupEvent event) { + ANDROID_GUI = new AndroidGui(); + MinecraftForge.EVENT_BUS.register(ANDROID_GUI); + + Registry.Menus.registerScreens(event); } private void enqueueIMC(final InterModEnqueueEvent event) { @@ -109,31 +86,26 @@ public class OverdriveThatMatters { // do something when the server starts } - // You can use EventBusSubscriber to automatically subscribe events on the contained class (this is subscribing to the MOD - // Event bus for receiving Registry Events) - @Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD) - public static class RegistryEvents { + @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) + public static class RegistryEventSubscriber { @SubscribeEvent - public static void onBlocksRegistry(final RegistryEvent.Register blockRegistryEvent) { - blockRegistryEvent.getRegistry().register(ANDROID_STATION); + public static void blocks(final RegistryEvent.Register event) { + Registry.Blocks.register(event); } @SubscribeEvent - public static void onItemRegistry(final RegistryEvent.Register blockRegistryEvent) { - blockRegistryEvent.getRegistry().register(ANDROID_STATION_ITEM); + public static void items(final RegistryEvent.Register event) { + Registry.Items.register(event); } @SubscribeEvent - public static void onBlockEntityRegistry(final RegistryEvent.Register> blockRegistryEvent) { - ANDROID_STATION_FACTORY = ANDROID_STATION_BUILDER.build(null); - ANDROID_STATION_FACTORY.setRegistryName(BlockAndroidStation.REGISTRY_NAME); - blockRegistryEvent.getRegistry().register(ANDROID_STATION_FACTORY); + public static void tiles(final RegistryEvent.Register> event) { + Registry.BlockEntities.register(event); } @SubscribeEvent - public static void onMenuTypeRegistry(final RegistryEvent.Register> blockRegistryEvent) { - blockRegistryEvent.getRegistry().register(ANDROID_STATION_MENU_TYPE); - MenuScreens.register(ANDROID_STATION_MENU_TYPE, AndroidStationScreen::new); + public static void menus(final RegistryEvent.Register> event) { + Registry.Menus.register(event); } } } diff --git a/src/main/java/ru/dbotthepony/mc/otm/Registry.java b/src/main/java/ru/dbotthepony/mc/otm/Registry.java new file mode 100644 index 000000000..ead3bafb5 --- /dev/null +++ b/src/main/java/ru/dbotthepony/mc/otm/Registry.java @@ -0,0 +1,81 @@ +package ru.dbotthepony.mc.otm; + +import net.minecraft.client.gui.screens.MenuScreens; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.EventPriority; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import ru.dbotthepony.mc.otm.block.BlockAndroidStation; +import ru.dbotthepony.mc.otm.block.entity.BlockEntityAndroidStation; +import ru.dbotthepony.mc.otm.menu.AndroidStationMenu; +import ru.dbotthepony.mc.otm.screen.AndroidStationScreen; + +public class Registry { + public static class Names { + public static final ResourceLocation ANDROID_STATION = new ResourceLocation(OverdriveThatMatters.MOD_ID, "android_station"); + } + + public static class Blocks { + public static final Block ANDROID_STATION = new BlockAndroidStation(); + + public static void register(final RegistryEvent.Register event) { + event.getRegistry().register(ANDROID_STATION); + + // OverdriveThatMatters.LOGGER.info("Registered blocks"); + } + } + + public static class Items { + public static Item ANDROID_STATION = new BlockItem(Blocks.ANDROID_STATION, new Item.Properties().stacksTo(64).tab(CreativeModeTab.TAB_MISC)).setRegistryName(Names.ANDROID_STATION); + + public static void register(final RegistryEvent.Register event) { + event.getRegistry().register(ANDROID_STATION); + + // OverdriveThatMatters.LOGGER.info("Registered items"); + } + } + + public static class BlockEntities { + public static BlockEntityType.Builder ANDROID_STATION_BUILDER = BlockEntityType.Builder.of(BlockEntityAndroidStation::new, Blocks.ANDROID_STATION); + public static BlockEntityType ANDROID_STATION = ANDROID_STATION_BUILDER.build(null); + + static { + ANDROID_STATION.setRegistryName(Names.ANDROID_STATION); + } + + public static void register(final RegistryEvent.Register> event) { + event.getRegistry().register(ANDROID_STATION); + + // OverdriveThatMatters.LOGGER.info("Registered block entities"); + } + } + + public static class Menus { + public static final MenuType ANDROID_STATION = new net.minecraft.world.inventory.MenuType<>(AndroidStationMenu::new); + + static { + ANDROID_STATION.setRegistryName(Names.ANDROID_STATION); + } + + public static void register(final RegistryEvent.Register> event) { + event.getRegistry().register(ANDROID_STATION); + + // OverdriveThatMatters.LOGGER.info("Registered menus"); + } + + public static void registerScreens(final FMLClientSetupEvent event) { + MenuScreens.register(ANDROID_STATION, AndroidStationScreen::new); + + // OverdriveThatMatters.LOGGER.info("Registered screens"); + } + } +} diff --git a/src/main/java/ru/dbotthepony/mc/otm/block/BlockAndroidStation.java b/src/main/java/ru/dbotthepony/mc/otm/block/BlockAndroidStation.java index f086a944f..32ff01598 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/block/BlockAndroidStation.java +++ b/src/main/java/ru/dbotthepony/mc/otm/block/BlockAndroidStation.java @@ -1,7 +1,6 @@ package ru.dbotthepony.mc.otm.block; import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.EntityBlock; @@ -12,18 +11,17 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.dbotthepony.mc.otm.OverdriveThatMatters; +import ru.dbotthepony.mc.otm.Registry; import ru.dbotthepony.mc.otm.block.entity.BlockEntityAndroidStation; import javax.annotation.Nullable; public class BlockAndroidStation extends BlockMatteryMachineBase implements EntityBlock { - public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(OverdriveThatMatters.MOD_ID, "android_station"); private final VoxelShape SHAPE = Shapes.box(0, 0, 0, 1, 0.5, 1); public BlockAndroidStation() { super(); - this.setRegistryName(REGISTRY_NAME); + this.setRegistryName(Registry.Names.ANDROID_STATION); } @Override @@ -40,6 +38,6 @@ public class BlockAndroidStation extends BlockMatteryMachineBase implements Enti @Nullable @Override public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType type) { - return level.isClientSide || type != OverdriveThatMatters.ANDROID_STATION_FACTORY ? null : BlockEntityAndroidStation::tick; + return level.isClientSide || type != Registry.BlockEntities.ANDROID_STATION ? null : BlockEntityAndroidStation::tick; } } diff --git a/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityAndroidStation.java b/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityAndroidStation.java index 0eef4e3f9..f5f47ce5c 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityAndroidStation.java +++ b/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityAndroidStation.java @@ -1,10 +1,6 @@ package ru.dbotthepony.mc.otm.block.entity; import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.StringTag; -import net.minecraft.network.chat.Component; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Inventory; @@ -14,16 +10,13 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; -import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.CapabilityEnergy; -import ru.dbotthepony.mc.otm.OverdriveThatMatters; +import ru.dbotthepony.mc.otm.Registry; import ru.dbotthepony.mc.otm.capability.IAndroidCapability; import ru.dbotthepony.mc.otm.capability.MatteryCapability; import ru.dbotthepony.mc.otm.capability.MatteryMachineEnergyStorage; import ru.dbotthepony.mc.otm.menu.AndroidStationMenu; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.math.BigDecimal; import java.util.List; @@ -36,7 +29,7 @@ public class BlockEntityAndroidStation extends BlockEntityMatteryPoweredMachine } public BlockEntityAndroidStation(BlockPos p_155229_, BlockState p_155230_) { - super(OverdriveThatMatters.ANDROID_STATION_FACTORY, p_155229_, p_155230_); + super(Registry.BlockEntities.ANDROID_STATION, p_155229_, p_155230_); energy = new MatteryMachineEnergyStorage(MatteryMachineEnergyStorage.MachineType.WORKER, new BigDecimal(128_000), new BigDecimal(4096), new BigDecimal(256)); energy_resolver = LazyOptional.of(() -> energy); } diff --git a/src/main/java/ru/dbotthepony/mc/otm/menu/AndroidStationMenu.java b/src/main/java/ru/dbotthepony/mc/otm/menu/AndroidStationMenu.java index a1a61045f..44cf7e75a 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/menu/AndroidStationMenu.java +++ b/src/main/java/ru/dbotthepony/mc/otm/menu/AndroidStationMenu.java @@ -1,22 +1,15 @@ package ru.dbotthepony.mc.otm.menu; -import net.minecraft.core.BlockPos; -import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.CapabilityEnergy; -import net.minecraftforge.energy.IEnergyStorage; -import ru.dbotthepony.mc.otm.OverdriveThatMatters; +import ru.dbotthepony.mc.otm.Registry; import ru.dbotthepony.mc.otm.block.entity.BlockEntityAndroidStation; import ru.dbotthepony.mc.otm.capability.IAndroidCapability; -import ru.dbotthepony.mc.otm.capability.IMatteryEnergyStorage; import ru.dbotthepony.mc.otm.capability.MatteryCapability; -import ru.dbotthepony.mc.otm.menu.data.BigDecimalDataContainer; import ru.dbotthepony.mc.otm.menu.slot.BatterySlot; import javax.annotation.Nullable; @@ -68,7 +61,7 @@ public class AndroidStationMenu extends PoweredMachineMenu { @Nullable BlockEntityAndroidStation tile ) { super( - OverdriveThatMatters.ANDROID_STATION_MENU_TYPE, + Registry.Menus.ANDROID_STATION, containerID, inventory, tile);