📄
XPlus KubeJS Tutorial v1 (zh_cn)
  • 前言
    • 本文更新日志
  • 一、一切的开始
    • 1.1 常用指令
    • 1.2 文件结构
    • 1.3 脚本基础
    • 1.4 事件列表
  • 二、配方
    • 2.1 新建配方及物品表示
    • 2.2 配方的修改和删除
    • 2.3 非标准配方修改
  • 三、自定义修改初步
    • 3 标签
    • 4 自定义Loot Table
    • 5 自定义流体
    • 6 自定义世界生成
    • 7 添加方块
    • 10:自定义窗口标题和logo
  • 四、事件初步
    • 8 聊天事件
    • 9 计划重启
  • 五、针对其他模组的修改
    • 11.1 JEI信息修改
    • 11.2 REI信息修改
    • 11.3 FTB Quest相关修改
    • 11.4 KubeJs内置游戏阶段 (类似于GameStage)
  • 六、拓展模组简介
    • 12.1 KubeJS Create
    • 12.2 KubeJS Blood Magic
    • 12.3 KubeJS Mekanism
    • 12.4 KubeJS UI
    • 12.5 KubeJS Termal
    • 12.7 便捷战利品表修改(LootJS Forge)
    • 12.8 LootJS战利品表修改实例
  • 七、游戏内容修改进阶
    • 13 自定义物品和物品ToolTip
    • 14 方块和物品属性修改
  • 八、事件进阶
    • 15.0 事件列表
    • 15.1 玩家&实体事件,信息获取及操作
    • 15.2 实体生成 & RayTraceResultJS & ItemStackJS及其他
    • 15.3 方块信息获取及操作
    • 15.4 WorldJS 和 ServerJS
    • 15.5 本章例子
    • 15.6 测试用例
  • 九、杂项
    • 16 网络包和Painter API
    • 17 本地化相关
    • 18.1 熔炼之镐
    • 18.2 罐头示例(包含物品注册, 配方添加, 玩家交互和persistentData的使用)
    • 19 Forge事件监听
  • 十、1.18.2的变化和介绍
    • 20 1.18.2中的变化和功能
    • 20.1 ProbeJS
    • 20.2 组件(Component)的使用
    • 20.3 格式变化
      • 20.3.1 世界生成
      • 20.3.2 方块 / 物品注册
      • 20.3.3 事件
      • 20.3.4 global[] 的使用
    • 20.4 命令注册
    • 20.5 反射与Java access
由 GitBook 提供支持
在本页

这有帮助吗?

在GitHub上编辑
  1. 三、自定义修改初步

7 添加方块


以下是格式示例,你应将其放在startup脚本文件夹内。

// 此写法被弃用
onEvent('block.registry', event => {
  event.create('test_block', block => {
  	  block.material('glass')//设置方块材质
      block.hardness(0.5)//设置方块硬度
      block.displayName('Test Block')
  })
})

onEvent('block.registry', event => {
  event.create('test_block')
  	   .material('glass')
       .hardness(0.5)
       .displayName('Test Block')
})

//你还可以把他们在一行中连着写
onEvent('block.registry', event => {
	event.create('example_block').material('wood').hardness(1.0).displayName('Example Block')
})

该方块的纹理必须被放于kubejs/assets/kubejs/textures/block/[方块名],如kubejs/assets/kubejs/textures/block/test_block.png

如果你想要使用自定义的模型,你可以使用Blockbench制作并把它放于 kubejs/assets/kubejs/models/block/[方块名].json , 如 kubejs/assets/kubejs/models/block/test_block.json.

其他支持的方法:

  • material('material')// 设置方块的“质地”,可用的参数见下

  • type('basic') // 设置方块类型,可用的参数见下

  • hardness(float) // 设置方块硬度,值需要大于 >= 0.0;若要使方块无法被破坏,详见下方。

  • resistance(float) // 爆炸抗性,值需要大于 >= 0.0

  • unbreakable() // 设置方块无法被破坏

  • lightLevel(等级) // 方块光照等级,值属于[0 , 1](需要为整形)

  • harvestTool('工具', 工具等级) // 可以破坏该方块的工具。工具参数可以为 pickaxe, axe, hoe, shovel,工具等级需 >= 0

  • opaque(布尔值) // 方块是否透明

  • fullBlock(布尔值) // 设置是否为完整方块,与notSolid()共同使用可以实现如下图所示效果(即镂空方块)

    图片被mcbbs吃掉了

  • requiresTool(布尔值) // 是否需要对应工具才能掉落

  • renderType('类型') // 设置方块的渲染类型,可用的选项有solid(实心), cutout(镂刻), translucent(半透明), 其中 cutout 可用于类似于玻璃的方块,translucent 可用于类似于染色玻璃的方块

  • texture('纹理路径')// 设置方块纹理

  • texture('方向', '纹理路径')// 设置方块纹理(可以单独设置每个朝向的纹理)

  • model('模型路径')// 设置方块使用的模型

  • noItem()// 添加方块而不添加方块对应的物品

  • box(x0, y0, z0, x1, y1, z1, true) // 设置方块碰撞箱(0~16),默认值为(0,0,0,16,16,16, true)

  • box(x0, y0, z0, x1, y1, z1, false) // 设置方块碰撞箱(0~1),默认值为(0,0,0,1,1,1, false)

    下图即为使用box方法设置的自定义方块

  • noCollision() // 设置方块是否有碰撞箱

  • notSolid() // 见上

  • waterlogged() // 是否可以被充水

  • noDrops() // 被破坏是否掉落自身

  • slipperiness(浮点型) // 设置打滑程度

  • speedFactor(浮点型) // 玩家在上方移动速度倍率

  • jumpFactor(浮点型)

  • randomTick(randomTickEvent => {}) // 当方块被随机刻选中时发生的事件

    支持以下函数:

    BlockContainerJS block

    Random random

    下面是一个简单的例子

    //当test_block_randomTickEvent被随机刻选中时将其换为minecraft:dirt
    onEvent('block.registry', event => {
      event.create('test_block_randomTickEvent').material('glass').hardness(1.0).displayName('Test Block randomTickEvent').randomTick(randomTickEvent => {
            randomTickEvent.block.set('minecraft:dirt')// BlockContainerJS
          })
    
    })

    注:BlockContainerJS会在后面讲到(大概在15或16章,尚未更新)

  • setLootTableJson(json) // 设置战利品表(原版json格式)

  • setBlockstateJson(json) // 设置方块状态(原版json格式)

  • setModelJson(json) // 设置模型

  • noValidSpawns(布尔值) // 是否可以生成怪物

  • suffocating(布尔值) // 是否可以使玩家窒息

  • viewBlocking(布尔值)

  • redstoneConductor(布尔值) // 是否传导红石信号

  • transparent(布尔值) // 是否透明

  • defaultCutout() // 用来制作类似于玻璃的方块的方法的集合

  • defaultTranslucent() // 与defaultCutout()类似,但是使用透明层

  • tag('forge:exampletag') // 添加block tag

  • tagBlockAndItem('forge:exampletag') // 为方块和物品添加tag

可用的方块类型(type() 方法)

  • basic

  • slab

  • stairs

  • fence

  • fence_gate

  • wall

  • wooden_pressure_plate

  • stone_pressure_plate

  • wooden_button

  • stone_button

可用的材质的值( material('material') ) - 该参数会改变方块被破坏和玩家行走在上面的声音并且预设一些属性(如破坏用的工具等):

材质

air

wood

rock

iron

organic

earth

water

lava

leaves

plants

sponge

wool

sand

glass

tnt

coral

ice

snow

clay

groud

dragon_egg

portal

cake

web

slime

honey

berry_bush

lantern

上一页6 自定义世界生成下一页10:自定义窗口标题和logo

这有帮助吗?

color(tintindex, color)// 修改方块颜色,具体可参考

item( => {}) // 掉落物设置

此处介绍
itemBuilder