mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-10-18 15:37:38 +00:00
Register our BEs as entities
Fixes #2141. Hah, I wrote some tests for this in
b03546a158
, 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:
@@ -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>(
|
||||
|
Reference in New Issue
Block a user