我的世界植物魔法MTRM魔改问题

服务器进不去:Mod rejecitons [FMLMod:MTRM{1.0}]有图&-&Minecraft(我的世界)中文论坛 -
后使用快捷导航没有帐号?
查看: 890|回复: 4
服务器进不去:Mod rejecitons [FMLMod:MTRM{1.0}]有图
进服就显示Mod rejecitons [FMLMod:MTRM{1.0}
QQ截图26.png (73.34 KB, 下载次数: 2)
13:48 上传
帖子永久链接:&<button type="submit" class="pn" onclick="setCopy('http://www.mcbbs.net/thread--1.html', '帖子地址已经复制到剪贴板您可以用快捷键 Ctrl + V 粘贴到 QQ、MSN 里。')">点击复制
&&服务器mod和客户端mod不相同。
&&请检查客户端中是否有“MTRM”这个mod,没有的话请联系腐竹(实在找不到这个mod)
请移除客户端的MTRW(自定义合成配方)Mod
缺少mod:MTRM{
解决方法:删除服务端内的MTRM{或者客户端内加一个MTRM{
可能是没在时间内输入密码,可能是客户端没有MTRM这个mod,或是这个mod出了问题,还可能是没网
""以及"我的世界"为Mojang Synergies AB的商标。本站与Mojang以及微软公司没有从属关系。
版权所有。本站原创图文内容版权属于原创作者,未经许可不得转载。[从零开始]魔改教程-MT技巧性使用叙述&-&Minecraft(我的世界)中文论坛 -
后使用快捷导航没有帐号?
查看: 10917|回复: 33
[从零开始]魔改教程-MT技巧性使用叙述
您尚未登录,立即登录享受更好的浏览体验!
才可以下载或查看,没有帐号?
本帖最后由
07:21 编辑
第一章 MT技巧性叙述
Page.1 MT启用准备工作
或许你能够添加MOD并且制作一个基础的MOD整合包,但是这里我还是要不厌其烦的说一遍MOD安装当然只是一个图片配一堆文字的叙述,很快就会结束
& & & & & & & & & & & & & & & &
Stage.1 MOD安装确定你的Minecraft版本,去BAIDU 上面寻找匹配版本的MOD资源下载资源,打开准备好的Minecraft将MOD直接放入整合包文件夹名称-.minecraft-mods文件夹下(老版MC的覆盖安装这里就不想提了,因为很古老了)(如果你打开了文件隔离的话,你需要安装在.minecraft-version-对应MC/forge版本文件夹-mods里面)
图片1.png (19.08 KB, 下载次数: 2)
14:13 上传
好了,或许你需要安装一个Minetweaker 3 以及Modtweaker 2来完成教程教程使用Minetweaker版本 3.0.10BModtweaker版本2-0.9.5Now, our story begins.
& & & & & & & & & & & & & & & &
Stage.2 找到对应的script文件夹如果你顺利的安装了MT的话,启动一次MC,你会发现在.minecraft目录下面生成了一个新的文件夹
图片2.png (3.98 KB, 下载次数: 2)
14:13 上传
这个scripts文件夹便是我们每天要工作的地方了关于scripts的历史以后我们会谈,而且我们会经常遇到scripts相信做过网页,学过编程的对它一定不是很陌生(笑)话回正轨,我们有了这个文件夹可以干什么呢(如果有的同学开启MC之后发现没有这个文件夹,可以尝试自己建立一个scripts文件夹)
& & & & & & & & & & & & & & & &
Stage.3 基础的script编写Script有剧本,脚本的意思,当然我更喜欢叫它词条
图片3.png (5.82 KB, 下载次数: 2)
14:29 上传
但是一个空空如也的文件夹里面并不会产生序章所说的效果所以说我们需要创建一个MT能够阅读的文件而MT只能识别以.zs结尾的文件所以我们需要随便创建一个Txt文件
图片4.png (2.17 KB, 下载次数: 2)
14:29 上传
然后给他改一下后缀
图片5.png (2.48 KB, 下载次数: 3)
14:29 上传
这样,它就可以被MT加载了但是这个文件里面没有东西也不行,所以说我们要开始进行一些编写关于编写,你可以使用计算机默认的记事本打开
图片6.png (6.65 KB, 下载次数: 1)
14:31 上传
或者是用比较简洁明了的Notepad(推荐)打开
图片7.png (19.4 KB, 下载次数: 1)
14:31 上传
Notepad可以在各大应用软件处下载,这里就不放出具体地址首先我们必须了解一个概念,就是 魔改不同于编程我再单独拿出来说一遍魔改不同于编程
——题外话——什么叫做不同于编程呢首先我们需要知道一个事实,电脑只能识别以0/1编码的序列我们输入Fuck,电脑自身是看不懂的,实际上连储存都不会但是通过编程软件--譬如C类和Java以及VB等等这些Fuck之类的词语就可以被转化为0/1序列了(当然这里说的比较粗略而且也有些漏洞)而词条scripts,则是建立于编程基础之上的更简单的一种编写方式“我从未想到人类可以用自己的语言与计算机通话”那么,我们就可以说“魔改工作者从未想到能用自己的语言跟MC对话” 话归正传,我们需要学习一些基础的词条编写而在此之前我们需要熟悉MC内MT添加的一些指令,可以通过输入/mt help查询
图片8.png (67.21 KB, 下载次数: 2)
14:18 上传
/mt help 可以显示原版MC就可以使用的MT指令以及添加入MOD之后的指令关于指令,我们之后的教程中会缓慢介绍,首先我们需要知道第一个指令
& & & & & & & & & & & & & & & &
1.重装载/mt reload& & 重装载,可以让MC处于开启状态时重新加载scripts文件夹内的.zs文件首先,我们需要学习第一个词条在我们创建的文件中写入print(&hello world&);复制代码然后点击保存。随便打开一个存档,在游戏中输入/mt reload(或者是直接重启一次游戏,当然不会有人这么做的。)这样,这段print就被加载了,hello world也被打印了出来打印到哪里去了呢?在这里minecraft.-minetweaker.log文件下,也就是生成在Log(记录)里面了INFO: hello world复制代码这条print有什么用处呢?目前用处似乎只有方便检查那些被加载了,那些未被加载。
& & & & & & & & & & & & & & & &
2.Log的作用Log的作用想必很多人都知道——可以帮助检查错误然而Minetweaker给我们了一个惊喜,Log不仅可以检查错误,而且是一个输出端!在游戏中输入/mt names& &这个指令将使MT调出所有物品在MT中的名字
图片9.png (60.65 KB, 下载次数: 2)
14:20 上传
不仅是导出原版物品的名字,还有所有MOD里面的名字但是请注意,这里导出的物品不包括带有附加值/NBT的物品譬如说我们在其中搜索木板,是找不到桦木木板和云杉木板的,只能找到橡木因为桦木的物品ID代码是5:2 云杉是5:1而5的ID代表的是橡木也就是说,&minecraft:planks&代表的是橡木木板那样&minecraft:plank:1&代表的就是云杉!&minecraft:planks:2&就是白桦木! 包括附魔书,附魔书每个都带有自己的NBT数据,而这个数据平时是看不到的,如果用NBTedit又会很麻烦
& & & & & & & & & & & & & & & &
3.实用指令/mt hand/mt hand复制代码
一直都是受所有MT工作者好评的一个指令,他可以输出你手中拿的物品的MT名字,并且复制到剪贴板里面(所以我们平时都是在复制贴贴.....)所以如果一个东西有着复杂的NBT数据,不妨用这个指令这里以时运三附魔书为例,他的名字被/mt hand导出之后是这样的&minecraft:enchanted_book&.withTag({StoredEnchantments: [{lvl: 3 as short, id: 35 as short}]})复制代码后面的.withTag我们之后会讲到,不过很多玩过命令方块的玩家想必已经明白了/mt hand这个指令一定要善加使用,不然会浪费很多时间
& & & & & & & & & & & & & & & &
4.注释格式经常有小伙伴不爱分开文件夹写词条,有些时候很容易混淆MT也引用了J的注释格式格式如下(注释文字不可为中文)①单行注释//注释文字②单行注释# 注释文字③多行注释/*可以多行注释文字*/复制代码
但是请注意,不要使用中文,中文之后会莫名乱码
Page.2 MT基本配方编写Stage.1 合成配方语句编写众所周知,所有的编程都有自己的语句,MT也不例外——虽然它不属于编程recipes.addShaped(Output,InputBox);复制代码其中所有的符号都为英文符号即半角符号。这个语句是为了用来添加有序合成的,Output很容易理解,即输出端那么InputBox是什么呢我们可以用一个指令来看看电脑的解释在游戏里面输/mt recipes复制代码MT会将所有物品的合成配方全部发给你你将会看到密密麻麻的代码从中我们拿钻石镐举例子
图片10.png (2 KB, 下载次数: 1)
14:37 上传
对应这个合成的代码是recipes.addShaped(&minecraft:diamond_pickaxe&,[[&ore:gemDiamond&, &ore:gemDiamond&, &ore:gemDiamond&], [null, &ore:stickWood&, null],[null, &ore:stickWood&, null]]);复制代码
可以用中文翻译一下,就变成配方.添加有序配方(&原版钻石镐&, [[&矿典引用:钻石&, &矿典引用:钻石&, &矿典引用:钻石&], [我是空的, &矿典引用:木棍&, 我是空的], [我是空的, &矿典引用:木棍&, 我也是空的]]);复制代码当然矿典引用你可以去掉观看,这样更为清晰 也就是说,这里的输出端是钻石镐,输入就是我们在合成台看到的那个样板合成台的模样就是InputBox的模样被&&包含在内的就是物品名称——MT名称Null则代表的是空格子的意思对于Inputbox的最外面的[]代表这个Inputbox的范围内部的二级[]代表一行的input,当然里面只能容纳三个物品。 如果我们要删除原来就有的配方,则需要输入recipes.remove(Output);复制代码但是注意,这将删除所有用来合成Output物品的合成配方或者你可以试着定点删除recipes.removeShaped(Output,InputBox);复制代码删除物品的某个特定配方 如果输出的物品是多个怎么办譬如说木板合成木棍要出现四个木棍,可是输出只允许写一个物品你可以将&minecraft:stick&写为&minecraft:stick&*4这样就可以添加四个木棍作为输出了 如果要添加无须配方怎么办?可以尝试使用这行语句recipes.addShapeless(Output, InputBox);复制代码不过与上文有序不同的是,shapeless无需添加合成不需要二级[](因为无序合成不在乎哪行) 至于要删除特定物品的有序或者是无序配方recipes.removeShaped(Output); recipes.removeShaped(Output,InputBox);recipes.removeShapeless(Output); recipes.removeShapeless(Output,InputBox);复制代码但是有的人又要问了,原版木板合成木棍的话是不是每种木头都要写一个配方这样就要写(数数),好多个配方实际上对于几个附加值(Meta)不同的物品来说(譬如木板一家族)可以采用通用符即&minecraft:planks:*&那个*就是所谓通用符,他代表了任意一种附加值这样,几个添加合成就被压缩成了一段话
& & & & & & & & & & & & & & & &
Stage.2 变量变量是什么?是一个不断变化的量?对于MT来说,这个就不大重要了,因为只有在循环语句那里我们可能涉及一点变量因为都是复制贴贴,谁会设置变量(笑),不过还是要按照套路讲一讲 如果你真的觉得写那些物品名称(实际上不是物品名称,只是MT对每个物品做的标记)太麻烦,你可以尝试使用变量 变量赋值语句分为两种一种是val 变量名=物品名称;复制代码这种变量赋值是永久性的,也就是其变量只能代表这一种物品,之后的替换将无效
还有一种是var 变量名=物品名称;复制代码举个例子来说val A=&minecraft:stone&;val A=&minecraft:clay&;复制代码
此时A代表的还是石头
那么变量是如何使用呢也是举个例子val Stone=&minecraft:stone&;val Clay=&minecraft:clay&;recipes.addShapeless(&minecraft:brick&*4,[Stone,Clay]);复制代码
图片11.png (5.35 KB, 下载次数: 1)
14:38 上传
变量的用途大概如此,值得一提的是变量可以代替任何物品,包括有NBT数据的这个将会在下文提到同时,变量可以不单单表示一种物品,可以同时表示多种譬如val Wool=&minecraft:wool:*&;复制代码它就可以同时表示多种颜色的羊毛了,其实道理跟继承NBT属性是一样的
& & & & & & & & & & & & & & & &
Stage.3 NBT数据NBT数据是什么,这个你问我我也不清楚,不过你可以问问WikiMT可以调用的NBT数据很多,譬如最基础的就是耐久损耗了,这里就以耐久损耗为例普通的铁镐可以通过Hand得到他的物品标记&minecraft:iron_pickaxe&复制代码如果我们损耗一点呢?&minecraft:iron_pickaxe:1&复制代码所以&minecraft:iron_pickaxe:*&复制代码代表的是任意耐久的铁镐写配方的时候我们可以这样recipes.addShapeless(&minecraft:iron_pickaxe&,[&minecraft:iron_ingot&,&minecraft:iron_pickaxe:*&]);复制代码
图片12.png (7.87 KB, 下载次数: 1)
14:40 上传
当然这只是一种书写方式,这种方式是不涉及NBT的仅仅是将所有可能出现的全部列了出来(但是这种穷举法很好用)官方给出的是这样的recipes.addShapeless(&minecraft:iron_pickaxe&,[&minecraft:iron_ingot&,&minecraft:iron_pickaxe&.anyDamage()]);复制代码
也就是&minecraft:iron_pickaxe&.anyDamage()复制代码来表示任意耐久这两种书写都是等效的当然实际上上面这两种跟NBT标签都没多大关系还记得我们的附魔书么,他的名字就是一个NBT标签MT对于NBT标签有一个通用的语句.withTag()复制代码&minecraft:iron_pickaxe&.withTag({display: {Name: &Frog&, Lore: [&This pick&, &is added one second&]}})复制代码上面的语句就是赋予给了一个铁镐NBT标签标签使该铁镐的名字变成了Frog(青蛙)并且带有介绍(这个镐子被续了一秒)我们将其写入配方中recipes.addShapeless(&minecraft:iron_pickaxe&.withTag({display: {Name: &Frog&, Lore: [&This pick&, &is added one second&]}}),[&minecraft:iron_ingot&,&minecraft:iron_pickaxe&.anyDamage()]);复制代码
这样,我们就可以写出带有NBT数据的物品了同样,他也可以用于合成,这里我就不赘述了但是请注意!这样做很容易导致合成冲突进而游戏崩溃!不要轻易将其用于合成!如果要添加新的物品用于合成我们会在CS章介绍简单的方法。 同样,如果你要写特定耐久的物品用于合成也是很简单的,以下是几种语句物品名称.onlyDamaged(A);& &&&/*只有A耐久的物品*/物品名称.onlyDamageAtLeast(A);&&/*耐久大于等于A的物品*/物品名称.onlyDamageAtMost(A); /*耐久小于等于A的物品*/物品名称.onlyDamageBetween(A,B);&&/*耐久在A到B之间的物品*/复制代码至于特定耐久的标记物品名称.withDamage(损耗值);复制代码NBT标签语句物品名称.withTag({display: {Name: &英文文本&, Lore: [&英文文本&]}});复制代码当然,NBT数据是不止这些的,还有附魔属性&minecraft:iron_pickaxe&.withTag({ench: [{lvl: 3 as short, id: 35 as short}], RepairCost: 2, StoredEnchantments: [{lvl: 3 as short, id: 35 as short}]})复制代码
图片14.png (3.21 KB, 下载次数: 2)
14:42 上传
[img=320,1][/img]对于NBT数据的自定义,各位可以在游戏里面设置好NBT数据之后Hand复制下来或者是去Wiki自行查找,这里就不在赘述
& & & & & & & & & & & & & & & &
Stage.4 反复利用?或许各位在GT里面看见过锯子砍木头的合成那么,怎么可以做到合成之后返还物品呢? 语句.reuse()&&//完全返还recipes.addShapeless(&minecraft:stick& * 4, [&minecraft:iron_axe&.reuse(), &ore:plankWood&]);复制代码同样,原版合成蛋糕返还桶的设置也可以用MT来实现,不过有所不同.transformReplace(物品名称)& & //返还特定物品替换原有物品recipes.addShapeless(&minecraft:stick& * 4, [&minecraft:iron_axe&.transformReplace(&minecraft:stone_axe&), &ore:plankWood&]);复制代码这样斧头砍完就会降级..不过似乎惩罚有些大了,或许消耗些耐久?.transformDamage(损耗值)recipes.addShapeless(&minecraft:stick& * 4, [&minecraft:iron_axe&.transformDamage(3), &ore:plankWood&]);复制代码这样每砍一个木头就会消耗铁斧头的3点耐久但是这样只能砍一次..因为砍完物品就会降低耐久,所以你可以加入通用符或者是.anyDamage()recipes.addShapeless(&minecraft:stick& * 4, [&minecraft:iron_axe&.anyDamage().transformDamage(3), &ore:plankWood&]);复制代码
Page.3 MT高级配方编写& && &&&Stage.1&&熔炉配方编写
以下仅给予语句,想必各位在经过我Page.2的啰嗦之后一定成长了很多furnace.addRecipe(Output,Input);furnace.addRecipe(Output,Input,XP);&&//xp代表获得的经验值furnace.remove(Output);&&//删除所有有关输出的熔炉配方furnace.remove(&*&, Input); //删除所有有关输入的熔炉配方,即该输入无法用于熔炉,其中&*&代表任意物品输出furnace.remove(Output, Input);//删除特定的熔炉配方furnace.setFuel(Fuel, Time);//将一个物品设置为燃料,并且设定时间,时间采用gametickfurnace.setFuel(Fuel, 0);//删除该燃料复制代码
& & & & & & & & & & & & & & & &
Stage.2&&物品重命名物品名称.displayName = &New name&;复制代码
& & & & & & & & & & & & & & & &
Stage.3 矿物词典从刚开始就谈到了这个矿物词典,那么矿物词典到底是什么呢?矿物词典是由Forge产生的
Forge Ore Dictionary 简称OD 翻译 Forge矿物词典
矿物词典是一种让不同模组矿物通用的系统,使所有矿物统一并且允许混搭使用
但在MT中就不这么简单了
首先为了使用矿物词典,我们必须知道MC里面矿物词典的类型在游戏中输入/mt oredict复制代码就可以在LOG里面看到导出的所有矿物词典绝大部分的矿物词典都有一个相同的前缀ore也就是代表它不属于任何一个MOD,仅属于一个公共量中 为什么要引用OD?譬如说铜锭,TIC(匠魂)里面有铜锭,IC2(工业)也有铜锭,FR(林业)也有铜锭MEK(通用机械)也有铜锭,RC(铁路)也有铜锭,IE(沉浸工艺)也有铜锭!如果没有OD的话,就会出现一个及其尴尬的情况你无法用FR的铜去合成IC的机器!你无法用RC的钢去合成GT的机器!你无法用MEK的锡作为TIC的原料! 很恐怖,不是么?但是如果调用了矿物词典,就可以完全解决这个问题矿物词典就相当于将在这个矿典中所有的物品全部统一为一个物品池如果调用OD,就相当于调用了这个物品池里面所有的物品也就是说一个OD名称代表所有在这个OD中的物品!是不是跟通配符很像?他就是一个无条件的通配符!不需要他们之间有Meta关系只需要声明即可! OD使用的时候和普通的物品名称相同,这里就不再重复。矿典名称.add(物品名称);& &//将某物品加入到某OD中&ore:sand&.add(&minecraft:stone&) ;&&//将石头添加入沙子的矿物词典中 矿典名称.remove(物品名称);&&//将某物品从某OD中删除&ore:sand&.remove(&minecraft:sand&);&&//将沙子从沙子的矿物词典中删除 //如果加入的矿典不存在,那样就会创建一个新的矿典//请注意,IE某个机器必须使用矿典编辑!我们会在技巧篇讲述。 矿典名称.addAll(矿典名称);& &//将某个矿物词典中所有物品列入到另一个矿物词典下 矿典名称A.mirror(矿典名称B);//将A的物品全部映射到B下面,也就代表B包含原有的B和A//但是A中不包含B复制代码
Page.3.5 地牢&种子掌握感谢@xxxiao1230 对本篇的补充Stage .1 地牢配方编辑利用mt可以编辑地牢箱子的掉落?!添加物品的语句范例vanilla.loot.addChestLoot(&dungeonChest&, &minecraft:diamond&.weight(n),x,y);n——该物品出现的概率,具体数字就是百分比数字,最大值为100。x,y——该物品出现时的最小/最大数量复制代码删除物品的语句范例vanilla.loot.removeChestLoot(&dungeonChest&, &minecraft:enchanted_book&);复制代码即地牢宝箱中不会生成该物品注意这个主要针对原版的地牢、矿坑、下界要塞,堡垒。对Ruins(遗迹mod)中生成的箱子也有效果。对DungeonPack(更多遗迹)也有效果。对roguelike(探险地牢mod)也会有效果但没原版那么明显。对DoomlikeDungeons(厄运地牢mod)无效。对战斗高塔、暮色、巧克力地牢,浮游遗迹等无效。(编者注:可能是因为他们的箱子属于建筑生成的一部分,或者是单纯的不兼容)
Stage.2 打草掉落?MT可编辑打草掉落物品物品的语句添加物品的语句范例vanilla.seeds.addSeed(&minecraft:planks&.weight(n));n——该物品出现的概率,具体数字就是百分比数字,最大值为100。复制代码删除物品的语句范例vanilla.seeds.removeSeed(&Natura:barley.seed:*&);复制代码从语句上看似乎也支持mod,但还未验证。(编者注:已经验证,支持)
Page.4 MT机器配方注意事项
大部分使用MT的人都是冲着MT的兼容性去的
也就是对其他的MOD的支持MT支持的MOD有很多,去Modtweaker Wiki可以查询到所有的语句以及实例这里我只是解释几个东西
Stage.1 IItemStack与IIngredient之间的区别
IIngredient可以容纳OD和物品IItemStack只能容纳一个物品(包含NBT数据)所以说,在某些巨型工程面前,可能有的朋友想用新建OD偷懒,那么在偷懒之前请检查能不能用OD
& & & & & & & & & & & & & & & &
Stage.2 MEK和TIC/mt gases 可以导出所有气体的名称/mt materials 可以导出所有原料/mt modifiers 可以导出所有模具//实际上Wiki上面有复制代码
& & & & & & & & & & & & & & & &
Stage.3 IE挖掘机IE挖掘机是个特别矫情的东西,不能直接识别物品如果你看Wiki的话也可以得到一个案例,但是不够清晰这里我给大家一个通用挖掘机语句挖掘机必须是声明过矿典的矿物才能引用,而且必须引用变量!!val exnihilocoppersand = &ore:exnihilocoppersand&;& && &&&//将OD赋值到变量exnihilocoppersand.add(&exnihilo:copper_sand&);& && & //将需要添加的方块加入到OD里面mods.immersiveengineering.Excavator.addMineral(&Ex nihilo copper&,10, 15, [&exnihilocoppersand&], [16], [], false);&&//用变量进行矿物添加//通用语句val 变量名称(不限)=&ore:创建的矿典名称(不限)&;变量名称.add(添加入的物品名称);mods.immersiveengineering.Excavator.addMineral(&矿脉名称&,10, 15, [&变量名称&], [16], [], false);& &//剩余数值参照Wiki自定义复制代码
& & & & & & & & & & & & & & & &
Stage.4 有些时候语句无法使用?更新MOD,更新MT,然后再试试大部分都可以解决。
& & & & & & & & & & & & & & & &
Stage.5 能够魔改的MOD?有些MOD的魔改不会写在Wiki上面譬如说AC(杂交)它就支持魔改(前提是你在配置文件里面打开了自定义作物)而他的魔改Wiki没有,但是你可以在AC的Wiki和贴吧内的教程里面找到当然这里要说一下...Reika系列的(Roc,Rea,Ele)也就是旋转工艺系列不支持魔改,不支持修改工作台配方!实际上ROC的配置文件自带魔改......如果你改了,再次启动的话,它就会和谐掉!(Reika傲娇系~)
& & & & & & & & & & & & & & & & Stage.6 关于zs文件里的注释和重命名语句zs文件内只支持英文,若是出现其他文字则载入时会视为无效zs文件。若是想让重命名语句可命名英文以外的名字,则需要转成ASCII的格式才行。
& & & & & & & & & & & & & & & &
Stage.7关于和暮色工作台的编辑注意点暮色工作台自带可按配方分解物品的功能,只会针对常规的2x2、3x3且类型是有序合成的配方。其中注意下,凡是有序合成配方中,带有.reuse()的物品,用暮色工作台可能会通过分解成品而得到配方中带有.reuse()的物品。注意是针对想做特定工具类物品的功能性合成配方要注意,否则可能会出现利用分解成品得到工具这样的操作漏洞。编辑时注意规避,或是禁止暮色工作台。
Page.5 MT流水线工艺这部分也算是我自己的原创吧,说来惭愧,只能带来这么简单的原创内容但如果你是个新手的话,这些对你可能帮助非常之大在CS章时我还会介绍一种我自己发明的流水线工艺,敬请期待 流水线工艺是什么?
由于这是我自己起的名字,所以解释起来也不会太正统。流水线工艺最开始是用于汽车制造行业,每一个人干一个对应的工作这样每个员工只负责一个环节,效率就会大大提高(实际上你都无法想象之前一个人做一辆车的场景)现在我们也要做同样的事情之前我们每次复制都要一次次改变名称流水线工艺,使得我们可以用一次复制,完成一类的语句一类,就是具有相似点的一堆,这个堆,没有上限。 现在我要举个栗子,不过栗子都是带刺的,我就举个例子吧
以Angel Project 1中的矿物处理为例AP1的矿物处理分为RC高炉,MEK两种机器,其中每种机器都有不同的比率,总共六种,TE机器的催化剂处理(18种似乎),IE也有一种,还有BC的两种奇点冶炼这样总共有26种(去除奇点冶炼)但是由于是空岛,所以三种矿物都要有,也就是26x3+2=80种至于科技空岛的矿物种类...好像是11种?那样就要复制880次了累死了?
不不不,一点也不累,首先我们整理一下思路然后写出一个通用模板给每个变量标号,最后一个个替换就好了没听懂?举个小例子。以下是一个通用语句furnace.addRecipe(Output*OutAmountA,Input,XP); mods.mekanism.Infuser.addRecipe(&REDSTONE&, Amount, Input*InAmount,Output*OutAmount);复制代码以上语句分别是熔炉配方添加和MEK冶金浸渍机的配方语句而其中所有可以更改的变量(除了MEK浸渍机的辅助原料输入)都以变量形式标出另外我要向各位使用Notepad的用户介绍一个众所周知的功能——替换文本内容在搜索-替换你可以打开替换界面
图片15.png (13.52 KB, 下载次数: 1)
14:53 上传
替换功能是流水线的核心,只要你制作了一个通用语句就可以快速复制贴贴出很多个不同的语句,而过程不需要一个个更改,只需要替换譬如我可以将Output替换为&minecraft:stone&Input替换为&minecraft:sand&然后其他的变量如法炮制,这样就可以完成一个语句的编写最主要的是,就算是这个语句体系多么大,利用同样的方法,都可以快速处理!这里只是作为一个介绍,希望对大家有所帮助
Page.6 MT循环语句(选学)
这部分的大部分功能都可以用流水线工程来取代难度也不仅仅是复制贴贴难度但是会尽量讲的简单些。
Stage.1循环语句循环语句就是一个水泵,可以让某个语句加载一定的次数但是在MT这里,循环语句只是体现在加载方面,所以我们不妨更生动的将其称为对应函数对应函数是对于其表现形式来说的,实际上循环函数是对于加载形式来说的
不过不要误会,这个对应函数只是为了方便理解而起的名字而已,以下是循环函数的例子import minetweaker.item.IItemSvar myLogs = [&minecraft:stone&,&minecraft:clay&] as IItemStack[];var myPlanks = [&minecraft:sand&,&minecraft:cobblestone&] as IItemStack[];var stoneAxe = &minecraft:stone_axe&.anyDamage().transformDamage();var ironAxe = &minecraft:iron_axe&.anyDamage().transformDamage();var goldenAxe = &minecraft:golden_axe&.anyDamage().transformDamage();var diamondAxe = &minecraft:diamond_axe&.anyDamage().transformDamage();for i, log in myLogs {& & var plank = myPlanks[i];& & & & recipes.removeShapeless(plank, [log]);& & recipes.addShapeless(plank * 2, [log]);& & recipes.addShapeless(plank * 3, [log, stoneAxe]);& & recipes.addShapeless(plank * 4, [log, ironAxe]);& & recipes.addShapeless(plank * 5, [log, goldenAxe]);& & recipes.addShapeless(plank * 6, [log, diamondAxe]);} //解释import minetweaker.item.IItemS& &//是一个声明var myLogs = [&minecraft:stone&,&minecraft:clay&] as IItemStack[];var myPlanks = [&minecraft:sand&,&minecraft:cobblestone&] as IItemStack[];//以上两个是对应函数调用的数组,其中两个变量之中的物品保持一一对应关系//也就是石头对应沙子,粘土对应圆石var stoneAxe = &minecraft:stone_axe&.anyDamage().transformDamage();var ironAxe = &minecraft:iron_axe&.anyDamage().transformDamage();var goldenAxe = &minecraft:golden_axe&.anyDamage().transformDamage();var diamondAxe = &minecraft:diamond_axe&.anyDamage().transformDamage();//只是变量赋值方便编写for i, log in myLogs {& & //此处为for循环,i为一个变量,代表读取第几个,同时它的初始值似乎默认为0?Log in myLogs代表终值的大小等于mylogs中的数量//并且将log赋值为mylogs中对应的物品var plank = myPlanks[i];&&//将plank赋值为myPlanks中i对应的物品recipes.removeShapeless(plank, [log]);recipes.addShapeless(plank * 2, [log]);recipes.addShapeless(plank * 3, [log, stoneAxe]);recipes.addShapeless(plank * 4, [log, ironAxe]);recipes.addShapeless(plank * 5, [log, goldenAxe]);recipes.addShapeless(plank * 6, [log, diamondAxe]);}//合成配方编写//原本例子里面是砍木头,但是为了防止混淆,这里换成了砍石头和粘土复制代码
& & & & & & & & & & & & & & & &
Stage.2 if条件与循环语句混用import minetweaker.item.IItemS&&//一个声明val Test= [&minecraft:stone&,&minecraft:sand&,&minecraft:clay&] as IItemStack[];& &//将物品池赋值给变量for i, tt in Test {&&//循环函数,将tt赋值为Test中i位置的物品& && &&&if (i == 2) {& && && && &recipes.addShaped(Test[0] * 9, [[tt,tt,tt], [tt,tt,tt],[tt,tt,tt]]);& & //如果i=2(即tt为粘土),需要九个粘土合成一个石头& && &&&} else {& && && && &recipes.addShaped(Test[i+1] * 9,[[tt,tt,tt], [tt,tt,tt],[tt,tt,tt]]);&&//否则就是九个石头合成一个沙子,九个沙子合成一个粘土& && &&&}}复制代码
综合上面一个循环语句和if条件句我们可以看到一种写法test[0]&&//代表test中的第一个物品复制代码
Stage.3 补充说明,感谢@忆晨的尘 循环语句内除了IItemStack外还有个IIngredient。
可以用于保存矿辞、包含NBT的标签等。相对更为宽松。适合做合成表的物品输入,但不适合填入输出物。以下是wiki的例子,并且wiki说明只适合用于输入import minetweaker.item.IIvar myIngredients = [&ore:plankWood&, &minecraft:stick&.onlyWithTag({display:{Name: &Something&}})] as IIngredient[];var myIngredients2 = [&minecraft:stick&, &ore:plankWood&] as IIngredient[];复制代码MT中的For循环是For each遍历循环foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。
foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for 每一个”的意思。实际上也就是这个意思。
其初始值为0
Page.7 MT更新内容
新版3.0.10B&物品名称&.maxStackSize= 数值;//可以修改物品最大堆叠,实测有效&物品名称&.hardness = 数值;//可以修改方块硬度,实测无效复制代码&物品名称&.maxDamage = 数值;//可以修改物品最大耐久,感谢忆晨de尘补充复制代码
Page.8 从零开始的魔改目录序章:下一章:CS的应用
欢迎加入我们的团队,RFN,欢迎加入交流群,点击我的名片链接,滋磁我的Angel Project系列整合包总字数超7K的教程也是够肝了
MCBBS有你更精彩~
神乎其技,不服不行!
对新人很有用,很友好,楼主辛苦了.
要更新下去
希望给一个你把它、
很棒的作品!
很棒的作品!
MCBBS有你更精彩~
MCBBS有你更精彩~
很棒的作品!
很棒的作品!
MCBBS有你更精彩~
MCBBS有你更精彩~
帖子永久链接:&<button type="submit" class="pn" onclick="setCopy('http://www.mcbbs.net/thread--1.html', '帖子地址已经复制到剪贴板您可以用快捷键 Ctrl + V 粘贴到 QQ、MSN 里。')">点击复制Minecraft中文论坛 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖若有内容转载自其它媒体,不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予以删除并致以最深的歉意
7、管理员和版主有权不事先通知发贴者而删除本文
楼主这个有意思吗?? 是干什么的&&我只是个新手什么也不知道
这么多微软雅黑是什么鬼
代码引用全崩,现在正在修&
这么多微软雅黑是什么鬼
代码引用全崩,现在正在修
&物品名称&.maxDamage = 数值;
这个是设定物品耐久值的 damage=损耗
给楼主补漏
循环语句内除了IItemStack外还有个IIngredient。
可以用于保存矿辞、包含NBT的标签等。相对更为宽松。适合做合成表的物品输入,但不适合填入输出物。并且楼主介绍循环的时候,应该做一个常识补充。那就是在计算机语言内,数组一般是从0开始的.
在mt里面用到的这种循环语句一般被称之为为foreach循环,俗称遍历循环。
建议楼主注意下代码格式。居中看起来不太整齐,最好还是靠左对齐,类似循环语句的代码(){} 括号内的代码进行使用一排空格(我一般是用tab键)
另外推荐点小技巧,有个mod叫mtrm。吧物品放置到mtrm的格子里面,然后在最上面就有一栏文本信息,根据左侧的选项可以调整矿辞、耐久等数据。然后用alt+a可以选中,使用ctrl+c 进行copy,这样一来就可以快速的复制标签或矿辞标签,非常实用。mt的脚本编辑效率至少提高几倍。
感谢补充,一会用电脑给排上去,也是解决了一些我有疑虑的问题&
&&很有用&&找了很多地方的修改合成配方。
给楼主补漏
循环语句内除了IItemStack外还有个IIngredient。
可以用于保存矿辞、包含NBT的标签等。相对更为 ...
感谢补充,一会用电脑给排上去,也是解决了一些我有疑虑的问题
能有人做教程挺好的,能支持一把就支持一把,期待CS教程。不过得说下,内容太过冗长,不够精简,希望楼主能尽量删减点没必要的文字。&
感谢补充,一会用电脑给排上去,也是解决了一些我有疑虑的问题
能有人做教程挺好的,能支持一把就支持一把,期待CS教程。不过得说下,内容太过冗长,不够精简,希望楼主能尽量删减点没必要的文字。
好贴&&已收藏
请问一下,神秘时代4怎么进行魔改
用同样的方法 还可以把笔记变成用要素做出来&
请问一下 有没有办法获得以指定物品作为合成原料的所有合成表?一百多个一个个改太麻烦了...
很棒喔..难得的好教程
这能改模组合成吗?
""以及"我的世界"为Mojang Synergies AB的商标。本站与Mojang以及微软公司没有从属关系。
版权所有。本站原创图文内容版权属于原创作者,未经许可不得转载。

我要回帖

更多关于 我的世界附魔 的文章

 

随机推荐