Skip to content

Commit

Permalink
实现点击方块查询相关合成
Browse files Browse the repository at this point in the history
  • Loading branch information
Gu-ZT committed Jun 12, 2024
1 parent 1aa3216 commit d6d859e
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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<ClientTooltipComponent> getTooltip(int mouseX, int mouseY) {
if (this.blockState.isAir()) return List.of();
Expand Down

0 comments on commit d6d859e

Please sign in to comment.