util包
This commit is contained in:
parent
6d4f806fcd
commit
f0a22ece19
11
build.gradle
11
build.gradle
|
|
@ -145,6 +145,8 @@ sourceSets.main.java {
|
|||
include 'com/extendedae_plus/util/RequestedAmountHolder.java'
|
||||
// util needed by network payloads (providers listing / upload helpers)
|
||||
include 'com/extendedae_plus/util/ExtendedAEPatternUploadUtil.java'
|
||||
// util for wireless terminal discovery used by new payloads
|
||||
include 'com/extendedae_plus/util/WirelessTerminalLocator.java'
|
||||
|
||||
// content(最小集)
|
||||
include 'com/extendedae_plus/content/ClientPatternHighlightStore.java'
|
||||
|
|
@ -169,6 +171,10 @@ sourceSets.main.java {
|
|||
include 'com/extendedae_plus/network/OpenProviderUiC2SPacket.java'
|
||||
include 'com/extendedae_plus/network/GlobalToggleProviderModesC2SPacket.java'
|
||||
include 'com/extendedae_plus/network/UploadEncodedPatternToProviderC2SPacket.java'
|
||||
// newly added custom payloads (NeoForge 1.21)
|
||||
include 'com/extendedae_plus/network/OpenCraftFromJeiC2SPacket.java'
|
||||
include 'com/extendedae_plus/network/PickFromWirelessC2SPacket.java'
|
||||
include 'com/extendedae_plus/network/PullFromJeiOrCraftC2SPacket.java'
|
||||
|
||||
// AE2 mixin:accessor/helpers/autopattern/gui/menu
|
||||
include 'com/extendedae_plus/mixin/ae2/accessor/**'
|
||||
|
|
@ -182,6 +188,11 @@ sourceSets.main.java {
|
|||
// ExtendedAE GUI 混入(右侧外列按钮与翻页),以及其依赖的 NewIcon 类
|
||||
include 'com/extendedae_plus/mixin/extendedae/client/gui/GuiExPatternProviderMixin.java'
|
||||
include 'com/extendedae_plus/NewIcon.java'
|
||||
|
||||
// Note: 暂时不编译 Curios 专用宿主/定位器(依赖 ae2wtlib API 的签名差异未完成适配)
|
||||
// include 'com/extendedae_plus/menu/locator/CuriosItemLocator.java'
|
||||
// include 'com/extendedae_plus/menu/host/CuriosWirelessTerminalMenuHost.java'
|
||||
// include 'com/extendedae_plus/menu/host/CuriosWTMenuHost.java'
|
||||
}
|
||||
|
||||
configurations {
|
||||
|
|
|
|||
|
|
@ -21,8 +21,14 @@ public class ModNetwork {
|
|||
registrar.playToServer(OpenProviderUiC2SPacket.TYPE, OpenProviderUiC2SPacket.STREAM_CODEC, OpenProviderUiC2SPacket::handle);
|
||||
registrar.playToServer(UploadEncodedPatternToProviderC2SPacket.TYPE, UploadEncodedPatternToProviderC2SPacket.STREAM_CODEC, UploadEncodedPatternToProviderC2SPacket::handle);
|
||||
// 新增:JEI 中键打开合成界面 & 无线终端拾取方块物品
|
||||
registrar.playToServer(OpenCraftFromJeiC2SPacket.TYPE, OpenCraftFromJeiC2SPacket.STREAM_CODEC, OpenCraftFromJeiC2SPacket::handle);
|
||||
registrar.playToServer(PickFromWirelessC2SPacket.TYPE, PickFromWirelessC2SPacket.STREAM_CODEC, PickFromWirelessC2SPacket::handle);
|
||||
registrar.playToServer(PullFromJeiOrCraftC2SPacket.TYPE, PullFromJeiOrCraftC2SPacket.STREAM_CODEC, PullFromJeiOrCraftC2SPacket::handle);
|
||||
registrar.playToServer(com.extendedae_plus.network.OpenCraftFromJeiC2SPacket.TYPE,
|
||||
com.extendedae_plus.network.OpenCraftFromJeiC2SPacket.STREAM_CODEC,
|
||||
com.extendedae_plus.network.OpenCraftFromJeiC2SPacket::handle);
|
||||
registrar.playToServer(com.extendedae_plus.network.PickFromWirelessC2SPacket.TYPE,
|
||||
com.extendedae_plus.network.PickFromWirelessC2SPacket.STREAM_CODEC,
|
||||
com.extendedae_plus.network.PickFromWirelessC2SPacket::handle);
|
||||
registrar.playToServer(com.extendedae_plus.network.PullFromJeiOrCraftC2SPacket.TYPE,
|
||||
com.extendedae_plus.network.PullFromJeiOrCraftC2SPacket.STREAM_CODEC,
|
||||
com.extendedae_plus.network.PullFromJeiOrCraftC2SPacket::handle);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import appeng.api.stacks.GenericStack;
|
|||
import appeng.items.tools.powered.WirelessTerminalItem;
|
||||
import appeng.menu.locator.MenuLocators;
|
||||
import appeng.menu.me.crafting.CraftAmountMenu;
|
||||
import com.extendedae_plus.menu.locator.CuriosItemLocator;
|
||||
import com.extendedae_plus.util.WirelessTerminalLocator;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
|
|
@ -50,15 +49,7 @@ public class OpenCraftFromJeiC2SPacket implements CustomPacketPayload {
|
|||
var located = WirelessTerminalLocator.find(player);
|
||||
if (located.isEmpty()) return;
|
||||
|
||||
// 若为 Curios 槽位:跳过 AE2 基类的距离/电量前置校验,直接打开数量界面,
|
||||
// 让菜单与宿主(WirelessTerminalMenuHost)以及 ae2wtlib 自身处理量子卡跨维/跨距逻辑。
|
||||
String curiosSlotId = located.getCuriosSlotId();
|
||||
int curiosIndex = located.getCuriosIndex();
|
||||
if (curiosSlotId != null && curiosIndex >= 0) {
|
||||
int initial = 1;
|
||||
CraftAmountMenu.open(player, new CuriosItemLocator(curiosSlotId, curiosIndex), what, initial);
|
||||
return;
|
||||
}
|
||||
// Curios 槽位暂不直接作为菜单宿主处理;仅处理原版手持/背包场景。
|
||||
|
||||
// 非 Curios(主手/副手/背包)仍按原先流程做前置校验,保持行为一致。
|
||||
if (!(located.stack.getItem() instanceof WirelessTerminalItem wt)) return;
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ import appeng.items.tools.powered.WirelessTerminalItem;
|
|||
import appeng.me.helpers.PlayerSource;
|
||||
import appeng.menu.locator.MenuLocators;
|
||||
import appeng.menu.me.crafting.CraftAmountMenu;
|
||||
import com.extendedae_plus.menu.locator.CuriosItemLocator;
|
||||
import com.extendedae_plus.util.WirelessTerminalLocator;
|
||||
import com.extendedae_plus.util.WirelessTerminalLocator.LocatedTerminal;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
|
|
@ -90,18 +89,12 @@ public class PullFromJeiOrCraftC2SPacket implements CustomPacketPayload {
|
|||
var craftingService = grid.getCraftingService();
|
||||
if (!craftingService.isCraftable(what)) return;
|
||||
|
||||
String curiosSlotId = located.getCuriosSlotId();
|
||||
int curiosIndex = located.getCuriosIndex();
|
||||
if (curiosSlotId != null && curiosIndex >= 0) {
|
||||
CraftAmountMenu.open(player, new CuriosItemLocator(curiosSlotId, curiosIndex), what, 1);
|
||||
} else {
|
||||
var hand = located.getHand();
|
||||
int slot = located.getSlotIndex();
|
||||
if (hand != null) {
|
||||
CraftAmountMenu.open(player, MenuLocators.forHand(player, hand), what, 1);
|
||||
} else if (slot >= 0) {
|
||||
CraftAmountMenu.open(player, MenuLocators.forInventorySlot(slot), what, 1);
|
||||
}
|
||||
var hand = located.getHand();
|
||||
int slot = located.getSlotIndex();
|
||||
if (hand != null) {
|
||||
CraftAmountMenu.open(player, MenuLocators.forHand(player, hand), what, 1);
|
||||
} else if (slot >= 0) {
|
||||
CraftAmountMenu.open(player, MenuLocators.forInventorySlot(slot), what, 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,12 +31,15 @@ public class GuiUtil {
|
|||
return "";
|
||||
}
|
||||
|
||||
var details = PatternDetailsHelper.decodePattern(pattern, Minecraft.getInstance().level, false);
|
||||
if (details == null || details.getOutputs().length == 0) {
|
||||
var details = PatternDetailsHelper.decodePattern(pattern, Minecraft.getInstance().level);
|
||||
if (details == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
GenericStack out = details.getOutputs()[0];
|
||||
java.util.List<GenericStack> outputs = details.getOutputs();
|
||||
if (outputs == null || outputs.isEmpty()) {
|
||||
return "";
|
||||
}
|
||||
GenericStack out = outputs.get(0);
|
||||
long amount = out.amount();
|
||||
long perUnit = out.what().getAmountPerUnit();
|
||||
if (amount <= 0 || perUnit <= 0) {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import appeng.items.tools.powered.WirelessCraftingTerminalItem;
|
|||
import appeng.items.tools.powered.WirelessTerminalItem;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraftforge.fml.ModList;
|
||||
import net.neoforged.fml.ModList;
|
||||
import top.theillusivec4.curios.api.CuriosApi;
|
||||
import top.theillusivec4.curios.api.type.capability.ICuriosItemHandler;
|
||||
import top.theillusivec4.curios.api.type.inventory.ICurioStacksHandler;
|
||||
|
|
@ -93,9 +93,9 @@ public final class WirelessTerminalLocator {
|
|||
// 3) Curios 饰品槽(若已加载)
|
||||
if (ModList.get().isLoaded("curios")) {
|
||||
try {
|
||||
var resolved = CuriosApi.getCuriosInventory(player).resolve();
|
||||
if (resolved.isPresent()) {
|
||||
ICuriosItemHandler handler = resolved.get();
|
||||
var opt = CuriosApi.getCuriosInventory(player);
|
||||
if (opt.isPresent()) {
|
||||
ICuriosItemHandler handler = opt.get();
|
||||
for (var entry : handler.getCurios().entrySet()) {
|
||||
String slotId = entry.getKey();
|
||||
ICurioStacksHandler stacksHandler = entry.getValue();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user