From b833fd1ee57fcf1681ba59aced054a9c991a2e54 Mon Sep 17 00:00:00 2001 From: TheMCLoveMan Date: Tue, 9 Jan 2024 01:18:04 +0100 Subject: [PATCH] bring back Capabilities --- .../uselessmod/setup/CommonSetup.java | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/themcbrothers/uselessmod/setup/CommonSetup.java b/src/main/java/net/themcbrothers/uselessmod/setup/CommonSetup.java index 04c2af09..a8bf4031 100644 --- a/src/main/java/net/themcbrothers/uselessmod/setup/CommonSetup.java +++ b/src/main/java/net/themcbrothers/uselessmod/setup/CommonSetup.java @@ -1,5 +1,6 @@ package net.themcbrothers.uselessmod.setup; +import net.minecraft.core.Direction; import net.minecraft.core.Holder; import net.minecraft.resources.ResourceKey; import net.minecraft.stats.Stats; @@ -18,21 +19,23 @@ import net.neoforged.fml.ModLoadingContext; import net.neoforged.fml.config.ModConfig; import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; import net.neoforged.neoforge.common.BiomeManager; import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.event.entity.EntityAttributeCreationEvent; +import net.neoforged.neoforge.items.wrapper.SidedInvWrapper; import net.themcbrothers.lib.util.Version; import net.themcbrothers.uselessmod.UselessMod; import net.themcbrothers.uselessmod.api.LampRegistry; import net.themcbrothers.uselessmod.compat.VanillaCompatibility; import net.themcbrothers.uselessmod.config.ClientConfig; import net.themcbrothers.uselessmod.config.ServerConfig; -import net.themcbrothers.uselessmod.init.ModBlocks; -import net.themcbrothers.uselessmod.init.ModEntityTypes; -import net.themcbrothers.uselessmod.init.Registration; +import net.themcbrothers.uselessmod.init.*; import net.themcbrothers.uselessmod.network.UselessPacketHandler; import net.themcbrothers.uselessmod.util.RecipeHelper; import net.themcbrothers.uselessmod.util.WallClosetRecipeManager; +import net.themcbrothers.uselessmod.world.item.BucketWithPaintItem; import net.themcbrothers.uselessmod.world.level.biome.UselessBiomes; import org.jetbrains.annotations.Nullable; @@ -44,6 +47,7 @@ public CommonSetup(IEventBus bus, ModContainer modContainer) { Registration.register(bus); bus.addListener(this::setup); bus.addListener(this::entityAttributes); + bus.addListener(this::registerCapabilities); NeoForge.EVENT_BUS.register(new RecipeHelper()); NeoForge.EVENT_BUS.register(new WallClosetRecipeManager()); @@ -109,6 +113,23 @@ private void entityAttributes(final EntityAttributeCreationEvent event) { event.put(ModEntityTypes.USELESS_SKELETON.get(), AbstractSkeleton.createAttributes().build()); } + private void registerCapabilities(final RegisterCapabilitiesEvent event) { + // Blocks + event.registerBlockEntity(Capabilities.ItemHandler.BLOCK, ModBlockEntityTypes.COFFEE_MACHINE.get(), SidedInvWrapper::new); + event.registerBlockEntity(Capabilities.FluidHandler.BLOCK, ModBlockEntityTypes.COFFEE_MACHINE.get(), (blockEntity, side) -> blockEntity.tankHandler); + event.registerBlockEntity(Capabilities.EnergyStorage.BLOCK, ModBlockEntityTypes.COFFEE_MACHINE.get(), (blockEntity, side) -> blockEntity.energyStorage); + + event.registerBlockEntity(Capabilities.ItemHandler.BLOCK, ModBlockEntityTypes.PAINT_BUCKET.get(), (blockEntity, side) -> blockEntity.stackHandler); + event.registerBlockEntity(Capabilities.FluidHandler.BLOCK, ModBlockEntityTypes.PAINT_BUCKET.get(), (blockEntity, side) -> side == null || side == Direction.UP ? blockEntity.colorTank : null); + + event.registerBlock(Capabilities.ItemHandler.BLOCK, (level, pos, state, blockEntity, context) -> level.getCapability(Capabilities.ItemHandler.BLOCK, pos.above(), context), ModBlocks.MACHINE_SUPPLIER.get()); + event.registerBlock(Capabilities.FluidHandler.BLOCK, (level, pos, state, blockEntity, context) -> level.getCapability(Capabilities.FluidHandler.BLOCK, pos.above(), context), ModBlocks.MACHINE_SUPPLIER.get()); + event.registerBlock(Capabilities.EnergyStorage.BLOCK, (level, pos, state, blockEntity, context) -> level.getCapability(Capabilities.EnergyStorage.BLOCK, pos.above(), context), ModBlocks.MACHINE_SUPPLIER.get()); + + // Items + event.registerItem(Capabilities.FluidHandler.ITEM, (container, context) -> new BucketWithPaintItem.PaintFluidBucketWrapper(container), ModItems.BUCKET_PAINT); + } + public @Nullable Player getLocalPlayer() { return null; }