diff --git a/.cursor/rules/vars-usage.mdc b/.cursor/rules/vars-usage.mdc deleted file mode 100644 index 233e0aba..00000000 --- a/.cursor/rules/vars-usage.mdc +++ /dev/null @@ -1,18 +0,0 @@ ---- -description: Restricts usage of the global Mineflayer `bot` variable to only src/ files; prohibits usage in renderer/. Specifies correct usage of player state and appViewer globals. -globs: src/**/*.ts,renderer/**/*.ts -alwaysApply: false ---- -Ask AI - -- The global variable `bot` refers to the Mineflayer bot instance. -- You may use `bot` directly in any file under the `src/` directory (e.g., `src/mineflayer/playerState.ts`). -- Do **not** use `bot` directly in any file under the `renderer/` directory or its subfolders (e.g., `renderer/viewer/three/worldrendererThree.ts`). -- In renderer code, all bot/player state and events must be accessed via explicit interfaces, state managers, or passed-in objects, never by referencing `bot` directly. -- In renderer code (such as in `WorldRendererThree`), use the `playerState` property (e.g., `worldRenderer.playerState.gameMode`) to access player state. The implementation for `playerState` lives in `src/mineflayer/playerState.ts`. -- In `src/` code, you may use the global variable `appViewer` from `src/appViewer.ts` directly. Do **not** import `appViewer` or use `window.appViewer`; use the global `appViewer` variable as-is. -- Some other global variables that can be used without window prefixes are listed in src/globals.d.ts - -Rationale: This ensures a clean separation between the Mineflayer logic (server-side/game logic) and the renderer (client-side/view logic), making the renderer portable and testable, and maintains proper usage of global state. - -For more general project contributing guides see CONTRIBUTING.md on like how to setup the project. Use pnpm tsc if needed to validate result with typechecking the whole project. diff --git a/.eslintrc.json b/.eslintrc.json index 63f6749a..3552f6a7 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -23,7 +23,6 @@ // ], "@stylistic/arrow-spacing": "error", "@stylistic/block-spacing": "error", - "@typescript-eslint/no-this-alias": "off", "@stylistic/brace-style": [ "error", "1tbs", diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index e80b7100..f913b9b6 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -26,7 +26,7 @@ jobs: uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 18 cache: "pnpm" - name: Move Cypress to dependencies run: | diff --git a/.github/workflows/build-single-file.yml b/.github/workflows/build-single-file.yml index 5f9800db..93b1b77f 100644 --- a/.github/workflows/build-single-file.yml +++ b/.github/workflows/build-single-file.yml @@ -23,8 +23,6 @@ jobs: - name: Build single-file version - minecraft.html run: pnpm build-single-file && mv dist/single/index.html minecraft.html - env: - LOCAL_CONFIG_FILE: config.mcraft-only.json - name: Upload artifact uses: actions/upload-artifact@v4 diff --git a/.github/workflows/build-zip.yml b/.github/workflows/build-zip.yml index 76ca65ca..cc472476 100644 --- a/.github/workflows/build-zip.yml +++ b/.github/workflows/build-zip.yml @@ -23,8 +23,6 @@ jobs: - name: Build project run: pnpm build - env: - LOCAL_CONFIG_FILE: config.mcraft-only.json - name: Bundle server.js run: | diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8fc56ea9..d624be53 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: cd package zip -r ../self-host.zip . - run: pnpm build-playground - # - run: pnpm build-storybook + - run: pnpm build-storybook - run: pnpm test-unit - run: pnpm lint @@ -124,35 +124,35 @@ jobs: # content['${{ github.event.pull_request.base.ref }}'] = stats; # await updateGistContent(content); - # - name: Update PR Description - # uses: actions/github-script@v6 - # with: - # script: | - # const { data: pr } = await github.rest.pulls.get({ - # owner: context.repo.owner, - # repo: context.repo.repo, - # pull_number: context.issue.number - # }); + - name: Update PR Description + uses: actions/github-script@v6 + with: + script: | + const { data: pr } = await github.rest.pulls.get({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: context.issue.number + }); - # let body = pr.body || ''; - # const statsMarker = '### Bundle Size'; - # const comparison = '${{ steps.compare.outputs.stats }}'; + let body = pr.body || ''; + const statsMarker = '### Bundle Size'; + const comparison = '${{ steps.compare.outputs.stats }}'; - # if (body.includes(statsMarker)) { - # body = body.replace( - # new RegExp(`${statsMarker}[^\n]*\n[^\n]*`), - # `${statsMarker}\n${comparison}` - # ); - # } else { - # body += `\n\n${statsMarker}\n${comparison}`; - # } + if (body.includes(statsMarker)) { + body = body.replace( + new RegExp(`${statsMarker}[^\n]*\n[^\n]*`), + `${statsMarker}\n${comparison}` + ); + } else { + body += `\n\n${statsMarker}\n${comparison}`; + } - # await github.rest.pulls.update({ - # owner: context.repo.owner, - # repo: context.repo.repo, - # pull_number: context.issue.number, - # body - # }); + await github.rest.pulls.update({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: context.issue.number, + body + }); # dedupe-check: # runs-on: ubuntu-latest # if: github.event.pull_request.head.ref == 'next' diff --git a/.github/workflows/next-deploy.yml b/.github/workflows/next-deploy.yml index 75b39f6c..943727eb 100644 --- a/.github/workflows/next-deploy.yml +++ b/.github/workflows/next-deploy.yml @@ -36,7 +36,7 @@ jobs: run: vercel build --token=${{ secrets.VERCEL_TOKEN }} env: CONFIG_JSON_SOURCE: BUNDLED - LOCAL_CONFIG_FILE: config.mcraft-only.json + - run: pnpm build-storybook - name: Copy playground files run: | mkdir -p .vercel/output/static/playground diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index 89fd6698..b4908d8d 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -1,4 +1,4 @@ -name: Vercel PR Deploy (Preview) +name: Vercel Deploy Preview env: VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} @@ -78,7 +78,7 @@ jobs: run: vercel build --token=${{ secrets.VERCEL_TOKEN }} env: CONFIG_JSON_SOURCE: BUNDLED - LOCAL_CONFIG_FILE: config.mcraft-only.json + - run: pnpm build-storybook - name: Copy playground files run: | mkdir -p .vercel/output/static/playground diff --git a/.github/workflows/release.yml b/.github/workflows/publish.yml similarity index 66% rename from .github/workflows/release.yml rename to .github/workflows/publish.yml index 3e8c4136..1294f9ff 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/publish.yml @@ -34,13 +34,17 @@ jobs: - run: vercel build --token=${{ secrets.VERCEL_TOKEN }} --prod env: CONFIG_JSON_SOURCE: BUNDLED - LOCAL_CONFIG_FILE: config.mcraft-only.json + - run: pnpm build-storybook - name: Copy playground files run: | mkdir -p .vercel/output/static/playground pnpm build-playground cp -r renderer/dist/* .vercel/output/static/playground/ - + - name: Deploy Project to Vercel + uses: mathiasvr/command-output@v2.0.0 + with: + run: vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }} --prod + id: deploy # publish to github - run: cp vercel.json .vercel/output/static/vercel.json - uses: peaceiris/actions-gh-pages@v3 @@ -49,39 +53,6 @@ jobs: publish_dir: .vercel/output/static force_orphan: true - # Create CNAME file for custom domain - - name: Create CNAME file - run: echo "github.mcraft.fun" > .vercel/output/static/CNAME - - - name: Deploy to mwc-mcraft-pages repository - uses: peaceiris/actions-gh-pages@v3 - with: - personal_token: ${{ secrets.MCW_MCRAFT_PAGE_DEPLOY_TOKEN }} - external_repository: ${{ github.repository_owner }}/mwc-mcraft-pages - publish_dir: .vercel/output/static - publish_branch: main - destination_dir: docs - force_orphan: true - - - name: Change index.html title - run: | - # change
@@ -178,7 +167,6 @@ Server specific:
- `?lockConnect=true` - Only works then `ip` parameter is set. Disables cancel/save buttons and all inputs in the connect screen already set as parameters. Useful for integrates iframes.
- `?autoConnect=true` - Only works then `ip` and `version` parameters are set and `allowAutoConnect` is `true` in config.json! Directly connects to the specified server. Useful for integrates iframes.
- `?serversList=