add variable generate function

This commit is contained in:
Asaki Yuki 2026-02-23 17:28:53 +07:00
parent 8850928388
commit 58a1893c1d
3 changed files with 23 additions and 5 deletions

View file

@ -1,6 +1,6 @@
{ {
"name": "asajs", "name": "asajs",
"version": "4.1.5", "version": "4.1.6",
"description": "Create your Minecraft JSON-UI resource packs using JavaScript", "description": "Create your Minecraft JSON-UI resource packs using JavaScript",
"keywords": [ "keywords": [
"Minecraft", "Minecraft",

View file

@ -16,7 +16,7 @@ async function buildUI() {
const build = Memory.build() const build = Memory.build()
build.set("ui/_ui_defs.json", { build.set("ui/_ui_defs.json", {
ui_defs: Array.from(build.keys()), ui_defs: Array.from(build.keys(), v => v.replace(/\\/g, "/")),
}) })
if (config.global_variables) build.set("ui/_global_variables.json", config.global_variables) if (config.global_variables) build.set("ui/_global_variables.json", config.global_variables)

View file

@ -1,5 +1,5 @@
import { Type } from "../types/enums/Type.js" import { Type } from "../types/enums/Type.js"
import { Array3, Binding, BindingItem } from "../types/properties/value.js" import { Array3, Binding, BindingItem, Variable } from "../types/properties/value.js"
import { ModifyUI, UI } from "./UI.js" import { ModifyUI, UI } from "./UI.js"
import { Renderer } from "../types/enums/Renderer.js" import { Renderer } from "../types/enums/Renderer.js"
@ -202,6 +202,12 @@ export function RandomBindingString(length: number = 16, base: number = 32, forc
else return `#${StringID}_binding_${rndStrBind++}` else return `#${StringID}_binding_${rndStrBind++}`
} }
let rndVarBind = 1
export function RandomVariableBinding(length: number = 16, base: number = 32, force?: boolean): Variable {
if (force || allowRandomStringName) return `$${GenRandomString(length, base)}`
else return `$${StringID}_binding_${rndVarBind++}`
}
const rndMap = new Map<string, string>() const rndMap = new Map<string, string>()
export function s(input: string) { export function s(input: string) {
@ -216,10 +222,10 @@ export function s(input: string) {
} }
} }
export function bs(input: `#${string}`): `#${string}` { export function bs(input: Binding): Binding {
if (isNotObfuscate) return input if (isNotObfuscate) return input
else { else {
if (rndMap.has(input)) return rndMap.get(input) as `#${string}` if (rndMap.has(input)) return <Binding>rndMap.get(input)
else { else {
const ret = RandomBindingString() const ret = RandomBindingString()
rndMap.set(input, ret) rndMap.set(input, ret)
@ -228,6 +234,18 @@ export function bs(input: `#${string}`): `#${string}` {
} }
} }
export function vs(input: Variable): Variable {
if (isNotObfuscate) return input
else {
if (rndMap.has(input)) return <Variable>rndMap.get(input)
else {
const ret = RandomVariableBinding()
rndMap.set(input, ret)
return ret
}
}
}
export function GetItemByAuxID(auxID: number) { export function GetItemByAuxID(auxID: number) {
const item = ItemAuxID[auxID] const item = ItemAuxID[auxID]
if (item) return `minecraft:${item.toLowerCase()}` if (item) return `minecraft:${item.toLowerCase()}`