diff --git a/.github/workflows/release-package.yml b/.github/workflows/release-package.yml deleted file mode 100644 index 01bcab6..0000000 --- a/.github/workflows/release-package.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: Release Package - -on: - push: - tags: - - 'v*' - -jobs: - build: - name: Build and release - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - - name: Extract tag name - id: extract_tag - run: echo "::set-output name=tag::${GITHUB_REF#refs/tags/}" - - - name: Create Waila folder - run: mkdir Waila - - - name: Copy files to Waila folder - run: | - cp Waila.js Waila/ - cp manifest.json Waila/ - cp Config.json Waila/ - cp -r Language/ Waila/Language - - - name: Zip release - uses: vimtor/action-zip@v1 - with: - files: Waila/* - dest: Waila-${{ steps.extract_tag.outputs.tag }}.zip - - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ github.ref }} - release_name: Release ${{ steps.extract_tag.outputs.tag }} - draft: false - prerelease: false - - - name: Upload Release Asset - id: upload-release-asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./Waila-${{ steps.extract_tag.outputs.tag }}.zip - asset_name: Waila-${{ steps.extract_tag.outputs.tag }}.zip - asset_content_type: application/zip \ No newline at end of file diff --git a/Config.js b/Config.js index e55fd49..ad0b2a5 100644 --- a/Config.js +++ b/Config.js @@ -63,6 +63,14 @@ module.exports = { Conditions: (_Player, _PlayerConfig, Block) => Block.type === 'minecraft:mob_spawner' && ![null, ''].includes(Block?.getBlockEntity()?.getNbt()?.getData('EntityIdentifier')), Text: (Player, _PlayerConfig, Block) => '\n' + I18nAPI.get(`plugins.Waila.block.mob_spawner`, [Block?.getBlockEntity().getNbt().getData('EntityIdentifier')], Player.langCode) }, + {// 音符盒 + Conditions: (_Player, _PlayerConfig, Block) => Block.type === 'minecraft:noteblock', + Text: (Player, _PlayerConfig, Block) => '\n' + I18nAPI.get(`plugins.Waila.block.noteblock`, [Block?.getBlockEntity().getNbt().getData('note').toString()], Player.langCode) + }, + {// 音符盒 + Conditions: (_Player, _PlayerConfig, Block) => Block.type === 'minecraft:composter', + Text: (Player, _PlayerConfig, Block) => '\n' + I18nAPI.get(`plugins.Waila.block.composter`, [Block?.getNbt()?.getTag('states')?.getData('composter_fill_level')?.toString()], Player.langCode) + }, {// 信标 Conditions: (_Player, _PlayerConfig, Block) => Block.type === 'minecraft:beacon' && ![0, null].includes(Block?.getBlockEntity()?.getNbt()?.getData('primary')), Text: (Player, _PlayerConfig, Block) => { @@ -145,9 +153,9 @@ module.exports = { Color: 0, /** 进度值 @type {Number} */ Percent: 100, - /** 默认文本 @type {String} */ - DefaultText: "\n\n&plugins.Waila.get.error&", }, + /** 默认文本 @type {String} */ + DefaultText: "\n\n&plugins.Waila.get.error&", /** 刷新时间(秒) @type {Number} */ Hz: 0.1, /** 查找最大距离 @type {Number} */ diff --git a/Language/zh_CN.lang b/Language/zh_CN.lang index bdee27b..bf6cbcb 100644 --- a/Language/zh_CN.lang +++ b/Language/zh_CN.lang @@ -1,5 +1,8 @@ -## 玩家设置翻译 +## 命令翻译 plugins.Waila.command.description=§b高亮显示设置 §7- §dby 小小的子沐呀 +plugins.Waila.command.translators.error=§c目标方块 §a%s §c已有翻译→ §e%s +plugins.Waila.command.translators.succes=§e目标方块 §b%s §e已翻译成 §6%s +plugins.Waila.command.language.error=§c语言 §a%s §c不存在 plugins.Waila.gui.title=§e高亮显示设置 plugins.Waila.gui.cancel=§8已取消设置 plugins.Waila.gui.succes=§g设置成功 @@ -20,6 +23,8 @@ plugins.Waila.block.cake.status=§3蛋糕状态:§c%s/7 plugins.Waila.block.chest.size=§b容量:§a%s/%s plugins.Waila.block.jukebox=§8播放唱片 §c%s plugins.Waila.block.beacon=§7选择效果:§5%s +plugins.Waila.block.noteblock=§c音阶§6:§d%s +plugins.Waila.block.composter=§b堆肥量§a:§e%s/8 plugins.Waila.block.mob_spawner=§d生成怪物:§a%s plugins.Waila.block.commandblock.command=§d命令:§a%s plugins.Waila.block.flower_pot=§d种植的花§b:%s @@ -54,7 +59,6 @@ tile.darkoak_wall_sign.name=深色橡木告示牌 tile.mangrove_wall_sign.name=红树木告示牌 tile.cherry_wall_sign.name=樱花木告示牌 tile.bamboo_wall_sign.name=竹制告示牌 -tile.obsidian.name=绯红木告示牌 tile.warped_wall_sign.name=诡异木告示牌 tile.oak_hanging_sign.name=橡木悬挂告示牌 tile.spruce_hanging_sign.name=云杉木悬挂告示牌 @@ -65,7 +69,6 @@ tile.dark_oak_hanging_sign.name=深色橡木悬挂告示牌 tile.mangrove_hanging_sign.name=红树木悬挂告示牌 tile.cherry_hanging_sign.name=樱花木悬挂告示牌 tile.bamboo_hanging_sign.name=竹制悬挂告示牌 -tile.crimson_hanging_sign.name=绯红木悬挂告示牌 tile.warped_hanging_sign.name=翘曲悬挂告示牌 tile.lit_redstone_ore.name=发光的红石矿石 tile.lit_deepslate_redstone_ore.name=发光的深层红石矿石 @@ -90,4 +93,6 @@ tile.warped_door.name=诡异门 tile.lit_redstone_lamp.name=发光的红石灯 tile.frame.name=物品展示框 tile.skull.name=头颅 -tile.flower_pot.name=花盆 \ No newline at end of file +tile.flower_pot.name=花盆 +tile.end_portal.name=末地传送门 +tile.end_gateway.name=末地折跃门方块 diff --git a/README.md b/README.md index 4b8c6b3..4714a5e 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Waila 是一个 LSE 高亮显示插件,他集成了许多原版信息的具体化显示,可以更好的方便玩家对方块或生物的信息进行查看 ## 图骗展示 +
展开 基础演示 @@ -25,6 +26,8 @@ Waila 是一个 LSE 高亮显示插件,他集成了许多原版信息的具体 下落方块的实际方块 TNT剩余爆炸时间 村民交易 + 音符盒 + 堆肥桶
## 如何正确加载 Waila @@ -34,26 +37,32 @@ Waila 是一个 LSE 高亮显示插件,他集成了许多原版信息的具体 需要在 Bedrock Dedicated Server(BDS)服务端下装载前置: - LeviLamina -- legacy-script-engine-quickjs -- GMLIB +- legacy-script-engine-quickjs`≥0.7.9` +- GMLIB`≥0.12.8` - GMLIB-LegacyRemoteCallApi`≥v0.12.8` ### 如何装载 -下载释放文件,解压插件文件夹至 BDS 服务端 plugins 文件夹内,并加载 +- 第一种:下载释放文件,解压插件文件夹至 BDS 服务端 plugins 文件夹内,并加载 +- 第二种:使用 Lip 安装,输入命令 lip install github.com/zimuya4153/LSE_Waila ## 使用方法 游戏内玩家可输入/waila 来设置自己的 Waila 开关及样式 -![表单](http://www.gwbbs.top/img/Wailaform.png) -ps:如果装了我们的 UI 包,那活动栏将是一个非常好的选择 +![表单](https://github.com/zimuya4153/LSE_Waila/blob/main/image/form.png?raw=true) +ps:如果装了我们的 [UI 包](https://wwm.lanzouq.com/iSMiT20o39ze "点击前往下载链接"),那活动栏将是一个非常好的选择 -## 语言文件[zh_CN.lang](https://github.com/zimuya4153/LSE_Waila/blob/main/image/form.png?raw=true) +## 语言文件[zh_CN.lang](https://github.com/zimuya4153/LSE_Waila/blob/main/Language/zh_CN.lang) > 如果遇到原版未翻译的或者你有自己的个性都可以去访问这个文件 > 切记如果你没有基础请按照规律来修改,修改错误可能导致你无法使用 Waila -## 特别操作 +# 特别操作 + +## 有些方块没有翻译怎么办? + +- 不慌,输入指令/waila 语言 翻译的文本 +- 你可能好奇?语言填啥?可以填 zh_CN(中文简体),zh_TW(中文繁體),en_US(English (United States)),en_GB(English (United Kingdom))…… 这里是 WuHuiZhang6902(合作者),教你点东西,看到 Config.js 文件没,如果你觉着名称后面的英文 id 显示太长,你可以将以下代码替换第 19 行,那么这 type 就变成短短的整数 id 了 @@ -62,7 +71,7 @@ Text: (Player, PlayerConfig, Block) => I18nAPI.get('plugins.Waila.block.name', [ ``` 什么,你还要再学点小操作? -如果你不想让他在不瞄准任何东西情况下提示文字,那么你只需要将下面代码替换 Config.js 文件的 149 行 +如果你不想让他在不瞄准任何东西情况下提示文字,那么你只需要将下面代码替换 Config.js 文件的 `158` 行 ```javascript DefaultText: "", @@ -107,13 +116,13 @@ module.exports = { Color: 0, /** 进度值 @type {Number} */ Percent: 100, - /** 默认文本 @type {String} */ - DefaultText: "\n\n&plugins.Waila.get.error&", }, + /** 默认文本 @type {String} */ + DefaultText: "\n\n&plugins.Waila.get.error&", /** 刷新时间(秒) @type {Number} */ Hz: 0.1, /** 查找最大距离 @type {Number} */ maxDistance: 10, }, }; -``` \ No newline at end of file +``` diff --git a/Waila.js b/Waila.js index 42db0f5..7bb5469 100644 --- a/Waila.js +++ b/Waila.js @@ -31,11 +31,12 @@ LLSE_Player.prototype.updateBossBarTitle = return this.sendPacket(bs.createPacket(0x4A)); } -/** 配置文件 @type {{AllBefore:ConfigItem[],Block:ConfigItem[],Entity:ConfigItem[],AllAfter:ConfigItem[],Bossbar:{ID:Number,Color:Number,Percent:Number,DefaultText:String},Hz:Number,maxDistance:Number}} */ +/** 配置文件 @type {{AllBefore:ConfigItem[],Block:ConfigItem[],Entity:ConfigItem[],AllAfter:ConfigItem[],Bossbar:{ID:Number,Color:Number,Percent:Number},DefaultText:String,Hz:Number,maxDistance:Number}} */ const Config = require('./Waila/Config.js').Config; const { PAPI } = require('./GMLIB-LegacyRemoteCallApi/lib/BEPlaceholderAPI-JS.js'); -const { I18nAPI } = require('./GMLIB-LegacyRemoteCallApi/lib/GMLIB_API-JS.js'); +const { I18nAPI, Minecraft } = require('./GMLIB-LegacyRemoteCallApi/lib/GMLIB_API-JS.js'); const /** 玩家数据文件 */ Data = new JsonConfigFile('./plugins/Waila/Data.json'); +Minecraft.setFixI18nEnabled();// 修复Mojang的i18n问题 setInterval(() => { mc.getOnlinePlayers().forEach(Player => { @@ -48,7 +49,7 @@ setInterval(() => { let ViewEntity = Player.getEntityFromViewVector(Config.maxDistance), ViewBlock = Player.getBlockFromViewVector(false, false, Config.maxDistance, false); let text = ''; if ((!ViewBlock || ViewBlock?.pos?.toString().replace(/ /g, '').includes('(0,0,0)')) && !ViewEntity) { - text += Config.Bossbar.DefaultText.replace(/&(.*)&/g, (_, key) => I18nAPI.get(key, [], Player.langCode)); + text += Config.DefaultText.replace(/&(.*)&/g, (_, key) => I18nAPI.get(key, [], Player.langCode)); } else { const EvalGetText = (Items => (typeof (Items.Conditions) === 'function' ? Items.Conditions(Player, PlayerConfig, ViewEntity ?? ViewBlock) : Items.Conditions) @@ -72,16 +73,23 @@ setInterval(() => { }); }, Config.Hz * 1000); -// mc.listen('onBlockChanged', BeforeBlock => delete BlockCache[BeforeBlock.pos.toString()]); -mc.listen('onJoin', Player => { - const /** @type {PlayerConfig} */ PlayerConfig = Data.get(Player.uuid, { 'Enabled': 1, 'Mode': 0 }); - if (PlayerConfig.Enabled && PlayerConfig.Mode === 0) Player.setBossBar(Config.Bossbar.ID, Config.Bossbar.DefaultText.replace(/&(.*)&/g, (_, key) => I18nAPI.get(key, [], Player.langCode)), Config.Bossbar.Percent, Config.Bossbar.Color); -}); - mc.listen('onServerStarted', () => { + setInterval(() => { + mc.getOnlinePlayers().forEach(Player => { + const /** @type {PlayerConfig} */ PlayerConfig = Data.get(Player.uuid, { 'Enabled': 1, 'Mode': 0 }); + if (PlayerConfig.Enabled && PlayerConfig.Mode === 0) Player.setBossBar(Config.Bossbar.ID, Config.DefaultText.replace(/&(.*)&/g, (_, key) => I18nAPI.get(key, [], Player.langCode)), Config.Bossbar.Percent, Config.Bossbar.Color); + }); + }, 5 * 1000); I18nAPI.loadLanguageDirectory(`./plugins/Waila/Language`); - - mc.regPlayerCmd('waila', I18nAPI.get('plugins.Waila.command.description'), Player => { + mc.regPlayerCmd('waila', I18nAPI.get('plugins.Waila.command.description'), (Player, args) => { + if (args[1] != null) { + const ViewBlock = Player.getBlockFromViewVector(false, false, Config.maxDistance, false); + if(ViewBlock.name!==ViewBlock.getTranslateKey())return Player.tell(I18nAPI.get('plugins.Waila.command.translators.error',[ViewBlock.type,ViewBlock.getTranslateName()],Player.langCode)); + if (!I18nAPI.getSupportedLanguages().includes(args[0])) return Player.tell(I18nAPI.get('plugins.Waila.command.language.error', [args[0]], Player.langCode)); + File.writeLine(`./plugins/Waila/Language/${args[0]}.lang`, `${ViewBlock.getTranslateKey()}=${args[1]}`); + I18nAPI.loadLanguageDirectory(`./plugins/Waila/Language`); + return Player.tell(I18nAPI.get('plugins.Waila.command.translators.succes', [ViewBlock.type, args[1]], Player.langCode)); + } const /** @type {PlayerConfig} */ PlayerConfig = Data.get(Player.uuid, { 'Enabled': 1, 'Mode': 0 }); const Form = mc.newCustomForm().setTitle(I18nAPI.get('plugins.Waila.gui.title')); Form.addSwitch(I18nAPI.get('plugins.Waila.gui.switch', [], Player.langCode), PlayerConfig['Enabled']); @@ -90,7 +98,7 @@ mc.listen('onServerStarted', () => { if (!FormData) return Player.tell(I18nAPI.get('plugins.Waila.gui.cancel', [], Player.langCode)); Data.set(Player.uuid, Object.assign({}, { Enabled: FormData[0], Mode: FormData[1] })); if (FormData[0] && FormData[1] === 0) - Player.setBossBar(Config.Bossbar.ID, Config.Bossbar.DefaultText.replace(/&(.*)&/g, (_, key) => I18nAPI.get(key, [], Player.langCode)), Config.Bossbar.Percent, Config.Bossbar.Color); + Player.setBossBar(Config.Bossbar.ID, Config.DefaultText.replace(/&(.*)&/g, (_, key) => I18nAPI.get(key, [], Player.langCode)), Config.Bossbar.Percent, Config.Bossbar.Color); else Player.removeBossBar(Config.Bossbar.ID); Player.tell(I18nAPI.get('plugins.Waila.gui.succes', [], Player.langCode)); diff --git a/image/image_19.png b/image/image_19.png new file mode 100644 index 0000000..d294cfc Binary files /dev/null and b/image/image_19.png differ diff --git a/image/image_20.png b/image/image_20.png new file mode 100644 index 0000000..eb7c564 Binary files /dev/null and b/image/image_20.png differ diff --git a/manifest.json b/manifest.json index b31157e..86995b8 100644 --- a/manifest.json +++ b/manifest.json @@ -4,13 +4,15 @@ "type": "lse-quickjs", "description":"普普通通的搞高亮显示", "author":"小小的子沐呀", - "version":"1.0.0", + "version":"1.1.0", "dependencies": [ { - "name": "legacy-script-engine-quickjs" + "name": "legacy-script-engine-quickjs", + "version":"0.7.9" }, { - "name": "GMLIB" + "name": "GMLIB", + "version":"0.12.7" }, { "name": "GMLIB-LegacyRemoteCallApi", diff --git a/tooth.json b/tooth.json index 8ca6a62..2ddd51e 100644 --- a/tooth.json +++ b/tooth.json @@ -1,7 +1,7 @@ { "format_version": 2, "tooth": "github.com/zimuya4153/LSE_Waila", - "version": "1.0.0", + "version": "1.1.0", "info": { "name": "LSE_Waila", "description": "为LL3提供motd的接口和papi变量", @@ -15,11 +15,11 @@ "legacyscriptengine" ] }, - "asset_url": "https://github.com/zimuya4153/LSE_Waila/releases/download/v1.0.0/LSE_Waila-1.0.0.zip", + "asset_url": "https://github.com/zimuya4153/LSE_Waila/releases/download/v1.1.0/LSE_Waila-1.1.0.zip", "dependencies": { - "github.com/LiteLDev/LeviLamina": ">=0.0.1", - "gitea.litebds.com/LiteLDev/legacy-script-engine-quickjs": ">=0.0.1", - "github.com/GroupMountain/GMLIB": ">=0.12.8", + "github.com/LiteLDev/LeviLamina": ">=0.12.x", + "gitea.litebds.com/LiteLDev/legacy-script-engine-quickjs": ">=0.7.9", + "github.com/GroupMountain/GMLIB": ">=0.12.7", "github.com/GroupMountain/GMLIB-LegacyRemoteCallApi": ">=0.12.8" }, "files": {