MC百科社群

标题: 关于crafttweaker的import [打印本页]

作者: dinnerbone    时间: 2021-3-16 22:03
标题: 关于crafttweaker的import
本帖最后由 dinnerbone 于 2021-3-16 22:07 编辑

在别人的zs文件里看到开头先写一句 import minetweaker.item.IItemStack; 请问这个有什么用吗?我一直都是直接写,不加这一句,也没出现什么问题。
另外请教一下 import 的作用是什么。文档里说“导入相关类 为避免发生一些问题,在使用前最好导入相关类。”,没有指明具体问题。

作者: ChromaPIE    时间: 2021-3-16 22:47
举几个简单的例子,不细说:
1. 你需要声明一个矿词的数组,譬如

var metalArray as IOreDictEntry = [
    <ore:ingotIron>,
    <ore:ingotGold>
];



如果不在开头
import crafttweaker.oredict.IOreDictEntry;

会报找不到类型的错

2. 你需要写一堆模块化机械的配方,并且由于模块化机械配方里需要指定变数超级大的.setChance()之类的附加条件使得建立函数变得很难,用数组也不现实,所以你不得中规中矩地挨个写,譬如这样:

var machineName = "something";

mods.modularmachinery.RecipeBuilder.newBuilder(machineName + "_gold", machineName, 3600)
    .addEnergyPerTickInput(100)
    .addItemInput(<ore:ingotIron>)
    .addItemInput(<ore:stone>, 9)
    .addItemOutput(<ore:ingotGold>.firstItem)
    .build();




以及下面无数的配方。如果开头加一个
import mods.modularmachinery.RecipeBuilder;

下面所有的mods.modularmachinery.RecipeBuilder都可以缩成RecipeBuilder

同理,通用机械的压缩机mods.mekanism.compressor都可以是compressor,热力膨胀的流体转置机填装配方mods.thermalexpansion.Transposer.addFillRecipe都可以是addFillRecipe

3. 你在a.zs里静态了一个IItemStack数组aArray,想在b.zs里调用,在b.zs开头写个
import scripts.a.aArray;

即可,这个时候aArray就像是一个在b.zs里被声明的数组一样。


4. 你在scripts\utilfolder文件夹下的f.zs里建立了一个函数aFunc,想在b.zs里调用,如果开头不写
import scripts.utilfolder.f.aFunc;

那么下面引用到这个函数的时候都要从头到尾写一遍,scripts.utilfolder.f.aFunc。如果你的函数是用来做配方的,这一大串东西不光让脚本体量虚高,可读性还差。import之后,aFunc即可。

只作为一个实战人来直接理解import的好处,权当抛砖引玉。





欢迎光临 MC百科社群 (https://bbs.mcmod.cn/) MC百科|最大的MineCraft中文模组百科