CustomEyesLib

CustomEyesLib

添加指向游戏中任意结构的眼睛,就像末影之眼指向要塞一样。支持原版和模组结构。

冒险

一个为整合包开发者打造的模组,添加了能够定位并指向任何结构的自定义眼球物品。你可以在高度可配置的 TOML 文件中定义任意数量的眼球,并指定目标结构、物品纹理、搜索半径和粒子颜色。

计划中的功能

  • 使用资源包而非 KubeJS 自定义纹理的眼球,可提供更高的灵活性和更简便的配置方式。

配置

眼球在 .minecraft/config/structureeye-eyes.toml 文件中定义。该文件会在首次启动时自动生成,只需向其中添加 [[eye]] 块即可。 字段说明:

  • name — 物品的注册名,不能包含空格。这用于 /give 命令中显示。
  • displayName — 物品在游戏内的显示名称。如果省略,则默认使用 name
  • textureItem — 用于眼球纹理的任何物品。也支持模组物品。
  • targetStructure — 结构的注册键。可使用 /locate 命令或查找模组结构的 ID。
  • searchRadius — 向外搜索的区块数。默认值为 128,最大为 256。数值越高搜索速度越慢。
  • glowColor — 粒子拖尾的 ARGB 十六进制颜色(例如 #FFFF0000 为红色)。
  • showCoordinates — 设置为 true 时,当找到结构后会在聊天栏中显示“在 X, Y, Z 处找到“名称””。
  • skipVisited — 一旦你已访问过某个结构,眼球将不再引导你前往该处。它会始终寻找下一个最近的结构。

示例:

[[eye]]
  name            = "fortress_eye"
  displayName     = "堡垒之眼"
  textureItem     = "minecraft:blaze_powder"
  targetStructure = "minecraft:fortress"
  searchRadius    = 128
  glowColor       = "#FFFF6600"
  showCoordinates = true
  skipVisited     = true

[[eye]]
  name            = "temple_eye"
  displayName     = "沙漠神殿之眼"
  textureItem     = "minecraft:gold_nugget"
  targetStructure = "minecraft:desert_pyramid"
  searchRadius    = 96
  glowColor       = "#FFFFFF00"
  showCoordinates = false
  skipVisited     = false

自定义纹理

有两种方式可以为眼球提供自定义纹理。 方式一:资源包(推荐) 创建一个具有以下结构的 ZIP 文件:

MyResourcePack.zip
  pack.mcmeta
  assets/structureeye/textures/item/
    your_eye_name.png

pack.mcmeta 文件内容应如下所示:

{
  "pack": {
    "pack_format": 15,
    "description": "我的自定义眼球纹理"
  }
}

将 ZIP 文件放入 .minecraft/resourcepacks/ 并在游戏内启用。然后在你的配置中,使用 texturePath 代替 textureItem

[[eye]]
  name            = "my_eye"
  displayName     = "我的自定义眼球"
  texturePath     = "structureeye:item/your_eye_name"
  targetStructure = "minecraft:stronghold"
  searchRadius    = 128
  glowColor       = "#FF00FFFF"
  showCoordinates = false
  skipVisited     = true

使用 KubeJS 自定义纹理

对于自定义眼球纹理,可以使用 KubeJS 作为纹理包的替代方案。注册一个带有你所需纹理的物品,并在配置中将 textureItem 设置为你的 KubeJS 物品。

如何创建 KubeJS 物品:

// kubejs/startup_scripts/items.js
StartupEvents.registry('item', event => {
    event.create('ItemId')
        .displayName('ItemName')
        .texture('kubejs:item/ItemId') // 此步骤非必需,如果文件名相同则会自动注册
})

将你的纹理放在 kubejs/assets/kubejs/textures/item/**ItemId** 路径下,并在配置中设置 textureItem = "kubejs:**ItemId**"