用命令启动java我的世界_我的世界Minecraft Mod开发学习笔记 - 实现一个简单的命令Mod...
概述
本文使用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...相关推荐
- 【MC 网易-我的世界-mod开发基础笔记】 --- 运行测试第一个空白Mod
这里写目录标题 前提 创建 空白世界,并在此世界中添加第一个空白的mod 前提 在[MC 网易-我的世界-mod开发基础笔记] - 创建第一个空白Mod 创建完成之后,进行测试. 创建 空白世界,并在 ...
- Polyworks脚本开发学习笔记(十三)-深入了解MACRO命令
Polyworks脚本开发学习笔记(十三)-深入了解MACRO命令 MACRO命令中包含了很多宏脚本管理以及变量操作命令,交互操作命令等,是非常重要的一个模块. 数组和字符串操作 从数组中拿掉一个元素 ...
- 【MC 网易-我的世界-mod开发基础笔记】 --- 创建第一个空白Mod
目录 创建Mod文件夹 构建Mod的基本目录结构 构建行为包基本结构 构建脚本文件夹基本结构 构建 mod 启动入口脚本 构建资源包基本结构 构建国际化文件基本结构 自定义物品配置中文名称 自定义方块 ...
- golang游戏开发学习笔记-创建一个能自由探索的3D世界
此文写在golang游戏开发学习笔记-用golang画一个随时间变化颜色的正方形之后,感兴趣可以先去那篇文章了解一些基础知识,在这篇文章里,我们将创建一个非常简单(只有三个方块)但能自由探索的的3D世 ...
- java流链概念_《精通并发与Netty》学习笔记(09 - Java中流的概念)
Java中流的概念 java程序通过流来完成输入/输出.流是生产或消费信息的抽象.流通过java的输入/输出与物理设备链接.尽管与它们链接的物理设备不尽相同,所有流的行为具有同样的方式.这样,相同的输 ...
- Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令
Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令 文章目录 Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令 info server info clie ...
- Linux学习笔记(一):Linux常用命令
linux学习笔记(一):Linux常用命令 ctrl + l 清屏 clear crtl + c 终止操作 Linux常用命令 文件处理命令 ls:list 功能:显示目录文件 选项: -a 显示所 ...
- Hadoop 学习笔记(三)常用命令
Hadoop 学习笔记(三)常用命令 进入HADOOP_HOME目录. 执行sh bin/start-all.sh 进入HADOOP_HOME目录. 执行sh bin/stop-all.sh Usag ...
- Linux学习笔记(二)|常用命令
Linux学习笔记(二)常用命令 1.文件处理命令 1.1命令格式与目录处理 -ls 功能描述:显示目录文件 原意:list 所在路径:/bin/ls 语法: ls-a 显示所有文件,包括隐藏文件 l ...
- 设计模式学习笔记(十七)——Command命令模式
设计模式学习笔记(十七)--Command命令模式 Command命令模式介绍: Command命令模式是一种对象行为型模式,它主要解决的问题是:在软件构建过程中,"行为请求者"与 ...
最新文章
- 一步一步 Mac OS X 与 Windows 7 双系统共存 的“黑苹果” 电脑 安装 入门
- Linux下常用 60个命令
- python语言做法_python学习笔记(十六)
- HTML5 Audio标签API整理(三)
- 基于改进SSD的车辆小目标检测方法
- 【转载】linux进程控制-exec系列 exec系统调用
- 下一个十年,什么样的测试会被大厂争抢?
- 找出一个字符串中的数字
- 《史蒂夫·乔布斯传》PDF下载
- Android -- WiFi的NUD检测机制浅析
- 大数据运维工作(Linux,OGG,链路监控,Hadoop运维等)
- Linux下Docker安装微信文件传输问题
- 机器人II_ny_371
- 如何在Win10系统下的IntelliJ IDEA 2018.3.5下载与安装以及激活教程
- Android 的 LiveReload — jimu Mirror
- windows无法连接到共享打印机,错误码:0x0000011b
- 记者:你为什么还不退休? | 任正非:我上午可以喝茶,下午再喝茶就睡不着了...
- Ceph入门系列(一)
- python对象的生命周期_python对象的生命周期
- 电商项目中的经典问题
热门文章
- edm邮件直投_EDM邮件直投专家_EDM邮件直投专家官方版下载 - 邮件处理 - 绿软家园...
- Ubuntu——安装smplayer视频播放器
- 构建 Java 镜像的 10 个最佳实践
- ggplot画 ump 和tsne 从seurat中使用addmodule得到的umap 使用ggplot画图
- 不用PS,也可以轻松组合漂亮的图片—135编辑器拼图教程
- 计算机cpu占用率高,CPU占用率高的原因及解决方法
- 获取input输入值和获取form表单中的组件输入值区别
- Excel 2010 VBA 入门 010 VBE编辑器的工具栏
- i5 6500 HD530 台式机黑苹果记录
- STL emplace_back