diff --git a/src/main/java/com/extendedae_plus/client/event/CtrlQPatternKeyHandler.java b/src/main/java/com/extendedae_plus/client/event/CtrlQPatternKeyHandler.java index ff89301..4f8ff30 100644 --- a/src/main/java/com/extendedae_plus/client/event/CtrlQPatternKeyHandler.java +++ b/src/main/java/com/extendedae_plus/client/event/CtrlQPatternKeyHandler.java @@ -398,8 +398,6 @@ public class CtrlQPatternKeyHandler { isAllowSubstitutes, isFluidSubstitutes )); - - ModNetwork.CHANNEL.sendToServer(new RequestProvidersListC2SPacket()); } catch (Exception e) { e.printStackTrace(); } diff --git a/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java b/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java index 08b7d58..5f7ae5f 100644 --- a/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java +++ b/src/main/java/com/extendedae_plus/client/screen/ProviderSelectScreen.java @@ -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); } diff --git a/src/main/java/com/extendedae_plus/init/ModNetwork.java b/src/main/java/com/extendedae_plus/init/ModNetwork.java index 473533c..e2bd7f6 100644 --- a/src/main/java/com/extendedae_plus/init/ModNetwork.java +++ b/src/main/java/com/extendedae_plus/init/ModNetwork.java @@ -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++; } diff --git a/src/main/java/com/extendedae_plus/network/pattern/CancelPendingPatternC2SPacket.java b/src/main/java/com/extendedae_plus/network/pattern/CancelPendingPatternC2SPacket.java new file mode 100644 index 0000000..4026ddf --- /dev/null +++ b/src/main/java/com/extendedae_plus/network/pattern/CancelPendingPatternC2SPacket.java @@ -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 ctxSupplier){ + var ctx = ctxSupplier.get(); + ctx.enqueueWork(()->{ + ServerPlayer player = ctx.getSender(); + if (player == null) return; + + if (ProviderUploadUtil.hasPendingCtrlQPattern(player)){ + ProviderUploadUtil.returnPendingCtrlQPatternToInventory(player); + } + + }); + } +} diff --git a/src/main/java/com/extendedae_plus/network/pattern/CreateCtrlQPatternC2SPacket.java b/src/main/java/com/extendedae_plus/network/pattern/CreateCtrlQPatternC2SPacket.java index d399b4f..867be60 100644 --- a/src/main/java/com/extendedae_plus/network/pattern/CreateCtrlQPatternC2SPacket.java +++ b/src/main/java/com/extendedae_plus/network/pattern/CreateCtrlQPatternC2SPacket.java @@ -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; } diff --git a/src/main/java/com/extendedae_plus/network/provider/RequestProvidersListC2SPacket.java b/src/main/java/com/extendedae_plus/network/provider/RequestProvidersListC2SPacket.java index b99fc94..01bbb25 100644 --- a/src/main/java/com/extendedae_plus/network/provider/RequestProvidersListC2SPacket.java +++ b/src/main/java/com/extendedae_plus/network/provider/RequestProvidersListC2SPacket.java @@ -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; }