1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2025-04-08 19:56:41 +00:00

Register our BEs as entities

Fixes #2141. Hah, I wrote some tests for this in
b03546a158b81a2e69ec636d0ba437f1dd73ad12, but they pass because hoppers
still support vanilla inventories, but turtles don't.

Wish NeoForge registered a fallback for any inventory, like Fabric does,
but there we go.
This commit is contained in:
Jonathan Coates 2025-03-16 16:37:29 +00:00
parent b805a34c2d
commit ffa6eadc26
No known key found for this signature in database
GPG Key ID: B9E431FF07C98D06

View File

@ -54,6 +54,8 @@ import net.neoforged.neoforge.capabilities.Capabilities;
import net.neoforged.neoforge.capabilities.ItemCapability;
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent;
import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent;
import net.neoforged.neoforge.items.wrapper.InvWrapper;
import net.neoforged.neoforge.items.wrapper.SidedInvWrapper;
import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent;
import net.neoforged.neoforge.network.registration.PayloadRegistrar;
import net.neoforged.neoforge.registries.DataPackRegistryEvent;
@ -62,6 +64,7 @@ import net.neoforged.neoforge.registries.RegistryBuilder;
import org.jspecify.annotations.Nullable;
import java.nio.file.Path;
import java.util.List;
import java.util.function.BiFunction;
@Mod(ComputerCraftAPI.MOD_ID)
@ -151,6 +154,21 @@ public final class ComputerCraft {
var media = new ItemComponentImpl<>(event, MediaCapability.get());
ModRegistry.registerMedia(media);
media.registerFallback((stack, ctx) -> MediaProviders.get(stack));
// Register inventories for our block entities.
var unsidedContainers = List.of(
ModRegistry.BlockEntities.TURTLE_NORMAL,
ModRegistry.BlockEntities.TURTLE_ADVANCED,
ModRegistry.BlockEntities.DISK_DRIVE
);
for (var inv : unsidedContainers) {
event.registerBlockEntity(Capabilities.ItemHandler.BLOCK, inv.get(), (be, side) -> new InvWrapper(be));
}
event.registerBlockEntity(
Capabilities.ItemHandler.BLOCK, ModRegistry.BlockEntities.PRINTER.get(),
(be, side) -> side == null ? new InvWrapper(be) : new SidedInvWrapper(be, side)
);
}
private record BlockComponentImpl<T, C extends @Nullable Object>(