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

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, isAllowSubstitutes,
isFluidSubstitutes isFluidSubstitutes
)); ));
ModNetwork.CHANNEL.sendToServer(new RequestProvidersListC2SPacket());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -2,6 +2,7 @@ package com.extendedae_plus.client.screen;
import com.extendedae_plus.init.ModNetwork; import com.extendedae_plus.init.ModNetwork;
import com.extendedae_plus.network.UploadEncodedPatternToProviderC2SPacket; import com.extendedae_plus.network.UploadEncodedPatternToProviderC2SPacket;
import com.extendedae_plus.network.pattern.CancelPendingPatternC2SPacket;
import com.extendedae_plus.util.uploadPattern.RecipeTypeNameConfig; import com.extendedae_plus.util.uploadPattern.RecipeTypeNameConfig;
import com.google.gson.*; import com.google.gson.*;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -280,6 +281,7 @@ public class ProviderSelectScreen extends Screen {
@Override @Override
public void onClose() { public void onClose() {
ModNetwork.CHANNEL.sendToServer(CancelPendingPatternC2SPacket.INSTANCE);
Minecraft.getInstance().setScreen(parent); 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.CraftingMonitorOpenProviderC2SPacket;
import com.extendedae_plus.network.crafting.OpenCraftFromJeiC2SPacket; import com.extendedae_plus.network.crafting.OpenCraftFromJeiC2SPacket;
import com.extendedae_plus.network.meInterface.InterfaceAdjustConfigAmountC2SPacket; 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.CreateCtrlQPatternC2SPacket;
import com.extendedae_plus.network.pattern.CreateAndUploadPatternC2SPacket; import com.extendedae_plus.network.pattern.CreateAndUploadPatternC2SPacket;
import com.extendedae_plus.network.provider.*; import com.extendedae_plus.network.provider.*;
@ -182,6 +183,12 @@ public final class ModNetwork {
.decoder(CreateAndUploadPatternC2SPacket::decode) .decoder(CreateAndUploadPatternC2SPacket::decode)
.consumerNetworkThread(CreateAndUploadPatternC2SPacket::handle) .consumerNetworkThread(CreateAndUploadPatternC2SPacket::handle)
.add(); .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++; } 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.WirelessCraftingTerminalItem;
import appeng.items.tools.powered.WirelessTerminalItem; import appeng.items.tools.powered.WirelessTerminalItem;
import appeng.me.helpers.PlayerSource; 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.uploadPattern.ProviderUploadUtil;
import com.extendedae_plus.util.wireless.WirelessTerminalLocator; import com.extendedae_plus.util.wireless.WirelessTerminalLocator;
import de.mari_023.ae2wtlib.terminal.WTMenuHost; import de.mari_023.ae2wtlib.terminal.WTMenuHost;
@ -126,12 +128,8 @@ public class CreateCtrlQPatternC2SPacket {
} }
if (msg.openProviderSelector) { if (msg.openProviderSelector) {
String pendingId = ProviderUploadUtil.beginPendingCtrlQUpload(player, pattern); ProviderUploadUtil.beginPendingCtrlQUpload(player, pattern);
if (pendingId == null) { ModNetwork.CHANNEL.sendToServer(new RequestProvidersListC2SPacket());
if (!player.getInventory().add(pattern)) {
player.drop(pattern, false);
}
}
return; return;
} }

View File

@ -9,6 +9,7 @@ import com.extendedae_plus.util.PatternTerminalUtil;
import com.extendedae_plus.util.uploadPattern.ProviderUploadUtil; import com.extendedae_plus.util.uploadPattern.ProviderUploadUtil;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.network.NetworkDirection;
import net.minecraftforge.network.NetworkEvent; import net.minecraftforge.network.NetworkEvent;
import java.util.ArrayList; import java.util.ArrayList;
@ -47,7 +48,7 @@ public class RequestProvidersListC2SPacket {
names.add(PatternProviderDataUtil.getProviderDisplayName(c)); names.add(PatternProviderDataUtil.getProviderDisplayName(c));
slots.add(empty); 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; return;
} }