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:
parent
b805a34c2d
commit
ffa6eadc26
@ -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>(
|
||||
|
Loading…
x
Reference in New Issue
Block a user