修正处理配方书签的空白样板消耗以及返还逻辑

This commit is contained in:
GaLi 2026-03-03 21:21:51 +08:00
parent c9cfb07023
commit 2d903ff35b
5 changed files with 42 additions and 7 deletions

View File

@ -222,7 +222,6 @@ public final class CtrlQPatternKeyHandler {
isAllowSubstitutes, isAllowSubstitutes,
isFluidSubstitutes isFluidSubstitutes
)); ));
PacketDistributor.sendToServer(RequestProvidersListC2SPacket.INSTANCE);
} catch (Throwable ignored) { } catch (Throwable ignored) {
} }
} }

View File

@ -1,5 +1,6 @@
package com.extendedae_plus.client.screen; package com.extendedae_plus.client.screen;
import com.extendedae_plus.network.CancelPendingPatternC2SPacket;
import com.extendedae_plus.network.UploadEncodedPatternToProviderC2SPacket; import com.extendedae_plus.network.UploadEncodedPatternToProviderC2SPacket;
import com.extendedae_plus.util.uploadPattern.ExtendedAEPatternUploadUtil; import com.extendedae_plus.util.uploadPattern.ExtendedAEPatternUploadUtil;
import com.google.gson.*; import com.google.gson.*;
@ -9,6 +10,7 @@ import net.minecraft.client.gui.components.EditBox;
import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.neoforged.fml.loading.FMLPaths; import net.neoforged.fml.loading.FMLPaths;
import net.neoforged.neoforge.network.PacketDistributor;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
@ -252,6 +254,7 @@ public class ProviderSelectScreen extends Screen {
@Override @Override
public void onClose() { public void onClose() {
PacketDistributor.sendToServer(CancelPendingPatternC2SPacket.INSTANCE);
Minecraft.getInstance().setScreen(this.parent); Minecraft.getInstance().setScreen(this.parent);
} }

View File

@ -24,6 +24,7 @@ public class ModNetwork {
registrar.playToServer(UploadInventoryPatternToProviderC2SPacket.TYPE, UploadInventoryPatternToProviderC2SPacket.STREAM_CODEC, UploadInventoryPatternToProviderC2SPacket::handle); registrar.playToServer(UploadInventoryPatternToProviderC2SPacket.TYPE, UploadInventoryPatternToProviderC2SPacket.STREAM_CODEC, UploadInventoryPatternToProviderC2SPacket::handle);
registrar.playToServer(CreateCtrlQPatternC2SPacket.TYPE, CreateCtrlQPatternC2SPacket.STREAM_CODEC, CreateCtrlQPatternC2SPacket::handle); registrar.playToServer(CreateCtrlQPatternC2SPacket.TYPE, CreateCtrlQPatternC2SPacket.STREAM_CODEC, CreateCtrlQPatternC2SPacket::handle);
registrar.playToServer(CreateAndUploadPatternC2SPacket.TYPE, CreateAndUploadPatternC2SPacket.STREAM_CODEC, CreateAndUploadPatternC2SPacket::handle); registrar.playToServer(CreateAndUploadPatternC2SPacket.TYPE, CreateAndUploadPatternC2SPacket.STREAM_CODEC, CreateAndUploadPatternC2SPacket::handle);
registrar.playToServer(CancelPendingPatternC2SPacket.TYPE,CancelPendingPatternC2SPacket.STREAM_CODEC,CancelPendingPatternC2SPacket::handle);
registrar.playToServer(EncodeWithShiftFlagC2SPacket.TYPE, EncodeWithShiftFlagC2SPacket.STREAM_CODEC, EncodeWithShiftFlagC2SPacket::handle); registrar.playToServer(EncodeWithShiftFlagC2SPacket.TYPE, EncodeWithShiftFlagC2SPacket.STREAM_CODEC, EncodeWithShiftFlagC2SPacket::handle);
// 新增JEI 中键打开合成界面 & 无线终端拾取方块物品 // 新增JEI 中键打开合成界面 & 无线终端拾取方块物品
registrar.playToServer(com.extendedae_plus.network.OpenCraftFromJeiC2SPacket.TYPE, registrar.playToServer(com.extendedae_plus.network.OpenCraftFromJeiC2SPacket.TYPE,

View File

@ -0,0 +1,35 @@
package com.extendedae_plus.network;
import com.extendedae_plus.ExtendedAEPlus;
import com.extendedae_plus.util.uploadPattern.CtrlQPendingUploadUtil;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
import net.neoforged.neoforge.network.handling.IPayloadContext;
public class CancelPendingPatternC2SPacket implements CustomPacketPayload {
public static final Type<CancelPendingPatternC2SPacket> TYPE = new Type<>(
ResourceLocation.fromNamespaceAndPath(ExtendedAEPlus.MODID,"cancel_pending_pattern"));
public static final CancelPendingPatternC2SPacket INSTANCE = new CancelPendingPatternC2SPacket();
public static final StreamCodec<FriendlyByteBuf, CancelPendingPatternC2SPacket> STREAM_CODEC = StreamCodec.unit(INSTANCE);
public static void handle(final CancelPendingPatternC2SPacket msg, final IPayloadContext ctx){
ctx.enqueueWork(() ->{
if(!((ctx.player()) instanceof ServerPlayer player)) return;
if(CtrlQPendingUploadUtil.hasPendingCtrlQPattern(player)){
CtrlQPendingUploadUtil.returnPendingCtrlQPatternToInventory(player);
}
});
}
@Override
public Type<? extends CustomPacketPayload> type() {
return TYPE;
}
}

View File

@ -24,6 +24,7 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.component.CustomData; import net.minecraft.world.item.component.CustomData;
import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.CraftingRecipe;
import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.RecipeHolder;
import net.neoforged.neoforge.network.PacketDistributor;
import net.neoforged.neoforge.network.handling.IPayloadContext; import net.neoforged.neoforge.network.handling.IPayloadContext;
import java.util.ArrayList; import java.util.ArrayList;
@ -157,12 +158,8 @@ public class CreateCtrlQPatternC2SPacket implements CustomPacketPayload {
} }
if (msg.openProviderSelector) { if (msg.openProviderSelector) {
String pendingId = CtrlQPendingUploadUtil.beginPendingCtrlQUpload(player, pattern); CtrlQPendingUploadUtil.beginPendingCtrlQUpload(player, pattern);
if (pendingId == null) { PacketDistributor.sendToServer(RequestProvidersListC2SPacket.INSTANCE);
if (!player.getInventory().add(pattern)) {
player.drop(pattern, false);
}
}
return; return;
} }