minecraft-src/net/minecraft/client/tutorial/Tutorial.java
2025-07-04 02:49:36 +03:00

127 lines
3.1 KiB
Java

package net.minecraft.client.tutorial;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.client.Options;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.player.ClientInput;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.inventory.ClickAction;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.GameType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.HitResult;
import org.jetbrains.annotations.Nullable;
@Environment(EnvType.CLIENT)
public class Tutorial {
private final Minecraft minecraft;
@Nullable
private TutorialStepInstance instance;
public Tutorial(Minecraft minecraft, Options options) {
this.minecraft = minecraft;
}
public void onInput(ClientInput input) {
if (this.instance != null) {
this.instance.onInput(input);
}
}
public void onMouse(double velocityX, double velocityY) {
if (this.instance != null) {
this.instance.onMouse(velocityX, velocityY);
}
}
public void onLookAt(@Nullable ClientLevel level, @Nullable HitResult result) {
if (this.instance != null && result != null && level != null) {
this.instance.onLookAt(level, result);
}
}
public void onDestroyBlock(ClientLevel level, BlockPos pos, BlockState state, float diggingStage) {
if (this.instance != null) {
this.instance.onDestroyBlock(level, pos, state, diggingStage);
}
}
/**
* Called when the player opens his inventory
*/
public void onOpenInventory() {
if (this.instance != null) {
this.instance.onOpenInventory();
}
}
/**
* Called when the player pick up an ItemStack
*/
public void onGetItem(ItemStack stack) {
if (this.instance != null) {
this.instance.onGetItem(stack);
}
}
public void stop() {
if (this.instance != null) {
this.instance.clear();
this.instance = null;
}
}
/**
* Reloads the tutorial step from the game settings
*/
public void start() {
if (this.instance != null) {
this.stop();
}
this.instance = this.minecraft.options.tutorialStep.create(this);
}
public void tick() {
if (this.instance != null) {
if (this.minecraft.level != null) {
this.instance.tick();
} else {
this.stop();
}
} else if (this.minecraft.level != null) {
this.start();
}
}
/**
* Sets a new step to the tutorial
*/
public void setStep(TutorialSteps step) {
this.minecraft.options.tutorialStep = step;
this.minecraft.options.save();
if (this.instance != null) {
this.instance.clear();
this.instance = step.create(this);
}
}
public Minecraft getMinecraft() {
return this.minecraft;
}
public boolean isSurvival() {
return this.minecraft.gameMode == null ? false : this.minecraft.gameMode.getPlayerMode() == GameType.SURVIVAL;
}
public static Component key(String keybind) {
return Component.keybind("key." + keybind).withStyle(ChatFormatting.BOLD);
}
public void onInventoryAction(ItemStack carriedStack, ItemStack slottedStack, ClickAction action) {
}
}