ItemEvents.modifyTooltips

预计阅读时间: 3 分钟

信息

此事件可在客户端或服务器端使用。

要简单地为物品添加工具提示,您可以使用 event.add(filter, Text[]) 方法。

您可以在服务器端注册动态工具提示处理程序,但处理程序本身必须在客户端。

ItemEvents.modifyTooltips 事件中可用的方法:

  • event.add(filter, Text[]) - 向物品添加文本行的快捷方法
  • event.add(filter, TooltipRequirements, Text[]) - 相同方法,但第2个参数添加要求。请参见下文
  • event.modify(filter, (tooltip: TooltipActionBuilder) => void) - 无要求地修改工具提示
  • event.modify(filter, TooltipRequirements, (tooltip: TooltipActionBuilder) => void) - 有要求地修改工具提示
  • event.modifyAll((tooltip: TooltipActionBuilder) => void) - 无要求地修改所有工具提示
  • event.modifyAll(TooltipRequirements, (tooltip: TooltipActionBuilder) => void) - 有要求地修改所有工具提示

基本示例

ItemEvents.modifyTooltips(event => {
	// 为所有红色方块显示此工具提示
	event.add(/minecraft:red_/, Text.red('Red!'))
	// 仅在未按下 shift 键时显示此文本
	event.add('minecraft:campfire', {shift: false}, Text.gray('Campfire :D'))
	// 仅在按下 shift 键时显示此文本
	event.add('minecraft:campfire', {shift: true}, Text.gray('Campfire :('))
})
ItemEvents.modifyTooltips(event => {
	event.modify('minecraft:pink_concrete_powder', tooltip => {
		// 移除方块标题
		tooltip.removeLine(0)
		// 在列表顶部插入文本
		tooltip.insert(0, Text.of('funi block').color(0xFFA5F7))
	})
})

文本操作

event.modifytooltip 中可用的所有方法:

  • tooltip.dynamic(id)
  • tooltip.add(Text[]) - 在工具提示末尾添加文本行
  • tooltip.insert(index, Text[]) - 在特定行的工具提示中间插入文本行
  • tooltip.removeLine(index) - 移除特定行
  • tooltip.removeText(Text) - 如果组件内容的任何部分与输入匹配,则移除该行
  • tooltip.removeExactText(Text) - 如果与组件完全匹配,则移除该行
  • tooltip.clear() - 清除整个工具提示

工具提示操作按顺序执行,因此如果您调用 tooltip.removeLine(0) 两次,它将移除前两行

工具提示要求

可用的要求属性:

  • shift: true/false - 是否按下 shift 键
  • ctrl: true/false - 是否按下 ctrl 键
  • alt: true/false - 是否按下 alt 键
  • advanced: true/false - 是否启用高级工具提示 (F3+H)
  • creative: true/false - 玩家是否处于创造模式
  • stages: {stageName: true/false} - 玩家是否具有特定阶段

您可以组合多个属性,例如 {shift: true, ctrl: false, advanced: true}

详细信息

脚本文件夹:server_scripts/client_scripts/