概述

本文使用Forge MDK (Mod Development Kit)实现一个简单的命令Mod用于显示用户输入.

运行环境

Java 1.8 JDK

Minecraft Java Edition 1.12.2

Forge and MDK 1.12.2

安装Forge和MDK

从Minecraft Forge官网下载Minecraft Forge - MC 1.12.2 installer和Mod Development Kit (MDK)包.

运行Forge installer安装Forge

将MDK压缩包解压的指定目录, 例如C:\mdk.

设置Mod项目

在MDK目录下, 运行gradlew setupDecompWorkspace命令以创建如下Mod项目结构

mdk/

├── build/

├── gradle/

│ └── wrapper/

│ ├── gradle-wrapper.jar

│ └── gradle-wrapper.properties

├── src/

│ ├── main/

│ ├── java/

│ └── resources/

│ ├── mcmod.info

│ └── pack.mcmeta

├── build.gradle

├── gradlew

└── gradlew.bat

设置Gradle build文件

编辑build.gradle并修改version, group和archivesBaseName

version = "1.0.0"

group= "minecraftfun"

archivesBaseName = "echo-cmd-mod"

修改 mod 信息

编辑 mcmod.info以修改modid, name和description.

"modid": "echocmdmod",

"name": "Echo Command Mod",

"description": "A command mod echoes user inputs",

提示: modid 只能使用小写字母.

创建command Java类

src/main/java/minecraftfun/EchoCommand.java

package minecraftfun;

import net.minecraft.command.CommandBase;

import net.minecraft.command.CommandException;

import net.minecraft.command.ICommandSender;

import net.minecraft.server.MinecraftServer;

import net.minecraft.util.text.TextComponentString;

import net.minecraft.util.text.TextFormatting;

public class EchoCommand extends CommandBase {

@Override

public void execute(MinecraftServer server, ICommandSender sender, String[] params) throws CommandException {

EchoCommandMod.logger.info("execute called");

if (params != null && params.length > 0) {

for (String param : params) {

String message = "Echo : " + param;

TextComponentString text = new TextComponentString(message);

text.getStyle().setColor(TextFormatting.RED);

sender.sendMessage(text);

}

}

}

@Override

public String getName() {

return "echo";

}

@Override

public String getUsage(ICommandSender sender) {

return "command.echo.usage";

}

}

getUsage方法的返回字符串对应语言文件中的键值.

创建mod Java类

src/main/java/minecraftfun/EchoCommandMod.java

package minecraftfun;

import org.apache.logging.log4j.Logger;

import net.minecraftforge.fml.common.Mod;

import net.minecraftforge.fml.common.Mod.EventHandler;

import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

import net.minecraftforge.fml.common.event.FMLServerStartingEvent;

@Mod(modid = EchoCommandMod.MODID, name = EchoCommandMod.NAME, version = EchoCommandMod.VERSION)

public class EchoCommandMod {

public static final String MODID = "echocmdmod";

public static final String NAME = "Echo Command Mod";

public static final String VERSION = "1.0.0";

public static Logger logger;

@EventHandler

public void preInit(FMLPreInitializationEvent event)

{

logger = event.getModLog();

}

@EventHandler

public void init(FMLServerStartingEvent event)

{

logger.info("initalise FMLServerStartingEvent :" + NAME);

event.registerServerCommand(new EchoCommand());

}

}

设置resource目录结构

在src/main/resources目录下, 创建如下目录和文件, 将MODID替换为EchoCommandMod.MODID

src/main/resources/assets/

└── /

└── lang/

└── en_us.lang

修改mod语言文件

src/main/resources/assets/echocmdmod/lang/en_us.lang

command.echo.usage=/echo

运行如下命令以编译Mod

gradlew build

该命令在build/libs目录下生成[archivesBaseName]-[version].jar文件.

测试Mod

将编译生成的mod jar文件放入Minecraft mods目录(在Windows下为 %appdata%.minecraft\mods), 运行Minecraft, 输入命令/echo some message here.

小结

对Minecraft Mod开发感兴趣的朋友不妨试一试, 所有源代码和mod jar文件也可以从这里下载.

用命令启动java我的世界_我的世界Minecraft Mod开发学习笔记 - 实现一个简单的命令Mod...相关推荐

  1. 【MC 网易-我的世界-mod开发基础笔记】 --- 运行测试第一个空白Mod

    这里写目录标题 前提 创建 空白世界,并在此世界中添加第一个空白的mod 前提 在[MC 网易-我的世界-mod开发基础笔记] - 创建第一个空白Mod 创建完成之后,进行测试. 创建 空白世界,并在 ...

  2. Polyworks脚本开发学习笔记(十三)-深入了解MACRO命令

    Polyworks脚本开发学习笔记(十三)-深入了解MACRO命令 MACRO命令中包含了很多宏脚本管理以及变量操作命令,交互操作命令等,是非常重要的一个模块. 数组和字符串操作 从数组中拿掉一个元素 ...

  3. 【MC 网易-我的世界-mod开发基础笔记】 --- 创建第一个空白Mod

    目录 创建Mod文件夹 构建Mod的基本目录结构 构建行为包基本结构 构建脚本文件夹基本结构 构建 mod 启动入口脚本 构建资源包基本结构 构建国际化文件基本结构 自定义物品配置中文名称 自定义方块 ...

  4. golang游戏开发学习笔记-创建一个能自由探索的3D世界

    此文写在golang游戏开发学习笔记-用golang画一个随时间变化颜色的正方形之后,感兴趣可以先去那篇文章了解一些基础知识,在这篇文章里,我们将创建一个非常简单(只有三个方块)但能自由探索的的3D世 ...

  5. java流链概念_《精通并发与Netty》学习笔记(09 - Java中流的概念)

    Java中流的概念 java程序通过流来完成输入/输出.流是生产或消费信息的抽象.流通过java的输入/输出与物理设备链接.尽管与它们链接的物理设备不尽相同,所有流的行为具有同样的方式.这样,相同的输 ...

  6. Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令

    Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令 文章目录 Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令 info server info clie ...

  7. Linux学习笔记(一):Linux常用命令

    linux学习笔记(一):Linux常用命令 ctrl + l 清屏 clear crtl + c 终止操作 Linux常用命令 文件处理命令 ls:list 功能:显示目录文件 选项: -a 显示所 ...

  8. Hadoop 学习笔记(三)常用命令

    Hadoop 学习笔记(三)常用命令 进入HADOOP_HOME目录. 执行sh bin/start-all.sh 进入HADOOP_HOME目录. 执行sh bin/stop-all.sh Usag ...

  9. Linux学习笔记(二)|常用命令

    Linux学习笔记(二)常用命令 1.文件处理命令 1.1命令格式与目录处理 -ls 功能描述:显示目录文件 原意:list 所在路径:/bin/ls 语法: ls-a 显示所有文件,包括隐藏文件 l ...

  10. 设计模式学习笔记(十七)——Command命令模式

    设计模式学习笔记(十七)--Command命令模式 Command命令模式介绍: Command命令模式是一种对象行为型模式,它主要解决的问题是:在软件构建过程中,"行为请求者"与 ...

最新文章

  1. 一步一步 Mac OS X 与 Windows 7 双系统共存 的“黑苹果” 电脑 安装 入门
  2. Linux下常用 60个命令
  3. python语言做法_python学习笔记(十六)
  4. HTML5 Audio标签API整理(三)
  5. 基于改进SSD的车辆小目标检测方法
  6. 【转载】linux进程控制-exec系列 exec系统调用
  7. 下一个十年,什么样的测试会被大厂争抢?
  8. 找出一个字符串中的数字
  9. 《史蒂夫·乔布斯传》PDF下载
  10. Android -- WiFi的NUD检测机制浅析
  11. 大数据运维工作(Linux,OGG,链路监控,Hadoop运维等)
  12. Linux下Docker安装微信文件传输问题
  13. 机器人II_ny_371
  14. 如何在Win10系统下的IntelliJ IDEA 2018.3.5下载与安装以及激活教程
  15. Android 的 LiveReload — jimu Mirror
  16. windows无法连接到共享打印机,错误码:0x0000011b
  17. 记者:你为什么还不退休? | 任正非:我上午可以喝茶,下午再喝茶就睡不着了...
  18. Ceph入门系列(一)
  19. python对象的生命周期_python对象的生命周期
  20. 电商项目中的经典问题

热门文章

  1. edm邮件直投_EDM邮件直投专家_EDM邮件直投专家官方版下载 - 邮件处理 - 绿软家园...
  2. Ubuntu——安装smplayer视频播放器
  3. 构建 Java 镜像的 10 个最佳实践
  4. ggplot画 ump 和tsne 从seurat中使用addmodule得到的umap 使用ggplot画图
  5. 不用PS,也可以轻松组合漂亮的图片—135编辑器拼图教程
  6. 计算机cpu占用率高,CPU占用率高的原因及解决方法
  7. 获取input输入值和获取form表单中的组件输入值区别
  8. Excel 2010 VBA 入门 010 VBE编辑器的工具栏
  9. i5 6500 HD530 台式机黑苹果记录
  10. STL emplace_back