v2.0.6 · 已适配 3.10.0.300878

给方块世界
叠一层可读信息

Orange 是一套面向 Minecraft 基岩版的原生 hook 框架。它在 LocalPlayer::normalTick 上采集世界数据, 用 ImGui 与 OpenGL ES 直接绘制在画面之上 —— 实体追踪、雷达、HUD 面板与目标筛选,全部由一份数据驱动的 JSON 配置控制。

ABIarm64-v8a
渲染ImGui · OpenGL ES
循环点normalTick
注入inline hook
ORANGE / OVERLAY PREVIEW
FOV 70° · RADIUS 64m
tick 0 · 20 tps MASK 0x0F
2.0.6

当前版本

4类

目标筛选掩码

70°

追踪视场角

1处

唯一循环锚点

01 / 能力

画面上多出来的那层信息,都来自同一个 tick

骨架只有一条:拿到 LocalPlayer,读世界,画出来。剩下的都是配置。

ESP 实体追踪

遍历 Level 中的 Actor 列表,把每个实体的世界坐标投到屏幕,输出方框、血条与名称。可见性由距离与视场共同裁剪。

Actor / ScreenProjection

HUD 面板

坐标、朝向、FPS、TPS、维度与当前目标数常驻屏幕角落。布局用锚点描述,换分辨率不会错位。

ImGui DrawList

目标筛选掩码

玩家 1、实体 2、掉落物 4、自身 8,四个位独立开关,组合成一次位与判断。扫描只走一遍,不重复遍历。

bit mask · 0x0F

物品与 NBT 编辑

从背包槽位读到 ItemStack,改数量、改附魔、写自定义 NBT,再经反序列化路径回写,落盘即时生效。

ItemStack / NBT

数据驱动 GUI

面板由一组 JSON 描述,带 schema 版本号。换分辨率、换设备都不需要重新排版,旧配置会在加载时被识别并迁移。

JSON · schema 版本化

版本适配

游戏每个版本都要重新对一遍位置与结构,适配完成才发版。面板、开关与配置不受影响,覆盖安装照旧沿用。

version tracking
02 / 原理

一帧之内,只有一条数据链

所有采集都发生在本地玩家的 tick 里:拿到 LocalPlayer,读世界,筛目标,交给渲染。没有另外开线程,也没有散落在各处的循环。

绘制集中在 ImGui 的单帧批次里提交,实体再多也只走一遍遍历。屏幕上的方框、血条和雷达点,是同一份数据的三种画法。

面板与开关由一组 JSON 描述,改布局不用改代码。每份配置带版本号,旧设备上的老配置会被识别并迁移,不会被直接丢掉。

调度每 tick 一次
绘制单帧批次
配置JSON · 版本化
01
Level / Actor
世界状态快照
tick 内读取
02
LocalPlayer::normalTick
唯一的调度锚点
20 tps
03
目标筛选
玩家 1 · 实体 2 · 掉落物 4 · 自身 8
单次遍历
04
ImGui DrawList
方框 · 血条 · 名称 · 雷达
单帧批次
05
Overlay
叠加在画面之上
仅叠加显示
03 / 上手

从安装到看见第一帧

四个步骤,中间不需要电脑。

STEP 01

安装并启动

装好之后先打开一次,等初始化走完。之后每次启动都会接着用上次保存的配置。

arm64-v8a
STEP 02

进入世界

世界加载完成后数据开始刷新:坐标、朝向、目标数与雷达同时就位。

20 tps
STEP 03

调出面板

点悬浮入口打开面板,每个开关即时生效,不用退出世界。

HUD
STEP 04

保存配置

布局与开关写入本地配置,下次启动自动加载,覆盖安装也不会清掉。

JSON
04 / 版本

更新日志

跟着游戏版本走,适配完成才发版。

LATEST RELEASE

v2.0.6

2026.10.28
  • 适配 游戏 3.10.0.300878
  • 修复 重进世界后 Gui 不显示的问题
查看安装步骤 arm64-v8a · 3.10.0.300878
2.0.6 3.10.0.300878 当前
2.0.x 3.10.x 历史
1.4.7 3.9.15 历史
下一版 大版本适配中 —
05 / 常见问题

动手前先看这几条

每个游戏版本都要重新适配一次。换了大版本之后旧的行为可能整体失效,表现是开关没反应、或者面板能开但数据不动 —— 这种情况等对应版本的更新即可,不需要重装。

初始化在启动阶段完成,这期间游戏里不会绘制任何东西。如果你看到的是“系统维护中”,说明当前版本还没适配完成,等更新或者换回上一版。

开关与面板布局存在本地配置文件里,带版本号。版本号低的旧配置会在加载时被识别并迁移,不会被直接丢弃,所以覆盖安装后布局通常还在。

多线程各自开循环会互相踩数据,也容易在实体列表里读到半更新的状态。全部收在 LocalPlayer::normalTick 里,按 tick 串行调度,采集与绘制天然分帧,逻辑简单也不掉帧。

一个纯静态的单文件页面 —— HTML、CSS、JS 全在一个文件里,雷达用 Canvas 实时绘制,没有外部依赖,也没有框架。直接打开就能跑,也方便自己改文案和配色。