类net.minecraft.inventory.container.ContainerType源码实例Demo

下面列出了怎么用net.minecraft.inventory.container.ContainerType的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: CodeChickenLib   文件: ClientPacketHandler.java
@SuppressWarnings ("unchecked")
private void handleOpenContainer(PacketCustom packet, Minecraft mc) {
    ContainerType<?> rawType = packet.readRegistryIdUnsafe(ForgeRegistries.CONTAINERS);
    int windowId = packet.readVarInt();
    ITextComponent name = packet.readTextComponent();
    if (rawType instanceof ICCLContainerType<?>) {
        ICCLContainerType<?> type = (ICCLContainerType<?>) rawType;
        ScreenManager.getScreenFactory(rawType, mc, windowId, name)//
                .map(e -> (ScreenManager.IScreenFactory<Container, ?>) e)//
                .ifPresent(screenFactory -> {
                    Container container = type.create(windowId, Minecraft.getInstance().player.inventory, packet);
                    Screen screen = screenFactory.create(container, mc.player.inventory, name);
                    mc.player.openContainer = ((IHasContainer<?>) screen).getContainer();
                    mc.displayGuiScreen(screen);
                });

    }
}
 
源代码2 项目: CodeChickenLib   文件: ServerUtils.java
public static void openContainer(ServerPlayerEntity player, INamedContainerProvider containerProvider, Consumer<MCDataOutput> packetConsumer) {
    if (player.world.isRemote()) {
        return;
    }
    player.closeContainer();
    player.getNextWindowId();
    int containerId = player.currentWindowId;

    Container container = containerProvider.createMenu(containerId, player.inventory, player);
    ContainerType<?> type = container.getType();

    PacketCustom packet = new PacketCustom(CCLNetwork.NET_CHANNEL, C_OPEN_CONTAINER);
    packet.writeRegistryIdUnsafe(ForgeRegistries.CONTAINERS, type);
    packet.writeVarInt(containerId);
    packet.writeTextComponent(containerProvider.getDisplayName());
    packetConsumer.accept(packet);

    packet.sendToPlayer(player);
    player.openContainer = container;
    player.openContainer.addListener(player);
    MinecraftForge.EVENT_BUS.post(new PlayerContainerEvent.Open(player, container));
}
 
源代码3 项目: Survivalist   文件: SurvivalistMod.java
public SurvivalistMod()
{
    instance = this;

    ModLoadingContext modLoadingContext = ModLoadingContext.get();
    IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();

    HELPER.subscribeEvents(modEventBus);
    SurvivalistBlocks.HELPER.subscribeEvents(modEventBus);
    SurvivalistItems.HELPER.subscribeEvents(modEventBus);
    SurvivalistTileEntityTypes.HELPER.subscribeEvents(modEventBus);

    modEventBus.addGenericListener(ContainerType.class, this::registerContainers);
    modEventBus.addGenericListener(IRecipeSerializer.class, this::registerRecipeSerializers);
    modEventBus.addGenericListener(GlobalLootModifierSerializer.class, this::lootModifiers);
    modEventBus.addListener(this::commonSetup);
    modEventBus.addListener(this::clientSetup);
    modEventBus.addListener(this::gatherData);

    MinecraftForge.EVENT_BUS.addListener(this::serverStarting);

    modLoadingContext.registerConfig(ModConfig.Type.SERVER, ConfigManager.SERVER_SPEC);
}
 
源代码4 项目: Survivalist   文件: SurvivalistMod.java
private void registerContainers(RegistryEvent.Register<ContainerType<?>> event)
{
    event.getRegistry().registerAll(
            withName(new ContainerType<>(DryingRackContainer::new), "rack"),
            withName(new ContainerType<>(SawmillContainer::new), "sawmill")
    );
}
 
源代码5 项目: EnderStorage   文件: ModContent.java
@SubscribeEvent
public static void onRegisterContainers(RegistryEvent.Register<ContainerType<?>> event) {
    IForgeRegistry<ContainerType<?>> registry = event.getRegistry();
    registry.register(ICCLContainerType.create(ContainerEnderItemStorage::new).setRegistryName("item_storage"));
}
 
源代码6 项目: CodeChickenLib   文件: ICCLContainerType.java
static <T extends Container> ContainerType<T> create(ICCLContainerFactory<T> factory) {
    return new CCLContainerType<>(factory);
}