From d6d859e9966cd1e8017609fdcc6c16b762f818e4 Mon Sep 17 00:00:00 2001 From: Gugle Date: Thu, 13 Jun 2024 03:00:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=82=B9=E5=87=BB=E6=96=B9?= =?UTF-8?q?=E5=9D=97=E6=9F=A5=E8=AF=A2=E7=9B=B8=E5=85=B3=E5=90=88=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../emi/stack/BlockStateEmiStack.java | 4 ++++ .../integration/emi/ui/BlockWidget.java | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/common/src/main/java/dev/dubhe/anvilcraft/integration/emi/stack/BlockStateEmiStack.java b/common/src/main/java/dev/dubhe/anvilcraft/integration/emi/stack/BlockStateEmiStack.java index 7ea5f1dca..92869fa07 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/integration/emi/stack/BlockStateEmiStack.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/integration/emi/stack/BlockStateEmiStack.java @@ -12,7 +12,9 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; @@ -66,6 +68,8 @@ public CompoundTag getNbt() { @Override public Object getKey() { + Item item = this.state.getBlock().asItem(); + if (item != Items.AIR) return item; return this.state.getBlock(); } diff --git a/common/src/main/java/dev/dubhe/anvilcraft/integration/emi/ui/BlockWidget.java b/common/src/main/java/dev/dubhe/anvilcraft/integration/emi/ui/BlockWidget.java index 303094a22..672702063 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/integration/emi/ui/BlockWidget.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/integration/emi/ui/BlockWidget.java @@ -4,12 +4,17 @@ import dev.dubhe.anvilcraft.integration.emi.stack.BlockStateEmiStack; import dev.dubhe.anvilcraft.util.BlockStateRender; import dev.emi.emi.EmiPort; +import dev.emi.emi.api.stack.EmiStack; +import dev.emi.emi.api.stack.EmiStackInteraction; import dev.emi.emi.api.widget.Bounds; import dev.emi.emi.api.widget.DrawableWidget.DrawableWidgetConsumer; import dev.emi.emi.api.widget.Widget; import dev.emi.emi.api.widget.WidgetHolder; +import dev.emi.emi.screen.EmiScreenManager; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; import net.minecraft.world.level.block.state.BlockState; import org.jetbrains.annotations.NotNull; @@ -38,6 +43,20 @@ public Bounds getBounds() { return new Bounds(this.offsetX, this.offsetY, 25, 25); } + private EmiStack getStack() { + Item item = this.blockState.getBlock().asItem(); + if (item != Items.AIR) return EmiStack.of(item); + return BlockStateEmiStack.of(this.blockState); + } + + @Override + public boolean mouseClicked(int mouseX, int mouseY, int button) { + return EmiScreenManager.stackInteraction( + new EmiStackInteraction(this.getStack()), + bind -> bind.matchesMouse(button) + ); + } + @Override public List getTooltip(int mouseX, int mouseY) { if (this.blockState.isAir()) return List.of();