星座核心

星座核心

一个可复用的路径、运动、力场与冲击引擎,专为Minecraft 1.7.10打造,旨在支持流畅的脚本化能力,适用于Mod开发者、过场动画及CustomNPC+项目。

星座核心(Constellation Core)

适用于 Minecraft 1.7.10 的可复用移动、路径、力场与碰撞引擎。
专为脚本和 Java 模组构建,提供平滑的数学运动、可复用的碰撞行为及运行时控制,无需为每个项目重复编写相同的移动系统。


🌠 什么是星座核心?

星座核心(Constellation Core) 是一个 Forge 库/模组,专为在 Minecraft 1.7.10 上构建高级内容的创作者设计。

可通过以下方式使用:

  • CustomNPC+ JavaScript 脚本;
  • 用 Java 编写的 Forge 模组;
  • 共享库与附属模组;
  • 脚本化 RPG 系统;
  • 自定义 Boss、技能与过场系统。

创作者无需手动移动每个对象或在每个项目中重复创建相同的物理/路径系统,只需描述路径或物理行为,核心即可执行。

它提供了以下可复用 API:

  • 数学路径;
  • 平滑物品与实体运动;
  • 虚拟方块路径;
  • 运行时目标重定向;
  • 物理力场;
  • 重力井;
  • 碰撞与冲击处理;
  • 弹跳、穿透、滑动及其他冲击响应;
  • 生命周期事件;
  • 运动状态检查;
  • 可复用的运动/冲击预设;
  • 清理与性能预算。

🧭 路径引擎

路径引擎允许脚本和模组使用可复用的数学原语来描述完整轨迹。

支持的路径类型包括:

  • 保持(Hold)
  • 直线(Line)
  • 三次贝塞尔曲线(Cubic Bézier)
  • Catmull-Rom 样条
  • 圆弧(Arc)
  • 椭圆(Ellipse)
  • 螺旋线(Helix)
  • 8 字形(Figure Eight)
  • 轨道(Orbit)

可用的缓动类型包括:

  • 线性(Linear)
  • 缓入(Ease In)
  • 缓出(Ease Out)
  • 缓入/缓出(Ease In/Out)
  • 平滑步进(Smoothstep)
  • 更平滑步进(Smootherstep)
  • 指数缓入(Exponential In)
  • 指数缓出(Exponential Out)
  • 回退(Back)

🌀 路径修改器

无需创建全新的移动系统即可修改路径。

可用的控制项包括:

  • 正弦运动;
  • 摆动;
  • 速度倍率;
  • 重复路径;
  • 乒乓播放;
  • 切线方向;
  • 固定方向;
  • 注视方向;
  • 倾斜;
  • 持续旋转;
  • 物理引导。

这使得一个引擎适用于各种不同的运动,例如:

  • 流星;
  • 仪式物品;
  • 轨道旋转的遗物;
  • 蛇形弹射物;
  • 旋转刀刃;
  • 过场方块;
  • 魔法物体。

🧱 虚拟方块路径

BlockPathAPI 可以通过相同的数学路径系统渲染和动画化基于方块的对象。

视觉控制项包括:

  • 缩放;
  • 独立 XYZ 缩放;
  • 基础旋转;
  • 实时旋转;
  • 路径对齐;
  • 亮度;
  • 可选发光;
  • 预热;
  • 冲击保持。

适用于:

  • 流星;
  • 飞行碎片;
  • 魔法水晶;
  • 过场方块;
  • 基于方块的弹射物。

💥 冲击引擎

星座核心 1.6 版本新增了可复用的冲击引擎。

路径可以检测与实体和方块的碰撞,并通过 ImpactProfile(冲击配置文件)进行响应。

可用的响应类型包括:

  • STOP(停止)
  • BOUNCE(弹跳)
  • SLIDE(滑动)
  • PIERCE(穿透)
  • STICK(粘附)
  • SHATTER(粉碎)
  • REFLECT(反射)
  • TRANSFER(转移)
  • IGNORE(忽略)

冲击配置文件可以配置:

  • 碰撞半径;
  • 质量;
  • 作用力;
  • 能量比例;
  • 弹跳系数;
  • 摩擦力;
  • 命中冷却;
  • 最大命中次数;
  • 最大弹跳次数;
  • 最大穿透次数;
  • 生命周期;
  • 延迟连锁径向冲击。

🛡 世界安全

地形修改并非隐式执行。

冲击引擎提供了明确的安全模式:

  • 视觉(Visual)
  • 物理(Physical)
  • 世界(World)

真实世界方块破坏需要显式启用 WORLD 模式 以及 worldDamage(true)。

这允许创作者在不意外损坏地图的情况下使用过场方块冲击。


🕳 力场与重力

核心包含适用于生物实体的可复用物理场。

示例:

  • 吸引场;
  • 可控重力井;
  • 重力捕获;
  • 黑洞式力场。

该系统可以应用径向拉力、轨道运动、捕获行为及速度控制,而无需每个脚本或模组手动对附近每个实体施加运动。


🎛 运行时运动控制

活动中的运动可以在运行时进行修改。

运行时控制项包括:

  • 目标;
  • 速度;
  • 最大速度;
  • 物理主导权;
  • 旋转;
  • 倾斜;
  • 注视;
  • 缩放;
  • 力场中心;
  • 作用力;
  • 半径;
  • 涡旋;
  • 垂直影响。

适用于动态技能,例如:

  • 弹射物目标重定向;
  • 移动重力场;
  • 过场编排;
  • 执行过程中变化的 Boss 攻击。

📡 运动状态与事件

脚本和模组无需猜测路径何时结束,可以直接查询引擎。

状态信息包括:

  • 活动状态;
  • 类型;
  • 阶段;
  • 进度;
  • XYZ 坐标;
  • 速度;
  • 最大速度;
  • 开始刻(tick);
  • 持续时间;
  • 最后错误;
  • 完成状态。

生命周期事件包括:

  • FINISHED(完成)
  • IMPACTED(发生冲击)
  • CANCELLED(已取消)
  • EXPIRED(已过期)

冲击事件可以暴露一个 ImpactContext(冲击上下文),其中包含位置、速度、表面法线、速率、能量、被冲击的实体/方块以及命中索引。


🧩 脚本 API

简单虚拟方块路径示例:

var Path = Java.type("com.dad.constellation.api.PathEngineAPI");
var Block = Java.type("com.dad.constellation.api.BlockPathAPI");

function rightClick(event) { var p = event.player;

var sx = p.getX();
var sy = p.getY() + 2.0;
var sz = p.getZ();

Block.block(
    p,
    "example/block",
    "minecraft:diamond_block",
    0,
    sx,
    sy,
    sz
)
.scale(0.65)
.rotation(90, 160, 40)
.lineTo(
    sx + 8.0,
    sy + 2.0,
    sz,
    70,
    Path.EASE_IN_OUT
)
.play();

}

冲击示例:

var Impact = Java.type("com.dad.constellation.api.ImpactAPI");

var profile = Impact.profile("PROJECTILE") .entityCollision(true) .blockCollision(true) .radius(0.35) .onEntity(Impact.PIERCE) .onBlock(Impact.STOP) .maxPierces(3) .maxHits(4) .worldMode(Impact.PHYSICAL) .worldDamage(false) .build();


☕ Java / Forge 模组 API

星座核心不仅限于 CustomNPC+ 脚本。

它也可以直接作为 Java 库依赖用于另一个 Forge 模组中。

例如,另一个模组可以导入公共 API 类:

import com.dad.constellation.api.PathEngineAPI;
import com.dad.constellation.api.BlockPathAPI;
import com.dad.constellation.api.ImpactAPI;
import com.dad.constellation.api.MotionAPI;
import com.dad.constellation.api.ForceFieldAPI;

并直接从 Java 创建路径:

BlockPathAPI.block(
    player,
    "examplemod/meteor",
    "minecraft:obsidian",
    0,
    startX,
    startY,
    startZ
)
.scale(0.75)
.rotation(120.0, 180.0, 60.0)
.lineTo(
    targetX,
    targetY,
    targetZ,
    50,
    PathEngineAPI.EASE_IN
)
.play();

模组还可以创建可复用的冲击配置文件:

ImpactProfile impact = ImpactAPI.profile("EXAMPLE_PROJECTILE")
    .entityCollision(true)
    .blockCollision(true)
    .radius(0.35)
    .onEntity(ImpactAPI.PIERCE)
    .onBlock(ImpactAPI.STOP)
    .maxPierces(3)
    .worldMode(ImpactAPI.PHYSICAL)
    .worldDamage(false)
    .build();

将星座核心用作依赖项

在开发期间,可以将 Core JAR 文件添加到 ForgeGradle 项目的 libs/ 目录中:

libs/
└── ConstellationCore-1.6.0.jar

Gradle 依赖示例:

dependencies {
    compile files("libs/ConstellationCore-1.6.0.jar")
}

在运行时,星座核心作为普通 Forge 模组安装:

mods/
├── ConstellationCore-1.6.0.jar
└── YourMod.jar

这意味着多个模组可以共享同一个 Core 安装,而无需嵌入各自的移动引擎副本。


🧱 构建为可复用的模组开发基础

星座核心可以用作其他模组的移动/物理基础。

例如:

你的模组
   │
   ├── 物品
   ├── 技能
   ├── 实体
   ├── Boss
   └── 星座核心
        ├── 路径引擎
        ├── 方块路径
        ├── 冲击引擎
        ├── 力场
        ├── 运动 API
        └── 状态 / 事件

或者多个模组可以依赖一个共享的 Core:

模组 A ─┐
模组 B ─┼──> 星座核心
模组 C ─┘

这使得星座核心不仅适用于脚本化内容,也适用于 Forge 1.7.10 模组开发的通用移动和冲击库。


📚 完整文档

已准备好发布到 GitHub 的文档包括:

  • 完整公共 API 参考;
  • 路径引擎;
  • 所有路径原语;
  • 缓动;
  • 方向;
  • 路径修改器;
  • BlockPath API;
  • 路径引擎 v4 兼容 API;
  • 冲击引擎;
  • 冲击配置文件;
  • 冲击上下文;
  • 状态 API;
  • 运动 API;
  • 运行时编辑;
  • 运动生命周期事件;
  • 力场 API;
  • 浮空物品 API;
  • 过场物品 API;
  • 预设;
  • 性能配置;
  • 生命周期清理;
  • Java/Forge 模组集成;
  • 精确公共 Java 签名;
  • 可直接复制的脚本物品示例。

Constellation Core API


📦 要求

  • Minecraft 1.7.10
  • 适用于 1.7.10 的 Minecraft Forge

星座核心可由以下用户使用:

  • CustomNPC+ 脚本项目;
  • Forge Java 模组;
  • 附属/库模组;
  • 自定义 RPG 系统;
  • 独立脚本系统。

直接使用 Core API 的 Java 模组不需要 CustomNPC+。


⚙️ 性能与安全

星座核心具有以下可配置的限制:

  • 活动路径;
  • 活动力场;
  • 活动冲击体;
  • 每刻冲击检查次数;
  • 碰撞扫描步数;
  • 事件队列;
  • 搜索半径;
  • 网络范围。

这些限制旨在防止大型脚本和模组意外创建无限持续的负载。


🌌 专为高级脚本内容与模组开发而构建

星座核心适用于:

  • RPG 技能;
  • 魔法系统;
  • Boss 攻击;
  • 过场仪式;
  • 移动遗物;
  • 流星系统;
  • 重力技能;
  • 自定义弹射物;
  • 脚本化遭遇战;
  • 冒险地图;
  • Forge 模组技能;
  • 自定义实体;
  • 可复用移动库;
  • 附属 API。

如果您的项目需要一个对象来移动、碰撞或物理影响世界,星座核心旨在成为脚本和完整 Forge 模组的可复用基础。