本帖最后由 友 于 2019-10-2 16:09 编辑
ContentTweaker
ContentTweaker(CoT)是CrT的一个扩展,允许用ZenScript为游戏添加自定义物品、方块。魔改真正往游戏内容伸向“魔爪”! CoT的脚本第一行应为#loader contenttweaker 来指定该脚本由CoT加载。 搬运帖 指令
CoT添加了如下的指令指令 | 用途 | /ct blockmaterial | 打印游戏所有的Block Material,至日志中 | /ct creativetab | 打印游戏所有的创造标签,至日志中 | /ct soundevent | 打印游戏所有的SoundEvent,至日志中 | /ct soundtype | 打印游戏所有的SoundType,至日志中 |
|
原版加工厂概论
物品
需要import mods.contenttweaker.Item; 导入有关包。原版加工厂包也需要导入!
用val testItem as Item = VanillaFactory.createItem(字符串物品ID); 呼出一个物品类的一个实例,并存储在某个变量中,以做接下来的修改。物品ID必须全小写,可以包含数字和下划线_ ,必须字母开头。
然后你对这个对象用一堆ZenProperties(既是ZenSetter,也是ZenGetter)设置这个物品的一些定义信息。最后用register方法将这个物品注册进游戏,注意注册后你不能对该物品再次修改,这样一个自定义物品就做好了。材质放在\resources\contenttweaker\textures\items文件夹,文件名与物品ID一致。
本地化key为item.contenttweaker.物品ID.name
以下为基础的ZenProperties(剩余的基本无用或需要函数参数,为高级运用,将在之后讲解)
名称 | 类型 | 默认值 | 描述 |
---|
beaconPayment | bool | false | 是否可以丢进信标里 | creativeTab | ICreativeTab | 杂项创造标签 | 设置物品所在创造标签,记得/ct creativetab指令 | glowing | bool | false | 是否有附魔光芒 | maxDamage | int | -1 | 设置物品耐久,小于0则为普通物品,大于0将会被当作工具 | maxStackSize | int | 64 | 设置物品最大堆叠数 | rarity | EnumRarity | COMMON | 设置物品稀有度,会影响物品显示名称的颜色,可以使用(“COMMON”, “UNCOMMON”, “RARE”, “EPIC”)以下某一个 | toolClass | string | null | 设置这是什么工具(pickaxe镐 axe斧等等)貌似sword剑不能 | toolLevel | int | -1 | 设置工具挖掘等级 |
示例脚本
#loader contenttweaker
import mods.contenttweaker.VanillaFactory;
import mods.contenttweaker.Item;
val zsItem as Item = VanillaFactory.createItem("zs_item");
zsItem.maxDamage = 8848;
zsItem.rarity = "rare";
zsItem.creativeTab = <creativetab:tools>;
zsItem.toolClass = "pickaxe";
zsItem.toolLevel = 5;
zsItem.beaconPayment = true;
zsItem.register();
|
方块
需要import mods.contenttweaker.Block; 导入有关包。原版加工厂包也需要导入!
用val testBlock as Block = VanillaFactory.createItem(字符串方块ID, BlockMaterial); 呼出一个方块类的一个实例,并存储在某个变量中,以做接下来的修改。ID必须全小写,可以包含数字和下划线_ ,必须字母开头。 设定的BlockMaterial将会影响方块的一些特性。
接下来操作与物品类似。材质放在\resources\contenttweaker\textures\blocks文件夹,文件名与物品ID一致。
本地化key为tile.contenttweaker.方块ID.name
可用的ZenProperties(其它基本无用,或为事件高级运用)
名称 | 类型 | 默认值 | 描述 |
---|
axisAlignedBB | MCAxisAlignedBB | 完整方块 | 设置方块碰撞箱 | beaconBase | bool | false | 是否可作为信标基座 | blockHardness | float | 5.0 | 方块硬度 | blockLayer | string | "SOLID" | 可用“SOLID”, “CUTOUT_MIPPED”, “CUTOUT”, “TRANSLUCENT”之一,如果方块材质有透明的,需用“TRANSLUCENT” | blockResistance | float | 5.0 | 方块防爆等级 | blockSoundType | SoundType | <soundtype:metal> | 设置方块声音,方块放置破坏时的声音,记得记得/ct soundtype指令 | creativeTab | ICreativeTab | 杂项创造标签 | 设置物品所在创造标签,记得/ct creativetab指令 | dropHandler | IBlockDropHandler | null | 函数,用于设定方块掉落物 | entitySpawnable | bool | true | 生物是否可以在这个方块上生成 | enumBlockRenderType | string | "MODEL" | 可用“INVISIBLE”, “LIQUID”, “ENTITYBLOCK_ANIMATED”, “MODEL” 其中之一,用于设定这个方块如何渲染 | fullBlock | bool | true | 是否为完整方块,用于渲染和光照计算 | gravity | bool | false | 是否受重力影响 | lightOpacity | bool | 如果fullBlock为true则为255,反之为0 | 设置不透明度,用于光照计算 | lightValue | int | 0 | 设置方块光照等级,最大为15 | passable | bool | 取决于设定的BlockMaterial | 玩家是否可通过这个方块 | replaceable | bool | 取决于设定的BlockMaterial | 玩家是否可直接替换这个方块,比如原版的草 | slipperiness | float | 0.6 | 设置方块滑度,冰为0.98 | toolClass | string | "pickaxe" | 设置方块需要什么工具挖掘 | toolLevel | int | 2 | 设置方块需要多少挖掘等级 | translucent | bool | false | 方块是否为(半)透明 | witherProof | bool | false | 方块是否可抵御凋灵爆炸 |
示例脚本
#loader contenttweaker
import mods.contenttweaker.VanillaFactory;
import mods.contenttweaker.Block;
var antiIceBlock as Block = VanillaFactory.createBlock("anti_ice", <blockmaterial:ice>);
antiIceBlock.lightOpacity = 3;
antiIceBlock.LightValue = 0;
antiIceBlock.blockHardness = 1.0;
antiIceBlock.blockResistance = 5.0;
antiIceBlock.toolClass = "pickaxe";
antiIceBlock.toolLevel = 0;
antiIceBlock.blockSoundType = <soundtype:snow>;
antiIceBlock.slipperiness = 0.75;
antiIceBlock.register();
|
流体
需要import mods.contenttweaker.Fluid; 导入有关包。原版加工厂包也需要导入!
用val testFluid as Fluid = VanillaFactory.createItem(字符串流体ID, int表示RGB模式颜色); 呼出一个流体类的一个实例,并存储在某个变量中,以做接下来的修改。ID必须全小写,可以包含数字和下划线_ ,必须字母开头。
流体的材质会根据所给的用颜色参数进行染色,让你方便制作出各种颜色的“水”或“熔岩”,而不用设定材质。
本地化的key为fluid.流体ID
可用的ZenProperties
名称 | 类型 | 默认值 | 描述 |
---|
density | int | 1000 | 密度,决定实体在其游泳速度,水为1000,熔岩为3000 | luminosity | int | 0 | 流体亮度 | temperature | int | 300 | 流体温度,水为300,熔岩为1300 | viscosity | int | 1000 | 流体黏度,决定流体流动速度,水为1000,熔岩为3000 | vaporize | bool | false | 在下界是否会蒸发 | colorize | bool | true | 实际材质是否受颜色参数影响 | stillLocation | string | "contenttweaker:fluids/fluid" | 设定源头材质路径,建议类似水的设置为"base:fluids/liquid",类似熔岩设置为"base:fluids/molten" | flowingLocation | string | "contenttweaker:fluids/fluid_flow" | 设定流动流体的材质路径,建议类似水的设置为"base:fluids/liquid_flow",类似熔岩设置为"base:fluids/molten_flowing" | material | IMaterialDefinition | <blockmaterial:water> | 建议类似水的设置为<blockmaterial:water>,类似熔岩设置为<blockmaterial:lava> | gaseous | bool | false | 流体是否反重力流动 |
示例脚本
#loader contenttweaker
import mods.contenttweaker.VanillaFactory;
import mods.contenttweaker.Fluid;
var zsFluid as Fluid = VanillaFactory.createFluid("zs_fluid", 0xFF69B4);
zsFluid.temperature = 500;
zsFluid.viscosity = 1500;
zsFluid.density = 1500;
zsFluid.luminosity = 4;
zsFluid.stillLocation = "base:fluids/liquid";
zsFluid.flowingLocation = "base:fluids/liquid_flow";
zsFluid.register();
|
创造标签
真正要有mod的样,应该有属于自己的创造标签。
需要import mods.contenttweaker.CreativeTab; 导入相关包,原版加工厂包也需要导入!
用val testTab as CreativeTab = VanillaFactory.createItem(字符串创造标签ID, 一个东西表示图标);
图标可以用以下三个类中其中之一(还有个IItemStackSupplier是函数高级运用,跳过)
本地化key为itemGroup.创造标签ID
之后你就可以用\<creativetab:你填的ID\>,来给添加的物品方块指定创造标签了。
实例脚本
#loader contenttweaker
import mods.contenttweaker.CreativeTab;
import mods.contenttweaker.VanillaFactory;
import mods.contenttweaker.Item;
val zsTab as CreativeTab = VanillaFactory.createCreativeTab("contenttweaker", <item:minecraft:dragon_egg>);
zsTab.register();
val zsItem as Item = VanillaFactory.createItem("test_item");
zsItem.creativeTab = <creativetab:contenttweaker>;
zsItem.register();
|
尚未完工(剩余内容:材料系统)
|