4 方块注册和属性修改
一、方块注册
1、事件监听
通过向StartupEvents.registry
事件传入不同的参数,其可用于在启动脚本中注册游戏中的新元素,如方块、物品、声音、药效等,在这里,我们传入"block"
来进行与方块有关的修改:
显然,方块注册脚本应该放于StartupEvents脚本文件夹中。
2、事件方法
create(字符串 方块ID, 字符串 类型)
注册方块
BlockBuilder
create(字符串 方块ID)
注册方块
BlockBuilder
其中,“类型”参数支持以下字符串:
"basic"
基础方块类型
-
"detector"
检测方块
使用说明详见后文detectorId(id: string)
"slab"
台阶方块
预设模型
"stairs"
楼梯方块
预设模型
"fence"
栅栏方块
预设模型
"fence_gate"
栅栏门方块
预设模型
"wall"
墙方块
预设模型
"wooden_pressure_plate"
木质压力板
预设模型和红石特性
"stone_pressure_plate"
石质压力板
预设模型和红石特性
"wooden_button"
木质按钮
预设模型,红石特性,其物品可用作燃料
"stone_button"
石质按钮
预设模型,红石特性,其物品不可用作燃料
"falling"
下坠方块
-
"crop"
农作物方块
使用说明详见后文
"cardinal"
黛玉朝向的方块
例如讲桌、熔炉方块等
通过设定自定义方块类型,你可以便捷地指定其模型或为其添加特殊功能。
3、BlockBuilder
🧾 方块属性类
-
-
-
property(BlockProperties 属性)
设置方块属性
🔎 形如BlockProperties.WATERLOGGED
-
redstoneConductor(布尔值 b)
是否为红石信号导体
-
true
displayName(字符串 名称)
设置方块名称
-
-
tagBoth(命名空间 标签)
为物品和方块同时添加标签
-
-
tagBlock(命名空间 标签)
只为方块添加标签
-
-
tagItem(命名空间 标签)
只为物品添加标签
-
-
unbreakable()
设置为无法被破坏
将hardness设为-1,resistance设为Float.MAX_VALUE
-
resistance(float 抗性)
设置方块抗性
-
3F
hardness(float 硬度)
material(MaterialJS 材质)
设置方块材质
[1]
"wood"
randomTick(RandomTickCallbackJS 随机刻回调函数)
设置随机刻事件
[2]
-
lightLevel(float 强度)
设置方块光照等级
-
0F
noDrops()
设置为破坏时不掉落自身
默认为掉落自身
-
noItem()
设置为不注册方块对应物品
-
-
waterlogged()
设置为含水方块
-
false
jumpFactor(float 倍率)
设置跳跃高度倍率
-
1.0F
speedFactor(float 倍率)
设置速度倍率
-
1.0F
slipperiness(float f)
设置滑动倍率(μ)
-
0.6F
requiresTool(布尔值 f)
设置是否需要对应工具破坏
-
false
noValidSpawns(布尔值 b)
设置是否可以生成怪物
-
-
🎞 方块外形类
-
-
-
box(double x0,double y0,double z0, double x1,double y1,double z1,布尔值 scale16)
设置方块碰撞箱
[3]
-
noCollision()
设置为无碰撞箱
-
-
defaultTranslucent()
默认半透明渲染方式
详见4、方块渲染方式
-
defaultCutout()
默认镂刻渲染方式
详见4、方块渲染方式
model(命名空间 模型目录)
设置模型
形如"kubejs:blocks/wudji_notfound"
null
viewBlocking(布尔值 b)
-
详见4、方块渲染方式
true
notSolid()
设置为非固体方块
详见4、方块渲染方式
false
texture(字符串 id,字符串 材质)
手动设置方块材质
[4]
-
renderType(字符串 渲染类型)
设置方块渲染类型
[5]
"basic"
[1]
[2]RandomTickCallbackJS 支持以下方法:
getLevel()
获取当前世界
Level
getServer()
获取服务器
MinecraftServer
具体使用方法见后文示例。
[3]
[4]
[5]
4、方块渲染方式
在KubeJS中,常用defaultTranslucent()
和defaultCutout()
来设定半透明和镂刻方块渲染。如下图,从左到右设置的选项分别为defaultTranslucent()
、defaultCutout()
、defaultCutout()
和未设置渲染方式
设置:
给出常见情况:对于玻璃等半透明方块,应使用defaultTranslucent()
进行设置;对于讲台等方块,应使用defaultCutout()
进行设置
5、资源目录
对于方块注册来说,你需要将方块材质置于assets\kubejs\textures\block\<方块ID>.png
,自定义模型(可选)放于kubejs\assets\kubejs\models\block\<方块ID>.json
下。(即文件结构同资源包)
6、示例
二、方块属性修改
1、事件监听
你需要监听BlockEvents.modification
来对方块属性进行修改。
显然,方块属性修改脚本应该放于StartupEvents脚本文件夹中。
2、事件方法
modify(BlockStatePredicate 方块谓词, Consumer<Block_> 修改事件)
修改方块属性
-
3、谓词
2、事件方法
中所述第一个参数方块谓词
可以为以下值:
BlockTag
方块标签
"forge:ores/gold"
"minecraft:wooden_doors"
BlockID
方块ID
"minecraft:blue_shulker_box"
"minecraft:glass"
4、修改方法
🔎 绝大多数的修改方法与方块注册中的方法类似。例如speedFactor(float 倍率)
在方块修改中为setSpeedFactor(float 倍率)
(详见ProbeJS)。
5、修改示例
最后更新于
这有帮助吗?