Support NEI bookmark group drops in storage buses (#1487)

This commit is contained in:
DreamYao520 authored and GitHub committed 2026-08-08 00:01:51 +07:00
1 parent 6efcb44074
commit 979c643077
2 files changed
+46 -2

No files matched your search

@@ -14,6 +14,7 @@ import java.io.IOException;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import org.lwjgl.input.Mouse;
@@ -233,6 +234,27 @@ public class GuiStorageBus extends GuiUpgradeable {
}
}
public boolean handleBookmarkGroupDrop(int mouseX, int mouseY, Iterable<ItemStack> stacks) {
final int x = mouseX - this.guiLeft + 1;
final int y = mouseY - this.guiTop + 1;
this.updateSlotVisibility();
int slotIndex = -1;
for (VirtualMEPhantomSlot slot : this.configSlots) {
if (slot.isHovered(x, y)) {
slotIndex = slot.getSlotIndex();
break;
}
}
if (slotIndex < 0) return false;
for (ItemStack stack : stacks) {
if (slotIndex >= this.configSlots.length || this.configSlots[slotIndex].isHidden()) break;
this.configSlots[slotIndex++].handleMouseClicked(stack, false, 0);
}
return true;
}
private boolean acceptType(VirtualMEPhantomSlot slot, IAEStackType<?> type, int mouseButton) {
return type == containerStorageBus.getStackType();
}
@@ -1,5 +1,8 @@
package appeng.integration.modules.NEIHelpers;
import java.util.List;
import java.util.stream.Collectors;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.item.Item;
@@ -7,7 +10,11 @@ import net.minecraft.item.ItemStack;
import appeng.api.implementations.ICraftingPatternItem;
import appeng.api.networking.crafting.ICraftingPatternDetails;
import appeng.client.gui.implementations.GuiStorageBus;
import codechicken.nei.ItemPanels;
import codechicken.nei.NEIClientConfig;
import codechicken.nei.bookmark.BookmarkItem;
import codechicken.nei.bookmark.SortableGroup;
import codechicken.nei.guihook.GuiContainerManager;
import codechicken.nei.guihook.IContainerInputHandler;
import codechicken.nei.recipe.GuiCraftingRecipe;
@@ -15,6 +22,8 @@ import codechicken.nei.recipe.GuiUsageRecipe;
public class NEIInputHandler implements IContainerInputHandler {
private List<ItemStack> draggedBookmarkGroup;
@Override
public boolean keyTyped(GuiContainer gui, char keyChar, int keyCode) {
return false;
@@ -60,7 +69,14 @@ public class NEIInputHandler implements IContainerInputHandler {
public void onMouseClicked(GuiContainer gui, int mousex, int mousey, int button) {}
@Override
public void onMouseUp(GuiContainer gui, int mousex, int mousey, int button) {}
public void onMouseUp(GuiContainer gui, int mousex, int mousey, int button) {
if (button != 0) return;
if (gui instanceof GuiStorageBus storageBus && this.draggedBookmarkGroup != null) {
storageBus.handleBookmarkGroupDrop(mousex, mousey, this.draggedBookmarkGroup);
}
this.draggedBookmarkGroup = null;
}
@Override
public boolean mouseScrolled(GuiContainer gui, int mousex, int mousey, int scrolled) {
@@ -71,5 +87,11 @@ public class NEIInputHandler implements IContainerInputHandler {
public void onMouseScrolled(GuiContainer gui, int mousex, int mousey, int scrolled) {}
@Override
public void onMouseDragged(GuiContainer gui, int mousex, int mousey, int button, long heldTime) {}
public void onMouseDragged(GuiContainer gui, int mousex, int mousey, int button, long heldTime) {
final SortableGroup group = ItemPanels.bookmarkPanel.sortableGroup;
if (gui instanceof GuiStorageBus && group != null && this.draggedBookmarkGroup == null) {
this.draggedBookmarkGroup = group.getBookmarkItems().stream().map(BookmarkItem::getItemStack)
.collect(Collectors.toList());
}
}
}