📅  最后修改于: 2023-12-03 15:22:49.177000             🧑  作者: Mango
在游戏中,我们经常需要和砖块进行交互,比如挖掘砖块、放置砖块等。有时候,我们希望在玩家单击砖块时能够显示出一些类似于界面的内容,以便让玩家进行更加复杂的操作。这个时候,我们就可以使用 Minecraft 中的 GUI(Graphical User Interface)。
GUI,全称为 Graphical User Interface,中文翻译为图形用户界面。顾名思义,GUI 就是一种通过图形化的方式来展示程序的用户界面。在 Minecraft 中,GUI 一般用于游戏中的一些菜单和设置页面。
在 Minecraft 中,我们可以通过编写 Mods 来显示 GUI。下面,我们来编写一个简单的 Mod,当玩家单击砖块时,在屏幕中心显示出 Hello World!的文本。
public class MainMod implements ModInitializer {
public static final String MOD_ID = "my-mod";
@Override
public void onInitialize() {
// 注册一个事件监听器,在玩家单击砖块时触发
FabricBlockSettings settings = FabricBlockSettings.of(Material.STONE).hardness(1.0f);
Registry.register(Registry.BLOCK, new Identifier(MOD_ID, "my-block"), new MyBlock(settings));
FabricLoader.getInstance().getEntrypoints("my-mod", ModInitializer.class).forEach(ModInitializer::onInitialize);
}
public static class MyBlock extends Block {
public MyBlock(Settings settings) {
super(settings);
}
@Override
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) {
if (!world.isClient) {
String message = "Hello World!";
player.sendMessage(new LiteralText(message), false); // 显示消息
}
return ActionResult.SUCCESS;
}
}
}
这个代码片段定义了一个 MyBlock 类,用于生成一个新的方块。我们在方块注册的时候,将其加入世界:
FabricBlockSettings settings = FabricBlockSettings.of(Material.STONE).hardness(1.0f);
Registry.register(Registry.BLOCK, new Identifier(MOD_ID, "my-block"), new MyBlock(settings));
同时,在 MyBlock 类中,我们重写了 Block 类的 onUse 方法。当玩家在游戏中单击该方块时,会触发 onUse 方法。我们在这个方法内部,使用了 Minecraft 内置的文本组件 LiteralText 来显示 “Hello World!” 的文本:
if (!world.isClient) {
String message = "Hello World!";
player.sendMessage(new LiteralText(message), false);
}
这个代码使用了 !world.isClient 的条件,可以确保代码仅在服务端被执行,而不是在客户端被执行。通过在服务端发送消息给客户端,我们可以获取与玩家交互打开了游戏的客户端图形。
本文介绍了如何在 Minecraft 中显示 GUI。我们编写了一个简单的 Mod,在玩家单击方块时,在屏幕中心显示了 Hello World!的文本。Minecraft 的 GUI 提供了丰富的组件和排版选项,如果你想要更深入地了解 Minecraft 中的 GUI,可以查阅 Minecraft Wiki 上的相关内容。