实用工具
🌱初步完成
本文中内容已经初步完成,能够正常提供参考,但存在可能的错漏/亟待改进部分。
介绍
此处介绍KubeJS提供的全局对象Utils。
部分示例参考价值较低,需要更好的示例。
copy
- 该函数尝试复制给定的对象,如果不可复制则返回对象本身。
- 用途待补充。
js
let object = {name: "Name"};
let copyObj = Utils.copy(object);
emptyList
- 该函数返回一个Immutable List对象,该列表不可变,无法插入、删除元素。
- 用途待补充。
js
let immutableList = Utils.emptyList();
emptyMap
- 该函数返回一个Immutable Map对象,该Map不可变,不可插入、删除键值对。
- 用途待补充。
js
let immutableMap = Utils.emptyMap();
expiringLazy
- 该函数接受一个Internal.Supplier_<T> ,一个毫秒数number 返回一个惰性值Internal.Lazy<T> 。
- 当内部的值被创建后,经过number毫秒该值会被丢弃,下次使用会重新创建该值。
js
let lazyTime = Utils.expiringLazy(() => Utils.getSystemTime(), 1000);
- 在这里传递了一个Internal.Supplier_<number> 当它被创建时会返回一个代表系统时间(总毫秒数)的数字number,并且在该number创建1s后过期,当过期后再次调用值会被重新创建,未过期时调用始终返回相同的值。
findCreativeTab
- 这个函数根据传入的ResourceLocation或string返回对应的创造模式物品栏。
js
let creativeTab = Utils.findCreativeTab("minecraft:combat");
- 这里获取了原版的“战斗用品”创造模式物品栏。
getRandom
- 该函数始终返回同一个Random 对象。
- 可以使用该对象来生成随机数。
js
let random = Utils.getRandom();
getRegistry
- 该函数根据传入的ResourceLocation或string返回对应的注册表信息Internal.RegistryInfo<T> 对象。
js
let registry = Utils.getRegistry("minecraft:block");
getRegistryIds
- 该函数根据提供的ResourceLocation或string返回对应注册表内注册项的ResourceLocation列表。
js
let idList = Utils.getRegistryIds("minecraft:block");
getServer
- 该函数返回服务器对象,如果没有获取到则为null。
- 在Startup与Client脚本一定为null。
js
let server = Utils.getServer()
getSound
- 该函数根据传入的ResourceLocation或string返回对应的声音Internal.SoundEvent 对象。
js
Utils.getSound("minecraft:entity.player.levelup");
- 获取玩家升级的Internal.SoundEvent对象。
getStat
- 该函数根据传递的ResourceLocation或string返回玩家的统计数据Internal.Stat<ResouceLocation> 对象。
js
Utils.getStat("minecraft:broken")
- 返回破坏方块数量的统计数据。
getSystemTime
- 获取系统时间,返回单位为毫秒的数字。
js
let timeNumber = Utils.getSystemTime();
- 得到毫秒数可以通过创建Date对象来获取日期。
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
- 该函数接受一个Internal.Supplier_<T> 返回一个惰性值Internal.Lazy<T> 对象。
- 可用于延迟对象的实例化。
js
let lazyLocation = Utils.lazy(() => new ResourceLocation("kubejs:demo"));
newCountingMap
- 该函数返回一个Internal.CountingMap 对象。
js
let countingMap = Utils.newCountingMap();
newList
- 该函数返回一个新的可变列表(mutable list),Internal.List<T> 对象。
js
let list = Utils.newList();
newMap
- 该函数返回一个新的可变Map(mutable map),Internal.Map<K, V> 对象
js
let map = Utils.newMap();
newRandom
- 该函数接受给定的种子number,返回一个新的Random 对象
js
let newRandom = Utils.newRandom(112233445566);
parseBlockState
- 该函数接受string参数(string JSON),解析BlockState,可能抛出无效输入Error。
js
let blockState = Utils.parseBlockState('{snowy: false}');
- 该示例仅供参考,未测试该表达式是否正确。
parseDouble
- 尝试将第一个参数解析为Double类型,如果解析成功则返回,如果解析失败返回第二个参数。
js
let doubleNum = Utils.parseDouble(0, 0.00);
parseInt
- 尝试将第一个参数解析为int类型,如果解析成功则返回,如果解析失败返回第二个参数。
js
let intNum = Utils.parseInt(0.0, 0);
particleOptions
- 意义未明,接受参数any,返回Internal.ParticleOptions 对象。
js
// 暂无可参考示例
queueIO
- 立即在try-catch中运行传递的函数Internal.Runnable_ 记录并抛出异常
js
Utils.queueIO(() => {console.log("message")});
randomOf
- 使用传入的第一个参数Internal.Random_ 在列表Internal.Collection_<T> (第二个参数)中随机获取一个对象
js
let randomElement = Utils.randomOf(Utils.getRandom(), [1, 2, 3, 4]);
regex
- 该函数返回字符串的正则表达式模板Internal.Pattern 。
js
let pattern = Utils.regex("hello");
js
let pattern = Utils.regex("hello", 0);
- 返回匹配hello字符串的正则表达式模板。
- 返回带有正则表达式标志(number参数类型)的正则表达式模板,待补充。
rollChestLoot
- 根据给定的ResourceLocation或string参数触发战利品表,返回物品列表。Internal.List<Internal.ItemStack> 对象。
- 根据给定的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 对象。
js
let compleTableFuture = Utils.runAsync(() => console.log("message"));
snakeCaseToCamelCase
- 该函数将蛇形命名法字符串string_name转换为驼峰命名法字符串stringName。
js
let stringName = Utils.snakeCaseToCamelCase("string_name");
snakeCaseToTitleCase
- 该函数将蛇形命名法字符串string_name转换为标题大小写字符串String Name。
js
let stringName = Utils.snakeCaseToCamelCase("string_name");
- 在KubeJS的后台线程中运行提供的Internal.Supplier_<T> 函数,并返回它的CompletableFuture<T>
js
let compleTableFuture = Utils.supplyAsync(() => 1);
toTitleCase
- 将字符串的第一个字母大写,除非它是“a”, “an”, “the”, “of”, “on”, “in”, “and”, “or”, “but”或“for”
- 将字符串的第一个字母大写。如果第二个参数为true,它也会将冠词和介词大写
js
let str = Utils.toTitleCase("steve in minecraft!");
js
let str = Utils.toTitleCase("steve in minecraft!", true);