跳到正文

HexJSNeo

作者:YukkuriC

Adding game contents via KubeJS for base mod Hex Casting, including pattern actions, special handlers, iota types, and more.

收藏

介绍

中文介绍正在准备中,下面暂时显示原文。

HexJSNeo

Curseforge CurseForge
Modrinth Modrinth

Provides a way to create custom contents for Hex Casting via KubeJS.

A badge for addons.hexxy.media in the style of Devins Badges

Features

Core Concepts

  • Minimal efforts: auto registered great pattern tags, omit all optional args, pipe everything, …
  • Weak typed: ActionJS returns, ActionRegistryJS.of, etc.
  • Mutable is best: no registration event and phase limit, writing and reloading everywhere in startup scripts, we’re writing JS \yay/
  • Clean global scope: everything under a single HexJS global object, no leaks

Game Content Registry

  • ActionJS: basis for all executables
  • customizable operate & operateInParens, with high degree-of-freedom return value handling
  • additional helper methods for creating operate varieties
  • assigning mediaCost to auto-attach media-cost side effect on operate, with preCheckMedia methods to help check & mishap before logics
  • ActionRegistryJS: registering certain patterns with actions
  • = Registry ID + Pattern prototype + inner ActionJS + Great-pattern marker (default false)
  • weak-typed constructor ActionRegistryJS.of(...): args in any order among its constructor, missing ones auto-filled (id from pattern signature, fresh ActionJS, false); only the pattern is required
  • transparent proxy of inner ActionJS: operate setters (setOperate & variants), mediaCost and preCheckMedia are callable directly on the registry object
  • great spells are auto-tagged with per-world / enlightenment tags
  • SpecialHandlerJS: taking an arbitrary pattern and retrieving its meanings
  • registers a JS tryMatch(pattern, env) factory consulted for every drawn pattern
  • SpecialHandlerJS.create(action, name) to help build a SpecialHandler, in which action could be another specially created ActionJS
  • chain setter setTryMatch for KJS-ish usage
  • IotaJS: highly customizable iota types
  • NBT-backed custom iotas: IotaJS.type(id) creates the type, containing CompoundTag iota data
  • overriding common iota interfaces (display, color, size, etc.) with either callbacks or constants
  • optional executability via setOperate, controlling its execution behaviors outside and inside parens
  • ArgsJS: basically a forwarder for various built-in Kotlin extension functions
  • used on a mutable iota list manually, or called from ActionJS.setOperateArgsSplit
  • typed getters (double, vec3, entity, …) with auto mishaps on missing args or wrong types
  • CastingEnvironmentComponentJS: vanilla but in JS, with more convenient Key creation
  • each component takes a key string as the first constructor arg, from which the Key is auto-created & cached (setKey to change it later)
  • usages and types same as vanilla
  • MishapJS: highly customizable mishap types
  • declaring the type using MishapJS.type() first, quite similar to IotaJS
  • calling type.create() or type.create(data) for a mishap of this type
  • KJS-ish piped methods to override all behaviors of created mishaps
  • ArithmeticJS and OperatorJS: custom arithmetic holders and their pattern operators
  • declarative operators with iota-type predicates (Accepts) and piped operate setters, either raw or args-split
  • bind operators to builtin or custom patterns, with the engine auto-invalidated on script reload

QoL Features

  • Hot-swap everything
  • everything, simple as /kjs reload startup-scripts
  • covers: actions (entry action & prototype replaced in-place), special handlers, iota types, arithmetics (including their operators)
  • not for those haven’t created on startup, but it’s possible to match later-created pattern actions using a SPECIAL handler :3
  • CastingEnvironmentComponentJS and MishapJS are born temporary and not covered here
  • API & packages importer: HexJS.API & HexJS.APIFlat
  • exposes all Hex Casting classes scanned from the mod jar, either nested by package (HexJS.API.<...package>.<Class>) or flat (HexJS.APIFlat)

ProbeJS Typing Support

  • generates typings for the JS-facing API, including nested HexJS.API levels, fake-singleton classes flattened to static fields, and subclass members assigned onto their parents

常见问题

HexJSNeo 支持哪些 Minecraft 版本?

HexJSNeo 支持 Minecraft Java 版 1.21.1,可用的加载器:NeoForge。下载时注意选择和你游戏版本一致的文件。

HexJSNeo 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端和服务端都要装。

评论

登录后评论和评分

YukkuriC 的其他作品

查看全部 →