| 中文版点我 |
With the rapid launch of PCL branch versions, UI restoration has become a major challenge for many developers. PCL.Proto emerges as a solution.
This project is modeled after PCL2 and PCL2-CE, with a goal of providing a standardized prototype sample for each PCL branch version. The repository is built using Vue3, and if your project uses Webview as the frontend, you can directly reference this project.
The project is also ready for preview at PCL.Proto.
The website and desktop client are maintained together on main. Browsers show the project introduction, launcher preview, and interactive component demos on the home page. The PCL homepage editor is also available from the toolbox. The desktop client shows only the launcher.
Run bun run deploy to check, build, and publish the website to origin's gh-pages branch.
If your PCL branch version or your custom launcher is not based on Web technology, referencing this repository directly might have limited convenience. You may head to js.design - 「PCL.Prototype」 to view the specific application prototype, export the cut image or refer to the style code generated by it.
In case you would like to modify the prototype design file, you are welcome to click this link to join the team.
- Install Bun 1.4.4 or later. The project uses Bun for package management, scripts, formatting, and UI checks.
- The device should have a usable rust toolchain installed.
- Windows: the MSVC toolchain, C++ development tools, and Windows SDK are required. Run
bun run setup:windowsto prepare the Protobuf compiler and WinDivert driver. Npcap is no longer a build dependency; the launcher installs it on demand the first time multiplayer is used. The Tauri WebView2 runtime is assumed to be present. - macOS: make sure that Xcode is installed. You also need to install protobuf via Homebrew (
brew install protobuf). - Ubuntu: you need to install the following packages:
libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf protobuf-compiler.
Note
If you have any questions, please refer to Prerequisites | Tauri.
After cloning this project, you need to run the following command to initialize the submodule:
git submodule update --init --recursive
Currently, the project is a Tauri + Vue3 + Vite project. Before running the project for the first time, please run the following command to install the front-end dependencies:
bun install --frozen-lockfile
The backend dependencies will be managed by cargo automatically.
Then, use bun run icons to automatically generate icons. You can then start the development and build processes.
Warning
The icons in this repository are excluded. Therefore, if you do not perform this step after cloning the repository, the icons folder will be empty, and the Tauri application will throw an error when it starts!
bun run dev
Note
The CurseForge resource source needs an API key: set CURSEFORGE_API_KEY in the environment or in the git-ignored root .env before building. The key is embedded in the desktop binary, with a runtime environment fallback. Without it CurseForge is unavailable; the web preview cannot use it.
Note
Microsoft login requires a Microsoft OAuth client ID and has no built-in default: the old public client ID is rejected by the Microsoft device-code endpoint, so login fails with configuration_error when unset. Set MS_CLIENT_ID in the build environment or the git-ignored root .env, or set MS_CLIENT_ID / PCL_MS_CLIENT_ID at runtime. The Azure app registration must support the device-code flow and the XboxLive.signin offline_access scope, and must be approved at https://aka.ms/mce-reviewappid; otherwise login_with_xbox returns 403.
The lobby announcement service and Natayark ID login have no built-in endpoints either. Set LINK_SERVER_ROOT (one or more roots separated by |) and NAID_CLIENT_ID / NAID_CLIENT_SECRET in the build environment, the root .env, or the runtime environment. Both are optional: without them the multiplayer page works offline (no announcements, no account card) and Terracotta remains fully usable.
See Application packaging for the macOS bundle layout. Distribute
the complete .app or DMG.
Tauri's development and build hooks use Bun directly.
The reusable controls are packaged as @amagicpear/pcl-proto-components. See the component package guide for imports, styling, locale, and licensing. To build a local npm package, run bun run components:build followed by npm pack ./packages/components. Publishing requires access to the npm scope and is a separate step.
The launcher core is a standalone crate at crates/pcl-core, usable to build another launcher:
[dependencies] pcl-core = { git = "https://github.com/PCL-Community/PCL.Proto", rev = "<commit>" }
See the core crate guide for explicit HTTP clients, credentials, launch inputs, and the built-in installation and launch helpers.
If I have seen further it is by standing on ye shoulder of Giants. —— Sir Isaac Newton

