Fabric MOD 第二章

变量、数据类型、运算符与输入输出

这是一节专门面向孩子的 Minecraft Fabric MOD 基础课。你会发现,写 MOD 并不是“会打字就行”,而是像搭乐高一样,一块一块搭建“规则”。变量就是盒子,数据类型就是盒子的标签,运算符是积木之间的连接方式,输入输出是你和游戏世界交流的窗口。

只要这四部分学扎实,后面不管是做“会发光的矿石”、还是“能升级的武器”、或者“会追踪玩家的生物”,逻辑都能写得更稳。你现在读到的内容,就是后续 Fabric 事件系统、方块交互、实体行为的地基。

Minecraft 风格课程主图

本章目录

2.1 变量:给数据起名字

Minecraft 早期画面截图 MCreator 界面截图 Minecraft 背包与方块截图

变量就像背包格子:每个格子都有名字,也只能放特定内容。

先记一个最容易理解的比喻:你在 Minecraft 里有很多箱子。你给箱子贴上标签,比如“钻石”“木头”“食物”。写 Java 代码时,变量就像这样的箱子。它们负责保存数据,程序随时可以读取和修改。

例如我们想记录玩家血量、移动速度和昵称,这三个值随时会被游戏逻辑读取。没有变量,程序就像没有抽屉的桌子,东西都摊在地上,既难找又容易出错。

2.1.1 变量定义格式

数据类型 变量名 = 初始值;
int health = 20;
double speed = 1.2;
String playerName = "Steve";

上面三行中,`int`、`double`、`String` 是数据类型;`health`、`speed`、`playerName` 是变量名;等号右边是给变量的初始值。最后的分号是语句结束标记,必须写。

2.1.2 命名规范(孩子最容易丢分的地方)

变量命名可先明确语义,再按驼峰规则转换为英文标识符。例如“玩家跳跃次数”可写成 `jumpCount`。

2.1.3 变量在 MOD 开发中的作用

2.2 数据类型:给变量贴标签

如果变量是箱子,那么数据类型就是标签。标签的意义是告诉程序“这个箱子里放什么”。程序靠类型来决定怎么计算,怎么比较,怎么显示。一旦类型乱了,程序就会报错,或者出现很难找的问题。

2.2.1 常见基础类型

类型用途示例
int整数,适合计数、等级、坐标20
double小数,适合速度、概率、倍率1.75
boolean真假值,适合开关判断true / false
char单个字符'A'
int level = 5;
double critRate = 0.35;
boolean isAlive = true;
char rank = 'S';

2.2.2 字符串 String

`String` 表示文本数据,比如玩家名字、聊天内容、道具描述。它和 `char` 不同:`char` 只存一个字符,而 `String` 能存一段文字。

String playerName = "Alex";
String title = "勇者学徒";

2.2.3 类型匹配与常见错误

// 错误:int 不能直接接收文字
int name = "Steve";

// 正确:文本应该使用 String
String name = "Steve";

很多孩子一开始会把“看起来像数字的文本”和“真正的数字”搞混。比如输入框拿到的通常是字符串,如果要参与计算,必须先转换。

2.2.4 基础类型转换

int a = 10;
double b = a;        // 自动转换:int -> double

double x = 5.8;
int y = (int) x;     // 强制转换:结果为 5,小数部分会被截断

在 MOD 中,常见场景是:玩家输入是字符串,配置文件里有文本,需要转成数字再计算。孩子只要记住一句话:参与数学运算前,先确认类型正确。

2.3 运算符:让逻辑跑起来

有了变量和类型后,程序还不会“思考”。运算符就是思考规则。你可以把运算符看作红石电路中的连接器:不同连接方式,触发不同结果。

2.3.1 算术运算符

符号作用示例
+加法伤害累计
-减法扣除血量
*乘法倍率加成
/除法平均值
%取余奇偶判断、周期触发
int attack = 12;
int bonus = 3;
int damage = attack + bonus;
int wave = 17 % 5;   // 结果 2

2.3.2 赋值运算符

int coins = 10;
coins += 5;   // coins = coins + 5
coins *= 2;   // coins = coins * 2

赋值运算符特别适合做“不断变化”的游戏数值,如金币累加、经验叠加、冷却倒计时。

2.3.3 比较运算符

int health = 18;
boolean safe = health > 10;
boolean dead = health <= 0;

比较运算符输出的是 `true` 或 `false`,它们会直接参与 `if` 判断。孩子学会这个,就能写“血量低于 5 自动提示危险”这类逻辑。

2.3.4 逻辑运算符

boolean hasKey = true;
boolean doorUnlocked = false;
boolean canEnter = hasKey && doorUnlocked;

这部分是“游戏规则设计”的核心。比如“玩家拿到钥匙并且击败守卫才可开门”,就是典型 `&&` 逻辑。

2.4 输入与输出:和程序对话

很多孩子写代码只会算,不会“交流”。输入输出就是交流机制。输出让我们看到程序结果,输入让玩家把信息告诉程序。调试 MOD 时,这一步几乎每天都要用。

2.4.1 输出(Output)

System.out.println("Hello Minecraft!");

int playerHealth = 20;
System.out.println("玩家血量: " + playerHealth);

每完成一段逻辑后输出关键变量,可快速核对计算结果与预期是否一致,显著降低调试成本。

2.4.2 输入(Input)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入玩家名: ");
        String name = scanner.nextLine();

        System.out.print("请输入初始血量: ");
        int health = scanner.nextInt();

        System.out.println("欢迎 " + name + ",你的血量是 " + health);
    }
}

当孩子学会输入,就能做小交互程序:玩家输入名字、输入选择、输入数值,然后程序给出反馈。这是从“静态代码”走向“动态逻辑”的关键一步。

2.4.3 输入输出在 Fabric 中的价值

2.5 综合练习:把知识拼起来

练习的目标不是“背代码”,而是能把变量、类型、运算和输入输出串联起来。下面这三个练习按难度递增,非常适合孩子课后完成。

练习一:玩家状态面板

String name = "Steve";
int health = 20;
double speed = 1.2;
boolean hasSword = true;

System.out.println("玩家: " + name);
System.out.println("血量: " + health);
System.out.println("速度: " + speed);
System.out.println("是否持剑: " + hasSword);

练习二:两数计算器

import java.util.Scanner;

Scanner sc = new Scanner(System.in);
System.out.print("输入第一个数: ");
int a = sc.nextInt();
System.out.print("输入第二个数: ");
int b = sc.nextInt();

System.out.println("加法结果: " + (a + b));
System.out.println("乘法结果: " + (a * b));
System.out.println("取余结果: " + (a % b));

练习三:是否存活判断

int playerHealth = 0;
boolean isAlive = playerHealth > 0;
System.out.println("是否存活: " + isAlive);
推荐流程:先用自然语言明确规则,再编码实现。例如“血量大于 0 才存活”,可先写判断语句再补充输出逻辑。

2.6 在 Fabric MOD 里的真实用法

这些 Java 基础与 MOD 开发直接对应,以下为常见的真实应用场景。

int playerHealth = 6;
boolean hasPotion = true;

if (playerHealth <= 8 && hasPotion) {
    System.out.println("提示:血量偏低,请立即使用药水");
}

当孩子能稳定写出上面的判断,就已经具备进入“事件监听”“方块右键交互”“实体行为控制”阶段的能力。这也是 Fabric 学习中最重要的里程碑之一。

2.7 本章小结与作业

这一章你完成了 Java 学习中非常关键的一步:从“看懂代码”过渡到“能自己写出可运行的逻辑”。你已经知道变量如何存值、类型如何约束数据、运算符如何表达规则、输入输出如何帮助调试和交互。这四件事组合在一起,就是后续所有 MOD 功能开发的基础能力。

本章巩固可围绕 3 类练习展开:变量命名与赋值、比较与逻辑判断、输入输出调试。通过分组练习可稳定提升编码准确率与调试效率。

课后作业