流体注册 (Fluid Registry)

预计阅读时间: 6 分钟

向游戏添加新流体

自定义流体在启动脚本中创建。事件不可取消。

以下是几个关于如何使用流体构建器的示例:

水克隆 岩浆克隆

KubeJS 添加的稀薄纹理是水纹理的不透明版本。

如果您希望流体是透明的,您需要复制或创建透明纹理。

如果您在构建器中使用 'thin' 参数,则可以默认设置一些方法:

const $SoundEvents = Java.loadClass('net.minecraft.sounds.SoundEvents')
const $ParticleTypes = Java.loadClass('net.minecraft.core.particles.ParticleTypes')

StartupEvents.registry('fluid', event => {
  event.create('water_clone', 'thin')
    .displayName('Water Clone')
    .type(type =>
      type.addDripstoneDripping(1, $ParticleTypes.DRIPPING_DRIPSTONE_WATER, 'minecraft:water_cauldron', $SoundEvents.POINTED_DRIPSTONE_DRIP_WATER)
    )
})

这等同于这样做:

const $SoundEvents = Java.loadClass('net.minecraft.sounds.SoundEvents')
const $ParticleTypes = Java.loadClass('net.minecraft.core.particles.ParticleTypes')

StartupEvents.registry('fluid', event => {
  event.create('water_clone')
    .displayName('Water Clone')
    .tint(0x3F76E4)
    .type(type => type
      .renderType(3)
      .stillTexture('kubejs:block/thin_fluid_still')
      .flowingTexture('kubejs:block/thin_fluid_flow')
      .fallDistanceModifier(0)
      .addDripstoneDripping(1, $ParticleTypes.DRIPPING_DRIPSTONE_WATER, 'minecraft:water_cauldron', $SoundEvents.POINTED_DRIPSTONE_DRIP_WATER)
    )
})

这不是原版岩浆的精确克隆。

岩浆具有此流体构建器中不可用的其他属性。

KubeJS 添加的厚纹理是彩色岩浆纹理的灰度版本。

如果您希望纹理看起来像真正的岩浆,您需要复制或创建岩浆纹理。

如果您在构建器中使用 'thick' 参数,则可以默认设置一些方法:

const $SoundEvents = Java.loadClass('net.minecraft.sounds.SoundEvents')
const $ParticleTypes = Java.loadClass('net.minecraft.core.particles.ParticleTypes')

StartupEvents.registry('fluid', event => {
  event.create('lava_clone', 'thick')
    .displayName('Lava Clone')
    .tint(0xff6600)
    .type(type =>
      type.addDripstoneDripping(1, $ParticleTypes.DRIPPING_DRIPSTONE_LAVA, 'minecraft:lava_cauldron', $SoundEvents.POINTED_DRIPSTONE_DRIP_LAVA)
    )
})

这等同于这样做:

const $SoundActions = Java.loadClass('net.neoforged.neoforge.common.SoundActions')
const $SoundEvents = Java.loadClass('net.minecraft.sounds.SoundEvents')
const $ParticleTypes = Java.loadClass('net.minecraft.core.particles.ParticleTypes')

StartupEvents.registry('fluid', event => {
  event.create('lava_clone')
    .displayName('Lava Clone')
    .tint(0xff6600)
    .slopeFindDistance(2)
    .type(type => type
      .renderType(0)
      .stillTexture('kubejs:block/thick_fluid_still')
      .flowingTexture('kubejs:block/thick_fluid_flow')
      .sound($SoundActions.BUCKET_FILL, $SoundEvents.BUCKET_FILL_LAVA)
      .sound($SoundActions.BUCKET_EMPTY, $SoundEvents.BUCKET_EMPTY_LAVA)
      .canSwim(false)
      .canDrown(false)
      .density(3000)
      .viscosity(6000)
      .addDripstoneDripping(1, $ParticleTypes.DRIPPING_DRIPSTONE_LAVA, 'minecraft:lava_cauldron', $SoundEvents.POINTED_DRIPSTONE_DRIP_LAVA)
    )
})

流体构建器支持的方法

  • displayName(string) 设置此对象的显示名称,例如 'Water'。如果语言文件存在,这将被覆盖。

  • translationKey(string) 设置此对象的翻译键,例如 'block.minecraft.water'

  • formattedDisplayName() 使 displayName() 覆盖语言文件。

  • formattedDisplayName(string) formattedDisplayName().displayName(name) 的组合方法。

  • tag(string[]) 向此流体添加标签,例如 'minecraft:fluid'

  • type(builder) 详情见下文

  • tint(color) 在纹理上添加色调。这将与纹理上的颜色混合,因此它最适合灰度纹理。

颜色选项

有3种编写颜色的方法:

  • 使用 Color 包装器:Color.RED

  • 使用 RGB 十六进制值:0xFF0000

  • 使用 ARGB 十六进制值:0x7F0000FF

所有 Color 选项列表

  • BLACK

  • DARK_BLUE

  • DARK_GREEN

  • DARK_AQUA

  • DARK_RED

  • DARK_PURPLE

  • GOLD

  • GRAY

  • DARK_GRAY

  • BLUE

  • GREEN

  • AQUA

  • RED

  • LIGHT_PURPLE

  • YELLOW

  • WHITE

  • WHITE_DYE

  • ORANGE_DYE

  • MAGENTA_DYE

  • LIGHT_BLUE_DYE

  • YELLOW_DYE

  • LIME_DYE

  • PINK_DYE

  • GRAY_DYE

  • LIGHT_GRAY_DYE

  • CYAN_DYE

  • PURPLE_DYE

  • BLUE_DYE

  • BROWN_DYE

  • GREEN_DYE

  • RED_DYE

  • BLACK_DYE

  • stillTexture(string) 必需

  • flowingTexture(string) 必需

  • renderType(int) 必需

渲染类型

  • 0: solid

  • 1: cutout

  • 2: cutout mipped

  • 3: translucent

  • translucent() 将渲染类型设置为 3

  • slopeFindDistance(int) 设置流体检查传播方向的距离。

  • levelDecreasePerBlock(int)

  • explosionResistance(float)

  • tickRate(int) 较低的速率将使流体传播更快。

  • noBucket()

  • noBlock()

流体类型构建器

  • screenOverlayTexture(string)

  • blockOverlayTexture(string)

  • descriptionId(string) 设置表示流体类型名称的标识符。

  • motionScale(double) 设置流体速度应缩放多少。

  • canPushEntity(bool)

  • canSwim(bool)

  • canDrown(bool)

  • fallDistanceModifier(float) 设置流体每刻撞击地面时应缩放多少伤害。

  • canExtinguish(bool)

  • canConvertToSource(bool)

  • supportsBoating(bool)

  • pathType(int) 路径类型用于告诉AI是否可以走入其中。

路径类型

  • 0: BLOCKED

  • 1: OPEN

  • 2: WALKABLE

  • 3: WALKABLE_DOOR

  • 4: TRAPDOOR

  • 5: POWDER_SNOW

  • 6: DANGERPOWDERSNOW

  • 7: FENCE

  • 8: LAVA

  • 9: WATER

  • 10: WATER_BORDER

  • 11: RAIL

  • 12: UNPASSABLE_RAIL

  • 13: DANGER_FIRE

  • 14: DAMAGE_FIRE

  • 15: DANGER_OTHER

  • 16: DAMAGE_OTHER

  • 17: DOOR_OPEN

  • 18: DOORWOODCLOSED

  • 19: DOORIRONCLOSED

  • 20: BREACH

  • 21: LEAVES

  • 22: STICKY_HONEY

  • 23: COCOA

  • 24: DAMAGE_CAUTIOUS

  • 25: DANGER_TRAPDOOR

  • adjacentPathType(int)

  • sound(soundAction, soundEvent) 设置执行特定操作时播放的声音。

声音参数

第一个参数 第二个参数

第一个参数是 SoundAction

您必须加载类才能使其工作!

const $SoundActions = Java.loadClass('net.neoforged.neoforge.common.SoundActions')

可能的选项:

  • BUCKET_FILL

  • BUCKET_EMPTY

  • FLUID_VAPORIZE

  • CAULDRON_DRIP

第二个参数是 SoundEvent

您必须加载类才能使其工作!

const $SoundEvents = Java.loadClass('net.minecraft.sounds.SoundEvents')

有关基础游戏中所有选项的综合列表,您可以查看 在线 Javadocs

示例用法:

sound($SoundActions.BUCKET_FILL, $SoundEvents.AMETHYST_BLOCK_BREAK)
  • canHydrate(bool)

  • lightLevel(int) 在 [0-15] 之间

  • density(int)

  • temperature(int)

  • viscosity(int)

  • rarity(string)

稀有度选项

  • 'common'

  • 'uncommon'

  • 'rare'

  • 'epic'

  • addDripstoneDripping(float, particleType, string, soundEvent) 允许此流体从滴水石锥滴下并填充下方的炼药锅。

参数

  • chance: 每次滴水石锥随机刻时下方炼药锅被填充的几率

  • dripParticle: 可为空 当此流体在上方时从滴水石锥尖端随机生成的粒子

  • cauldron: 滴水石锥成功尝试填充炼药锅时应将空炼药锅替换为的方块

  • fillSound: 可为空 滴水石锥成功尝试填充空炼药锅时播放的声音

默认粒子列表可以在 这里 找到

您必须加载类才能使其工作!

const $ParticleTypes = Java.loadClass('net.minecraft.core.particles.ParticleTypes')

示例用法:

addDripstoneDripping(1, $ParticleTypes.DRIPPING_DRIPSTONE_LAVA, 'minecraft:lava_cauldron', $SoundEvents.POINTED_DRIPSTONE_DRIP_LAVA)

脚本文件夹:startup_scripts/