6.0 (1.19.2)

预计阅读时间: 3 分钟

适用于 Minecraft 1.19.2 的重大更新

onEvent()

onEvent('event', event => {}) 语法被 SomeEventGroup.someEventName(event => {}) 替代

新语法旧语法
BlockEvents.rightClicked(event => {
  if(event.block.id === 'minecraft:dirt') {
    console.info('Hi!')
  }
})
``` | ```javascript
onEvent('block.right_click', event => {
  if(event.block.id === 'minecraft:dirt') {
    console.info('Hi!')
  }
})

不仅如此,新事件还支持 ID 和其他事物的额外参数!您现在可以选择让每个 id 有自己的事件处理器:

新语法旧语法
BlockEvents.rightClicked('minecraft:dirt', event => {
  console.info('Hi!')
})

BlockEvents.rightClicked('minecraft:stone', event => {
  console.info('Bye!')
})
``` | ```javascript
onEvent('block.right_click', event => {
  if(event.block.id === 'minecraft:dirt') {
    console.info('Hi!')
  } else if(event.block.id === 'minecraft:stone') {
    console.info('Bye!')
  }
})

一些事件需要 ID,例如注册表和标签事件:

新语法旧语法
StartupEvents.registry('item', event => {})
``` | ```javascript
onEvent('item.registry', event => {})
新语法旧语法
ServerEvents.tags('item', event => {})
``` | ```javascript
onEvent('tags.items', event => {})

使用参数在 CPU 上实际上比检查某些 event.id == 'id' 更快

您可以在这里找到新事件的完整列表。

onForgeEvent()

onForgeEvent('package.ClassName', event => {}) 已被 ForgeEvents.onEvent('package.ClassName', event => {}) 替代

新语法旧语法
ForgeEvents.onEvent('net.minecraftforge.event.level.BlockEvent$PortalSpawnEvent', event => {})
``` | ```javascript
onForgeEvent('net.minecraftforge.event.level.BlockEvent$PortalSpawnEvent', event => {})

新!它现在支持通用事件:

ForgeEvents.onGenericEvent('net.minecraftforge.event.AttachCapabilitiesEvent', 'net.minecraft.world.entity.Entity', event => {})

服务器设置

settings.log... 属性已从服务器脚本中移除,并取而代之的是移到了 local/kubejsdev.properties 文件。默认情况下,它不会随整合包一起发送,但您可以将 saveDevPropertiesInConfig 更改为 true,以改为将文件保存在 kubejs/config/dev.properties 中。

java()

java('package.ClassName') 已被 Java.loadClass('package.ClassName') 替代

新语法旧语法
const CactusBlock = Java.loadClass('net.minecraft.world.level.block.CactusBlock')
``` | ```javascript
const CactusBlock = java('net.minecraft.world.level.block.CactusBlock')

在 Java 工具类中可能会有更多的反射辅助方法,例如列出类中的所有字段和方法等。

再见包装类

所有原版类都不再是包装器 - EntityJSLevelJSItemStackJSIngredientJS 和其他类都已消失。这可能会引入一些错误,但总的来说,应该会让与 Minecraft 和其他模组的交互变得更加容易。几乎所有旧方法仍然通过核心修改原版得到支持。这也应该会显著提高性能,因为它不需要不断地包装和解包类。

6.1 (1.19.2) - 适用于 Minecraft 1.19.2 的重大更新