第一步,打开自己的mod包[CS3.P12]简单地创建一个自己的GUI-第1张图片[CS3.P4]简单的创建一个属于你自己的方块&方块常用参数-第1张图片

第二步,创建一个GUI[CS3.P12]简单地创建一个自己的GUI-第2张图片

normal就是普通的GUI,只能添加标签(只是无边框的文字)和按钮(可添加点击事件)。

container可以添加比如物品框、燃烧进度条(参考熔炉)之类的东西。

normal界面:

[CS3.P12]简单地创建一个自己的GUI-第3张图片

container界面:

(就多了一个shiftClickRules)

[CS3.P12]简单地创建一个自己的GUI-第4张图片

1-1、background:[CS3.P12]简单地创建一个自己的GUI-第5张图片

Background 背景材质点右边仨点打开的界面就可以选择材质,而材质文件要放在.minecraft\mods\你的mod包\assets\你的mod包\textures\gui下

Texture X 背景材质选择的横坐标

Texture Y 背景材质选择的纵坐标

这两个都只能决定选择整块材质的哪个部分,而不能调整大小。

1-2 guiData:

[CS3.P12]简单地创建一个自己的GUI-第6张图片

特殊注意:

Cook Prog和Fuel Prog 容易使界面卡住,只能重开客户端才能解决(陈年老bug了)

而两者里的Module Name很重要,一定要记住,这是合成表名字,在下文Tile Entity的furnaceModules里设置,主要是用于显示进度条

1-3 height与width:

设置材质所选区域大小,默认值是150,加载背景材质以后是这样的:

[CS3.P12]简单地创建一个自己的GUI-第7张图片

当然,把材质改成150x150的大小也可以

1-4 shiftClickRules:

点击New新建一个规则

[CS3.P12]简单地创建一个自己的GUI-第8张图片以每个灰色选框为分界

第一层是从玩家背包到GUI物品格

玩家背包共36格,而序号却是0-35

第二层是从GUI物品格到玩家背包栏

根据具体的GUI物品格数量来设置

物品格序号在guiData中将鼠标移至物品格上方即可看到(都是从slot0开始的而不是从slot1开始)

第三层是只移动燃料

第四层是只移动输入物品

但后两者基本没啥用就是了

第三步,创建一个Tile Entity

打开你的mod包,在最下底找到Tile Entities[CS3.P12]简单地创建一个自己的GUI-第9张图片

inventory就是可以添加物品格的选项

而normal由于这里不涉及,因此就不多言了 其实是自己也不明白

[CS3.P12]简单地创建一个自己的GUI-第10张图片

进入之后

[CS3.P12]简单地创建一个自己的GUI-第11张图片

2-1 furnaceModules:

添加一个熔炉式模板

[CS3.P12]简单地创建一个自己的GUI-第12张图片

Name就是这个模板的名字

Recipe list就是合成表的模板,默认为熔炉,也就是说按默认的来的话最后就做出来个熔炉

可以在mod包界面的Smelting Recipes里添加合成

Fuel List就是燃料模板,按自己的燃料配方来。

可以在mod包界面的Fuels里添加燃料

Input Slot就是输入格

Output Slot就是输出格

Fuel Slot就是燃料格

Cook Time就是物品处理需要的时间(单位:tick)

2-2 onUpdate:

当物品在玩家背包中就会每tick触发一次事件

2-3 slotCount:

重头戏来了!

可以设定当前Tile Entity内含多少物品格

不包括玩家物品栏

近一半的崩溃和无法合成都是因为这个,另一半是因为事件没写好(好像暴露了什么)

设置完Tile Entity之后绑定到方块上[CS3.P12]简单地创建一个自己的GUI-第13张图片

光有Tile Entity还不行,还要再写个事件绑定GUI

一般都是写个onActivated,很符合原版设定

[CS3.P12]简单地创建一个自己的GUI-第14张图片

绑定到方块上就是openBlockGui

物品的话就是openGui

打开物品栏中的某一个物品的GUI就是openItemGui

打开末影箱就是openEnderChest

至于更多的就自己去查

[CS3.P12]简单地创建一个自己的GUI-第15张图片

末,关于自制合成表

这个合成表是那种多格的合成表,而CS3本身只能制作一格输入一格输出的合成表(还有个燃料格,也可以拿来当输入)

在CS3里,这个功能需要事件来完成

也就是说得写js

我自己的大体思路就是检测方块内部物品格,然后获取相应物品格物品名称

物品名称正确的话就合成,在另一个物品格里设置一个新物品,并删除原来物品格的物品

而合成进度则用计时器


看到这里辛苦了,给各位递一杯java

[CS3.P12]简单地创建一个自己的GUI-第16张图片