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

article/2025/3/11 9:02:45

目录

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

创建Mod文件夹

在电脑上创建mod文件夹,用于存放mod开发的所有内容。
此处我在我的电脑的 D:\MC\newProjects\ 目录下创建一个mod文件夹,文件夹名称为:ThreeSecretOneMod
注意:

  1. 文件夹命名格式推荐为:自定义组织名称+自定义的Mod名称+Mod固定字符
    如上:Three为组织名称,SecretOne为Mod名称,Mod为固定字符
  2. 创建的mod文件夹路径不能出现中文。例如 D:\MC\newProjects\ 路径中并无中文字符。

在这里插入图片描述

构建Mod的基本目录结构

进入mod文件夹中。进入后创建两个文件夹,分别为ThreeSecretOneBehaviorPackThreeSecretOneResourcePack ,分别代表此mod的行为包和资源包。
注意:

  1. 行为包文件夹的命名格式为:自定义组织名称+自定义的Mod名称+BehaviorPack固定值。如:
    ThreeSecretOneBehaviorPack
  2. 资源包文件夹的命名格式为:自定义组织名称+自定义的Mod名称+ResourcePack固定值。如:
    ThreeSecretOneResourcePack

ThreeSecretOneBehaviorPack: 用于存放游戏内容的相关行为逻辑相关内容资源和相关配置,主要是存放json和python文件。
ThreeSecretOneResourcePack:用于存放游戏内需要用到的静态资源,主要是存放游戏中用到的图片、音频、粒子、序列帧等资源。
在这里插入图片描述

构建行为包基本结构

进入行为包后,创建实体文件夹entities 和 脚本文件夹ThreeSecretOneScript
注意:

  1. 实体文件夹entities的名称为固定名称,不可修改。
  2. 脚本文件夹名称格式为:自定义组织名称+自定义的Mod名称+Script固定字符。如:ThreeSecretOneScript

另外,还需要创建一个名为 manifest.json 的json文件,用于告诉游戏引擎这是一个行为包。
注意:manifest.json 文件名称不可修改,为固定名称
manifest.json 文件内容如下:

{"header": {"uuid": "9ac7ec64-fc78-4cc2-98bd-ff89bbedf672","version": [ 0,0,1],"description": "Three Secret Place Tracking Preface @three","name": "ThreeSecretOne"},"dependencies": [],"modules": [{"version": [0,0,1],"type": "data","description": "Three Secret Place Tracking Preface  @three","uuid": "ee42727e-79ad-4459-878f-1a70e63ec662"}],"format_version": 1
}

manifest.json 文件内容 说明,开发者只需要修改如下内容:

header 内的配置:
1. uuid :必填,使用【MC 网易-我的世界-mod开发基础笔记】 — 常用的在线工具 中的uuid在线生成工具生成,将生成的uuid复制到文件中即可。
2. version :必填,版本号,默认初始版本号为 [ 0,0,1] ,若之后发布后的mod需要更新则此版本号需要修改。目前刚创建则使用默认版本号即可。
3. description :描述,非必填,填写mod或mod行文包的相关描述。
4. name:必填,填写 自定义组织名称+自定义的Mod名称

modules 内的配置:
1. uuid :必填,使用【MC 网易-我的世界-mod开发基础笔记】 — 常用的在线工具 中的uuid在线生成工具生成,将生成的uuid复制到文件中即可。
2. version :必填,版本号,默认初始版本号为 [ 0,0,1] ,若之后发布后的mod需要更新则此版本号需要修改。目前刚创建则使用默认版本号即可。
3. description :描述,非必填,填写mod或mod行文包的相关描述。
4. type:必填,行为包的固定值为 data ,资源包的固定值为resources。此处为行为包,则填写为data

结构如下图:
在这里插入图片描述

构建脚本文件夹基本结构

进入脚本文件夹中。在文件夹中创建4个python文件。分别为:

  1. init.py :python的初始脚本文件,目前该文件为空白内容。
  2. handlerClient.py : mod的客户端处理脚本。
  3. handlerServer.py : mod的服务端处理脚本
  4. modMain.py : mod 启动入口脚本

如下在这里插入图片描述

构建 mod 启动入口脚本

使用编辑器打开 modMain.py 文件,文件内容如下:

# -*- coding: utf-8 -*-from mod.common.mod import Mod
import mod.client.extraClientApi as clientApi
import mod.server.extraServerApi as serverApi@Mod.Binding(name = 'ThreeSecretOne', version = '0.0.1')
class ThreeSecretOneMod(object):@Mod.InitServer()def ThreeSecretOneServerInit(self):# 使用RegisterSystem()方法向游戏引擎注册服务端脚本# 参数1:自定义组织名称+自定义的Mod名称# 参数2:自定义的服务端名称建议格式为:自定义组织名称+自定义的Mod名称+ServerSystem# 参数3:服务端脚本文件的路径 。从脚本文件夹开始serverApi.RegisterSystem('ThreeSecretOne', 'ThreeSecretOneServerSystem', 'ThreeSecretOneScript.handlerServer')print("===== 	ThreeSecretOneServerInit =====") pass@Mod.DestroyServer()def ThreeSecretOneServerDestroy(self):pass@Mod.InitClient()def ThreeSecretOneClientInit(self):# 使用RegisterSystem()方法向游戏引擎注册客户端脚本# 参数1:自定义组织名称+自定义的Mod名称# 参数2:自定义的服务端名称建议格式为:自定义组织名称+自定义的Mod名称+ClientSystem# 参数3:服务端脚本文件的路径 。从脚本文件夹开始clientApi.RegisterSystem('ThreeSecretOne', 'ThreeSecretOneClientSystem', 'ThreeSecretOneScript.handlerClient')print("===== 	ThreeSecretOneClientInit =====")pass@Mod.DestroyClient()def ThreeSecretOneClientDestroy(self):pass

构建资源包基本结构

进入资源包目录下。
创建一个名为 manifest.json 的json文件,用于告诉游戏引擎这是一个资源包。
注意:manifest.json 文件名称不可修改,为固定名称
manifest.json 文件内容如下:

{"header": {"uuid": "39742707-d76c-4e1c-bede-92fbf30cd86c","version": [ 0, 0,1],"description": "Three Secret Place Tracking Preface  @three","name": "ThreeSecretOne"},"modules": [{"version": [ 0,0, 1],"type": "resources","description": "Three Secret Place Tracking Preface  @three","uuid": "d0b50d89-e185-4fdc-97b7-f492e2ded9bb"}],"format_version": 1
}

manifest.json 文件内容 说明,开发者只需要修改如下内容:

header 内的配置:
1. uuid :必填,使用【MC 网易-我的世界-mod开发基础笔记】 — 常用的在线工具 中的uuid在线生成工具生成,将生成的uuid复制到文件中即可。
2. version :必填,版本号,默认初始版本号为 [ 0,0,1] ,若之后发布后的mod需要更新则此版本号需要修改。目前刚创建则使用默认版本号即可。
3. description :描述,非必填,填写mod或mod行文包的相关描述。
4. name:必填,填写 自定义组织名称+自定义的Mod名称

modules 内的配置:
1. uuid :必填,使用【MC 网易-我的世界-mod开发基础笔记】 — 常用的在线工具 中的uuid在线生成工具生成,将生成的uuid复制到文件中即可。
2. version :必填,版本号,默认初始版本号为 [ 0,0,1] ,若之后发布后的mod需要更新则此版本号需要修改。目前刚创建则使用默认版本号即可。
3. description :描述,非必填,填写mod或mod行文包的相关描述。
4. type:必填,行为包的固定值为 data ,资源包的固定值为resources。此处为资源包,则填写为resources

创建其他文件夹,用于存放各类资源,以下创建的文件夹名称固定,不可修改

  1. effects :用与存状态效果的相关配置的文件夹
  2. models :用于存放模型的文件夹
  3. sounds : 用于存放音频的文件夹
  4. texts :用于存放国际化配置的文件夹
  5. textures :用于存放贴图资源的文件夹
  6. ui : 用于存放ui配置的文件夹

如下图:
在这里插入图片描述

构建国际化文件基本结构

texts文件夹中存放国际化的文件。由于游戏中各项内容的配置均为英文,则游戏中展示默认是显示英文内容,若要将相对应的内容在游戏中显示为中文,(配置的中文可配合【MC 网易-我的世界-mod开发基础笔记】 — 常用的在线工具中我的世界颜色格式的部分使用)
则需要在此文件夹下做相关的配置。
创建中文配置文件zh_CN.lang 文件名固定不可改变
其内容相关的语法格式为:

自定义物品配置中文名称

格式为:item.自定义物品定义的英文名称.name=中文名称
例如:item.three_secret_one:gambler_log.name=§9[初级] §9探险家日志

自定义方块配置中文名称

格式为:item.自定义物品定义的英文名称.name=中文名称
例如:tile.three_secret_one:dowork.name=秘境工作台

自定义实体配置中文名

格式为:entity.自定义物品定义的英文名称.name=中文名称
entity.three_secret_one:dangerDog.name=秘境恶犬

如下:

在这里插入图片描述

构建贴图资源文件夹的基本结构

创建以下文件夹用于分类存放贴图资源,创建的文件夹名称固定不可改变

  1. item :用于存放自定义物品贴图的文件夹
  2. models:用于存放模型贴图的文件夹
  3. ui:用于存放ui贴图的文件夹

创建item_texture.json 文件,用于配置贴图资源的使用
其内容为:

{"resource_pack_name": "vanilla","texture_name": "atlas.items","texture_data": {}
}

如下图
在这里插入图片描述

此时,结构创建完毕。


http://chatgpt.dhexx.cn/article/9rX2TAcf.shtml

相关文章

我的世界1.13 mod制作——环境搭建(一)

说明:已经玩过好多年《我的世界》,大概从13年开始吧,虽然不算早,但是也不是很晚。因为高度自由、丰富的mod、精美的材质光影,简单的方块游戏风靡世界。最近心血来潮想学学怎么做mod,但是直接从1.13.2直接起…

我的世界MOD制作(2)|| 你的第一个MOD

正文:I. 开发环境配置 我们需要一个带mixin的forge开发环境,这一步相当折磨人,网络不好的话半天时间都得砸这上面,但是不要灰心,过了这个坎接下来基本是顺风顺水。 1. 下载资源 & 修改build.gradle 首先去forge官网…

Ts 简单随机迷宫迷宫地图

直接上代码 //随机地图const { ccclass, property } cc._decorator;ccclass export default class NewClass extends cc.Component {property(cc.Node)mapItem: cc.Node null;property(cc.Node)mapContent: cc.Node null;private mapArr: any [];onLoad() {}start() {}ran…

C++游戏编程--实现鼠标编辑迷宫地图界面

鼠标左键放砖,右键取消。 void Change() {Show();while (true) {ExMessage m;//定义一个消息变量m getmessage(EM_MOUSE);//获取鼠标消息switch (m.message){case WM_MOUSEMOVE:// 鼠标移动的时候画红色的小点putpixel(m.x, m.y, RED);break;case WM_LBUTTONDOWN:/…

台州oj 5061 迷宫地图

5061: 迷宫地图 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte 总提交: 114 测试通过:28 描述 在一些迷宫游戏中,往往有多个关卡,每个关卡有不同的地图,地图往往是由n行m列的方格组成,每个格子上可能是通道、墙壁、道具、玩家等。在设计时,…

关于矩形迷宫地图的数组化处理和相应寻路算法的思考

目录 矩形地图的数组化 思路 提取实现 实现过程 (1)特征 (2)取点问题 (3)需要确定的变量值 (4)另外的 (5)适用的迷宫类型 寻路算法 数组迷宫的特点 数组迷宫的缺点 算法…

C#迷宫Winform小游戏,生成可连通的迷宫地图

上一篇本人已经写了一个控制台小游戏,这次使用Winform来生成可连通的地图,并测试运行游戏 迷宫小游戏控制台 一、先更改控制台游戏的一点点代码,用于测试迷宫是否连通的【即:从起点可以到达终点】。只用更改 MazeUtil.cs的查找路…

迷宫游戏|自动寻径|随机生成迷宫地图|UI|闯关|地图反转

MazeGame 遵循开源协议 MIT 开发工具及运行环境 开发IDE环境 : Visual Studio 2019 代码管理工具: Git 开发语言:C 程序运行环境(开发环境为(Windows10)其他兼容性未知) 依赖库 EasyX 图形界面库 EasyX官网:EasyX Git仓库地址 Gitee:Gitee 仓库 Github:h…

Java程序:迷宫地图生成器

Java程序:迷宫地图生成器 1、运行效果 可以在【0,50】之间随意设置行数和列数,比如设置为25行25列的迷宫地图数组。 迷宫地图的每一个方格,如果是白色,单击就变成黑色,如果是黑色,单击就变成白色。黑色对应数组里的1,白色对应数组里的0。 因为没有采用路径搜索算法来设…

Java 开发实例(第3篇),绘制迷宫1 生成迷宫地图

开发环境: 操作系统Win10。 1.下载Java 15,提取码:soft 2.下载软件 Eclipse 2020-12,提取码:soft 下载本博客的实例工程代码,提取码:soft 前天2月9日在逛B站App时,意外看到一个很…

Python 打印迷宫地图小游戏

在实现玩转小迷宫这个游戏时,分别使用了input()输入函数、print()输出函数、if…elif…else语句、二维列表、while循环、for循环 下面对这些用法再一次重温 1.input()输入函数 在 Python 中,使用内置函数 input() 可以接收用户的键盘输入。input() 函数…

html5的canvas绘制迷宫地图

canvas标签一直是html5的亮点,用它可以实现很多东西。我想用它来绘画像迷宫那样的地图。借助到的工具有瓦片地图编辑器tiled(点击跳转到下载链接)。 如图:如果你想要画像这样的迷宫地图,如果不用canvas,可以通过dom操作拼接一个一个div,以达成这个效果。那样是不是很不合…

深度优先,Kruskal,Prim几种方式生成迷宫地图

小时候玩过一款3D版迷宫,那时还是功能机时代,黑白界面拼凑的伪3D效果还是给我带来了很多快乐。后来出现了智能机,却再也没找到过那样纯粹的迷宫游戏。总算自己找时间做一个出来。 本文主要介绍一下深度优先,Kruskal,Prim几种方式生…

二维数组随机生成地图迷宫_经验分享:三套简单的迷宫地图生成方案

文/兔四 概述:文章基于一种基础的地图,来讨论三套不同的地图生成方案。 文章不会出现跟代码相关的内容,会以较为通俗的语句和不少简单的示意图来表示迷宫的生成方案。其中不少方法来自于游戏界前辈,我根据自己的基础地图做了不少修正(毕竟迷宫和地图的形式多种多样,适合自…

算法自动生成迷宫地图

文章目录 前言一、什么是(DFS)深度优先算法?深度优先算法实现步骤1.引入库2.初始化参数3.Turtle画方格函数4.开始生成数组并调用Turtle画图 二、什么是(BFS)广度优先算法?广度优先算法实现步骤1.引入库2.初…

【工具篇】Unity迷宫地图生成器MazeSpawner随机迷宫信手拈来

目录 一.迷宫生成效果 二.使用流程 三.使用场景 四.源码地址 一.迷宫生成效果 二.使用流程 1.导入后结构目录如下,打开prefab文件夹找到MazeSpawner放进场景里面

C++实现随机生成迷宫地图自动完成寻径

#include<iostream> #include<stack> #include<vector> using namespace std;template<class T> class Maze { public:Maze( //默认参数值pair<int, int> initSize make_pair(15, 17),pair<string, string> initStyle m…

Python 制作迷宫游戏(一)——地图

Python 制作迷宫游戏&#xff08;一&#xff09;——地图 序 作为一个迷宫类的游戏&#xff0c;其最重要的是什么&#xff1f;当然是它的地图啦♪(∇*) 那么我们又该如何制作一张迷宫地图呢⊙(・◇・)&#xff1f; 很显然&#xff0c;我们不可能一张张自己画吧 网络上常见的迷…

三套简单的迷宫地图生成方案

地图基础 地图的形式很多&#xff0c;这里我使用的地图是以tile块为单位分割的地图&#xff0c;地图上的tile块形式很多&#xff0c;但主要分成三种&#xff1a; A&#xff1a;陆地&#xff0c;可以在上面分布一些角色啦物件啦&#xff1b; B&#xff1a;过渡&#xff0c;根据物…

SenticNet情感词典介绍

在进行情感分析时&#xff0c;一个好的情感词典能够让我们的工作事半功倍&#xff0c;较为出名的情感词典有SentiWordNet&#xff0c;General Inquirer等&#xff0c;这篇博客将介绍另外一个出色情感词典&#xff0c;SenticNet。 简介 当谈论SenticNet时&#xff0c;我们正在…