UNPKG

yoni-mcscripts-lib

Version:

为 Minecraft Script API 中的部分接口创建了 wrapper,并提供简单的事件管理器和任务管理器,另附有一些便于代码编写的一些小工具。

84 lines (59 loc) 3.05 kB
import { registerAsync, Test } from "./gametest.js"; import { world, GameMode } from "./minecraft.js"; import { getErrorMsg } from "./lib/getErrorMsg.js"; import { randomName } from "./lib/getRandoms.js"; registerAsync("yonimcscriptslib", "scoreboard_test", scoreboard_test) .structureName("yonimcscriptslib:single_void_structure") .tag("yonimcscriptslib") .maxTicks(300*20); async function scoreboard_test(test: Test){ const { VanillaWorld, Scoreboard, ScoreboardEntry, DisplaySlot, world } = await import("yoni-mcscripts-lib"); //测试过程中发现模拟玩家不能传 //更新:已兼容 let onePlayer = test.spawnSimulatedPlayer({x:0,y:0,z:0},randomName(), GameMode.creative); //let onePlayer = world.getAllPlayers()[0]; //test.assert(onePlayer != null, "记分板测试需要有一个在线的玩家"); let obj = Scoreboard.getObjective(randomName(), true); let oneScoreInfo = obj.getScoreInfo(onePlayer); obj.setScore(onePlayer, 2344); test.assert(obj.getScore(onePlayer) === 2344, `分数设置不成功 ${obj.getScore(onePlayer)} !== 2344`); obj.getScoreInfos(); oneScoreInfo.score = 2001; test.assert(obj.getScore(onePlayer) === 2001, "通过分数条目对象分数设置不成功"); let a0_r: number = obj.randomScore(onePlayer, -21474848, 2147487); test.assert(obj.getScore(onePlayer) === a0_r, "随机设置分数出现未知错误"); obj.addScore(onePlayer, 2333); test.assert(obj.getScore(onePlayer) === 2333 + a0_r, "分数添加出现未知错误"); obj.removeScore(onePlayer, 8651); test.assert(oneScoreInfo.score === 2333 - 8651 + a0_r, "分数移除出现未知错误(读取途径ScoreInfo) " + oneScoreInfo.score + " !== " + (2333 - 8651 + a0_r)); test.assert(Scoreboard.removeObjective(obj), "记分项移除失败"); let hasError = false; try { Scoreboard.getObjective(obj.id); } catch (e) { hasError = true; } test.assert(hasError, "记分项移除后尝试获取时没有出现报错"); hasError = false; try { obj.removeScore(onePlayer, -8651); } catch (e) { hasError = true; obj = Scoreboard.addObjective(randomName()); } test.assert(hasError, "记分项移除后尝试操作时没有出现报错"); //另一种移除的方法 Scoreboard.removeObjective(obj); obj = Scoreboard.addObjective(randomName()); obj.setScore("awa", 6666); test.assert(obj.getScore("awa") === 6666, "虚拟玩家设置分数出现未知错误"); obj.setScore("866test", 688); test.assert(obj.getScore("866test") === 688, "虚拟玩家 866test 设置分数出现未知错误"); Scoreboard.setDisplayAtSlot(DisplaySlot.sidebar, {objective: obj}); world.sendMessage("现在侧边栏应该有名为 "+ obj.displayName + " 的记分项正在显示"); await test.idle(200); test.succeed(); Scoreboard.removeObjective(obj); }