diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 05973076..83d37b64 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,10 +14,10 @@ jobs: mcaddon: ${{ steps.artifact.outputs.mcaddon }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: '20' @@ -65,7 +65,7 @@ jobs: CF_PROJECT_ID: 1062078 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Download build artifact uses: actions/download-artifact@v4 diff --git a/Canopy[RP]/texts/zh_CN.lang b/Canopy[RP]/texts/zh_CN.lang index dc6a1e23..cffd745f 100644 --- a/Canopy[RP]/texts/zh_CN.lang +++ b/Canopy[RP]/texts/zh_CN.lang @@ -1,10 +1,10 @@ ## vanilla -entity.canopy:rideable.name=Canopy Rideable ## 无需翻译 +entity.canopy:rideable.name=Canopy Rideable action.hint.exit.canopy:rideable=潜行以站立 ## generic -generic.welcome.start=§7当前服务器已加载 §l§aCanopy§r§7. 输入"./help"开始熟悉指令.§r -generic.welcome.extensions=§7已加载扩展: §a%s +generic.welcome.start=§7当前服务器正在运行 §l§aCanopy§r §av%s§7. 输入 ./help 开始熟悉指令.§r +generic.welcome.extensions=§7已加载扩展: generic.player.notfound=§c玩家 '%s' 未找到. generic.target.notfound=§c目标未找到. generic.entity.notfound=§c实体未找到. @@ -16,17 +16,55 @@ commands.generic.nopermission=§c你没有足够的权限使用这个指令. commands.generic.usage=§c使用方法: %s commands.generic.blocked.survival=§c此指令只能在创造模式或者旁观模式下使用. commands.generic.invalidsource=§c这个命令不能从这个来源执行. -commands.generic.invalidaction=§c无效的操作.请使用 %shelp 获取更多信息. +commands.generic.invalidaction=§c无效的操作. 使用 ./help 获取更多信息. commands.help=显示指令帮助信息. commands.help.search.noresult=§c没有与此相关的结果: '%s' -commands.help.search.results=§l§aCanopy§r §2指令帮助页面找到此结果 '§r%1§2':%2 +commands.help.search.results=§l§aCanopy§r §2指令帮助页面找到此结果 '§r%1§2': commands.help.page.header=§l§aCanopy§r§2 指令帮助 页数: §f%1 commands.help.infodisplay=开关游戏中的信息显示. commands.help.rules=开关全局规则. commands.help.extension.rules=开关扩展 §a%s§2 的规则. commands.help.extension.commands=扩展 §a%s§2 的指令. +commands.analyzearea=分析一个区域的方块, 并为JavaScript表达式显示结果. +commands.analyzearea.overcapacity=§c指定区域内的方块过多 (>2^32 个方块). +commands.analyzearea.loadcapacity=§c该区域跨越的区块过多 (超出常加载区域容量). +commands.analyzearea.unknownerror=§c发生未知错误. +commands.analyzearea.syntaxerror=§c无法解析该表达式. +commands.analyzearea.forbidden=§c该表达式访问了不允许访问的属性或方法. +commands.analyzearea.completed=§7找到 %1 个匹配的方块. +commands.analyzearea.removed=§7已移除这些坐标的分析. +commands.analyzearea.removenotfound=§c未找到这些坐标的分析. +commands.analyzearea.create.invalid=§c请输入有效的坐标和表达式. +commands.analyzearea.teleport.gamemode=§c传送到匹配点需要创造或旁观模式. +commands.analyzearea.stats.header=§l§a区域分析§r +commands.analyzearea.stats=§f%1 §7-> §f%2\n§f表达式: §7%3\n§f匹配: §a%4\n§f大小: §7%5 +commands.analyzearea.stats.capped=§f%1 §7-> §f%2\n§f表达式: §7%3\n§f匹配: §c%4+ (已达上限)\n§f大小: §7%5 +commands.analyzearea.stats.analyzing=§f%1 §7-> §f%2\n§f表达式: §7%3\n§f分析中... §e%4 +commands.analyzearea.ui.selector.title=§2区域分析 +commands.analyzearea.ui.selector.new=(+) 新建分析 +commands.analyzearea.ui.selector.empty=§7暂无分析. +commands.analyzearea.ui.create.title=§2新建区域分析 +commands.analyzearea.ui.create.fromX=从 X +commands.analyzearea.ui.create.fromY=从 Y +commands.analyzearea.ui.create.fromZ=从 Z +commands.analyzearea.ui.create.toX=到 X +commands.analyzearea.ui.create.toY=到 Y +commands.analyzearea.ui.create.toZ=到 Z +commands.analyzearea.ui.create.dimension=维度 +commands.analyzearea.ui.create.expression=表达式 +commands.analyzearea.ui.create.submit=创建 +commands.analyzearea.ui.page.title=§2区域分析 +commands.analyzearea.ui.page.notrun=§7本会话尚未运行. 请点击重新分析. +commands.analyzearea.ui.page.prev=< 上一个 < +commands.analyzearea.ui.page.next=> 下一个 > +commands.analyzearea.ui.page.reanalyze=重新分析 +commands.analyzearea.ui.page.enableboxes=显示匹配渲染 +commands.analyzearea.ui.page.disableboxes=隐藏匹配渲染 +commands.analyzearea.ui.page.remove=(-) 移除区域 +commands.analyzearea.ui.page.back=返回 + commands.biomeedges=在区域内查找并显示生物群系边界. commands.biomeedges.finderadded=§7正在分析生物群系边界... commands.biomeedges.finderremoved=§7已移除最近的生物群系边界区域. @@ -41,7 +79,7 @@ commands.butcher.fail.noneremoved=§c没有实体被移除. commands.butcher.success=§7移除了 %1. commands.butcher.success.many=§7移除了 %1 个实体: -commands.camera=放置一个相机进行监视, 或者使用对生存友好的旁观模式. +commands.camera=放置一个相机, 切换观看已放置的相机, 或切换生存友好的旁观模式. commands.camera.spectate=进入和退出生存友好的旁观模式. (快捷指令: cs) commands.camera.place.viewing=§c不能在监视过程中放置相机. commands.camera.place.success=§7相机放置在 %s. @@ -58,7 +96,7 @@ commands.camera.spectate.hardcore=§c已阻止你进入旁观模式. 在极限 commands.camera.spectate.flying=§c你必须在地面上才可以进入旁观. commands.camera.invalidaction=§c无效相机行为. -commands.canopy=启用或者关闭规则. +commands.canopy=设置规则的值. commands.canopy.version=显示Canopy的当前版本和所有载入的扩展. commands.canopy.version.message=§7当前服务器已加载 §l§aCanopy§r. commands.canopy.version.extensions=§7已加载的扩展: @@ -71,10 +109,10 @@ commands.canopy.single=修改单个规则的值. commands.canopy.infodisplayRule=§c规则 '%1' 是 信息显示 的一部分, 并且必须使用%2信息进行切换. 有关详细信息, 请使用%2帮助. commands.changedimension=传送你到指定的维度. -commands.changedimension.notfound=§c无效的维度参数. 请使用其中之一: %s +commands.changedimension.notfound=§c无效的维度. commands.changedimension.success.coords=§7成功传送到坐标 %1 维度 %2. commands.changedimension.success=§7传送到维度 %s. -commands.changedimension.fail.coords=§c无效的坐标. 请提供所有 x、y、z 数值或不提供任何数值. +commands.changedimension.fail.coords=§c无效的坐标. 请提供所有 x, y, z 数值或不提供任何数值. commands.claimprojectiles=改变半径内所有弹射物的拥有者. commands.claimprojectiles.fail.sourcenotplayer=§c请指定一个玩家来使用此命令. @@ -83,7 +121,7 @@ commands.claimprojectiles.success.self=§7成功将 %1 个弹射物(半径 %2 ) commands.claimprojectiles.success.other=§7成功将 %1 个弹射物(半径 %2 )的拥有者改为了 %3. commands.cleanup=清除半径内所有的掉落物和经验球. (快捷指令: k) -commands.cleanup.success=§7清除了 %s 个实体. +commands.cleanup.success=§7清除了 %1 个实体 (r%2). commands.counter=管理漏斗计数器. (快捷指令: ct) commands.counter.channel.notfound=§c无效的颜色: %s. 请使用羊毛方块的颜色之一. @@ -105,7 +143,7 @@ commands.counter.reset.all=§7所有的漏斗计数器和计时器已被重置. commands.counter.reset.all.actionbar=[%s] 重置了所有漏斗计数器. commands.counter.remove=删除指定频道中的所有漏斗. commands.counter.remove.single=§7已移除 %s 中的所有漏斗. -commands.counter.remove.single.actionbar=[%1] 已移除 %s 中的所有漏斗 +commands.counter.remove.single.actionbar=[%1] 已移除 %2 中的所有漏斗 commands.counter.remove.all=§7已移除所有频道中的所有漏斗. commands.counter.remove.all.actionbar=[%s] 已移除所有频道中的所有漏斗 @@ -117,7 +155,7 @@ commands.data.components=§a元件:§r %s commands.data.tags=§a标签:§r %s commands.data.dynamicProperties=§a动态属性:§r %1 的总字节数: %2 commands.data.effects=§a效果:§r %s -commands.data.other=§a其他:§r 头部位置: %1 旋转: [%2, %3], 速度: %4, 视角方向: %5 +commands.data.other=§a其他:§r 头部位置: %1, 旋转: [%2, %3], 速度: %4, 视角方向: %5, AABB: %6 commands.debugentity=显示有关实体的调试信息. commands.debugentity.invalidProperty=§c调试属性无效. @@ -167,7 +205,7 @@ commands.generator.remove.single.actionbar=[%1] 已删除所有漏斗生成器 commands.generator.remove.all=§7已删除所有频道中的所有漏斗生成器. commands.generator.remove.all.actionbar=[%s] 已删除所有频道中的所有漏斗生成器. -commands.health=显示服务器的TPS、MSPT和实体数量. +commands.health=显示服务器的TPS, MSPT和实体数量. commands.health.startprofile=§7为游戏刻时间进行性能分析中... commands.health.fail.mspt=§c不能计算出MSPT. 请反馈问题. @@ -193,7 +231,7 @@ commands.info.canopyRule=§c规则 '%1' 是全局规则, 并且必须使用%2信 commands.jump=传送到所指方块上. (快捷指令: j) commands.jump.fail.noblock=§c没找到方块传送跳跃. -commands.log=追踪TNT、弹射物和下落的方块运动. +commands.log=追踪TNT, 弹射物和下落的方块运动. commands.log.precision=§7追踪精度设置为 %s. commands.log.started=§7开始追踪 %s. commands.log.stopped=§7停止追踪 %s. @@ -242,6 +280,8 @@ commands.playeraction=使模拟玩家以可变的时刻执行动作. commands.playeraction.invalidtiming=§c无效的 %1 时刻: %2. commands.playeraction.invalidticks=§c无效的 '%1' 刻持续时间: %2. 应为整数. +commands.playerglide=使模拟玩家开始或停止使用鞘翅滑翔. + commands.playerinventory=显示模拟玩家的物品栏. commands.playerinventory.noinventory=§c未找到物品栏 commands.playerinventory.empty=§7%s 的物品栏为空. @@ -296,14 +336,14 @@ commands.pos.dimension=§7维度: §7%s commands.pos.relative.overworld=§7地狱映射到主世界的位置: §a%s commands.pos.relative.nether=§7主世界映射到地狱的位置: §c%s -commands.retest=重置刷怪追踪、漏斗计数器及漏斗发生器 -commands.retest.success=§7已重置刷怪计数器、漏斗计数器及漏斗发生器 +commands.retest=重置刷怪追踪, 漏斗计数器及漏斗发生器. +commands.retest.success=§7已重置刷怪计数器, 漏斗计数器及漏斗发生器. commands.simmap=显示您附近或指定位置的已加载区块的地图. commands.simmap.help.distance=显示block半径等于指定距离的地图. commands.simmap.help.location=显示指定位置周围的地图. commands.simmap.help.display.set=在信息显示中设置模拟地图的距离或位置. -commands.simmap.help.display.reset=在信息显示中设置模拟地图的位置,使其跟随当前位置. +commands.simmap.help.display.reset=在信息显示中设置模拟地图的位置, 使其跟随当前位置. commands.simmap.header=§7加载区块 %1§7 在 §2%2§7 附近 commands.simmap.invalidDistance=§c距离 '%1' 无效. 请使用从 1 到 %2 的距离. commands.simmap.config.distance=§7信息显示模拟地图距离更新为 %s. @@ -335,7 +375,7 @@ commands.spawn.tracking.test.success.actionbar=[%s] §7已重置怪物生成和 commands.spawn.tracking.stop=停止跟踪怪物生成. commands.spawn.tracking.stop.success=§7怪物生成不再被跟踪. commands.spawn.tracking.stop.actionbar=[%s] §7已停止怪物生成跟踪. -commands.spawn.reset=Resets all spawn counters. +commands.spawn.reset=重置所有怪物生成计数器. commands.spawn.mocking=开启/关闭怪物生成但怪物生成进程仍在进行. commands.spawn.mocking.enable=§a模拟生成已开启. 怪物不再实际生成, 但生成进程仍在继续. commands.spawn.mocking.disable=§c模拟生成已关闭. 怪物生成现在回归正常. @@ -362,7 +402,7 @@ commands.tick.sleep.success=§7%1 正在停止服务器 %2 毫秒. commands.tntfuse=以游戏刻为单位设置TNT的引信时间. commands.tntfuse.reset.success=§7重置所有TNT引信时间到 §a80§7 游戏刻. -commands.tntfuse.set.fail=§c无效的引信时间: %1 ticks. 必须时 0 到 %2 ticks. +commands.tntfuse.set.fail=§c无效的引信时间: %1 ticks. 必须介于 %2 和 %3 ticks 之间. commands.tntfuse.set.success=§7TNT的引信时间设置为 §a%s§7 ticks. commands.trackevent=计算游戏事件发生数量. 显示数量在信息栏里. @@ -371,7 +411,7 @@ commands.trackevent.start=§7开始跟踪游戏事件 %s. commands.trackevent.invalid=§c游戏事件 %1 未在 %2 中找到. commands.velocity=影响实体的速度. -commands.velocity.missingvelocity=§c请输入x、y、z方向的速度. +commands.velocity.missingvelocity=§c请输入x, y, z方向的速度. commands.velocity.query=§7实体速度 (m/gt): commands.velocity.add=§7已为实体增加速度 (m/gt): commands.velocity.set=§7已设置实体速度 (m/gt): @@ -412,7 +452,7 @@ rules.commandPosOthers=允许在其他玩家上使用pos命令. rules.commandWarp=开启warp & warps指令. rules.commandWarpSurvival=开启warp & warps指令(在生存模式下). rules.allowBubbleColumnPlacement=关闭放置气泡柱限制. -rules.allowPeekInventory=启用peek命令和PeekInventory信息显示规则,并可以使用小望远镜进行窥视. +rules.allowPeekInventory=启用peek命令和PeekInventory信息显示规则, 并可以使用小望远镜进行窥视. rules.armorStandRespawning=盔甲架被弹射物击中会掉落所持物品. rules.autoItemPickup=破坏方块自动拾取物品. rules.carefulBreak=破坏方块和潜行时自动拾取物品. @@ -435,7 +475,7 @@ rules.entitySeparation=当堆叠的实体触发压力板时, 会有一个实体 rules.explosionChainReactionOnly=使爆炸只影响TNT方块. rules.explosionNoBlockDamage=关闭爆炸破坏. rules.explosionOff=完全关闭爆炸. -rules.flippinArrows=对方块使用箭可以翻转、旋转和打开. 放在副手可以使方块放置时翻转. +rules.flippinArrows=对方块使用箭可以翻转, 旋转和打开. 放在副手可以使方块放置时翻转. rules.instaminableDeepslate=急迫2下使用效率5的下届合金镐时, 可以秒破深板岩. rules.instaminableEndstone=急迫2下使用效率5的下届合金镐时, 可以秒破末地石. rules.minecartChunkLoading=允许矿车在生成后的 10 秒内使其周围指定区块半径(方形范围)内的区块运作. @@ -446,7 +486,7 @@ rules.potionBoostedBreeding=重新引入允许速度药水影响繁殖属性的 rules.quickFillContainer=对容器使用一个物品时, 放一个箭在物品栏的左上角, 可以将背包里所有的这个物品放进容器里. rules.quickFillContainer.filled=§7已填充%1通过%2 rules.quickFillContainer.taken=§7已取走所有%1从%2 -rules.refillHand=当你手上的物品用完时,将用背包里的自动填充. 在清单左上角旁边的插槽中放置一个箭头(弓箭)以供使用. +rules.refillHand=当你手上的物品用完时, 自动从背包里补充. 在物品栏槽位10(左上角旁边)放置一支箭以使用. rules.renderEndGatewayExits=在通过末地折跃门后显示其出口位置. rules.renewableElytraDropChance=幻翼被潜影贝导弹杀死时有几率掉落鞘翅. rules.renewableSponge=守卫者被闪电击中会变成远古守卫者. @@ -464,7 +504,7 @@ rules.infoDisplay.cardinalFacing.display=§r朝向: §7%s§r rules.infoDisplay.chunkCoords=显示您所在的方块的坐标以及您在该方块中的位置. rules.infoDisplay.chunkCoords.display=§r区块: §7%1 in %2§r rules.infoDisplay.coords=坐标显示精确到两位小数. -rules.infodisplay.dimension=显示你当前的维度. +rules.infoDisplay.dimension=显示你当前的维度. rules.infoDisplay.entities=显示你面前的实体个数. rules.infoDisplay.entities.display=§r实体数: §7%s§r rules.infoDisplay.eventTrackers=显示跟踪的游戏事件发生次数. @@ -472,9 +512,11 @@ rules.infoDisplay.facing=显示你的仰角和俯角. rules.infoDisplay.facing.display=§r俯角: §7%1§r 仰角: §7%2§r rules.infoDisplay.heldItemDurability=显示你主手中物品的耐久度. rules.infoDisplay.heldItemDurability.display=耐久度 %s +rules.infoDisplay.blockBreakSpeed=显示你在过去 %1 个游戏刻 (%2 秒) 内每秒平均破坏的方块数. +rules.infoDisplay.blockBreakSpeed.display=方块破坏速度: %1 b/s rules.infoDisplay.hopperCounterCounts=显示所有漏斗计数器和对应颜色. 漏斗计数器模式控制这个信息. rules.infoDisplay.light=显示脚下亮度. -rules.infoDisplay.light.display=§r亮度: §e%s§r +rules.infoDisplay.light.display=§r亮度: §e%1§r (§b%2 天空§r) rules.infoDisplay.liquidStates=显示你目标液体的状态. rules.infoDisplay.liquidTarget=显示你目标液体的标识符. rules.infoDisplay.moonPhase=显示月相. @@ -491,17 +533,20 @@ rules.infoDisplay.peekInventory=显示方块或者实体的物品栏. rules.infoDisplay.peekInventory.empty=空 rules.infoDisplay.ping=显示你当前到服务器的网络延迟. rules.infoDisplay.ping.display=延迟: %s +rules.infoDisplay.renderLightLevel=在附近方块上方渲染亮度值. 警告: 这是一个非常卡顿的规则. rules.infoDisplay.renderSignalStrength=在附近红石粉上方显示信号强度值. rules.infoDisplay.sessionTime=显示的你加入存档的时间. rules.infoDisplay.sessionTime.display=§r在线时间: §7%s§r rules.infoDisplay.signalStrength=显示所指方块的信号强度. -rules.infoDisplay.simulationMap=显示您周围已加载的方块的地图. simmap命令可用于对此进行配置. 警告: 这是一个非常滞后的规则. +rules.infoDisplay.simulationMap=显示您周围已加载的方块的地图. simmap命令可用于对此进行配置. 警告: 这是一个非常卡顿的规则. +rules.infoDisplay.horse=显示你所骑乘的马的速度和最大生命值. +rules.infoDisplay.horse.display=马的速度: §a%1§r, 最大生命值: §c%2§r rules.infoDisplay.slimeChunk=显示当前区块是否是史莱姆区块(只在史莱姆区块时显示). -rules.infoDisplay.slimeChunk.display=§7(§a史莱姆区块§7)§r +rules.infoDisplay.slimeChunk.display=§7(§a史莱姆区块§7)§r: %s rules.infoDisplay.speed=以米每秒为单位显示当前速度. -rules.infodisplay.structures=显示你所在位置的自然生成结构. -rules.infodisplay.structures.display=结构: -rules.infodisplay.structures.display.none=无 +rules.infoDisplay.structures=显示你所在位置的自然生成结构. +rules.infoDisplay.structures.display=结构: +rules.infoDisplay.structures.display.none=无 rules.infoDisplay.target=显示你目标的方块或实体的标识符. rules.infoDisplay.timeOfDay=显示游戏中时间. rules.infoDisplay.tps=显示TPS. @@ -517,4 +562,4 @@ rules.infoDisplay.worldDay.display=§r存档天数: §7%s§r simplayer.notonline=§c模拟玩家 '%s' 不在线. simplayer.alreadyonline=§c模拟玩家 '%s' 已在线. simplayer.leave.broadcast=§e%s 离开了游戏 -simplayer.swapheld.error=§c交换物品时出错: %s \ No newline at end of file +simplayer.swapheld.error=§c交换物品时出错: %s diff --git a/package-lock.json b/package-lock.json index bddde019..5b4d54c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "devDependencies": { "@eslint/compat": "^1.2.5", "@eslint/js": "^9.19.0", - "@forestoflight/minecraft-vitest-mocks": "^1.0.8", + "@forestoflight/minecraft-vitest-mocks": "^1.0.10", "@vitest/coverage-v8": "^3.0.4", "axios": "^1.7.9", "eslint": "^9.19.0", @@ -727,9 +727,9 @@ } }, "node_modules/@forestoflight/minecraft-vitest-mocks": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@forestoflight/minecraft-vitest-mocks/-/minecraft-vitest-mocks-1.0.8.tgz", - "integrity": "sha512-TiMDbY+shLAfXg4lq986nUagLfFL9cFDzMSjQmstuo/pKa2+2NDjLi8vVOpBSIS8D1epF6WXFrgdU4YF7bWVew==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@forestoflight/minecraft-vitest-mocks/-/minecraft-vitest-mocks-1.0.10.tgz", + "integrity": "sha512-aJO/BKz6E8ROv1ZEGK5tDuT1LPvkHxqvGFQzP719MJjLwp+CjtjSV9iMreMQXzIcnziRKLvI0Mvm6BgcO8qBNA==", "dev": true, "peerDependencies": { "vitest": "*" diff --git a/package.json b/package.json index e43843b2..ebc7880b 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "devDependencies": { "@eslint/compat": "^1.2.5", "@eslint/js": "^9.19.0", - "@forestoflight/minecraft-vitest-mocks": "^1.0.8", + "@forestoflight/minecraft-vitest-mocks": "^1.0.10", "@vitest/coverage-v8": "^3.0.4", "axios": "^1.7.9", "eslint": "^9.19.0",