minecraft kubejs

kubejs系模组【前置41】【辅助】【前置19】或【前置2】(添加合成表矿辞统一)kubejs-forge-1605.3.18-build.157.jar
此 mod 允许您使用 JavaScript 语言创建脚本来管理服务器、添加新的方块和物品、更改配方、为任务模组添加自定义处理程序、更改世界生成器等!‎

kubejs操作指南

首先/kubejs hand获取手持物品信息
单击信息即可复制到剪切板

初始物品

1
2
3
4
5
6
7
8
9
10
11
12
// Listen to player login event
onEvent('player.logged_in', event => {
// Check if player doesn't have "starting_items" stage yet
if (!event.player.stages.has('starting_items')) {
// Add the stage
event.player.stages.add('starting_items')
// Give some items to player
event.player.give('minecraft:stone_sword')
event.player.give(Item.of('minecraft:stone_pickaxe', "{Damage: 10}"))
event.player.give('30x minecraft:apple')
}
})

简简单单不用多说

生成

kubejs\startup_scripts

1
2
3
4
5
6
onEvent('worldgen.remove', event => {
event.addLake(lake => { // Create new lake feature
lake.block = 'quark:elder_sea_lantern' // Block ID (Use [] syntax for properties)
lake.chance = 1 // Spawns every ~3 chunks
})
}

矿石

移除矿石

1
2
3
4
5
6
onEvent('worldgen.remove', event => {
event.removeOres(ores => {//移除矿石
ores.blocks = [ 'minecraft:coal_ore', 'minecraft:iron_ore' ] // 移除铁矿和煤矿
ores.biomes.values = [ 'minecraft:plains' ] // 限制该选项仅在平原生效
})
})

添加矿石
不知道什么原因,在我的整合包中几乎没有作用
此段语法有问题?

blacklist = false代表开启黑名单模式,即以下名单为不可生成名单
blacklist = true代表开启白名单模式,即以下名单为生成名单

官方维基与中文翻译都没说清楚(坑我老半天)!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
onEvent('worldgen.add', event => {

event.addOre(ore => { //自定义矿石
ore.block = 'minecraft:iron_ore','darkerdepths:silver_ore','minecraft:gold_ore'
ore.spawnsIn.blacklist = false
ore.spawnsIn.values = [
'#minecraft:base_stone_overworld' // 默认的生成方式: 用于决定作为地下矿石生成时,该矿石能取代哪些方块。你可以在https://wiki.biligame.com/mc/%E6%A0%87%E7%AD%BE查看更多信息。
]

ore.biomes.blacklist = flase // true代表一下名单为黑名单 flase代表一下名单为白名单
ore.biomes.values = [ //一下群系类别(也可以是id)在flase的情况下为可生成名单
'#extreme_hills',
'#taiga',
'#savanna',
'#forest',
'#mesa',
'#desert',
'#icy',
'#jungle',
'#plains',
'#ocean',
'#swamp',
'#river',
'#mushroom',
'#beach',
'#none'
]

ore.clusterMinSize = 3 // 每矿簇最少的矿石数量
ore.clusterMaxSize = 7 // 每矿簇最多的矿石数量
ore.clusterCount = 15 // 每个区块矿石数量
ore.minHeight = 60 // 最小Y值
ore.maxHeight = 128 // 最大Y值
ore.squared = true // 对X和Z值添加0~16的随机值. 推荐设置为 true
// ore.chance = 4 // 每大约4个区块生成一次. 对于稀有的矿石来说, 你可以将它和 clusterCount = 1 一同使用
})
})

nbt标签编辑

格式

1
2
3
4
5
6
7
onEvent('item.tags', event => {
// Get the #forge:cobblestone tag collection and add Diamond Ore to it
event.get('forge:cobblestone').add('minecraft:diamond_ore')

// Get the #forge:cobblestone tag collection and remove Mossy Cobblestone from it
event.get('forge:cobblestone').remove('minecraft:mossy_cobblestone')
})

注意前面的标签记号不要#

  • 添加
    event.get('forge:cobblestone').add('minecraft:diamond_ore')
  • 移除
    event.get('forge:cobblestone').remove('minecraft:mossy_cobblestone')

工作台配方

kubejs\server_scripts
首先格式:

1
2
3
onEvent('recipes', event => {
// Change recipes here
})
  • 无序
    1
    event.shapeless('minecraft:carved_pumpkin', ['minecraft:jack_o_lantern'])
  • 数量
    1
    event.shapeless('2x minecraft:carved_pumpkin', ['minecraft:jack_o_lantern'])
  • 有序
    1
    2
    3
    4
    5
    6
    7
    8
    9
    event.shaped('minecraft:iron_leggings', [
    'SXS',
    'X X',
    'Y Y'
    ], {
    S: 'minecraft:iron_ingot',
    X: 'minecraft:redstone',
    Y: 'minecraft:gold_ingot'
    })
  • 标签物品
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    event.shaped('minecraft:book', [
    'CCC',
    'WGL',
    'CCC'
    ], {
    C: '#forge:cobblestone',
    L: Item.of('minecraft:enchanted_book', {StoredEnchantments:[{lvl:1,id:"minecraft:sweeping"}]}),
    // 对于附魔来说,你还可以将其简写成如下形式:
    W: Item.of('minecraft:enchanted_book').enchant('minecraft:respiration', 2),
    G: '#forge:glass'
    })

某些带json文件(其实是大部分)的模组的直接修改

但强烈不建议直接修改别人打包好的jar,很不尊重作者

也顺带提一下大部分模组的文件结构:

  • assets资源文件,不是简单的png材质,还附带模型json及各种UI排布json等(某种程度上可视为css),语言文件也在此
  • com包含基本的Java文件经过编译后的class,不可修改(当然可反编译再自己编译一遍)
  • META-INF一些标志性文件例:mods.toml及用于描述模组信息,如版本信息,依赖信息等
  • data此文件为一些逻辑性的配置json,并提供兼容性接口(其下的minecraft、forge文件夹多用于配置兼容标签),推测kubejs就是某种程度上的修改和复制此json

如果实在想直接修改一些掉落物情况可参考:
【生物】龙栖Wyrmroost-1.16.3-1.2.11.jar对于此模组的铂矿生成过多、不可配置的问题,而直接对jar文件中【生物】龙栖Wyrmroost-1.16.3-1.2.11.jar\data\wyrmroost\loot_tables\blocks\下的platinum_ore.json进行编辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "wyrmroost:platinum_ore"//修改此处直接修改了挖掘掉落物
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"//意思说情况只发生在生存模式下
}
]
}
]
}

此方案最终弃用、采用如上kubejs的方法

---------------THEEND---------------