|
65 | 65 | import static me.aleksilassila.litematica.printer.printer.zxy.Utils.Filters.equalsBlockName; |
66 | 66 | import static me.aleksilassila.litematica.printer.printer.zxy.Utils.Filters.equalsItemName; |
67 | 67 | import static me.aleksilassila.litematica.printer.printer.zxy.Utils.Statistics.*; |
68 | | -import static me.aleksilassila.litematica.printer.printer.zxy.inventory.OpenInventoryPacket.openIng; |
| 68 | +import static me.aleksilassila.litematica.printer.printer.zxy.inventory.InventoryUtils.*; |
69 | 69 | import static me.aleksilassila.litematica.printer.printer.zxy.Utils.ZxyUtils.*; |
70 | 70 | import org.slf4j.Logger; |
71 | 71 | import org.slf4j.LoggerFactory; |
@@ -547,66 +547,12 @@ public boolean verify() { |
547 | 547 | boolean isFacing = false; |
548 | 548 | Item[] item2 = null; |
549 | 549 | List<String> fluidBlocklist; |
550 | | - public static HashSet<Item> remoteItem = new HashSet<>(); |
| 550 | + |
551 | 551 | public static HashSet<Item> fluidList = new HashSet<>(); |
552 | 552 | static Map<BlockPos,Integer> skipPosMap = new HashMap<>(); |
553 | 553 | public static boolean printerMemorySync = false; |
554 | 554 |
|
555 | | - public boolean switchItem() { |
556 | | - if (!remoteItem.isEmpty() && !isOpenHandler && !openIng && OpenInventoryPacket.key == null) { |
557 | | - ClientPlayerEntity player = client.player; |
558 | | - ScreenHandler sc = player.currentScreenHandler; |
559 | | - if (!player.currentScreenHandler.equals(player.playerScreenHandler)) return false; |
560 | | - //排除合成栏 装备栏 副手 |
561 | | - if (PRINT_CHECK.getBooleanValue() && sc.slots.stream().skip(9).limit(sc.slots.size() - 10).noneMatch(slot -> slot.getStack().isEmpty()) |
562 | | - && (LitematicaMixinMod.QUICKSHULKER.getBooleanValue() || LitematicaMixinMod.INVENTORY.getBooleanValue())) { |
563 | | - SwitchItem.checkItems(); |
564 | | - return true; |
565 | | - } |
566 | | - if (LitematicaMixinMod.QUICKSHULKER.getBooleanValue() && openShulker(remoteItem)) { |
567 | | - return true; |
568 | | - } else if (LitematicaMixinMod.INVENTORY.getBooleanValue()) { |
569 | | - for (Item item : remoteItem) { |
570 | | - //#if MC >= 12001 |
571 | | - //#if MC > 12004 |
572 | | - MemoryUtils.currentMemoryKey = client.world.getRegistryKey().getValue(); |
573 | | - //#else |
574 | | - //$$ MemoryUtils.currentMemoryKey = client.world.getDimensionKey().getValue(); |
575 | | - //#endif |
576 | | - MemoryUtils.itemStack = new ItemStack(item); |
577 | | - if (SearchItem.search(true)) { |
578 | | - closeScreen++; |
579 | | - isOpenHandler = true; |
580 | | - printerMemorySync = true; |
581 | | - return true; |
582 | | - } |
583 | | - //#else |
584 | | - //$$ |
585 | | - //$$ MemoryDatabase database = MemoryDatabase.getCurrent(); |
586 | | - //$$ if (database != null) { |
587 | | - //$$ for (Identifier dimension : database.getDimensions()) { |
588 | | - //$$ for (Memory memory : database.findItems(item.getDefaultStack(), dimension)) { |
589 | | - //$$ MemoryUtils.setLatestPos(memory.getPosition()); |
590 | | - //#if MC < 11904 |
591 | | - //$$ OpenInventoryPacket.sendOpenInventory(memory.getPosition(), RegistryKey.of(Registry.WORLD_KEY, dimension)); |
592 | | - //#else |
593 | | - //$$ OpenInventoryPacket.sendOpenInventory(memory.getPosition(), RegistryKey.of(RegistryKeys.WORLD, dimension)); |
594 | | - //#endif |
595 | | - //$$ if(closeScreen == 0)closeScreen++; |
596 | | - //$$ syncPrinterInventory = true; |
597 | | - //$$ isOpenHandler = true; |
598 | | - //$$ return true; |
599 | | - //$$ } |
600 | | - //$$ } |
601 | | - //$$ } |
602 | | - //#endif |
603 | | - } |
604 | | - remoteItem = new HashSet<>(); |
605 | | - isOpenHandler = false; |
606 | | - } |
607 | | - } |
608 | | - return false; |
609 | | - } |
| 555 | + |
610 | 556 | long startTime; |
611 | 557 | public static BlockPos easyPos = null; |
612 | 558 | public void myTick(){ |
@@ -878,106 +824,7 @@ private void sendPlacementPreparation(ClientPlayerEntity player, Item[] required |
878 | 824 | sendLook(player, lookDir); |
879 | 825 | } |
880 | 826 |
|
881 | | - public static boolean isOpenHandler = false; |
882 | | - |
883 | | - public void switchInv() { |
884 | | -// if(true) return; |
885 | | - |
886 | | - ClientPlayerEntity player = MinecraftClient.getInstance().player; |
887 | | - ScreenHandler sc = player.currentScreenHandler; |
888 | | - if (sc.equals(player.playerScreenHandler)) { |
889 | | - return; |
890 | | - } |
891 | | - DefaultedList<Slot> slots = sc.slots; |
892 | | - for (Item item : remoteItem) { |
893 | | - for (int y = 0; y < slots.get(0).inventory.size(); y++) { |
894 | | - if (slots.get(y).getStack().getItem().equals(item)) { |
895 | | - |
896 | | - String[] str = Configs.Generic.PICK_BLOCKABLE_SLOTS.getStringValue().split(","); |
897 | | - if (str.length == 0) return; |
898 | | - for (String s : str) { |
899 | | - if (s == null) break; |
900 | | - try { |
901 | | - int c = Integer.parseInt(s) - 1; |
902 | | - if (Registries.ITEM.getId(player.getInventory().getStack(c).getItem()).toString().contains("shulker_box") && |
903 | | - LitematicaMixinMod.QUICKSHULKER.getBooleanValue()) { |
904 | | - MinecraftClient.getInstance().inGameHud.setOverlayMessage(Text.of("濳影盒占用了预选栏"), false); |
905 | | - continue; |
906 | | - } |
907 | | - |
908 | | - if (OpenInventoryPacket.key != null) { |
909 | | - SwitchItem.newItem(slots.get(y).getStack(), OpenInventoryPacket.pos, OpenInventoryPacket.key, y, -1); |
910 | | - } else SwitchItem.newItem(slots.get(y).getStack(), null, null, y, shulkerBoxSlot); |
911 | | - int a = Litematica_InventoryUtilsMixin.getEmptyPickBlockableHotbarSlot(player.getInventory()) == -1 ? |
912 | | - Litematica_InventoryUtilsMixin.getPickBlockTargetSlot(player) : |
913 | | - Litematica_InventoryUtilsMixin.getEmptyPickBlockableHotbarSlot(player.getInventory()); |
914 | | - c = a == -1 ? c : a; |
915 | | - ZxyUtils.switchPlayerInvToHotbarAir(c); |
916 | | - fi.dy.masa.malilib.util.InventoryUtils.swapSlots(sc, y, c); |
917 | | - player.getInventory().selectedSlot = c; |
918 | | - player.closeHandledScreen(); |
919 | | - if (shulkerBoxSlot != -1) { |
920 | | - client.interactionManager.clickSlot(sc.syncId, shulkerBoxSlot, 0, SlotActionType.PICKUP, client.player); |
921 | | - client.interactionManager.clickSlot(sc.syncId, shulkerBoxSlot, 0, SlotActionType.PICKUP, client.player); |
922 | | - } |
923 | | - shulkerBoxSlot = -1; |
924 | | - isOpenHandler = false; |
925 | | - remoteItem = new HashSet<>(); |
926 | | - return; |
927 | | - } catch (Exception e) { |
928 | | - System.out.println("切换物品异常"); |
929 | | - } |
930 | | - } |
931 | | - } |
932 | | - } |
933 | | - } |
934 | | - shulkerBoxSlot = -1; |
935 | | - remoteItem = new HashSet<>(); |
936 | | - isOpenHandler = false; |
937 | | - ScreenHandler sc2 = player.currentScreenHandler; |
938 | | - if (!sc2.equals(player.playerScreenHandler)) { |
939 | | - player.closeHandledScreen(); |
940 | | - } |
941 | | - } |
942 | | - |
943 | | - static int shulkerBoxSlot = -1; |
944 | | - private static Method method; |
945 | | - |
946 | | - static { |
947 | | - try { |
948 | | - method = Class.forName("net.kyrptonaught.quickshulker.client.ClientUtil").getDeclaredMethod("CheckAndSend", ItemStack.class, int.class); |
949 | | - } catch (Exception ignored) { |
950 | | - method = null; |
951 | | - } |
952 | | - } |
953 | 827 |
|
954 | | - boolean openShulker(HashSet<Item> items) { |
955 | | - for (Item item : items) { |
956 | | - ScreenHandler sc = MinecraftClient.getInstance().player.playerScreenHandler; |
957 | | - for (int i = 9; i < sc.slots.size(); i++) { |
958 | | - ItemStack stack = sc.slots.get(i).getStack(); |
959 | | - String itemid = Registries.ITEM.getId(stack.getItem()).toString(); |
960 | | - if (itemid.contains("shulker_box") && stack.getCount() == 1) { |
961 | | - DefaultedList<ItemStack> items1 = fi.dy.masa.malilib.util.InventoryUtils.getStoredItems(stack, -1); |
962 | | - if (items1.stream().anyMatch(s1 -> s1.getItem().equals(item))) { |
963 | | - try { |
964 | | - shulkerBoxSlot = i; |
965 | | -// ClientUtil.CheckAndSend(stack,i); |
966 | | - //#if MC >= 12001 |
967 | | - if(loadChestTracker) InteractionTracker.INSTANCE.clear(); |
968 | | - //#endif |
969 | | - method.invoke(method, stack, i); |
970 | | - closeScreen++; |
971 | | - isOpenHandler = true; |
972 | | - return true; |
973 | | - } catch (Exception e) { |
974 | | - } |
975 | | - } |
976 | | - } |
977 | | - } |
978 | | - } |
979 | | - return false; |
980 | | - } |
981 | 828 | static ItemStack yxcfItem; //有序存放临时存储 |
982 | 829 | public boolean switchToItems(ClientPlayerEntity player, Item[] items) { |
983 | 830 | if (items == null) return false; |
|
0 commit comments