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

This commit is contained in:
GaLi 2026-03-03 21:36:37 +08:00
parent 75262341ac
commit 7bbbd8af8c
6 changed files with 45 additions and 9 deletions

View File

@ -398,8 +398,6 @@ public class CtrlQPatternKeyHandler {
isAllowSubstitutes,
isFluidSubstitutes
));
ModNetwork.CHANNEL.sendToServer(new RequestProvidersListC2SPacket());
} catch (Exception e) {
e.printStackTrace();
}

View File

@ -2,6 +2,7 @@ package com.extendedae_plus.client.screen;
import com.extendedae_plus.init.ModNetwork;
import com.extendedae_plus.network.UploadEncodedPatternToProviderC2SPacket;
import com.extendedae_plus.network.pattern.CancelPendingPatternC2SPacket;
import com.extendedae_plus.util.uploadPattern.RecipeTypeNameConfig;
import com.google.gson.*;
import net.minecraft.client.Minecraft;
@ -280,6 +281,7 @@ public class ProviderSelectScreen extends Screen {
@Override
public void onClose() {
ModNetwork.CHANNEL.sendToServer(CancelPendingPatternC2SPacket.INSTANCE);
Minecraft.getInstance().setScreen(parent);
}

View File

@ -6,6 +6,7 @@ import com.extendedae_plus.network.crafting.CraftingMonitorJumpC2SPacket;
import com.extendedae_plus.network.crafting.CraftingMonitorOpenProviderC2SPacket;
import com.extendedae_plus.network.crafting.OpenCraftFromJeiC2SPacket;
import com.extendedae_plus.network.meInterface.InterfaceAdjustConfigAmountC2SPacket;
import com.extendedae_plus.network.pattern.CancelPendingPatternC2SPacket;
import com.extendedae_plus.network.pattern.CreateCtrlQPatternC2SPacket;
import com.extendedae_plus.network.pattern.CreateAndUploadPatternC2SPacket;
import com.extendedae_plus.network.provider.*;
@ -182,6 +183,12 @@ public final class ModNetwork {
.decoder(CreateAndUploadPatternC2SPacket::decode)
.consumerNetworkThread(CreateAndUploadPatternC2SPacket::handle)
.add();
CHANNEL.messageBuilder(CancelPendingPatternC2SPacket.class,nextId(), NetworkDirection.PLAY_TO_SERVER)
.encoder(CancelPendingPatternC2SPacket::encode)
.decoder(CancelPendingPatternC2SPacket::decode)
.consumerNetworkThread(CancelPendingPatternC2SPacket::handle)
.add();
}
private static int nextId() { return id++; }

View File

@ -0,0 +1,30 @@
package com.extendedae_plus.network.pattern;
import com.extendedae_plus.util.uploadPattern.ProviderUploadUtil;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.network.NetworkEvent;
import java.util.function.Supplier;
public class CancelPendingPatternC2SPacket {
public static final CancelPendingPatternC2SPacket INSTANCE = new CancelPendingPatternC2SPacket();
public static void encode(CancelPendingPatternC2SPacket msg, FriendlyByteBuf buf){}
public static CancelPendingPatternC2SPacket decode(FriendlyByteBuf buf) {return INSTANCE;}
public static void handle(CancelPendingPatternC2SPacket msg, Supplier<NetworkEvent.Context> ctxSupplier){
var ctx = ctxSupplier.get();
ctx.enqueueWork(()->{
ServerPlayer player = ctx.getSender();
if (player == null) return;
if (ProviderUploadUtil.hasPendingCtrlQPattern(player)){
ProviderUploadUtil.returnPendingCtrlQPatternToInventory(player);
}
});
}
}

View File

@ -11,6 +11,8 @@ import appeng.core.definitions.AEItems;
import appeng.items.tools.powered.WirelessCraftingTerminalItem;
import appeng.items.tools.powered.WirelessTerminalItem;
import appeng.me.helpers.PlayerSource;
import com.extendedae_plus.init.ModNetwork;
import com.extendedae_plus.network.provider.RequestProvidersListC2SPacket;
import com.extendedae_plus.util.uploadPattern.ProviderUploadUtil;
import com.extendedae_plus.util.wireless.WirelessTerminalLocator;
import de.mari_023.ae2wtlib.terminal.WTMenuHost;
@ -126,12 +128,8 @@ public class CreateCtrlQPatternC2SPacket {
}
if (msg.openProviderSelector) {
String pendingId = ProviderUploadUtil.beginPendingCtrlQUpload(player, pattern);
if (pendingId == null) {
if (!player.getInventory().add(pattern)) {
player.drop(pattern, false);
}
}
ProviderUploadUtil.beginPendingCtrlQUpload(player, pattern);
ModNetwork.CHANNEL.sendToServer(new RequestProvidersListC2SPacket());
return;
}

View File

@ -9,6 +9,7 @@ import com.extendedae_plus.util.PatternTerminalUtil;
import com.extendedae_plus.util.uploadPattern.ProviderUploadUtil;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.network.NetworkDirection;
import net.minecraftforge.network.NetworkEvent;
import java.util.ArrayList;
@ -47,7 +48,7 @@ public class RequestProvidersListC2SPacket {
names.add(PatternProviderDataUtil.getProviderDisplayName(c));
slots.add(empty);
}
ModNetwork.CHANNEL.sendTo(new ProvidersListS2CPacket(idxIds, names, slots), player.connection.connection, net.minecraftforge.network.NetworkDirection.PLAY_TO_CLIENT);
ModNetwork.CHANNEL.sendTo(new ProvidersListS2CPacket(idxIds, names, slots), player.connection.connection, NetworkDirection.PLAY_TO_CLIENT);
return;
}