启动脚本
基本说明
- 其他 kubejs 绑定器仍可与以下任何方法配合使用,例如
.tagBlock() - 除非另有说明——所有新方法都可以接受基于基数的方块状态 JSON,允许它们围绕 Y 轴旋转。 示例如下。
基于基数的方块状态 JSON 示例。
{
"variants": {
"facing=east": {
"model": "tfg:block/test",
"y": 270
},
"facing=north": {
"model": "tfg:block/test",
"y": 180
},
"facing=south": {
"model": "tfg:block/test"
},
"facing=west": {
"model": "tfg:block/test",
"y": 90
}
}
}自定义 GT 条件
💡 自定义配方条件: TFG 拥有多个自定义配方条件,并为 TFC 和 Ad Astra 环境提供了模式绑定。
条件方法
类型: 含氧条件
.isOxygenated(event, oxygenated: Boolean)设置配方是否需要由 Ad Astra 的氧气 API 提供的含氧环境。 如果为
true,则配方需要氧气。 如果为false,则配方不允许存在氧气。
类型: 月份条件
.months(event, months: String[])设置配方是否只能在提供的月份白名单期间运行。 示例:
march, april, december
.monthsRange(event, months: String start, String end)设置可以运行配方的月份范围。 可以循环。 示例:
december, june
类型: 季节条件
.seasons(event, seasons: String[])设置配方是否只能在提供的季节白名单期间运行。 示例:
spring, fall
.seasonsRange(event, seasons: String start, String end)设置可以运行配方的季节范围。 可以循环。 示例:
summer, winter
类型: 温度条件
.climateAvgTemperatureRange(event, temperate: Float start, Float end)设置可以运行配方的平均气候温度范围。 最小值:
-1000C,最大值:1000C
.climateAvgTemperatureGreaterThan(event, temperate: Float value)设置可以运行配方的最低平均气候温度。
.climateAvgTemperatureLessThan(event, temperate: Float value)设置可以运行配方的最高平均气候温度。
类型: 降雨量条件
.climateAvgRainfallRange(event, rainfall: Float start, Float end)设置可以运行配方的平均气候降雨量范围。 最小值:
0mm,最大值:500mm
.climateAvgRainfallGreaterThan(event, rainfall: Float value)设置可以运行配方的最低平均气候降雨量。
.climateAvgRainfallLessThan(event, rainfall: Float value)设置可以运行配方的最高平均气候降雨量。
类型: 重力条件
.gravityRange(event, gravity: Float start, Float end)设置可以运行配方的局部重力范围。 单位:m/s^2。
.gravityGreaterThan(event, rainfall: Float value)设置可以运行配方的最低局部重力。
.gravityLessThan(event, rainfall: Float value)设置可以运行配方的最高局部重力。
自定义条件示例
let a = event.recipes.gtceu.greenhouse('tfg:example')
.notConsumable(input)
.itemOutputs(output)
.duration(20)
.EUt(20)
TFGRecipeSchemaBindings.isOxygenated(a, true)自定义建造器
💡 粒子建造器: TFG 有一些建造器,允许创建自定义粒子发射器方块
tfg:particle_emitter_decoration、tfg:particle_emitter和tfg:active_particle_emitter。 粒子发射器方块使用consumer<particles>,这意味着每个方块可以分配多组粒子。
方法类型
类型: tfg:particle_emitter 与 tfg:particle_emitter_decoration
额外方法:
.particles(particles: Consumer<ParticleSetBuilder>)设置生成粒子的属性。
.hasTicker(ticker: Boolean)设置方块是否应成为方块实体并使用专用的计时器。 对于自定义粒子延迟, 以及在玩家直接范围之外继续生成粒子是必需的。 默认为
false。
.emitDelay(delay: Int);需要
ticker(true)。 定义自定义计时器延迟缩放的上限范围。 粒子将在随机刻间隔生成,使用Math.max(0, delay)。 默认为0。
额外消费者: Consumer<ParticleSetBuilder>
ParticleSetBuilder 方法:
.position(position: {Double x, Double y, Double z})设置粒子发射器的初始起始位置,相对于方块位置的起始顶点。 默认为
(0.5, 0.5, 0.5)。
.range(range: {Double x, Double y, Double z})设置以
postion为中心的所有轴的生成半径。 默认为(0.25, 1.0, 0.25)。
.velocity(velocity: {Double x, Double y, Double z})设置粒子的初始线速度。 默认为
(0, 0, 0)。
.particle(particle: {Supplier<SimpleParticleType> | "minecraft:dust"})设置要生成的
SimpleParticleType。 如果minecraft:dust被使用——则启用dust方法。
.count(count: Int)每次发射刻要生成的粒子数量。 默认为
1。
.forced(forced: Boolean)设置粒子显示是否应为"强制"。 这允许客户端渲染器忽略用户的粒子配置设置。 仅适用于某些粒子类型,如
minecraft:campfire_signal_smoke。 默认为false
.dust(dust: {Float r, Float g, Float b, Float scale})如果
particle=minecraft:dust,则有一个额外的方法可用于设置灰尘粒子的 RGB 颜色和缩放比例。 默认为(1.0, 1.0, 1.0, 1.0)。
示例:
StartupEvents.registry('block', event => {
event.create('tfg:example_a', 'tfg:particle_emitter_decoration')
.particles(a => a
.position(0.5, 0.5, 0.5)
.range(0.3, 2, 0.3)
.velocity(0, 0.1, 0)
.count(6)
.forced(true)
.particle('minecraft:dust')
.dust(0.0, 1.0, 0.2, 1.5))
.hasTicker(true)
.emitDelay(5);
});上面的示例将创建一个装饰方块,在方块中心生成 6 个绿色的 minecraft:dust 粒子,Y 轴半径为 2 个方块。 以及 0-5 刻的平均延迟。 此方块作为方块实体渲染,因此即使在远处也会生成粒子,并且作为装饰建造器,其行为类似于花朵方块:
类型: tfg:active_particle_emitter
额外方法:
📝 注意: 活动粒子发射器消费者使用与上述粒子发射器消费者相同的方法。
.activeParticles(particles: Consumer<ParticleSetBuilder>)设置当方块具有
ACTIVE=TRUE方块状态时生成的粒子的属性。
.inactiveParticles(particles: Consumer<ParticleSetBuilder>)设置当方块具有
ACTIVE=FALSE方块状态时生成的粒子的属性。
.activeLight(active_light: Int)设置当方块具有
ACTIVE=TRUE方块状态时发出的光照等级。 限制在(0-15)。 可选。
.inactiveLight(active_light: Int)设置当方块具有
ACTIVE=FALSE方块状态时发出的光照等级。 限制在(0-15)。 可选。
示例:
StartupEvents.registry('block', event => {
event.create('tfg:example_b', 'tfg:active_particle_emitter')
.activeLight(12)
.inactiveLight(0)
// First particle set
.activeParticles(a => a
.particle('tfg:fish_school')
.position(0.5, 1.5, 0.5)
.range(0.0, 2.0, 0.0)
.velocity(0.0, 0.0, 0.0)
.count(5)
.forced(false)
)
// Second particle set
.activeParticles(a => a
.particle('minecraft:current_down')
.position(0.0, 3.8, 0.0)
.range(5.0, 0.0, 5.0)
.velocity(0.0, 0.1, 0.0)
.count(5)
.forced(false)
)
// Third particle set
.activeParticles(a => a
.particle('minecraft:current_down')
.position(0.0, 3.8, 0.0)
.range(0.5, 0.0, 0.5)
.velocity(0.0, 0.1, 0.0)
.count(5)
.forced(false)
)
.hasTicker(true)
.emitDelay(20);
});装饰性植物方块
我们有几种类型的装饰性植物。
基础的 tfg:decorative_plant 将创建一个具有典型植物方块属性的方块,如随机偏移、瞬间破坏、不能在不受支持的面上放置以及较小的碰撞箱大小。 它还支持使用淡水、海水、泉水和火星水进行水浸。 (可以通过 Core 添加更多流体)
- 默认情况下,建造器将自动为使用小刀、锄头和镰刀收获植物制作战利品表。 如果你想用其他物品替换此物品,请使用
lootItem()方法,这意味着你只能使用剪刀来拾取"原始"方块。 - 如果你想在玩家(且仅限于玩家)走过这种植物时赋予其效果,可以使用
effect()方法,该方法接受一个状态效果 ID 字符串作为参数。 当玩家身处该植物的空间范围内时,会持续不断地获得指定效果,每次持续 50 游戏刻。
tfg:tall_decorative_plant 功能相同,但它是作为 n 格高的植物存在的。 使用 height() 方法设置高方块的最大高度,最大为 5。
tfg:floating_decorative_plant 继承自基本方块,专为漂浮在水上的植物设计,如睡莲。 它有一个布尔方法 xz_offset()(默认为 true),用于控制此方块是否应具有随机 XZ 偏移,适用于藻类等。
tfg:attached_decorative_plant 继承自基础方块,用于附着在其他方块上的植物,例如群峦的层孔菌。 它只会附着在带有 tfg:decorative_plant_attachable 标签的方块上。 它还有一个 allowVertical() 布尔方法(默认为 false)以允许放置在方块的顶部和底部侧面。
方法
event.create(string name, 'tfg:decorative_plant') // Default box size (3, 0, 3, 13, 7, 13)event.create(string name, 'tfg:tall_decorative_plant') // Default box size (2, 0, 2, 14, 16, 14)示例
StartupEvents.registry('block', event => {
event.create('tfg:test', 'tfg:decorative_plant')
.soundType('nether_wart')
.tagItem('tfg:venus_plants')
.box(3, 0, 3, 13, 14, 13)
.speedFactor(0.85)
.effect('minecraft:darkness')
.lootItem('tfc:straw')
})StartupEvents.registry('block', event => {
event.create('tfg:test', 'tfg:tall_decorative_plant')
.soundType('nether_wart')
.tagItem('tfg:venus_plants')
.lightLevel(0.4)
.renderType('translucent')
.height(3) // 2 by default
})你还需要为 tall_decorative_plant 提供一个方块状态文件,如下所示:
它需要为所有可能的高度从 0 到 4 提供状态,即使有些未使用! 否则会出现日志垃圾信息。
{
"variants": {
"height=0": {
"model": "tfg:block/test_bottom"
},
"height=1": {
"model": "tfg:block/test_top"
},
"height=2": {
"model": ""
},
"height=3": {
"model": ""
},
"height=4": {
"model": ""
}
}
}tfg:decorative_plant 的示例。 tfg:tall_decorative_plant 的示例。 注意:
- 高大装饰性方块目前不支持基于基数的方块状态。
高大装饰性植物配置特性
为了帮助放置高大装饰性植物,有一个 tfg:tall_decorative_plant 配置特性。 你可以像这样使用它:
"type": "tfg:tall_decorative_plant",
"config": {
"block": "betterend:lanceleaf",
"plantHeight": 5,
"minHeight": 4,
"maxHeight": 7,
"middle": 2
}block指定要使用的方块 ID。 这必须是一个tfg:tall_decorative_plant方块。plantHeight是要使用的植物的"正常"高度,应与方块建造器中的height()方法相同。minHeight是你希望放置的植物的最小高度。 最小可以是plantHeight - 1。maxHeight是可以放置的植物的最大高度。 放置器将在这两个值之间随机选择一个数字作为植物的高度(包含两端)。middle是要重复(对于较高的植物)或省略(对于较矮的植物)的方块状态 ID
例如,使用上述配置,你将得到像 [0, 1, 3, 4] 或 [0, 1, 2, 2, 2, 3, 4] 这样的植物。
该放置器还会为你自动处理含水逻辑。