MCIO Plugins MCIO Plugins
首页
爱发电 (opens new window)
无法下载? (opens new window)

人间工作P

我每天都好困… 最近在学习和进行 VOCALOID 创作
首页
爱发电 (opens new window)
无法下载? (opens new window)
  • PluginBase

  • Item-NBT-API

  • VectorDisplays

    • VectorDisplays 简介
      • 安装
      • 简介
      • 快速开始 (开发者)
      • 项目发布于
    • 内嵌依赖
    • 控件定位
  • 开发文档
  • VectorDisplays
2025-09-22
目录

VectorDisplays 简介

Minecraft 世界终端用户界面解决方案

由于文本展示实体 (opens new window)在 1.19.4 加入到游戏中,这个依赖库/插件只支持 1.19.4+ 的服务端与客户端。

# 安装

对于开发人员,详见本文下方的快速开始示例。

对于使用者,你首先需要满足以下条件

  • 服务端版本在 1.19.4 或以上,可使用 Spigot/Paper/Folia 服务端。
  • 至少使用 Java 17 运行服务端
  • 安装前置插件 packetevents (opens new window)

然后,你可以使用以下任意一种方法获取插件:

  • 到爱发电 (opens new window)进行购买
  • 通过QQ (opens new window)或者QQ群 (opens new window)联系作者进行购买
  • 克隆本仓库,自行构建

警告

任何第三方构建都是不可信的,为了您的安全,即使您不想购买,也请自行构建插件。
人话:提醒到这个份上了,遇到了后门别找我。

# 简介

你可想象过各种科幻电影、游戏中,悬在空中的半透明控制面板?
托文本展示实体 (opens new window)可以自由旋转的福,现在,你可以轻松创建这样的控制面板!且无需对客户端作出任何修改,不需要 Mod,甚至不需要资源包。

你可能会好奇这个依赖库/插件是怎么工作的。我们只是做了一点较为复杂的数学运算,让文本展示实体出现在它应该出现的地方,并应用正确的旋转变换。所有文本展示实体的朝向都是默认的(朝向正南方,即Z轴正方向),我们改变的是文本展示实体的左旋转。
文本展示实体的旋转变换使用四元数,这使得我们可以将其旋转到任意角度。即使四元数表达起来并不直观,但这在 1.19 之前几乎是不敢想的。

你可以自由设定这个控制面板中拥有哪些元素,使用类似于 Swing 或 WinForm 的形式,但 Minecraft 中限制较大,没有办法做到与他们并肩的自由度。
除了修改文本展示实体可以调整的背景颜色、文本组件、亮度、缩放等以外,还可以:

  • 监听准心悬停状态更改事件,让元素在被玩家准心悬停时更改背景颜色等等
  • 监听玩家点击事件,让元素在被玩家点击时执行自定义操作

# 快速开始 (开发者)

对于需要将 VectorDisplays 作为依赖库嵌入到自己的插件里的开发者,请先阅读 API 文档。

如果只需要将 VectorDisplays 作为依赖插件,按以下步骤操作。首先添加依赖(自行替换 $VERSION 为版本号 (opens new window))

repositories {
    mavenCentral()
}
dependencies {
    compileOnly("top.mrxiaom.hologram:VectorDisplays-API:$VERSION")
}
1
2
3
4
5
6

创建你的第一个终端控制面板

void create(Player player) {
    Location eyeLocation = player.getEyeLocation().clone(); eyeLocation.setPitch(0);
    // 获取玩家面前 2 格远的位置
    Location loc = player.getLocation().clone().add(eyeLocation.getDirection().multiply(2));
    // 操作面板ID, 位置, 宽度(单位为空格数), 高度(单位为行数)
    SimpleTerminal terminal = new SimpleTerminal(
        /*显示方式:*/RenderMode.NEARBY,
        /*面板ID:*/ "test_" + player.getName(),
        /*位置:*/   loc,
        /*大小:*/   9, 3
    );
    terminal.setRotation(180.0f - eyeLocation.getYaw(), -30.0f); // 设置终端面板旋转
    // 添加按钮
    terminal.addElement(new Button("btn1")
            .setText("<#FF0000>测试")
            .setScale(0.25f) // 缩放尺寸
            .setAlign(EnumAlign.RIGHT_CENTER) // 位置对齐方式
            .setPos(-2, 0) // 相对位置
            .setAdditionalRotation(45) // 设置旋转45度
            .setFullBrightness() // 设置固定亮度
            .setOnHoverStateChange(hoverBg(0x80000000, 0)) // 悬停更改背景颜色
            .setOnClick((whoClicked, action, e) -> { // 点击执行操作
                whoClicked.sendMessage("你以 " + action + " 方式点击了按钮 " + e.getId());
            }));
    // 添加线条
    terminal.addElement(new Line("line1"), line -> {
        // 除了使用前面的链式调用格式以外,还可以使用 Consumer 来修改参数
        line.setFullBrightness();
        line.setPos1(-5, -5);
        line.setPos2(5, 5);
        line.setAlign(EnumAlign.CENTER);
    });
    // 使用 NEARBY 显示方式时,无需手动添加玩家到这个终端面板
    //terminal.addViewer(player);
    // 注册并生成悬浮字
    TerminalManager.inst().spawn(terminal);
}
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

SimpleTerminal (opens new window) 仅仅是默认实现,你还可以继承抽象类 Terminal (opens new window) 以便更好地实现你需要的功能!

# 项目发布于

  • Github (opens new window)
上次更新: 2025/10/15, 10:58:27
使用示例
内嵌依赖

← 使用示例 内嵌依赖→

Theme fork from Vdoing | Copyright © 2018-2025 人间工作P | 到爱发电支持我

除非特别说明,本站点所有文章均以 CC BY-SA 协议授权

《我的世界》和《Minecraft》是微软公司和 Mojang Synergies AB 的商标,本站点与微软公司等没有从属关系。

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式