Skip to content

实用工具

🌱初步完成

本文中内容已经初步完成,能够正常提供参考,但存在可能的错漏/亟待改进部分。

介绍

此处介绍KubeJS提供的全局对象Utils。
部分示例参考价值较低,需要更好的示例。

copy

  • 该函数尝试复制给定的对象,如果不可复制则返回对象本身。
  • 用途待补充。
KubeJS
js
let object = {name: "Name"};
let copyObj = Utils.copy(object);

emptyList

  • 该函数返回一个Immutable List对象,该列表不可变,无法插入、删除元素。
  • 用途待补充。
KubeJS
js
let immutableList = Utils.emptyList();

emptyMap

  • 该函数返回一个Immutable Map对象,该Map不可变,不可插入、删除键值对。
  • 用途待补充。
KubeJS
js
let immutableMap = Utils.emptyMap();

expiringLazy

  • 该函数接受一个Internal.Supplier_<T> ,一个毫秒数number 返回一个惰性值Internal.Lazy<T>
  • 当内部的值被创建后,经过number毫秒该值会被丢弃,下次使用会重新创建该值。
KubeJS
js
let lazyTime = Utils.expiringLazy(() => Utils.getSystemTime(), 1000);
  • 在这里传递了一个Internal.Supplier_<number> 当它被创建时会返回一个代表系统时间(总毫秒数)的数字number,并且在该number创建1s后过期,当过期后再次调用值会被重新创建,未过期时调用始终返回相同的值。

findCreativeTab

  • 这个函数根据传入的ResourceLocation或string返回对应的创造模式物品栏。
KubeJS
js
let creativeTab = Utils.findCreativeTab("minecraft:combat");
  • 这里获取了原版的“战斗用品”创造模式物品栏。

getRandom

  • 该函数始终返回同一个Random 对象。
  • 可以使用该对象来生成随机数。
KubeJS
js
let random = Utils.getRandom();

getRegistry

KubeJS
js
let registry = Utils.getRegistry("minecraft:block");

getRegistryIds

  • 该函数根据提供的ResourceLocation或string返回对应注册表内注册项的ResourceLocation列表。
KubeJS
js
let idList = Utils.getRegistryIds("minecraft:block");

getServer

  • 该函数返回服务器对象,如果没有获取到则为null。
  • 在Startup与Client脚本一定为null。
KubeJS
js
let server = Utils.getServer()

getSound

KubeJS
js
Utils.getSound("minecraft:entity.player.levelup");
  • 获取玩家升级的Internal.SoundEvent对象。

getStat

KubeJS
js
Utils.getStat("minecraft:broken")
  • 返回破坏方块数量的统计数据。

getSystemTime

  • 获取系统时间,返回单位为毫秒的数字。
KubeJS
js
let timeNumber = Utils.getSystemTime();
  • 得到毫秒数可以通过创建Date对象来获取日期。
KubeJS
js
let date = new Date(Utils.getSystemTime());
  • 调用date提供的方法即可获取日月年等信息。

id

  • 该函数根据提供的namespace与path字符串string,返回ResourceLocation对象。
  • 等价于使用KubeJS提供的ResourceLocation包装类创建实例。
js
let demoLocation = Utils.id("kubejs", "demo");
js
let demoLocation = Utils.id("kubejs:demo");

isWrapped

  • 该函数检查传入的对象any是否为isWrapped的实例。
  • 用途需补充。
js
let obj = {};
let boo = Utils.isWrapped(obj);

lazy

KubeJS
js
let lazyLocation = Utils.lazy(() => new ResourceLocation("kubejs:demo"));

newCountingMap

KubeJS
js
let countingMap = Utils.newCountingMap();

newList

KubeJS
js
let list = Utils.newList();

newMap

KubeJS
js
let map = Utils.newMap();

newRandom

  • 该函数接受给定的种子number,返回一个新的Random 对象
KubeJS
js
let newRandom = Utils.newRandom(112233445566);

parseBlockState

  • 该函数接受string参数(string JSON),解析BlockState,可能抛出无效输入Error。
KubeJS
js
let blockState = Utils.parseBlockState('{snowy: false}');
  • 该示例仅供参考,未测试该表达式是否正确。

parseDouble

  • 尝试将第一个参数解析为Double类型,如果解析成功则返回,如果解析失败返回第二个参数。
KubeJS
js
let doubleNum = Utils.parseDouble(0, 0.00);

parseInt

  • 尝试将第一个参数解析为int类型,如果解析成功则返回,如果解析失败返回第二个参数。
KubeJS
js
let intNum = Utils.parseInt(0.0, 0);

particleOptions

KubeJS
js
// 暂无可参考示例

queueIO

KubeJS
js
Utils.queueIO(() => {console.log("message")});

randomOf

KubeJS
js
let randomElement = Utils.randomOf(Utils.getRandom(), [1, 2, 3, 4]);

regex

js
let pattern = Utils.regex("hello");
js
let pattern = Utils.regex("hello", 0);
  1. 返回匹配hello字符串的正则表达式模板。
  2. 返回带有正则表达式标志(number参数类型)的正则表达式模板,待补充。

rollChestLoot

  1. 根据给定的ResourceLocation或string参数触发战利品表,返回物品列表。Internal.List<Internal.ItemStack> 对象。
  2. 根据给定的ResourceLocation或string参数以及一个实体参数触发战利品表,返回物品列表。Internal.List<Internal.ItemStack> 对象。
js
let itemList = Utils.rollChestLoot("minecraft:chests/village/village_armorer");
js
// 假设这里的上下文可以获取player
let itemList = Utils.rollChestLoot("minecraft:chests/village/village_armorer", player);

runAsync

  • 在KubeJS的后台线程中运行提供的可运行函数,并返回它的CompletableFuture 对象。
KubeJS
js
let compleTableFuture = Utils.runAsync(() => console.log("message"));

snakeCaseToCamelCase

  • 该函数将蛇形命名法字符串string_name转换为驼峰命名法字符串stringName。
KubeJS
js
let stringName = Utils.snakeCaseToCamelCase("string_name");

snakeCaseToTitleCase

  • 该函数将蛇形命名法字符串string_name转换为标题大小写字符串String Name。
KubeJS
js
let stringName = Utils.snakeCaseToCamelCase("string_name");

KubeJS
js
let compleTableFuture = Utils.supplyAsync(() => 1);

toTitleCase

  1. 将字符串的第一个字母大写,除非它是“a”, “an”, “the”, “of”, “on”, “in”, “and”, “or”, “but”或“for”
  2. 将字符串的第一个字母大写。如果第二个参数为true,它也会将冠词和介词大写
js
let str = Utils.toTitleCase("steve in minecraft!");
js
let str = Utils.toTitleCase("steve in minecraft!", true);

贡献者

页面历史