CraftPlanksTutorialStep.java

net.minecraft.client.tutorial.CraftPlanksTutorialStep

信息

  • 全限定名:net.minecraft.client.tutorial.CraftPlanksTutorialStep
  • 类型:public class
  • 包:net.minecraft.client.tutorial
  • 源码路径:src/main/java/net/minecraft/client/tutorial/CraftPlanksTutorialStep.java
  • 起始行号:L19
  • 实现:TutorialStepInstance
  • 职责:

    TODO

字段/常量

  • HINT_DELAY

    • 类型: int
    • 修饰符: private static final
    • 源码定位: L20
    • 说明:

      TODO

  • CRAFT_TITLE

    • 类型: Component
    • 修饰符: private static final
    • 源码定位: L21
    • 说明:

      TODO

  • CRAFT_DESCRIPTION

    • 类型: Component
    • 修饰符: private static final
    • 源码定位: L22
    • 说明:

      TODO

  • tutorial

    • 类型: Tutorial
    • 修饰符: private final
    • 源码定位: L23
    • 说明:

      TODO

  • toast

    • 类型: TutorialToast
    • 修饰符: private
    • 源码定位: L24
    • 说明:

      TODO

  • timeWaiting

    • 类型: int
    • 修饰符: private
    • 源码定位: L25
    • 说明:

      TODO

内部类/嵌套类型

构造器

public CraftPlanksTutorialStep(Tutorial tutorial) @ L27

  • 构造器名:CraftPlanksTutorialStep
  • 源码定位:L27
  • 修饰符:public

参数:

  • tutorial: Tutorial

说明:

TODO

方法

下面的方法块按源码顺序生成。

public void tick() @ L31

  • 方法名:tick
  • 源码定位:L31
  • 返回类型:void
  • 修饰符:public

参数:

说明:

TODO

public void clear() @ L60

  • 方法名:clear
  • 源码定位:L60
  • 返回类型:void
  • 修饰符:public

参数:

说明:

TODO

public void onGetItem(ItemStack itemStack) @ L68

  • 方法名:onGetItem
  • 源码定位:L68
  • 返回类型:void
  • 修饰符:public

参数:

  • itemStack: ItemStack

说明:

TODO

public static boolean hasCraftedPlanksPreviously(LocalPlayer player, TagKey<Item> tag) @ L75

  • 方法名:hasCraftedPlanksPreviously
  • 源码定位:L75
  • 返回类型:boolean
  • 修饰符:public static

参数:

  • player: LocalPlayer
  • tag: TagKey

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class CraftPlanksTutorialStep implements TutorialStepInstance {
    private static final int HINT_DELAY = 1200;
    private static final Component CRAFT_TITLE = Component.translatable("tutorial.craft_planks.title");
    private static final Component CRAFT_DESCRIPTION = Component.translatable("tutorial.craft_planks.description");
    private final Tutorial tutorial;
    private @Nullable TutorialToast toast;
    private int timeWaiting;
 
    public CraftPlanksTutorialStep(Tutorial tutorial) {
        this.tutorial = tutorial;
    }
 
    @Override
    public void tick() {
        this.timeWaiting++;
        if (!this.tutorial.isSurvival()) {
            this.tutorial.setStep(TutorialSteps.NONE);
        } else {
            Minecraft minecraft = this.tutorial.getMinecraft();
            if (this.timeWaiting == 1) {
                LocalPlayer player = minecraft.player;
                if (player != null) {
                    if (player.getInventory().contains(ItemTags.PLANKS)) {
                        this.tutorial.setStep(TutorialSteps.NONE);
                        return;
                    }
 
                    if (hasCraftedPlanksPreviously(player, ItemTags.PLANKS)) {
                        this.tutorial.setStep(TutorialSteps.NONE);
                        return;
                    }
                }
            }
 
            if (this.timeWaiting >= 1200 && this.toast == null) {
                this.toast = new TutorialToast(minecraft.font, TutorialToast.Icons.WOODEN_PLANKS, CRAFT_TITLE, CRAFT_DESCRIPTION, false);
                minecraft.getToastManager().addToast(this.toast);
            }
        }
    }
 
    @Override
    public void clear() {
        if (this.toast != null) {
            this.toast.hide();
            this.toast = null;
        }
    }
 
    @Override
    public void onGetItem(ItemStack itemStack) {
        if (itemStack.is(ItemTags.PLANKS)) {
            this.tutorial.setStep(TutorialSteps.NONE);
        }
    }
 
    public static boolean hasCraftedPlanksPreviously(LocalPlayer player, TagKey<Item> tag) {
        for (Holder<Item> item : BuiltInRegistries.ITEM.getTagOrEmpty(tag)) {
            if (player.getStats().getValue(Stats.ITEM_CRAFTED.get(item.value())) > 0) {
                return true;
            }
        }
 
        return false;
    }
}

引用的其他类