Search in sources :

Example 6 with AbstractCompatibilityModule

use of top.theillusivec4.polymorph.common.integration.AbstractCompatibilityModule in project Polymorph by TheIllusiveC4.

the class PolymorphNetwork method handlePlayerSelect.

private static void handlePlayerSelect(MinecraftServer pServer, ServerPlayerEntity pPlayer, ServerPlayNetworkHandler pHandler, PacketByteBuf pBuf, PacketSender pResponseSender) {
    Identifier identifier = pBuf.readIdentifier();
    pServer.execute(() -> {
        ScreenHandler screenHandler = pPlayer.currentScreenHandler;
        pPlayer.world.getRecipeManager().get(identifier).ifPresent(recipe -> {
            PolymorphApi.common().getRecipeData(pPlayer).ifPresent(recipeData -> recipeData.selectRecipe(recipe));
            for (AbstractCompatibilityModule integration : PolymorphIntegrations.get()) {
                if (integration.selectRecipe(screenHandler, recipe)) {
                    return;
                }
            }
            screenHandler.onContentChanged(pPlayer.getInventory());
            if (screenHandler instanceof ForgingScreenHandler) {
                ((ForgingScreenHandler) screenHandler).updateResult();
            }
        });
    });
}
Also used : Identifier(net.minecraft.util.Identifier) ForgingScreenHandler(net.minecraft.screen.ForgingScreenHandler) ForgingScreenHandler(net.minecraft.screen.ForgingScreenHandler) ScreenHandler(net.minecraft.screen.ScreenHandler) AbstractCompatibilityModule(top.theillusivec4.polymorph.common.integration.AbstractCompatibilityModule)

Example 7 with AbstractCompatibilityModule

use of top.theillusivec4.polymorph.common.integration.AbstractCompatibilityModule in project Polymorph by TheIllusiveC4.

the class CPacketPersistentRecipeSelection method handle.

public static void handle(CPacketPersistentRecipeSelection pPacket, Supplier<NetworkEvent.Context> pContext) {
    pContext.get().enqueueWork(() -> {
        ServerPlayer sender = pContext.get().getSender();
        if (sender != null) {
            Level world = sender.getCommandSenderWorld();
            Optional<? extends Recipe<?>> maybeRecipe = world.getRecipeManager().byKey(pPacket.recipe);
            maybeRecipe.ifPresent(recipe -> {
                AbstractContainerMenu container = sender.containerMenu;
                PolymorphApi.common().getRecipeDataFromTileEntity(container).ifPresent(recipeData -> {
                    recipeData.selectRecipe(recipe);
                    for (AbstractCompatibilityModule integration : PolymorphIntegrations.get()) {
                        if (integration.selectRecipe(recipeData.getOwner(), recipe) || integration.selectRecipe(container, recipe)) {
                            return;
                        }
                    }
                });
            });
        }
    });
    pContext.get().setPacketHandled(true);
}
Also used : AbstractContainerMenu(net.minecraft.world.inventory.AbstractContainerMenu) ServerPlayer(net.minecraft.server.level.ServerPlayer) Level(net.minecraft.world.level.Level) AbstractCompatibilityModule(top.theillusivec4.polymorph.common.integration.AbstractCompatibilityModule)

Aggregations

AbstractCompatibilityModule (top.theillusivec4.polymorph.common.integration.AbstractCompatibilityModule)7 ScreenHandler (net.minecraft.screen.ScreenHandler)4 Identifier (net.minecraft.util.Identifier)4 ForgingScreenHandler (net.minecraft.screen.ForgingScreenHandler)3 ServerPlayer (net.minecraft.server.level.ServerPlayer)3 AbstractContainerMenu (net.minecraft.world.inventory.AbstractContainerMenu)3 World (net.minecraft.world.World)2 Level (net.minecraft.world.level.Level)2 SortedSet (java.util.SortedSet)1 ItemCombinerMenu (net.minecraft.world.inventory.ItemCombinerMenu)1 PolymorphCommon (top.theillusivec4.polymorph.api.common.base.PolymorphCommon)1 PolymorphPacketDistributor (top.theillusivec4.polymorph.api.common.base.PolymorphPacketDistributor)1