From 8327afe64780adcf227a7841db613527eaec3360 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Mon, 21 Aug 2023 22:04:53 +0300 Subject: [PATCH] add autocomplete for versions & supported indicator (wip) --- src/index.js | 6 +++--- src/menus/components/edit_box.js | 22 +++++++++++++++++++++- src/menus/loading_or_error_screen.js | 2 +- src/menus/play_screen.js | 10 ++++++++++ 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/index.js b/src/index.js index 02bf91bf..b02180f1 100644 --- a/src/index.js +++ b/src/index.js @@ -2,6 +2,9 @@ /* global THREE */ require('./chat') +// workaround for mineflayer +process.versions.node = '14.0.0' + require('./menus/components/button') require('./menus/components/edit_box') require('./menus/components/slider') @@ -64,9 +67,6 @@ _fs.promises.open = async (...args) => { const net = require('net') const Stats = require('stats.js') -// workaround for mineflayer -process.versions.node = '14.0.0' - const mineflayer = require('mineflayer') const { WorldView, Viewer, MapControls } = require('prismarine-viewer/viewer') const PrismarineWorld = require('prismarine-world') diff --git a/src/menus/components/edit_box.js b/src/menus/components/edit_box.js index aafedeb6..0f42527a 100644 --- a/src/menus/components/edit_box.js +++ b/src/menus/components/edit_box.js @@ -11,6 +11,22 @@ class EditBox extends LitElement { background: black; border: 1px solid grey; } + .edit-container.invalid { + border: 1px solid #c70000; + } + + .edit-container.warning { + border: 1px solid rgb(159, 151, 0); + } + + .edit-container.invalid:hover, + .edit-container.invalid:focus-within { + border-color: red; + } + .edit-container.warning:hover, + .edit-container.warning:focus-within { + border-color: yellow; + } .edit-container:hover, .edit-container:focus-within { @@ -97,6 +113,10 @@ class EditBox extends LitElement { required: { type: Boolean, attribute: 'pmui-required' + }, + state: { + type: String, + attribute: true } } } @@ -104,7 +124,7 @@ class EditBox extends LitElement { render () { return html`
diff --git a/src/menus/loading_or_error_screen.js b/src/menus/loading_or_error_screen.js index afbf1990..dfbf3660 100644 --- a/src/menus/loading_or_error_screen.js +++ b/src/menus/loading_or_error_screen.js @@ -40,7 +40,7 @@ class LoadingErrorScreen extends LitElement { constructor () { super() this.hasError = false - this.maybeRecoverable = false + this.maybeRecoverable = true this.status = 'Waiting for JS load' this._loadingDots = '' } diff --git a/src/menus/play_screen.js b/src/menus/play_screen.js index 40c5c49b..81e7d53f 100644 --- a/src/menus/play_screen.js +++ b/src/menus/play_screen.js @@ -1,6 +1,12 @@ const { LitElement, html, css } = require('lit') const { commonCss } = require('./components/common') const { hideCurrentModal } = require('../globalState') +const mcAssets = require("minecraft-assets") +const data = require('minecraft-data') +const mineflayer = require('mineflayer') + +const fullySupporedVersions = mcAssets.versions +const partialSupportVersions = mineflayer.supportedVersions class PlayScreen extends LitElement { static get styles () { @@ -76,6 +82,8 @@ class PlayScreen extends LitElement { constructor () { super() + this.version = '' + // todo set them sooner add indicator window.fetch('config.json').then(res => res.json()).then(c => c, (error) => { console.error('Failed to load config.json', error) return {} @@ -167,6 +175,8 @@ class PlayScreen extends LitElement { pmui-id="botversion" pmui-value="${this.version}" pmui-inputmode="decimal" + state="${this.version && (fullySupporedVersions.includes(this.version) ? '' : /* TODO improve check: check exact including all */ partialSupportVersions.some(v => this.version.startsWith(v)) ? 'warning' : 'invalid')}" + .autocompleteValues=${mcAssets.versions} @input=${e => { this.version = e.target.value }} >