GhostSlots.java
net.minecraft.client.gui.screens.recipebook.GhostSlots
信息
- 全限定名:net.minecraft.client.gui.screens.recipebook.GhostSlots
- 类型:public class
- 包:net.minecraft.client.gui.screens.recipebook
- 源码路径:src/main/java/net/minecraft/client/gui/screens/recipebook/GhostSlots.java
- 起始行号:L19
- 职责:
TODO
字段/常量
-
ingredients- 类型:
Reference2ObjectMap<Slot,GhostSlots.GhostSlot> - 修饰符:
private final - 源码定位:
L20 - 说明:
TODO
- 类型:
-
slotSelectTime- 类型:
SlotSelectTime - 修饰符:
private final - 源码定位:
L21 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.client.gui.screens.recipebook.GhostSlots.GhostSlot- 类型:
record - 修饰符:
private - 源码定位:
L78 - 说明:
TODO
- 类型:
构造器
public GhostSlots(SlotSelectTime slotSelectTime) @ L23
- 构造器名:GhostSlots
- 源码定位:L23
- 修饰符:public
参数:
- slotSelectTime: SlotSelectTime
说明:
TODO
方法
下面的方法块按源码顺序生成。
public void clear() @ L27
- 方法名:clear
- 源码定位:L27
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
private void setSlot(Slot slot, ContextMap context, SlotDisplay contents, boolean isResult) @ L31
- 方法名:setSlot
- 源码定位:L31
- 返回类型:void
- 修饰符:private
参数:
- slot: Slot
- context: ContextMap
- contents: SlotDisplay
- isResult: boolean
说明:
TODO
protected void setInput(Slot slot, ContextMap context, SlotDisplay contents) @ L38
- 方法名:setInput
- 源码定位:L38
- 返回类型:void
- 修饰符:protected
参数:
- slot: Slot
- context: ContextMap
- contents: SlotDisplay
说明:
TODO
protected void setResult(Slot slot, ContextMap context, SlotDisplay contents) @ L42
- 方法名:setResult
- 源码定位:L42
- 返回类型:void
- 修饰符:protected
参数:
- slot: Slot
- context: ContextMap
- contents: SlotDisplay
说明:
TODO
public void extractRenderState(GuiGraphicsExtractor graphics, Minecraft minecraft, boolean isResultSlotBig) @ L46
- 方法名:extractRenderState
- 源码定位:L46
- 返回类型:void
- 修饰符:public
参数:
- graphics: GuiGraphicsExtractor
- minecraft: Minecraft
- isResultSlotBig: boolean
说明:
TODO
public void extractTooltip(GuiGraphicsExtractor graphics, Minecraft minecraft, int mouseX, int mouseY, Slot hoveredSlot) @ L65
- 方法名:extractTooltip
- 源码定位:L65
- 返回类型:void
- 修饰符:public
参数:
- graphics: GuiGraphicsExtractor
- minecraft: Minecraft
- mouseX: int
- mouseY: int
- hoveredSlot: Slot
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class GhostSlots {
private final Reference2ObjectMap<Slot, GhostSlots.GhostSlot> ingredients = new Reference2ObjectArrayMap<>();
private final SlotSelectTime slotSelectTime;
public GhostSlots(SlotSelectTime slotSelectTime) {
this.slotSelectTime = slotSelectTime;
}
public void clear() {
this.ingredients.clear();
}
private void setSlot(Slot slot, ContextMap context, SlotDisplay contents, boolean isResult) {
List<ItemStack> entries = contents.resolveForStacks(context);
if (!entries.isEmpty()) {
this.ingredients.put(slot, new GhostSlots.GhostSlot(entries, isResult));
}
}
protected void setInput(Slot slot, ContextMap context, SlotDisplay contents) {
this.setSlot(slot, context, contents, false);
}
protected void setResult(Slot slot, ContextMap context, SlotDisplay contents) {
this.setSlot(slot, context, contents, true);
}
public void extractRenderState(GuiGraphicsExtractor graphics, Minecraft minecraft, boolean isResultSlotBig) {
this.ingredients.forEach((slot, ingredient) -> {
int x = slot.x;
int y = slot.y;
if (ingredient.isResultSlot && isResultSlotBig) {
graphics.fill(x - 4, y - 4, x + 20, y + 20, 822018048);
} else {
graphics.fill(x, y, x + 16, y + 16, 822018048);
}
ItemStack itemStack = ingredient.getItem(this.slotSelectTime.currentIndex());
graphics.fakeItem(itemStack, x, y);
graphics.fill(x, y, x + 16, y + 16, 822083583);
if (ingredient.isResultSlot) {
graphics.itemDecorations(minecraft.font, itemStack, x, y);
}
});
}
public void extractTooltip(GuiGraphicsExtractor graphics, Minecraft minecraft, int mouseX, int mouseY, @Nullable Slot hoveredSlot) {
if (hoveredSlot != null) {
GhostSlots.GhostSlot hoveredGhostSlot = this.ingredients.get(hoveredSlot);
if (hoveredGhostSlot != null) {
ItemStack hoveredItem = hoveredGhostSlot.getItem(this.slotSelectTime.currentIndex());
graphics.setComponentTooltipForNextFrame(
minecraft.font, Screen.getTooltipFromItem(minecraft, hoveredItem), mouseX, mouseY, hoveredItem.get(DataComponents.TOOLTIP_STYLE)
);
}
}
}
@OnlyIn(Dist.CLIENT)
private record GhostSlot(List<ItemStack> items, boolean isResultSlot) {
public ItemStack getItem(int itemIndex) {
int size = this.items.size();
return size == 0 ? ItemStack.EMPTY : this.items.get(itemIndex % size);
}
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Screen.getTooltipFromItem()
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数
- 引用位置: