diff options
| author | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-02 18:51:45 +0300 |
|---|---|---|
| committer | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-02 18:51:45 +0300 |
| commit | d3261e64152397db2dca4d691a990c6bc2a6f4dd (patch) | |
| tree | fac2f7be638651181a72453d714f0f96675c2b8b /archived/projt-launcher/docs/handbook | |
| parent | 31b9a8949ed0a288143e23bf739f2eb64fdc63be (diff) | |
| download | Project-Tick-d3261e64152397db2dca4d691a990c6bc2a6f4dd.tar.gz Project-Tick-d3261e64152397db2dca4d691a990c6bc2a6f4dd.zip | |
NOISSUE add archived projects
Signed-off-by: Mehmet Samet Duman <yongdohyun@projecttick.org>
Diffstat (limited to 'archived/projt-launcher/docs/handbook')
103 files changed, 6978 insertions, 0 deletions
diff --git a/archived/projt-launcher/docs/handbook/README.md b/archived/projt-launcher/docs/handbook/README.md new file mode 100644 index 0000000000..785215e6ac --- /dev/null +++ b/archived/projt-launcher/docs/handbook/README.md @@ -0,0 +1,65 @@ +# Handbook + +Documentation for Project Tick contributors and players. +Latest Version: 0.0.5-1 + +## For Players + +- [help-pages/index.md](./help-pages/index.md) - Launcher help (settings, instances, mod platforms) +- [wiki/overview/index.md](./wiki/overview/index.md) - Full ProjT Launcher wiki (mirrored) + +## For Contributors + +### Core Components + +- [program_info.md](./program_info.md) - Application branding and configuration +- [launcherjava.md](./launcherjava.md) - Java launcher component +- [javacheck.md](./javacheck.md) - Java runtime detection + +### Detached Fork Libraries + +Libraries independently maintained by Project Tick. + +#### Compression + +- [zlib.md](./zlib.md) - DEFLATE compression +- [bzip2.md](./bzip2.md) - Block-sorting compression +- [quazip.md](./quazip.md) - Qt ZIP wrapper + +#### Data Formats + +- [tomlplusplus.md](./tomlplusplus.md) - TOML parser +- [libnbtplusplus.md](./libnbtplusplus.md) - NBT format +- [cmark.md](./cmark.md) - Markdown parser +- [libqrencode.md](./libqrencode.md) - QR code generation + +### Build System + +- [extra-cmake-modules.md](./extra-cmake-modules.md) - KDE CMake modules +- [bzip2-compiling.md](./bzip2-compiling.md) - bzip2 build instructions +- [bzip2-tests.md](./bzip2-tests.md) - bzip2 test suite +- [bzip2-testfiles.md](./bzip2-testfiles.md) - Test file collection + +### CI/CD & Automation + +- [workflows.md](./workflows.md) - GitHub Actions architecture +- [ci_support.md](./ci_support.md) - CI configuration files +- [bot.md](./bot.md) - PR automation bot +- [ptcigh.md](./ptcigh.md) - GitHub script helpers +- [ptcieval.md](./ptcieval.md) - Nix-based validation + +### Platform Support + +- [nix.md](./nix.md) - Nix/NixOS packaging +- [linux-packaging.md](./linux-packaging.md) - Linux distribution packaging +- [images.md](./images.md) - CI Docker images + +### Reference + +- [third-party.md](./third-party.md) - All Libraries +- [website-tomlplusplus.md](./website-tomlplusplus.md) - toml++ docs build +- [help-pages.md](./help-pages.md) - Help pages overview and locations + +--- + +See also: [Contributing Guide](../../CONTRIBUTING.md) diff --git a/archived/projt-launcher/docs/handbook/bot.md b/archived/projt-launcher/docs/handbook/bot.md new file mode 100644 index 0000000000..807f1da838 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/bot.md @@ -0,0 +1,198 @@ +# Bot `bot/` + +> **Type**: Cloudflare Worker +> **Platform**: Cloudflare Workers +> **Purpose**: PR Automation & Labeling +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +The ProjT Launcher bot is a Cloudflare Worker that automates pull request labeling based on changed files. It listens for GitHub webhook events and applies appropriate labels automatically. + +--- + +## Features + +| Feature | Description | +|---------|-------------| +| **Auto-labeling** | Labels PRs based on file changes | +| **Path mapping** | Configurable path-to-label rules | +| **Webhook integration** | GitHub webhook receiver | +| **Zero cold start** | Cloudflare Workers edge deployment | + +--- + +## Architecture + +``` +┌─────────────┐ ┌──────────────────┐ ┌─────────────┐ +│ GitHub │────▶│ Cloudflare │────▶ │ GitHub │ +│ Webhook │ │ Worker (bot/) │ │ API │ +└─────────────┘ └──────────────────┘ └─────────────┘ + │ + ┌──────▼────────┐ + │ wrangler.json │ + │ (config) │ + └───────────────┘ +``` + +--- + +## File Structure + +``` +bot/ +├── index.js # Main worker logic +├── server.js # Local development server +├── package.json # Dependencies +└── wrangler.json # Cloudflare configuration +``` + +--- + +## Label Rules + +The bot applies labels based on changed file paths: + +| Path Pattern | Label | +|--------------|-------| +| `launcher/**` | `launcher` | +| `buildconfig/**` | `build` | +| `cmake/**` | `build` | +| `.github/workflows/**` | `ci` | +| `docs/**` | `documentation` | +| `zlib/**` | `library: zlib` | +| `bzip2/**` | `library: bzip2` | +| `quazip/**` | `library: quazip` | +| `cmark/**` | `library: cmark` | +| `tomlplusplus/**` | `library: toml++` | +| `libqrencode/**` | `library: qrencode` | +| `website/**` | `website` | + +--- + +## Configuration + +### wrangler.json + +```json +{ + "name": "projtlauncher-bot", + "main": "index.js", + "compatibility_date": "2024-01-01", + "vars": { + "GITHUB_APP_ID": "your-app-id" + } +} +``` + +### Environment Variables + +| Variable | Description | +|----------|-------------| +| `GITHUB_APP_ID` | GitHub App ID | +| `GITHUB_APP_PRIVATE_KEY` | GitHub App private key | +| `GITHUB_WEBHOOK_SECRET` | Webhook signature secret | + +--- + +## Development + +### Prerequisites + +- Node.js 18+ +- Wrangler CLI (`npm install -g wrangler`) +- Cloudflare account + +### Local Development + +```bash +cd bot +npm install + +# Start local dev server +npm run dev +# or +wrangler dev +``` + +### Testing Webhooks Locally + +Use [smee.io](https://smee.io/) or ngrok to forward webhooks: + +```bash +# Install smee client +npm install -g smee-client + +# Forward webhooks +smee -u https://smee.io/your-channel -t http://localhost:8787 +``` + +--- + +## Deployment + +### Deploy to Cloudflare + +```bash +cd bot +wrangler publish +``` + +### GitHub Webhook Setup + +1. Go to repository Settings → Webhooks +2. Add webhook: + - **Payload URL**: `https://your-worker.workers.dev/webhook` + - **Content type**: `application/json` + - **Secret**: Your `GITHUB_WEBHOOK_SECRET` + - **Events**: Pull requests + +--- + +## API Endpoints + +| Endpoint | Method | Description | +|----------|--------|-------------| +| `/` | GET | Health check | +| `/webhook` | POST | GitHub webhook receiver | + +--- + +## Security + +- ✅ **Signature verification** — HMAC-SHA256 webhook signatures +- ✅ **App authentication** — GitHub App JWT tokens +- ✅ **Secret management** — Cloudflare Workers secrets + +--- + +## Troubleshooting + +### Bot not labeling PRs + +1. Check Cloudflare Workers logs +2. Verify webhook delivery in GitHub settings +3. Ensure secrets are configured correctly + +### Labels not created + +Labels must exist in the repository before the bot can apply them. + +--- + +## Related Documentation + +- [CI Workflows](./workflows.md) — GitHub Actions integration +- [GitHub Scripts](./ptcigh.md) — Additional automation + +--- + +## External Links + +- [Cloudflare Workers Docs](https://developers.cloudflare.com/workers/) +- [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/) +- [GitHub Apps](https://docs.github.com/en/apps) +- [GitHub Webhooks](https://docs.github.com/en/webhooks) diff --git a/archived/projt-launcher/docs/handbook/bzip2-compiling.md b/archived/projt-launcher/docs/handbook/bzip2-compiling.md new file mode 100644 index 0000000000..7b3afb5c51 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/bzip2-compiling.md @@ -0,0 +1,163 @@ +# Compiling Bzip2 + +> **Directory**: `bzip2/` +> **Build Systems**: Meson (preferred), CMake +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +Bzip2 supports two build systems. **Meson** is preferred for Unix-like systems, while **CMake** provides cross-platform support. + +--- + +## Build Systems Comparison + +| Feature | Meson | CMake | +|---------|-------|-------| +| Unix Support | ✅ Excellent | ✅ Good | +| Windows Support | ✅ Good | ✅ Excellent | +| Preferred For | Unix-like | Cross-platform | + +--- + +## Prerequisites + +### All Platforms + +- Python 3.6+ +- C compiler (GCC, Clang, or MSVC) + +### Meson Builds + +- Meson 0.56+ +- Ninja +- pkg-config + +### CMake Builds + +- CMake 3.12+ + +--- + +## Meson Build + +### Linux/macOS + +```bash +cd bzip2 + +# Configure +meson setup builddir --prefix=/usr + +# Build +ninja -C builddir + +# Test +meson test -C builddir --print-errorlogs + +# Install (optional) +sudo ninja -C builddir install +``` + +### Windows (MSVC) + +```cmd +cd bzip2 + +REM From VS Developer Command Prompt +meson setup builddir +ninja -C builddir +meson test -C builddir --print-errorlogs +``` + +### Meson Options + +| Option | Default | Description | +|--------|---------|-------------| +| `default_library` | `shared` | `static`, `shared`, or `both` | +| `--backend` | `ninja` | Use `vs` for MSBuild | +| `--unity` | off | Enable unity build | +| `buildtype` | `debug` | `release`, `debug`, etc. | + +--- + +## CMake Build + +### Linux/macOS + +```bash +cd bzip2 +mkdir build && cd build + +# Configure +cmake .. -DCMAKE_BUILD_TYPE=Release + +# Build +cmake --build . + +# Test +ctest -V + +# Install (optional) +cmake --install . +``` + +### Windows + +```powershell +cd bzip2 +mkdir build; cd build + +# Configure +cmake .. + +# Build (Release) +cmake --build . --config Release + +# Test +ctest -C Release -V +``` + +### CMake Options + +| Option | Default | Description | +|--------|---------|-------------| +| `ENABLE_APP` | `ON` | Build bzip2 program | +| `ENABLE_LIB_ONLY` | `OFF` | Only build library | +| `ENABLE_STATIC_LIB` | `OFF` | Build static library | +| `ENABLE_SHARED_LIB` | `ON` | Build shared library | +| `ENABLE_TESTS` | `ON` | Build tests | +| `ENABLE_DOCS` | `OFF` | Generate documentation | +| `ENABLE_EXAMPLES` | `OFF` | Build examples | +| `USE_OLD_SONAME` | `OFF` | Use old SONAME (distro compat) | + +--- + +## SONAME Compatibility (Linux) + +The SONAME changed from `libbz2.so.1.0` to `libbz2.so.1` in version 1.1. + +For distro compatibility: + +```bash +# Option 1: CMake flag +cmake .. -DUSE_OLD_SONAME=ON + +# Option 2: Manual patchelf +patchelf --set-soname libbz2.so.1.0 libbz2.so.1.0.9 +``` + +Check SONAME: +```bash +objdump -p libbz2.so.1.0.9 | grep SONAME +``` + +--- + +## Related Documentation + +- [Bzip2 Overview](./bzip2.md) — Main documentation +- [Bzip2 Tests](./bzip2-tests.md) — Test suite +- [Bzip2 Test Files](./bzip2-testfiles.md) — Test file collection diff --git a/archived/projt-launcher/docs/handbook/bzip2-testfiles.md b/archived/projt-launcher/docs/handbook/bzip2-testfiles.md new file mode 100644 index 0000000000..8631c937b4 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/bzip2-testfiles.md @@ -0,0 +1,101 @@ +# Bzip2 Test Files + +> **Purpose**: Test file collection for bzip2 validation +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +A collection of `.bz2` files used to test bzip2 functionality. Files come from various projects and cover edge cases. + +--- + +## Directory Contents + +Each test directory contains: + +| File Type | Description | +|-----------|-------------| +| `README` | Source and license information | +| `*.bz2` | Compressed files (should work) | +| `*.md5` | Hash of original file | +| `*.bz2.bad` | Corrupt files (should fail) | + +--- + +## File Types + +### Good Files (`.bz2`) + +Compressed files that should decompress correctly. Each has an `.md5` file for verification. + +### Bad Files (`.bz2.bad`) + +Deliberately corrupt files to test error handling. These should **not** decompress successfully. + +--- + +## Verification + +### Generate MD5 + +```bash +md5sum < file > file.md5 +``` + +### Verify MD5 + +```bash +md5sum --check file.md5 < file +``` + +--- + +## Adding Test Files + +### Good Files + +1. Create the `.bz2` file +2. Generate `.md5`: `md5sum < original > original.md5` +3. Add to appropriate directory +4. Update README with source + +### Bad Files + +1. Create corrupt `.bz2` file +2. Name with `.bz2.bad` extension +3. Document the corruption type + +--- + +## ⚠️ Security Notice + +> **Vulnerability Reporting** +> +> If you find a file that causes crashes, buffer overflows, or security issues: +> +> 1. **Do NOT share publicly** +> 2. Report confidentially to maintainers +> 3. Allow 60-90 days for fix before disclosure + +--- + +## Credits + +Test files contributed by: +- Apache Commons Compress +- DotNetZip Library +- Go Lang project +- lbzip2 project +- pyflate project + +Thanks to Mark Wielaard for assembling the collection. + +--- + +## Related Documentation + +- [Bzip2 Overview](./bzip2.md) — Main documentation +- [Bzip2 Tests](./bzip2-tests.md) — Test suite +- [Compiling](./bzip2-compiling.md) — Build instructions diff --git a/archived/projt-launcher/docs/handbook/bzip2-tests.md b/archived/projt-launcher/docs/handbook/bzip2-tests.md new file mode 100644 index 0000000000..a81fee0449 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/bzip2-tests.md @@ -0,0 +1,80 @@ +# Bzip2 Tests + +> **Directory**: `bzip2/` +> **Test Suites**: Quick (default), Large +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +Bzip2 has two test suites for validating compression and decompression functionality. + +--- + +## Test Suites + +| Suite | Files | Speed | Valgrind | +|-------|-------|-------|----------| +| **Quick** | Small set | Fast (~seconds) | ✅ Enabled | +| **Large** | Many files | Slow (~minutes) | ❌ Disabled | + +--- + +## Quick Test Suite + +The default test suite validates basic functionality: + +### What It Tests + +1. **Compression** — Compress reference files, decompress, verify match +2. **Decompression** — Decompress `.bz2` files, verify against reference +3. **Multiple modes** — Tests various compression levels + +### Running + +```bash +# CMake +cd bzip2/build +ctest -V + +# Meson +meson test -C builddir --print-errorlogs +``` + +--- + +## Large Test Suite + +Comprehensive test with files from various sources: + +### Contents + +- ✅ Good `.bz2` files — Should decompress correctly +- ❌ Bad `.bz2.bad` files — Should fail gracefully + +### Running + +Integrated with the build system test commands. + +--- + +## Valgrind Integration + +The quick tests run under Valgrind if available: + +```bash +# Check if Valgrind is detected +cmake .. -DCMAKE_BUILD_TYPE=Debug +# Valgrind runs automatically during ctest +``` + +The large tests have Valgrind disabled (would take 35+ minutes). + +--- + +## Related Documentation + +- [Bzip2 Overview](./bzip2.md) — Main documentation +- [Compiling](./bzip2-compiling.md) — Build instructions +- [Test Files](./bzip2-testfiles.md) — Test file collection diff --git a/archived/projt-launcher/docs/handbook/bzip2.md b/archived/projt-launcher/docs/handbook/bzip2.md new file mode 100644 index 0000000000..3fe7bb0536 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/bzip2.md @@ -0,0 +1,124 @@ +# Bzip2 `bzip2/` + +> **Type**: Compression Library +> **License**: bzip2 License (BSD-like) +> **Fork Origin**: [GitLab](https://gitlab.com/bzip2/bzip2) | [Sourceware](https://sourceware.org/bzip2/) +> **Status**: Detached Fork (independently maintained) +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +Bzip2/libbz2 is a program and library for lossless, block-sorting data compression. It typically compresses files to within 10% to 15% of the best available techniques (PPM family), while being around twice as fast at compression and six times faster at decompression. + +This repository contains a maintained fork that now advances in its own tree while staying compatible with upstream. + +--- + +## Usage in ProjT Launcher + +Bzip2 is used for: + +- **Mod archive extraction** — Some modpacks use bzip2 compression +- **Legacy support** — Older Minecraft assets may use bzip2 +- **Download optimization** — Efficient compression for large files + +--- + +## Documentation + +| Resource | Description | +|----------|-------------| +| [Compiling Guide](./bzip2-compiling.md) | Build instructions (Meson & CMake) | +| [Test Suite](./bzip2-tests.md) | Quick and large test suites | +| [Test Files](./bzip2-testfiles.md) | Test file collection | +| [Original Manual](../../bzip2/bzip2.txt) | Upstream plain-text manual | +| `bzip2/manual.html` | Full API documentation | + +--- + +## Build Systems + +Bzip2 supports two build systems: + +| Build System | Platform Support | Recommended For | +|--------------|------------------|-----------------| +| **Meson** | Unix, Windows | Unix-like systems | +| **CMake** | Unix, Windows | Cross-platform builds | + +For detailed build instructions, see [bzip2-compiling.md](./bzip2-compiling.md). + +### Quick Build (CMake) + +```bash +cd bzip2 +mkdir build && cd build +cmake .. -DCMAKE_BUILD_TYPE=Release +cmake --build . +ctest -V +``` + +--- + +## Contributing + +The bzip2 development happens in the ProjT Launcher repository: + +| Branch | Purpose | +|--------|---------| +| `develop` | Main development branch | +| `release-*` | Stable release branches | +| Feature branches | Experimental work (may be rebased) | + +### Report Issues + +Please report bugs via [GitHub Issues](https://github.com/Project-Tick/ProjT-Launcher/issues). + +--- + +## ⚠️ Important Notices + +### Warning + +This program and library compresses data by performing several non-trivial transformations. Unless you are 100% familiar with *all* the algorithms contained herein, you should **NOT** modify the compression or decompression machinery. Incorrect changes can lead to disastrous loss of data. + +### Disclaimer + +**NO RESPONSIBILITY IS TAKEN FOR ANY LOSS OF DATA ARISING FROM THE USE OF THIS PROGRAM/LIBRARY.** + +The complexity of the algorithms makes it impossible to rule out the possibility of bugs. Do not compress critical data without backups. + +### Patents + +To the best of our knowledge, bzip2/libbz2 does not use any patented algorithms. However, no patent search has been conducted, so no guarantee can be given. + +--- + +## Copyright & Licensing + +``` +Copyright (C) 1996-2010 Julian Seward <jseward@acm.org> +Copyright (C) 2019-2020 Federico Mena Quintero <federico@gnome.org> +Copyright (C) 2021-2025 Micah Snyder +Copyright (C) 2025 YongDo-Hyun +Copyright (C) 2025 grxtor +``` + +Licensed under the bzip2 license (BSD-like). See `bzip2/COPYING` for full text. + +--- + +## Related Documentation + +- [zlib](./zlib.md) — Alternative compression library +- [QuaZip](./quazip.md) — ZIP archive wrapper +- [Third-party Libraries](./third-party.md) — All external dependencies + +--- + +## External Links + +- [Bzip2 GitLab](https://gitlab.com/bzip2/bzip2) +- [Bzip2 Sourceware](https://sourceware.org/bzip2/) +- [Wikipedia: Bzip2](https://en.wikipedia.org/wiki/Bzip2) diff --git a/archived/projt-launcher/docs/handbook/ci_support.md b/archived/projt-launcher/docs/handbook/ci_support.md new file mode 100644 index 0000000000..8853645cd2 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/ci_support.md @@ -0,0 +1,103 @@ +# CI Support `ci/` + +> **Location**: `ci/` +> **Purpose**: CI configuration and support files +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +The `ci/` directory contains configuration files, scripts, and Nix expressions that support the CI/CD pipeline. These files are used by GitHub Actions workflows for code quality, validation, and build processes. + +--- + +## Directory Structure + +``` +ci/ +├── code-quality.nix # Nix expression for code quality tools +├── code-quality.sh # Shell script for linting/formatting +├── default.nix # Default Nix entry point +├── parse.nix # Nix parsing utilities +├── pinned.json # Pinned Nix package versions +├── supportedBranches.js # Branch configuration +├── supportedSystems.json # Target system matrix +├── supportedVersions.nix # Version compatibility +├── update-pinned.sh # Update pinned packages +├── OWNERS # Code ownership file +│ +├── codeowners-validator/ # CODEOWNERS validation +├── eval/ # Evaluation helpers +├── github-script/ # GitHub Script automation +└── nixpkgs-vet/ # Nixpkgs validation +``` + +--- + +## File Descriptions + +### Core Files + +| File | Description | +|------|-------------| +| `code-quality.nix` | Nix expression defining code quality tool environment | +| `code-quality.sh` | Main script for running clang-format, linters, etc. | +| `default.nix` | Default Nix derivation entry point | + +### Configuration + +| File | Description | +|------|-------------| +| `pinned.json` | Pinned nixpkgs revision for reproducibility | +| `supportedSystems.json` | Build matrix (Linux, macOS, Windows) | +| `supportedVersions.nix` | Supported version compatibility matrix | +| `supportedBranches.js` | CI branch filtering rules | + +### Subdirectories + +| Directory | Purpose | +|-----------|---------| +| `codeowners-validator/` | Validates CODEOWNERS file format | +| `eval/` | Nix evaluation helpers for project validation | +| `github-script/` | JavaScript helpers for GitHub Actions | +| `nixpkgs-vet/` | Nixpkgs best practices validation | + +--- + +## Usage + +### Running Code Quality Checks + +```bash +# Using Nix +nix-shell ci/default.nix --run "./ci/code-quality.sh" + +# Or directly +./ci/code-quality.sh +``` + +### Updating Pinned Packages + +```bash +./ci/update-pinned.sh +``` + +--- + +## Integration + +These files are used by: + +- `ci-lint.yml` — Code quality workflow +- `ci-new.yml` — Main orchestrator +- `flake.nix` — Nix flake development shell + +--- + +## Related Documentation + +- [Workflows](./workflows.md) — GitHub Actions overview +- [CI Evaluation](./ptcieval.md) — Project validation +- [GitHub Scripts](./ptcigh.md) — Automation helpers +- [Nix Packaging](./nix.md) — Nix build system diff --git a/archived/projt-launcher/docs/handbook/cmark.md b/archived/projt-launcher/docs/handbook/cmark.md new file mode 100644 index 0000000000..7f9e1cf33e --- /dev/null +++ b/archived/projt-launcher/docs/handbook/cmark.md @@ -0,0 +1,179 @@ +# cmark `cmark/` + +> **Type**: Markdown Parser Library +> **License**: BSD-2-Clause (+ MIT for some components) +> **Fork Origin**: [GitHub](https://github.com/commonmark/cmark) +> **Status**: Detached Fork (independently maintained) +> **Specification**: [CommonMark](https://commonmark.org/) +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +`cmark` is the C reference implementation of [CommonMark](https://commonmark.org/), a strongly specified, highly compatible version of Markdown. It provides both a shared library (`libcmark`) and a standalone program for parsing and rendering CommonMark documents. + +ProjT Launcher maintains a fork of cmark for controlled integration, CI validation, and monorepo compatibility. + +--- + +## Usage in ProjT Launcher + +cmark is used for: + +- **Mod descriptions** — Rendering mod README files +- **News display** — Formatting launcher news and announcements +- **Instance notes** — User-created markdown notes +- **Wiki integration** — Processing documentation + +--- + +## Features + +| Feature | Status | +|---------|--------| +| CommonMark 0.31 compliant | ✅ | +| Streaming/iterating parser | ✅ | +| Safe HTML rendering | ✅ | +| UTF-8 support | ✅ | +| Multiple output formats | ✅ | +| Extensible architecture | ✅ | + +### Output Formats + +- HTML +- Groff man pages +- CommonMark (normalized) +- XML +- LaTeX + +--- + +## Build Instructions + +### Prerequisites + +- **CMake 3.12+** +- **C99 compiler** (GCC, Clang, MSVC) +- **Python 3.6+** (for tests) + +### Quick Build + +```bash +cd cmark +mkdir build && cd build +cmake .. -DCMAKE_BUILD_TYPE=Release +cmake --build . +ctest -V +``` + +### Build Options + +| Option | Description | Default | +|--------|-------------|---------| +| `CMARK_TESTS` | Build test suite | `ON` | +| `CMARK_SHARED` | Build shared library | `ON` | +| `CMARK_STATIC` | Build static library | `OFF` | +| `CMARK_LIB_FUZZER` | Build libFuzzer harness | `OFF` | + +--- + +## API Usage + +### Basic Example + +```c +#include <cmark.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +int main() { + const char *markdown = "# Hello World\n\nThis is **CommonMark**!"; + char *html = cmark_markdown_to_html(markdown, strlen(markdown), CMARK_OPT_DEFAULT); + printf("%s", html); + free(html); + return 0; +} +``` + +### Streaming Parser + +```c +#include <cmark.h> + +cmark_parser *parser = cmark_parser_new(CMARK_OPT_DEFAULT); +cmark_parser_feed(parser, chunk1, strlen(chunk1)); +cmark_parser_feed(parser, chunk2, strlen(chunk2)); +cmark_node *document = cmark_parser_finish(parser); + +char *html = cmark_render_html(document, CMARK_OPT_DEFAULT); + +cmark_node_free(document); +cmark_parser_free(parser); +free(html); +``` + +--- + +## Safety Features + +cmark is designed to be safe by default: + +- ✅ **No buffer overflows** — Extensively fuzzed +- ✅ **HTML sanitization** — Safe mode available +- ✅ **Memory safety** — No use-after-free bugs +- ✅ **Predictable output** — Spec-compliant behavior + +### Safe Rendering Options + +```c +// Use CMARK_OPT_SAFE to prevent raw HTML passthrough +char *html = cmark_markdown_to_html(md, len, CMARK_OPT_SAFE); +``` + +--- + +## Documentation + +| Resource | Location | +|----------|----------| +| API Reference | `cmark/src/cmark.h` | +| Man Page | `cmark/man/man3/cmark.3` | +| [Changelog](../../cmark/changelog.txt) | Upstream change history | +| CommonMark Spec | [spec.commonmark.org](https://spec.commonmark.org/) | + +--- + +## Copyright & Licensing + +``` +Copyright (c) 2014, John MacFarlane + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice. +2. Redistributions in binary form must reproduce the above copyright notice. + +THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY. +``` + +Full license: `cmark/COPYING` + +--- + +## Related Documentation + +- [toml++](./tomlplusplus.md) — TOML parser (similar use case) +- [libnbt++](./libnbtplusplus.md) — NBT format parser +- [Third-party Libraries](./third-party.md) — All dependencies + +--- + +## External Links + +- [cmark GitHub](https://github.com/commonmark/cmark) +- [CommonMark Specification](https://commonmark.org/) +- [CommonMark Dingus](https://spec.commonmark.org/dingus/) — Online tester +- [cmark-gfm](https://github.com/github/cmark-gfm) — GitHub's extended fork diff --git a/archived/projt-launcher/docs/handbook/extra-cmake-modules.md b/archived/projt-launcher/docs/handbook/extra-cmake-modules.md new file mode 100644 index 0000000000..43e175058d --- /dev/null +++ b/archived/projt-launcher/docs/handbook/extra-cmake-modules.md @@ -0,0 +1,67 @@ +# Extra CMake Modules `extra-cmake-modules/` + +> **Type**: CMake Module Collection +> **License**: BSD-3-Clause +> **Fork Origin**: [KDE ECM](https://api.kde.org/ecm/) +> **Status**: Detached Fork (independently maintained) +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +Extra CMake Modules (ECM) provides additional CMake modules beyond what CMake ships by default. This includes: + +- `find_package()` modules for common software +- Utility modules for common CMake tasks +- Toolchain files for cross-compilation +- Common build settings used by KDE software + +While ECM originates from the KDE project, it is useful for any CMake-based project. + +--- + +## Usage in ProjT Launcher + +ECM is used for: + +- **Qt integration** - Finding Qt components +- **Build utilities** - Common CMake patterns +- **Cross-platform support** - Toolchain configurations + +--- + +## Key Modules + +| Module | Purpose | +|--------|---------| +| `ECMQueryQt` | Query Qt installation details | +| `ECMInstallIcons` | Install icon themes | +| `ECMGenerateHeaders` | Generate forwarding headers | +| `ECMSetupVersion` | Configure project versioning | + +--- + +## Build Integration + +ECM is included as a subdirectory: + +```cmake +add_subdirectory(extra-cmake-modules) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/extra-cmake-modules/modules") +``` + +--- + +## Documentation + +- [ECM API Documentation](https://api.kde.org/ecm/) +- [KDE Community Wiki](https://community.kde.org/Policies/CMake_Coding_Style) +- [Original README](../../extra-cmake-modules/README.md) — Upstream library documentation + +--- + +## Related Documentation + +- [Third-party Libraries](./third-party.md) +- [Workflows](./workflows.md) diff --git a/archived/projt-launcher/docs/handbook/help-pages.md b/archived/projt-launcher/docs/handbook/help-pages.md new file mode 100644 index 0000000000..e263f39fac --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages.md @@ -0,0 +1,37 @@ +# ProjT Launcher Help Pages + +> **Player docs**: `docs/handbook/help-pages/` (copied from `website/projtlauncher/wiki/help-pages/`) +> **Assets**: `website/projtlauncher/img/screenshots/` (`/projtlauncher/img/screenshots/...`) +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +User-facing help articles for ProjT Launcher cover launcher settings, platform importers, and common instance workflows. The canonical copies now live in the handbook under `docs/handbook/help-pages/` so they can be built alongside the rest of the documentation. Content originated from the upstream Prism Launcher wiki but has been rebranded and rewired to local screenshot paths. + +--- + +## Content Map + +- **Settings**: `apis.md`, `launcher-settings.md`, `java-settings.md`, `java-wizard.md`, `language-settings.md`, `minecraft-settings.md`, `proxy-settings.md`, `notes.md`. +- **Instances & worlds**: `instance-copy.md`, `instance-version.md`, `worlds.md`, `screenshots-management.md`, `zip-import.md`. +- **Platforms/importers**: `vanilla-platform.md`, `mod-platform.md`, `modrinth-platform.md`, `ftb-platform.md`, `technic-platform.md`, `atl-platform.md`, `flame-platform.md`. +- **Mods/loaders**: `loader-mods.md` for selecting Fabric/Quilt/Forge/NeoForge components. +- **Automation & tools**: `custom-commands.md`, `environment-variables.md`, `tools.md`, and API key setup in `apis.md`. + +--- + +## Assets & Linking + +- Screenshots live in `website/projtlauncher/img/screenshots/` and are referenced as `/projtlauncher/img/screenshots/<file>.png`. +- Cross-page links target sibling handbook pages or existing getting-started docs (for example `../getting-started/installing-java/`). +- Several articles include `<!-- TODO: ... -->` placeholders for missing screenshots or descriptions (notably APIs, Launcher Settings, Minecraft Settings, Proxy Settings, Tools, Instance Version). + +--- + +## Editing / Porting Notes + +- Handbook copies do not use frontmatter; the first heading is injected if missing. +- Add or update screenshots in `website/projtlauncher/img/screenshots/` and keep paths consistent (`/projtlauncher/img/screenshots/<file>.png`). +- If updating the upstream wiki versions in `website/projtlauncher/wiki/help-pages/`, mirror the edits into `docs/handbook/help-pages/` so handbook builds stay in sync. diff --git a/archived/projt-launcher/docs/handbook/help-pages/apis.md b/archived/projt-launcher/docs/handbook/help-pages/apis.md new file mode 100644 index 0000000000..605807190c --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/apis.md @@ -0,0 +1,43 @@ +# APIs + +## Services + + + +### Pastebin Service + +<!-- TODO: add image of Pastebin Service section --> + +This is where you can choose which Paste Service to use. + +### Metadata Server + +<!-- TODO: add image of Metadata Server section --> + +This is where you can set where the launcher gets it metadata. + +## API Keys + + + +### Microsoft Authentication + +<!-- TODO: add image of Microsoft Authentication section --> + +Set this if you want to use your own client ID for Microsoft Authentication. + +### CurseForge Core API + +<!-- TODO: add image of CurseForge Core API section --> + +Set this if you want to use your own CurseForge API key. + +## Miscellaneous + + + +### User Agent + +<!-- TODO: add image of User Agent section --> + +Set this if you want to use a custom User Agent. diff --git a/archived/projt-launcher/docs/handbook/help-pages/atl-platform.md b/archived/projt-launcher/docs/handbook/help-pages/atl-platform.md new file mode 100644 index 0000000000..2dbf0f1aa7 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/atl-platform.md @@ -0,0 +1,5 @@ +# ATLauncher + + + +Here you can browse ATLauncher packs and install them. diff --git a/archived/projt-launcher/docs/handbook/help-pages/custom-commands.md b/archived/projt-launcher/docs/handbook/help-pages/custom-commands.md new file mode 100644 index 0000000000..ad53937859 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/custom-commands.md @@ -0,0 +1,16 @@ +# Custom Commands + + + +Pre-launch command runs before the instance launches and post-exit command runs after it exits. + +Both will be run in the launcher's working folder with extra environment variables: + +- $INST_NAME - Name of the instance +- $INST_ID - ID of the instance (its folder name) +- $INST_DIR - absolute path of the instance +- $INST_MC_DIR - absolute path of Minecraft +- $INST_JAVA - Java binary used for launch +- $INST_JAVA_ARGS - command-line parameters used for launch (warning: will not work correctly if arguments contain spaces) + +Wrapper command allows launching using an extra wrapper program (like 'optirun' on Linux) diff --git a/archived/projt-launcher/docs/handbook/help-pages/environment-variables.md b/archived/projt-launcher/docs/handbook/help-pages/environment-variables.md new file mode 100644 index 0000000000..736bd4b409 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/environment-variables.md @@ -0,0 +1,5 @@ +# Environment Variables + + + +Here you can add environment variables to be provided to the java runtime when launching the game. This can be useful for setting up specific configurations or debugging options. diff --git a/archived/projt-launcher/docs/handbook/help-pages/flame-platform.md b/archived/projt-launcher/docs/handbook/help-pages/flame-platform.md new file mode 100644 index 0000000000..192b9f74fb --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/flame-platform.md @@ -0,0 +1,7 @@ +# CurseForge + + + +Here you can browse CurseForge packs and install them. + +Note: Some modpacks may require the downloading of certain components via browser. diff --git a/archived/projt-launcher/docs/handbook/help-pages/ftb-platform.md b/archived/projt-launcher/docs/handbook/help-pages/ftb-platform.md new file mode 100644 index 0000000000..33d766946b --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/ftb-platform.md @@ -0,0 +1,7 @@ +# FTB + + + +Here you can browse FTB packs and install them. + +Note: Some modpacks may require the downloading of certain components via browser. diff --git a/archived/projt-launcher/docs/handbook/help-pages/index.md b/archived/projt-launcher/docs/handbook/help-pages/index.md new file mode 100644 index 0000000000..7f65ed3f35 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/index.md @@ -0,0 +1,39 @@ +# Help Pages + +Guides for ProjT Launcher settings, instance management, and mod platform importers. Content is adapted from the upstream Prism Launcher help pages with ProjT branding and local screenshots. + +## Settings + +- [Launcher Settings](./launcher-settings/) +- [Java Settings](./java-settings/) +- [Java Wizard](./java-wizard/) +- [Language Settings](./language-settings/) +- [Minecraft Settings](./minecraft-settings/) +- [Proxy Settings](./proxy-settings/) +- [Custom Commands](./custom-commands/) +- [Environment Variables](./environment-variables/) +- [APIs](./apis/) +- [External Tools](./tools/) +- [Notes](./notes/) + +## Instances + +- [Instance Version](./instance-version/) +- [Instance Copy](./instance-copy/) +- [Worlds](./worlds/) +- [Screenshots](./screenshots-management/) +- [Zip Import](./zip-import/) + +## Mods & Downloads + +- [Mods](./loader-mods/) +- [Mod Downloader](./mod-platform/) + +## Modpack Platforms + +- [Custom / Vanilla](./vanilla-platform/) +- [Modrinth](./modrinth-platform/) +- [CurseForge](./flame-platform/) +- [FTB](./ftb-platform/) +- [Technic](./technic-platform/) +- [ATLauncher](./atl-platform/) diff --git a/archived/projt-launcher/docs/handbook/help-pages/instance-copy.md b/archived/projt-launcher/docs/handbook/help-pages/instance-copy.md new file mode 100644 index 0000000000..1e334997e6 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/instance-copy.md @@ -0,0 +1,75 @@ +# Copy an Instance + +When you right click on an instance, you can choose to copy it. After selecting this option, you will see a new window. You can choose an icon, name and a group for the new instance. + + + +## Instance Copy Options + +This is where you can find options and copy settings for your new instance. + +### Keep play time + +This option will allow you to keep your playtime from your original instance, if this setting is enabled in Global Settings, see: [Game Time](../minecraft-settings/#game-time) + +### Copy saves + +This option allows you to copy all saved games from your original instance to your new one. + +### Copy game options + +This option allows you to copy all game settings, if you want your configuration to be cloned. + +### Copy resource packs + +This option allows you to copy all the resource packs to your new instance. + +### Copy screenshots + +This option allows you to copy all your screenshots to your new instance folder. + +### Copy shader packs + +This option allows you to copy all your shader packs to your new instance folder. + +### Copy servers + +This option allows you to copy all your servers to your new instance. You can find them in the multiplayer menu of your new instance. + +### Copy mods + +This option allows you to copy all your mods to your new instance folder. + +### Select all + +This option allows you to select all the precedent options. + +## Advanced Copy Options + +This is where you can set more advanced options, such as links or cloning. + +### Symbolic and Hard Link Options + +You can't use these options if your partition is on FAT filesystem. + +#### Use symbolic links + +This option will create a symbolic link between the two instances. + +#### Use hard links + +This option will create a hard link between the two instances. + +#### Link files recursively + +This option will link all files, instead of just the parent folder. + +#### Don't link saves + +This option will disable the link of the saves. The world saves will be copied instead. + +### CoW (Copy-on-Write) Options + +#### Clone instead of copying + +This option is only supported on APFS, BTRFS, BCACHEFS, REFS, XFS and ZFS filesystems. diff --git a/archived/projt-launcher/docs/handbook/help-pages/instance-version.md b/archived/projt-launcher/docs/handbook/help-pages/instance-version.md new file mode 100644 index 0000000000..c6d6f6eacb --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/instance-version.md @@ -0,0 +1,35 @@ +# Instance Version + + + +This page is for managing the core parts of the Instance. + +### Selection + +<!-- TODO: add image of Selection section --> + +Here you can change the version, change the load order and remove components. + +### Edit + +<!-- TODO: add image of Edit section --> + +This is for customizing the .json file that is used to load that component. + +### Install + +<!-- TODO: add image of Install section --> + +From here you can install loader mods. + +### Advanced + +<!-- TODO: add image of Advanced section --> + +This is for adding and replacing components that change the Minecraft.jar + +### Folder + +<!-- TODO: add image of Folder section --> + +This are shortcuts that open a specific folder. diff --git a/archived/projt-launcher/docs/handbook/help-pages/java-settings.md b/archived/projt-launcher/docs/handbook/help-pages/java-settings.md new file mode 100644 index 0000000000..2dd19d74b9 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/java-settings.md @@ -0,0 +1,40 @@ +# Java Settings + +### Java settings + +In this page you can set the global Java settings. + + + +## Memory + + + +Java memory settings. +NOTE: MORE RAM ALLOCATED DOESN'T MEAN BETTER PERFORMANCE! In fact, in most use cases (except you're playing big modpacks) 4GB of ram allocated should be more than enough + +## Java Runtime + + + +This is where the settings for the Java runtime live, like the location of the runtime and any Java arguments to use. + +For information about how to get a correct Java version, see: [Installing Java](../getting-started/installing-java/). + +**Auto-detect** will check your computer for all java versions and show you a list of them, the best one on top. + +**Test** can be used to test the selected Java runtime along with your memory settings and JVM arguments without starting the game. + +**Skip java compatibility checks** skips java compatibility checks at game launch + +**Autodetect Java version** (Recommended) sets the correct java version at game launch (only looks with managed (see below) java and will change the java path in instance settings) + +**Auto-download Mojang Java** (Recomnended) will automatically download needed the Java runtimes you need (needs the above setting to be on) + +## Java Management + + + +This is where you can download and remove the java that were installed by ProjT Launcher. + + diff --git a/archived/projt-launcher/docs/handbook/help-pages/java-wizard.md b/archived/projt-launcher/docs/handbook/help-pages/java-wizard.md new file mode 100644 index 0000000000..76096ee8f1 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/java-wizard.md @@ -0,0 +1,11 @@ +# Java Wizard + + + +In this page you can set the global Java settings. + +For more information on how to manually download and install Java check the documentation [found here](../getting-started/installing-java/). + +For more information about each Java setting check the documentation [found here](../java-settings/). + +We recommend that new users enable both the Autodetect and Auto-download Java features, in order not to need to manually set up their java path for each instance. diff --git a/archived/projt-launcher/docs/handbook/help-pages/language-settings.md b/archived/projt-launcher/docs/handbook/help-pages/language-settings.md new file mode 100644 index 0000000000..e024a889b6 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/language-settings.md @@ -0,0 +1,5 @@ +# Language Settings + + + +In this Page, you can select the language ProjT Launcher should use. diff --git a/archived/projt-launcher/docs/handbook/help-pages/launcher-settings.md b/archived/projt-launcher/docs/handbook/help-pages/launcher-settings.md new file mode 100644 index 0000000000..781f71faec --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/launcher-settings.md @@ -0,0 +1,61 @@ +# Launcher Settings + +## Features + + + +### Folders + +<!-- TODO: add image of folder section --> + +This is where you can set the location for the Instances, Mods & Icons folders. + +### Mods + +<!-- TODO: add image of mods section --> + +Disable the usage of metadata provided by Modrinth and CurseForge for mods. + +## User Interface + + + +### Instance view sorting mode + +<!-- TODO: add image of Instance view sorting mode section --> + +How the instances should be sorted. + +### Theme + +<!-- TODO: add image of Theme section --> + +This is where you can choose which Icon Theme, Color Theme or Background Cat you want. + +### Tools + +<!-- TODO: add image of Tools section --> + +This is where you can choose if you want a menubar or toolbar. + +## Console + + + +### Console Settings + +<!-- TODO: add image of Console Settings section --> + +This is where you set when the log window should appear. + +### History limit + +<!-- TODO: add image of History limit section --> + +This is where you set if you want to limit the log length and by how much. + +### Console font + +<!-- TODO: add image of Console font section --> + +This is where you can change the font and font size of the log. diff --git a/archived/projt-launcher/docs/handbook/help-pages/loader-mods.md b/archived/projt-launcher/docs/handbook/help-pages/loader-mods.md new file mode 100644 index 0000000000..92a4e9dbaa --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/loader-mods.md @@ -0,0 +1,9 @@ +# Mods + + + +This page reflects the contents of the instance's mods folder and is used for mods that loaders like Forge, Fabric, NeoForge, Quilt and LiteLoader can read and add to the game. Unlike an ordinary file explorer, it also shows details about the mods like version and name. + +You can drag and drop more mods into the view, just like any other folder. The mods also have a checkbox next to them, which allows you to temporarily disable them. + +Clicking "Download Mods" you can download mods from Modrinth and CurseForge. diff --git a/archived/projt-launcher/docs/handbook/help-pages/minecraft-settings.md b/archived/projt-launcher/docs/handbook/help-pages/minecraft-settings.md new file mode 100644 index 0000000000..f35a71b51f --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/minecraft-settings.md @@ -0,0 +1,35 @@ +# Minecraft Settings + + + +### Window Size + +<!-- TODO: add image of Window Size section --> + +This is where you set the Window size and if it should be maximized\*. + +\*Only works on 1.5.2 and older + +### Native library workarounds + +<!-- TODO: add image of Native library workarounds section --> + +Enable the usage of system libraries instead of the included ones. + +### Performance + +<!-- TODO: add image of Performance section --> + +Enable some external tools related to performance. + +### Game time + +<!-- TODO: add image of Game time section --> + +Set if you want to record play time and which to show. + +### Miscellaneous + +<!-- TODO: add image of Miscellaneous section --> + +Set when you want to close or quit the launcher. diff --git a/archived/projt-launcher/docs/handbook/help-pages/mod-platform.md b/archived/projt-launcher/docs/handbook/help-pages/mod-platform.md new file mode 100644 index 0000000000..9376e9d7cd --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/mod-platform.md @@ -0,0 +1,15 @@ +# Mod Downloader + + + +In this page, you can download mods from Modrinth and CurseForge. + +On the left, you can choose the mod provider. + +Clicking "Select mod for Download" selects the mod to be downloaded. + +Clicking "Filter options" you can choose how strict the filters will be. + +Clicking "Cancel" returns to the previous page. + +Clicking "OK" allows you to see the mods you have decided to download and to download them. diff --git a/archived/projt-launcher/docs/handbook/help-pages/modrinth-platform.md b/archived/projt-launcher/docs/handbook/help-pages/modrinth-platform.md new file mode 100644 index 0000000000..7ecc0e6695 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/modrinth-platform.md @@ -0,0 +1,5 @@ +# Modrinth + + + +Here you can browse Modrinth packs and install them. diff --git a/archived/projt-launcher/docs/handbook/help-pages/notes.md b/archived/projt-launcher/docs/handbook/help-pages/notes.md new file mode 100644 index 0000000000..3ac837e64d --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/notes.md @@ -0,0 +1,5 @@ +# Notes + + + +Here you can write some notes about your instance in plain text. diff --git a/archived/projt-launcher/docs/handbook/help-pages/proxy-settings.md b/archived/projt-launcher/docs/handbook/help-pages/proxy-settings.md new file mode 100644 index 0000000000..410b77560d --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/proxy-settings.md @@ -0,0 +1,21 @@ +# Proxy Settings + + + +### Type + +<!-- TODO: add image of Type section --> + +This is where you choose if and what type of proxy you want to use. + +### Address and Port + +<!-- TODO: add image of Address and Port section --> + +This is where you can set the Address and Port of your proxy server. + +### Authentication + +<!-- TODO: add image of Authentication section --> + +This is where you fill in the login details of your proxy. diff --git a/archived/projt-launcher/docs/handbook/help-pages/screenshots-management.md b/archived/projt-launcher/docs/handbook/help-pages/screenshots-management.md new file mode 100644 index 0000000000..0458eed9da --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/screenshots-management.md @@ -0,0 +1,5 @@ +# Screenshots + + + +Here you can rename, deleted, copy and upload you in game screenshots. diff --git a/archived/projt-launcher/docs/handbook/help-pages/technic-platform.md b/archived/projt-launcher/docs/handbook/help-pages/technic-platform.md new file mode 100644 index 0000000000..e7fa9caea2 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/technic-platform.md @@ -0,0 +1,5 @@ +# Technic + + + +Here you can browse Technic packs and install them. diff --git a/archived/projt-launcher/docs/handbook/help-pages/tools.md b/archived/projt-launcher/docs/handbook/help-pages/tools.md new file mode 100644 index 0000000000..12c1330cdf --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/tools.md @@ -0,0 +1,29 @@ +# External Tools + + + +<!-- TODO: add description of what each tool does --> + +### JProfiler + +<!-- TODO: add image of JProfiler section --> + +This is where you set to path to your JProfiler executable. + +### JVisualVM + +<!-- TODO: add image of JVisualVM section --> + +This is where you set to path to your JVisualVM executable. + +### MCEdit + +<!-- TODO: add image of MCEdit section --> + +This is where you set to path to your MCEdit executable. + +### External Editors + +<!-- TODO: add image of External Editors section --> + +This is where you set to path to your text editor of choice or leave it blank to use the systems default one. diff --git a/archived/projt-launcher/docs/handbook/help-pages/vanilla-platform.md b/archived/projt-launcher/docs/handbook/help-pages/vanilla-platform.md new file mode 100644 index 0000000000..aa5ce61885 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/vanilla-platform.md @@ -0,0 +1,5 @@ +# Custom / Vanilla + + + +This is where you can choose which minecraft version you want to play with and what mod loader to install. diff --git a/archived/projt-launcher/docs/handbook/help-pages/worlds.md b/archived/projt-launcher/docs/handbook/help-pages/worlds.md new file mode 100644 index 0000000000..cad69f14cc --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/worlds.md @@ -0,0 +1,5 @@ +# Worlds + + + +Here you can do some basic management of your worlds that you have in that Instance. diff --git a/archived/projt-launcher/docs/handbook/help-pages/zip-import.md b/archived/projt-launcher/docs/handbook/help-pages/zip-import.md new file mode 100644 index 0000000000..0078179896 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/help-pages/zip-import.md @@ -0,0 +1,5 @@ +# Zip Import + + + +Here you can import modpacks from a zip or mrpack file either from a website or from your filesystem. diff --git a/archived/projt-launcher/docs/handbook/images.md b/archived/projt-launcher/docs/handbook/images.md new file mode 100644 index 0000000000..24cad7dd46 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/images.md @@ -0,0 +1,66 @@ +# CI Docker Images + +> **Purpose**: Minimal Qt build images for CI testing +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +These are minimal Docker images containing Qt built from source with specific options for CI testing purposes. + +--- + +## Why Custom Images? + +The standard `jurplel/install-qt-action` downloads pre-built Qt binaries, but: + +- ❌ Does not support all build options +- ❌ Cannot test `-qt-zlib` builds +- ❌ Limited configuration options + +Our custom images provide: + +- ✅ Qt built with `-qt-zlib` option +- ✅ Testing `QUAZIP_USE_QT_ZLIB=ON` builds +- ✅ Full control over Qt configuration + +--- + +## Available Images + +| Image | Qt Version | Platform | +|-------|------------|----------| +| `qt-minimal-linux` | Qt 6.x | Ubuntu | +| `qt-minimal-static` | Qt 6.x (static) | Ubuntu | + +--- + +## Usage in CI + +```yaml +jobs: + test: + runs-on: ubuntu-latest + container: ghcr.io/project-tick/qt-minimal-linux:latest + steps: + - uses: actions/checkout@v4 + - run: cmake -B build -DQUAZIP_USE_QT_ZLIB=ON + - run: cmake --build build +``` + +--- + +## Building Images + +```bash +cd ci/images +docker build -t qt-minimal-linux -f Dockerfile.linux . +``` + +--- + +## Related Documentation + +- [Workflows](./workflows.md) — CI overview +- [QuaZip](./quazip.md) — Uses these images for testing diff --git a/archived/projt-launcher/docs/handbook/javacheck.md b/archived/projt-launcher/docs/handbook/javacheck.md new file mode 100644 index 0000000000..bed3279bc3 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/javacheck.md @@ -0,0 +1,86 @@ +# JavaCheck `javacheck/` + +> **Location**: `javacheck/` +> **Language**: Java +> **Purpose**: Java runtime property detection +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +JavaCheck is a minimal Java program that prints system properties. It's used by ProjT Launcher to detect and validate Java installations. + +--- + +## How It Works + +``` +┌─────────────────┐ ┌─────────────┐ ┌──────────────┐ +│ ProjT Launcher │────▶│ JavaCheck │────▶│ stdout │ +│ (C++) │ │ (Java) │ │ properties │ +└─────────────────┘ └─────────────┘ └──────────────┘ +``` + +### Execution + +```bash +java -jar javacheck.jar java.version java.home os.arch +``` + +### Output + +``` +java.version=17.0.9 +java.home=/usr/lib/jvm/java-17-openjdk +os.arch=amd64 +``` + +--- + +## Properties Checked + +| Property | Description | +|----------|-------------| +| `java.version` | Java version string | +| `java.home` | JRE installation path | +| `os.arch` | System architecture | +| `java.vendor` | JVM vendor | +| `java.vm.name` | JVM implementation | + +--- + +## Exit Codes + +| Code | Meaning | +|------|---------| +| 0 | All properties found | +| 1 | One or more properties null | + +--- + +## Usage in Launcher + +ProjT Launcher uses JavaCheck to: + +1. **Validate Java installations** — Ensure Java is working +2. **Detect version** — Choose correct Java for Minecraft version +3. **Get architecture** — Match 32/64-bit requirements +4. **Auto-detect Java** — Find installed JREs/JDKs + +--- + +## Building + +```bash +cd javacheck +javac JavaCheck.java +jar cfe javacheck.jar JavaCheck JavaCheck.class +``` + +--- + +## Related Documentation + +- [LauncherJava](./launcherjava.md) — Launch component +- [Program Info](./program_info.md) — Application config diff --git a/archived/projt-launcher/docs/handbook/launcherjava.md b/archived/projt-launcher/docs/handbook/launcherjava.md new file mode 100644 index 0000000000..0ce795e4b8 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/launcherjava.md @@ -0,0 +1,142 @@ +# LauncherJava `launcherjava/` + +> **Location**: `launcherjava/` +> **Language**: Java +> **Purpose**: Minecraft launching component +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +LauncherJava is the Java-based component responsible for actually launching Minecraft. It acts as an intermediary between the C++ launcher and the Minecraft JVM process. + +--- + +## How It Works + +``` +┌─────────────┐ ┌──────────────┐ ┌─────────────┐ +│ ProjT │────▶│ LauncherJava │────▶│ Minecraft │ +│ Launcher │ │ (Java) │ │ JVM │ +│ (C++) │ │ │ │ │ +└─────────────┘ └──────────────┘ └─────────────┘ + │ │ + │ stdin │ exec + │ (script) │ (launch) + ▼ ▼ +``` + +### Launch Sequence + +1. C++ launcher sends launch script via stdin +2. LauncherJava parses the script +3. Waits for `launcher` command +4. Executes Minecraft with configured parameters + +--- + +## Launch Script Format + +The launcher communicates via a text-based protocol: + +```text +mod legacyjavafixer-1.0 +mainClass net.minecraft.launchwrapper.Launch +param --username +param PlayerName +param --version +param ProjT Launcher +param --gameDir +param /path/to/minecraft +param --assetsDir +param /path/to/assets +param --assetIndex +param 1.20.4 +param --uuid +param xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +param --accessToken +param [TOKEN] +param --userType +param msa +windowTitle ProjT Launcher: Instance Name +windowParams 854x480 +userName PlayerName +sessionId token:[TOKEN]:[UUID] +launcher standard +``` + +### Commands + +| Command | Description | +|---------|-------------| +| `mod <name>` | Load a mod (tweaker) | +| `mainClass <class>` | Set main class | +| `param <value>` | Add launch parameter | +| `windowTitle <title>` | Set window title | +| `windowParams <WxH>` | Set window size | +| `userName <name>` | Player username | +| `sessionId <id>` | Session identifier | +| `launcher <type>` | Execute launch | +| `abort` | Cancel launch | + +--- + +## Launcher Types + +| Type | Use Case | +|------|----------| +| `standard` | All Minecraft versions (recommended) | +| `legacy` | Minecraft < 1.6 (deprecated) | + +### Differences + +- **Standard**: Universal launcher, works with all versions +- **Legacy**: Supports custom window icon/title but only for old versions + +--- + +## Building + +LauncherJava is built as part of the main CMake build: + +```bash +# Built automatically with main project +cmake --build build + +# Or build separately +cd launcherjava +./gradlew build +``` + +--- + +## Debugging + +### Enable Debug Output + +```text +debug on +mainClass ... +``` + +### Attach Profiler + +Since LauncherJava waits for the `launcher` command, you can: + +1. Start LauncherJava +2. Attach your profiler (VisualVM, JProfiler, etc.) +3. Send the `launcher` command + +--- + +## License + +Available under **GPL-3.0** (with classpath exception), sublicensed from its original **Apache-2.0** codebase. + +--- + +## Related Documentation + +- [Program Info](./program_info.md) — Application identity +- [JavaCheck](./javacheck.md) — Java detection diff --git a/archived/projt-launcher/docs/handbook/libnbtplusplus.md b/archived/projt-launcher/docs/handbook/libnbtplusplus.md new file mode 100644 index 0000000000..e07ace9374 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/libnbtplusplus.md @@ -0,0 +1,188 @@ +# libnbt++ `libnbtplusplus/` + +> **Type**: NBT Format Library +> **License**: LGPL-3.0 +> **Fork Origin**: [GitHub](https://github.com/PrismLauncher/libnbtplusplus) +> **Status**: Detached Fork (independently maintained) +> **Format**: Minecraft Named Binary Tag +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +libnbt++ is a free C++ library for Minecraft's Named Binary Tag (NBT) file format. It can read and write compressed and uncompressed NBT files and provides a code interface for working with NBT data. + +### Version History + +- **libnbt++ 1** — Original library (deprecated) +- **libnbt++ 2** — Rewritten with cleaner API (deprecated) +- **libnbt++ 3** — Current version used by ProjT Launcher + +--- + +## Usage in ProjT Launcher + +libnbt++ is used for: + +- **World data** — Reading level.dat and player data +- **Server data** — Parsing server.dat files +- **Mod integration** — Processing NBT-based configurations +- **Backup/export** — Instance data serialization + +--- + +## Features + +| Feature | Status | +|---------|--------| +| NBT reading | ✅ | +| NBT writing | ✅ | +| GZip compression | ✅ | +| Zlib compression | ✅ | +| Big-endian support | ✅ | +| Little-endian (Bedrock) | ⚠️ Limited | + +### Supported Tag Types + +| Type ID | Tag Name | C++ Type | +|---------|----------|----------| +| 0 | TAG_End | — | +| 1 | TAG_Byte | `int8_t` | +| 2 | TAG_Short | `int16_t` | +| 3 | TAG_Int | `int32_t` | +| 4 | TAG_Long | `int64_t` | +| 5 | TAG_Float | `float` | +| 6 | TAG_Double | `double` | +| 7 | TAG_Byte_Array | `std::vector<int8_t>` | +| 8 | TAG_String | `std::string` | +| 9 | TAG_List | `nbt::tag_list` | +| 10 | TAG_Compound | `nbt::tag_compound` | +| 11 | TAG_Int_Array | `std::vector<int32_t>` | +| 12 | TAG_Long_Array | `std::vector<int64_t>` | + +--- + +## Build Instructions + +### Prerequisites + +- C++11 compatible compiler +- CMake 3.15 or later +- ZLIB (optional, for compression support) + +### Build Steps + +```bash +cd libnbtplusplus +mkdir build && cd build +cmake .. +cmake --build . +``` + +### CMake Options + +| Option | Description | Default | +|--------|-------------|---------| +| `NBT_BUILD_SHARED` | Build shared library | `OFF` | +| `NBT_USE_ZLIB` | Enable zlib support | `ON` | +| `NBT_BUILD_TESTS` | Build tests | `ON` | + +--- + +## API Usage + +### Reading NBT + +```cpp +#include <nbt_tags.h> +#include <io/stream_reader.h> +#include <fstream> + +std::ifstream file("level.dat", std::ios::binary); +nbt::io::stream_reader reader(file, endian::big); + +// Read compound tag +auto result = reader.read_compound(); +nbt::tag_compound& root = result.first; +std::string name = result.second; + +// Access data +auto& level = root["Data"].as<nbt::tag_compound>(); +std::string levelName = level["LevelName"].as<nbt::tag_string>(); +int32_t gameType = level["GameType"].as<nbt::tag_int>(); +``` + +### Writing NBT + +{% raw %} +```cpp +#include <nbt_tags.h> +#include <io/stream_writer.h> +#include <fstream> + +nbt::tag_compound data; +data["LevelName"] = nbt::tag_string("My World"); +data["GameType"] = nbt::tag_int(0); // Survival + +std::ofstream file("level.dat", std::ios::binary); +nbt::io::stream_writer writer(file, endian::big); +writer.write_tag("", nbt::tag_compound{{"Data", std::move(data)}}); +``` +{% endraw %} + +### Working with Lists + +```cpp +// Create a list of strings +nbt::tag_list items(nbt::tag_type::String); +items.push_back(nbt::tag_string("item1")); +items.push_back(nbt::tag_string("item2")); + +// Access list +for (const auto& item : root["Items"].as<nbt::tag_list>()) { + std::cout << item.as<nbt::tag_string>().get() << std::endl; +} +``` + +--- + +## Testing + +```bash +cd libnbtplusplus/build +ctest -V +``` + +--- + +## Documentation + +| Resource | Location | +|----------|----------| +| API Headers | `libnbtplusplus/include/` | +| Tests | `libnbtplusplus/test/` | +| License | `libnbtplusplus/COPYING`, `libnbtplusplus/COPYING.LESSER` | +| Upstream Wiki | [GitHub Wiki](https://github.com/PrismLauncher/libnbtplusplus/wiki) | + +--- + +## Copyright & Licensing + +Full license: `libnbtplusplus/COPYING` + +--- + +## Related Documentation + +- [toml++](./tomlplusplus.md) — TOML configuration parser +- [cmark](./cmark.md) — Markdown parser +- [Third-party Libraries](./third-party.md) — All dependencies + +--- + +## External Links + +- [libnbt++ GitHub](https://github.com/PrismLauncher/libnbtplusplus) +- [NBT Format Wiki](https://minecraft.wiki/w/NBT_format) +- [Minecraft Data Files](https://minecraft.wiki/w/Data_file) diff --git a/archived/projt-launcher/docs/handbook/libqrencode.md b/archived/projt-launcher/docs/handbook/libqrencode.md new file mode 100644 index 0000000000..81682b4aa8 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/libqrencode.md @@ -0,0 +1,221 @@ +# libqrencode `libqrencode/` + +> **Type**: QR Code Generation Library +> **License**: LGPL-2.1-or-later +> **Fork Origin**: [GitHub](https://github.com/fukuchi/libqrencode) +> **Status**: Detached Fork (independently maintained) +> **Standards**: ISO/IEC 18004:2015 +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +libqrencode is a fast and compact library for encoding data into a QR Code symbol. It supports the full range of QR Code functionality as defined by the ISO standard. + +ProjT Launcher maintains a fork of libqrencode for controlled integration and monorepo CI compatibility. + +--- + +## Usage in ProjT Launcher + +libqrencode is used for: + +- **Account linking** — Microsoft account QR authentication +- **Share URLs** — Quick sharing of instance/mod links +- **Export/Import** — Instance configuration sharing + +--- + +## Features + +| Feature | Status | +|---------|--------| +| QR Code Model 1 & 2 | ✅ | +| Micro QR Code | ✅ | +| All error correction levels | ✅ | +| Structured append | ✅ | +| 8-bit byte mode | ✅ | +| Kanji mode | ✅ | +| ECI mode | ✅ | + +### Error Correction Levels + +| Level | Recovery | Use Case | +|-------|----------|----------| +| L | ~7% | High density | +| M | ~15% | Standard (default) | +| Q | ~25% | Industrial | +| H | ~30% | Critical data | + +--- + +## Build Instructions + +### Prerequisites + +- **CMake 3.10+** or **Autotools** +- **C99 compiler** (GCC, Clang, MSVC) +- **libpng** (optional, for PNG output) + +### CMake Build + +```bash +cd libqrencode +mkdir build && cd build +cmake .. -DCMAKE_BUILD_TYPE=Release +cmake --build . +ctest -V +``` + +### Autotools Build + +```bash +cd libqrencode +./autogen.sh +./configure +make +make check +``` + +### CMake Options + +| Option | Description | Default | +|--------|-------------|---------| +| `WITH_TOOLS` | Build qrencode CLI tool | `ON` | +| `WITH_PNG` | Enable PNG support | `ON` | +| `WITH_TESTS` | Build test suite | `ON` | +| `BUILD_SHARED_LIBS` | Build shared library | `ON` | + +--- + +## API Usage + +### Basic Example + +```c +#include <qrencode.h> +#include <stdio.h> + +int main() { + QRcode *qr = QRcode_encodeString("https://projecttick.org", + 0, // Version (0 = auto) + QR_ECLEVEL_M, // Error correction + QR_MODE_8, // Encoding mode + 1); // Case sensitive + + if (qr == NULL) { + fprintf(stderr, "Failed to encode\n"); + return 1; + } + + // Access the QR code data + printf("Version: %d\n", qr->version); + printf("Width: %d\n", qr->width); + + // qr->data contains the QR code matrix + // Each byte: bit 0 = module (1=black, 0=white) + + QRcode_free(qr); + return 0; +} +``` + +### Structured Append (Large Data) + +```c +// Split data across multiple QR codes +QRcode_List *list = QRcode_encodeStringStructured( + large_data, 0, QR_ECLEVEL_M, QR_MODE_8, 1); + +for (QRcode_List *entry = list; entry != NULL; entry = entry->next) { + // Process each QR code in sequence + process_qrcode(entry->code); +} + +QRcode_List_free(list); +``` + +--- + +## Command Line Tool + +The `qrencode` CLI tool creates QR code images: + +```bash +# Generate PNG +qrencode -o output.png "Hello World" + +# Generate SVG +qrencode -t SVG -o output.svg "https://projecttick.org" + +# Generate ASCII art +qrencode -t ASCII "Hello World" + +# Specify error correction level +qrencode -l H -o secure.png "Sensitive Data" +``` + +### Output Formats + +- PNG (requires libpng) +- EPS +- SVG +- ANSI terminal +- ASCII art +- UTF-8 terminal + +--- + +## Documentation + +| Resource | Location | +|----------|----------| +| API Reference | `libqrencode/qrencode.h` | +| Man Page | `libqrencode/qrencode.1.in` | +| [Original README](../../libqrencode/README.md) | Upstream library documentation | + +--- + +## Testing + +```bash +cd libqrencode/build +ctest -V + +# Or with autotools +cd libqrencode +make check +``` + +See [ci-libqrencode.yml](../../.github/workflows/ci-libqrencode.yml) for CI configuration. + +--- + +## Copyright & Licensing + +``` +Copyright (C) 2006-2017 Kentaro Fukuchi <kentaro@fukuchi.org> + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. +``` + +Full license: `libqrencode/COPYING` + +--- + +## Related Documentation + +- [Third-party Libraries](./third-party.md) — All dependencies + +--- + +## External Links + +- [libqrencode GitHub](https://github.com/fukuchi/libqrencode) +- [ISO/IEC 18004](https://www.iso.org/standard/62021.html) — QR Code standard +- [QR Code Wikipedia](https://en.wikipedia.org/wiki/QR_code) +- [ZXing](https://github.com/zxing/zxing) — QR Code reading library diff --git a/archived/projt-launcher/docs/handbook/linux-packaging.md b/archived/projt-launcher/docs/handbook/linux-packaging.md new file mode 100644 index 0000000000..728034683f --- /dev/null +++ b/archived/projt-launcher/docs/handbook/linux-packaging.md @@ -0,0 +1,121 @@ +# Linux Packaging + +> **Location**: `docs/packaging/os-specific/linux/` +> **Platforms**: Nix, Flatpak, distribution packages +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +ProjT Launcher supports multiple Linux packaging formats to reach different user bases and distribution requirements. + +--- + +## Packaging Formats + +### Nix / NixOS + +The recommended method for reproducible builds. + +**Location**: `nix/`, `flake.nix` + +```sh +# Build +nix build .#projtlauncher + +# Run without installing +nix run .#projtlauncher + +# Development shell +nix develop +``` + +See [nix.md](./nix.md) for detailed instructions. + +### Flatpak + +Sandboxed application format. + +**Location**: `docs/packaging/os-specific/linux/flathub/` + +The Flatpak manifest is maintained separately for Flathub submission. + +### Distribution Packages + +ProjT Launcher is packaged for various distributions: + +| Distribution | Package | Status | +|--------------|---------|--------| +| Arch Linux (AUR) | `projtlauncher` | Community | +| Fedora COPR | `projtlauncher` | Community | +| openSUSE OBS | `projtlauncher` | Community | + +Check [Repology](https://repology.org/project/projtlauncher/versions) for current availability. + +--- + +## Building for Distribution + +### Requirements + +- CMake 3.22+ +- Qt 6.x +- C++20 compiler +- Ninja (recommended) + +### Build Commands + +```sh +cmake -B build \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DLauncher_BUILD_PLATFORM=linux +cmake --build build +DESTDIR="$pkgdir" cmake --install build +``` + +### Platform Identifier + +Set `Launcher_BUILD_PLATFORM` to identify your distribution: + +```cmake +-DLauncher_BUILD_PLATFORM=archlinux +-DLauncher_BUILD_PLATFORM=fedora +-DLauncher_BUILD_PLATFORM=flatpak +``` + +--- + +## Desktop Integration + +### Desktop File + +Installed to `/usr/share/applications/`: + +``` +org.projecttick.ProjTLauncher.desktop +``` + +### Icon + +Installed to `/usr/share/icons/hicolor/`: + +``` +org.projecttick.ProjTLauncher.svg +``` + +### AppStream Metadata + +Installed to `/usr/share/metainfo/`: + +``` +org.projecttick.ProjTLauncher.metainfo.xml +``` + +--- + +## Related Documentation + +- [Nix Packaging](./nix.md) +- [Program Info](./program_info.md) - Branding configuration diff --git a/archived/projt-launcher/docs/handbook/nix.md b/archived/projt-launcher/docs/handbook/nix.md new file mode 100644 index 0000000000..5223b582e5 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/nix.md @@ -0,0 +1,212 @@ +# Nix Packaging `nix/` + +> **Location**: `nix/`, `flake.nix`, `shell.nix`, `default.nix` +> **Platform**: NixOS, Nix package manager +> **Purpose**: Reproducible builds and packaging +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +ProjT Launcher provides first-class Nix support for reproducible builds, development environments, and packaging. Both Flakes and traditional Nix expressions are supported. + +--- + +## Quick Start + +### Run Without Installing + +```bash +nix run github:Project-Tick/ProjT-Launcher +``` + +### Install via Flakes + +```bash +nix profile install github:Project-Tick/ProjT-Launcher +``` + +### Development Shell + +```bash +# With Flakes +nix develop github:Project-Tick/ProjT-Launcher + +# Traditional +nix-shell +``` + +--- + +## Binary Cache + +We use Cachix for pre-built binaries. Add to avoid rebuilds: + +<!-- ### NixOS Configuration + +```nix +{ + nix.settings = { + trusted-substituters = [ "https://cache.projecttick.org" ]; + trusted-public-keys = [ + "cache.projecttick.org-1:HrpR1buYLhqx0ooS1rMgyHChoYf+faZm82hsIY6JS+s=" + ]; + }; +} +``` --> + +### Flakes (Temporary) + +```bash +nix run github:Project-Tick/ProjT-Launcher --accept-flake-config +``` + +--- + +## Installation Methods + +### Flakes (Recommended) + +```nix +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + projtlauncher.url = "github:Project-Tick/ProjT-Launcher"; + }; + + outputs = { nixpkgs, projtlauncher, ... }: { + nixosConfigurations.myhost = nixpkgs.lib.nixosSystem { + modules = [ + ({ pkgs, ... }: { + environment.systemPackages = [ + projtlauncher.packages.${pkgs.system}.projtlauncher + ]; + }) + ]; + }; + }; +} +``` + +### Using Overlay + +```nix +{ + nixpkgs.overlays = [ projtlauncher.overlays.default ]; + environment.systemPackages = [ pkgs.projtlauncher ]; +} +``` + +### Traditional Nix (No Flakes) + +```nix +{ pkgs, ... }: +{ + environment.systemPackages = [ + (import (builtins.fetchTarball + "https://github.com/Project-Tick/ProjT-Launcher/archive/develop.tar.gz" + )).packages.${pkgs.system}.projtlauncher + ]; +} +``` + +--- + +## Package Variants + +| Package | Description | +|---------|-------------| +| `projtlauncher` | Fully wrapped with runtime dependencies | +| `projtlauncher-unwrapped` | Minimal build for customization | + +### Customization Options + +The wrapped package accepts these overrides: + +| Option | Default | Description | +|--------|---------|-------------| +| `additionalLibs` | `[]` | Extra `LD_LIBRARY_PATH` entries | +| `additionalPrograms` | `[]` | Extra `PATH` entries | +| `controllerSupport` | `isLinux` | Game controller support | +| `gamemodeSupport` | `isLinux` | Feral GameMode integration | +| `jdks` | `[jdk21 jdk17 jdk8]` | Available Java runtimes | +| `msaClientID` | `null` | Microsoft Auth client ID | +| `textToSpeechSupport` | `isLinux` | TTS support | + +### Example Override + +```nix +projtlauncher.override { + jdks = [ pkgs.jdk21 pkgs.jdk17 ]; + gamemodeSupport = false; +} +``` + +--- + +## Development + +### Enter Development Shell + +```bash +nix develop +# or +nix-shell +``` + +### Build Locally + +```bash +nix build .#projtlauncher +./result/bin/projtlauncher +``` + +--- + +## File Structure + +``` +├── flake.nix # Flake definition +├── flake.lock # Locked dependencies +├── default.nix # Flake-compat entry +├── shell.nix # Development shell +└── nix/ + ├── default.nix # Package derivation + └── ... +``` + +--- + +## Troubleshooting + +### Binary Cache Not Working + +Ensure the cache is in `trusted-substituters` (requires root): + +```bash +sudo nix-channel --update +``` + +### Build Failures + +Try with fresh nixpkgs: + +```bash +nix build --override-input nixpkgs github:NixOS/nixpkgs/nixos-unstable +``` + +--- + +## Related Documentation + +- [CI Support](./ci_support.md) — CI Nix integration +- [CI Evaluation](./ptcieval.md) — Nix-based validation + +--- + +## External Links + +- [Nix Manual](https://nixos.org/manual/nix/stable/) +- [NixOS Wiki: ProjT Launcher](https://wiki.nixos.org/wiki/ProjT_Launcher) +- [Cachix](https://cachix.org/) diff --git a/archived/projt-launcher/docs/handbook/program_info.md b/archived/projt-launcher/docs/handbook/program_info.md new file mode 100644 index 0000000000..4a861ef0c1 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/program_info.md @@ -0,0 +1,65 @@ +# Program Info `program_info/` + +> **Location**: `program_info/` +> **Purpose**: Application branding and configuration +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +The `program_info/` directory contains ProjT Launcher's program information, including application identity, branding assets, and configuration endpoints. + +--- + +## Contents + +### Application Identity + +| Item | Description | +|------|-------------| +| Application Name | ProjT Launcher | +| Application ID | `org.projecttick.projtlauncher` | +| Organization | Project Tick | + +### Branding + +| Asset | Purpose | +|-------|---------| +| Logo | Application icon | +| Banner | Promotional graphics | +| Screenshots | Store/website images | + +### Endpoints + +| Endpoint | Purpose | +|----------|---------| +| Update URL | Auto-update checks | +| News API | Launcher news feed | +| Analytics | Usage statistics (optional) | + +### Desktop Integration + +| File | Platform | +|------|----------| +| `.desktop` file | Linux | +| `Info.plist` template | macOS | +| Resource files | Windows | + +--- + +## Customization + +When building a custom fork: + +1. Update application name and ID +2. Replace branding assets +3. Configure custom endpoints +4. Update desktop integration files + +--- + +## Related Documentation + +- [LauncherJava](./launcherjava.md) — Java component +- [JavaCheck](./javacheck.md) — Java detection diff --git a/archived/projt-launcher/docs/handbook/ptcieval.md b/archived/projt-launcher/docs/handbook/ptcieval.md new file mode 100644 index 0000000000..b1843f7429 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/ptcieval.md @@ -0,0 +1,122 @@ +# CI Evaluation `ci/eval/` + +> **Location**: `ci/eval/` +> **Platform**: Nix +> **Purpose**: Project configuration validation +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +The CI evaluation module provides Nix-based validation of the project structure and configuration. It catches errors in build files before they reach CI. + +--- + +## What It Validates + +| Component | Checks | +|-----------|--------| +| **CMake** | Syntax, target definitions | +| **vcpkg** | Dependency declarations | +| **Nix** | Flake structure, expressions | +| **Build** | Cross-platform configuration | + +--- + +## Quick Usage + +### Validate Everything + +```bash +nix-build ci -A eval.full +``` + +### Validate Specific Component + +```bash +nix-build ci -A eval.cmake +nix-build ci -A eval.vcpkg +nix-build ci -A eval.nix +``` + +### Quick Test Mode + +```bash +nix-build ci -A eval.validate --arg quickTest true +``` + +--- + +## Supported Systems + +| System | Platform | +|--------|----------| +| `x86_64-linux` | Linux 64-bit | +| `x86_64-darwin` | macOS Intel | +| `aarch64-darwin` | macOS Apple Silicon | +| `x86_64-windows` | Windows (cross) | + +### Limit to Specific System + +```bash +nix-build ci -A eval.full --arg systems '["x86_64-linux"]' +``` + +--- + +## Configuration Validation + +### CMake Files + +- `CMakeLists.txt` — Main configuration +- `cmake/*.cmake` — CMake modules +- `CMakePresets.json` — Build presets + +### Dependencies + +- `vcpkg.json` — vcpkg dependencies +- `vcpkg-configuration.json` — vcpkg settings + +### Nix Build + +- `flake.nix` — Flake definition +- `default.nix` — Default expression +- `shell.nix` — Development shell + +--- + +## CI Integration + +Evaluation runs in `.github/workflows/eval.yml`: + +```yaml +- name: Evaluate + run: | + nix-build --expr 'let + pkgs = import <nixpkgs> {}; + eval = (import ./ci/eval { inherit (pkgs) lib runCommand cmake nix jq; }) {}; + in eval.full' +``` + +--- + +## Local Replication + +```bash +NIX_PATH=nixpkgs=channel:nixos-unstable \ +nix-build --expr 'let + pkgs = import <nixpkgs> {}; + eval = (import ./ci/eval { inherit (pkgs) lib runCommand cmake nix jq; }) {}; +in eval.full' + +cat result/summary.md +``` + +--- + +## Related Documentation + +- [Workflows](./workflows.md) — CI overview +- [CI Support](./ci_support.md) — Support files +- [Nix Packaging](./nix.md) — Nix build system diff --git a/archived/projt-launcher/docs/handbook/ptcigh.md b/archived/projt-launcher/docs/handbook/ptcigh.md new file mode 100644 index 0000000000..f694b90b45 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/ptcigh.md @@ -0,0 +1,95 @@ +# GitHub CI Scripts `ci/github-script/` + +> **Location**: `ci/github-script/` +> **Platform**: GitHub Actions (`actions/github-script`) +> **Purpose**: PR automation and validation +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +This directory contains JavaScript code for GitHub Actions automation using [`actions/github-script`](https://github.com/actions/github-script). These scripts automate various workflow tasks. + +--- + +## Features + +| Feature | Description | +|---------|-------------| +| PR validation | Check PR requirements | +| Auto-labeling | Apply labels based on changes | +| Commit checking | Validate commit messages | +| Reviewer assignment | Auto-assign reviewers | +| Branch management | Merge queue handling | + +--- + +## Scripts + +| Script | Purpose | +|--------|---------| +| `bot.js` | Main bot logic for PR automation | +| `commits.js` | Commit message validation | +| `merge.js` | Merge queue handling | +| `prepare.js` | PR preparation checks | +| `reviewers.js` | Automatic reviewer assignment | +| `reviews.js` | Review status checking | +| `withRateLimit.js` | GitHub API rate limiting | + +--- + +## Local Development + +### Prerequisites + +- Node.js 18+ +- `gh` CLI (authenticated) + +### Setup + +```bash +cd ci/github-script +npm install +``` + +### Running Scripts + +```bash +# Check commits in a PR +./run commits Project-Tick ProjT-Launcher 123 + +# Check labels +./run labels Project-Tick ProjT-Launcher +``` + +--- + +## Environment Variables + +| Variable | Description | +|----------|-------------| +| `GITHUB_TOKEN` | GitHub API token | +| `GITHUB_REPOSITORY` | Repository (`owner/repo`) | + +--- + +## Integration + +These scripts are called from workflows in `.github/workflows/`: + +```yaml +- uses: actions/github-script@v7 + with: + script: | + const script = require('./ci/github-script/commits.js'); + await script({ github, context, core }); +``` + +--- + +## Related Documentation + +- [Workflows](./workflows.md) — CI overview +- [Bot](./bot.md) — Cloudflare Worker bot +- [CI Support](./ci_support.md) — Support files diff --git a/archived/projt-launcher/docs/handbook/quazip.md b/archived/projt-launcher/docs/handbook/quazip.md new file mode 100644 index 0000000000..db150433a3 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/quazip.md @@ -0,0 +1,149 @@ +# QuaZip `quazip/` + +> **Type**: ZIP Archive Library (Qt C++ Wrapper) +> **License**: LGPL-2.1-or-later +> **Fork Origin**: [GitHub](https://github.com/stachenov/quazip) +> **Status**: Detached Fork (independently maintained) +> **Dependencies**: Qt 5/6, zlib +> **Latest Version**: 0.0.5-1 + +[](https://github.com/Project-Tick/ProjT-Launcher/actions/workflows/ci-new.yml) + +--- + +## Overview + +QuaZip is the C++ wrapper for Gilles Vollant's ZIP/UNZIP package (Minizip) using the Qt library. If you need to write files to a ZIP archive or read files from one using the `QIODevice` API, QuaZip is the tool you need. + +--- + +## Usage in ProjT Launcher + +QuaZip is used for: + +- **Mod installation** — Extracting mod archives +- **Modpack handling** — Processing CurseForge/Modrinth packs +- **Resource packs** — Managing Minecraft resource packs +- **Backup/restore** — Creating instance backups + +--- + +## Features + +| Feature | Status | +|---------|--------| +| Read/Write ZIP files | ✅ | +| Qt stream integration (`QIODevice`) | ✅ | +| Unicode filename support | ✅ | +| ZIP64 support (files > 4GB) | ✅ | +| BZIP2 compression | ✅ | +| Password protection (read) | ✅ | + +--- + +## Documentation + +| Resource | Description | +|----------|-------------| +| [Migration Guide](../../quazip/QuaZip-1.x-migration.md) | Migration guide to QuaZip 1.x | +| [Online Docs](https://projecttick.org/projtlauncher/wiki/) | Full documentation | +| `quazip/qztest/` | Test suite and examples | + +--- + +## Build Instructions + +### Prerequisites + +- **Qt 5.12+** or **Qt 6.x** +- **zlib** (or Qt's bundled zlib) +- **CMake 3.15+** +- **libbz2** (optional, for BZIP2 support) + +### Linux + +```bash +sudo apt-get install libbz2-dev +cmake -B build +cmake --build build +``` + +### Windows + +When using Qt online installer with MSVC, select `MSVC 20XY 64-bit` and under additional libraries, select `Qt 5 Compatibility Module`. Add `C:\Qt\6.8.2\msvc20XY_64` to your PATH. + +#### Using vcpkg (x64) + +```bat +cmake --preset vcpkg +cmake --build build --config Release +``` + +#### Using Conan v2 (x64) + +```bat +conan install . -of build -s build_type=Release -o *:shared=False --build=missing +cmake --preset conan +cmake --build build --config Release +``` + +### Complete Build Workflow + +```bash +cmake -B build -DQUAZIP_QT_MAJOR_VERSION=6 -DBUILD_SHARED_LIBS=ON -DQUAZIP_ENABLE_TESTS=ON +cmake --build build --config Release +sudo cmake --install build +cd build && ctest --verbose -C Release +``` + +--- + +## CMake Options + +| Option | Description | Default | +|--------|-------------|---------| +| `QUAZIP_QT_MAJOR_VERSION` | Qt version to search for (5 or 6) | Auto-detect | +| `BUILD_SHARED_LIBS` | Build as shared library | `ON` | +| `QUAZIP_LIB_FILE_NAME` | Output library name | `quazip<ver>-qt<ver>` | +| `QUAZIP_INSTALL` | Enable installation | `ON` | +| `QUAZIP_USE_QT_ZLIB` | Use Qt's bundled zlib (not recommended) | `OFF` | +| `QUAZIP_ENABLE_TESTS` | Build test suite | `OFF` | +| `QUAZIP_BZIP2` | Enable BZIP2 compression | `ON` | +| `QUAZIP_BZIP2_STDIO` | Output BZIP2 errors to stdio | `ON` | +| `QUAZIP_ENABLE_QTEXTCODEC` | Enable QTextCodec on Qt6 | `ON` | + +--- + +## Copyright & Licensing + +``` +Copyright (C) 2005-2020 Sergey A. Tachenov and contributors +``` + +Distributed under **LGPL-2.1-or-later**. See `quazip/COPYING` for details. + +Original ZIP package is copyrighted by Gilles Vollant (zlib license). + +--- + +## Contributing + +- **Report bugs**: [GitHub Issues](https://github.com/Project-Tick/ProjT-Launcher/issues) +- **Contribute code**: See [CONTRIBUTING.md](../../CONTRIBUTING.md) +- **Migration guide**: `quazip/QuaZip-1.x-migration.md` + +--- + +## Related Documentation + +- [zlib](./zlib.md) — Underlying compression library +- [bzip2](./bzip2.md) — BZIP2 compression support +- [Third-party Libraries](./third-party.md) — All dependencies + +--- + +## External Links + +- [QuaZip GitHub](https://github.com/stachenov/quazip) +- [Minizip](http://www.winimage.com/zLibDll/minizip.html) +- [Qt Documentation](https://doc.qt.io/) diff --git a/archived/projt-launcher/docs/handbook/third-party.md b/archived/projt-launcher/docs/handbook/third-party.md new file mode 100644 index 0000000000..64e4c809c4 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/third-party.md @@ -0,0 +1,166 @@ +# Libraries + +> **Purpose**: Overview of all external dependencies used by ProjT Launcher + +--- + +## Overview + +ProjT Launcher includes several third-party libraries for various functionality. This document provides a quick reference to all external dependencies. + +--- + +## Detached Fork Libraries + +These libraries are **detached forks** — independently maintained by Project Tick, not synchronized with original repositories: + +### Compression + +| Library | Purpose | License | Documentation | +|---------|---------|---------|---------------| +| **zlib** | DEFLATE compression | zlib | [zlib.md](./zlib.md) | +| **bzip2** | Block-sorting compression | BSD-like | [bzip2.md](./bzip2.md) | +| **QuaZip** | Qt ZIP wrapper | LGPL-2.1+ | [quazip.md](./quazip.md) | + +### Data Formats + +| Library | Purpose | License | Documentation | +|---------|---------|---------|---------------| +| **toml++** | TOML parser | MIT | [tomlplusplus.md](./tomlplusplus.md) | +| **libnbt++** | NBT format | GPL-3.0 | [libnbtplusplus.md](./libnbtplusplus.md) | +| **cmark** | Markdown parser | BSD-2-Clause | [cmark.md](./cmark.md) | + +### Utilities + +| Library | Purpose | License | Documentation | +|---------|---------|---------|---------------| +| **libqrencode** | QR code generation | LGPL-2.1+ | [libqrencode.md](./libqrencode.md) | + +### Build System + +| Library | Purpose | License | Documentation | +|---------|---------|---------|---------------| +| **Extra CMake Modules** | CMake utilities | BSD-3-Clause | [extra-cmake-modules.md](./extra-cmake-modules.md) | + +--- + +## Original READMEs + +Each detached fork retains its original upstream documentation. These are preserved for reference but are not actively maintained by Project Tick: + +| Library | Documentation | +|---------|---------------| +| toml++ | `tomlplusplus/README.md` | +| libqrencode | `libqrencode/README.md` | +| ECM | `extra-cmake-modules/README.md` | +| zlib | `zlib/README-cmake.md`, `zlib/FAQ` | +| bzip2 | `bzip2/bzip2.txt`, `bzip2/manual.html` | +| cmark | `cmark/changelog.txt`, `cmark/man/` | +| QuaZip | `quazip/QuaZip-1.x-migration.md` | +| libnbt++ | `libnbtplusplus/include/` (headers) | + +For Project Tick–specific documentation and usage, refer to the handbook pages linked above. + +--- + +## Internal Libraries + +These are ProjT Launcher-specific libraries: + +### LocalPeer `LocalPeer/` + +Single-instance application enforcement. + +- **Origin**: Derived from QtSingleApplication +- **License**: BSD +- **Use**: Prevents multiple launcher instances + +### murmur2 `murmur2/` + +Hash function implementation. + +- **Origin**: [SMHasher](https://github.com/aappleby/smhasher) +- **License**: Public Domain +- **Use**: Content hashing for mods + +### rainbow `rainbow/` + +Color manipulation functions. + +- **Origin**: KGuiAddons +- **License**: LGPL-2.1+ +- **Use**: Adaptive text coloring + +### systeminfo `systeminfo/` + +System information probing. + +- **License**: Apache-2.0 +- **Use**: Hardware/OS detection + +### qdcss `qdcss/` + +Quick and dirty CSS parser. + +- **Origin**: NilLoader +- **License**: LGPL-3.0 +- **Use**: Mod metadata parsing + +--- + +## External Dependencies + +These are system/Qt dependencies not bundled: + +### Qt Framework + +| Module | Purpose | +|--------|---------| +| Qt Core | Base functionality | +| Qt GUI | UI rendering | +| Qt Widgets | UI components | +| Qt Network | HTTP/networking | +| Qt Concurrent | Threading | + +### System Libraries + +| Library | Purpose | Platforms | +|---------|---------|-----------| +| OpenSSL | TLS/HTTPS | All | +| libpng | PNG images | All | +| zlib (system) | Alternative to bundled | Optional | + +--- + +## License Summary + +| License | Libraries | +|---------|-----------| +| **MIT** | toml++ | +| **BSD-2/3-Clause** | cmark, gamemode | +| **BSD-like** | bzip2, LocalPeer | +| **zlib** | zlib | +| **LGPL-2.1+** | QuaZip, rainbow, libqrencode | +| **LGPL-3.0** | qdcss | +| **GPL-3.0** | libnbt++ | +| **Apache-2.0** | systeminfo | +| **Public Domain** | murmur2 | + +--- + +## Adding New Dependencies + +When adding new libraries: + +1. **Evaluate license compatibility** with GPL-3.0 +2. **Create handbook documentation** in `docs/handbook/` +3. **Update this file** with the new entry +4. **Add CI workflow** if needed +5. **Update CMakeLists.txt** for build integration + +--- + +## Related Documentation + +- [Workflows](./workflows.md) — CI for libraries +- [README](./README.md) — Handbook index diff --git a/archived/projt-launcher/docs/handbook/tomlplusplus.md b/archived/projt-launcher/docs/handbook/tomlplusplus.md new file mode 100644 index 0000000000..bf3d168977 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/tomlplusplus.md @@ -0,0 +1,229 @@ +# toml++ `tomlplusplus/` + +> **Type**: TOML Parser Library +> **License**: MIT +> **Fork Origin**: [GitHub](https://github.com/marzer/tomlplusplus) +> **Status**: Detached Fork (independently maintained) +> **Specification**: [TOML v1.0.0](https://toml.io/en/v1.0.0) +> **Latest Version**: 0.0.5-1 + +[](https://github.com/Project-Tick/ProjT-Launcher/actions/workflows/ci-new.yml) + +--- + +## Overview + +toml++ is a header-only TOML configuration file parser and serializer for C++17 and later. It provides a clean, intuitive API for reading and writing TOML files with full TOML v1.0.0 compliance. + +ProjT Launcher maintains a detached fork for independent development and CI integration. + +--- + +## Usage in ProjT Launcher + +toml++ is used for: + +- **Configuration files** — Reading launcher settings +- **Instance configs** — Parsing instance metadata +- **Mod manifests** — Processing `fabric.mod.json` alternatives +- **Pack metadata** — Reading modpack configuration + +--- + +## Features + +| Feature | Status | +|---------|--------| +| TOML v1.0.0 compliant | ✅ | +| Header-only library | ✅ | +| C++17/20/23 support | ✅ | +| Unicode support | ✅ | +| Serialize to TOML | ✅ | +| Parse from string/file | ✅ | +| Error messages with line numbers | ✅ | +| Compile-time optimizations | ✅ | + +--- + +## Quick Start + +### Single Header Include + +```cpp +#include <toml++/toml.hpp> +``` + +### Parse TOML + +```cpp +// From string +auto config = toml::parse(R"( + [server] + host = "localhost" + port = 8080 +)"); + +// From file +auto config = toml::parse_file("config.toml"); + +// Access values +std::string host = config["server"]["host"].value_or("127.0.0.1"); +int port = config["server"]["port"].value_or(80); +``` + +### Create TOML + +{% raw %} +```cpp +auto tbl = toml::table{{ + {"server", toml::table{{ + {"host", "localhost"}, + {"port", 8080} + }}} +}}; + +std::cout << tbl << std::endl; +``` +{% endraw %} + +--- + +## Build Integration + +### CMake (Recommended) + +toml++ is header-only, but provides a CMake target: + +```cmake +# Add as subdirectory +add_subdirectory(tomlplusplus) + +# Or find installed package +find_package(tomlplusplus REQUIRED) + +# Link to your target +target_link_libraries(your_target PRIVATE tomlplusplus::tomlplusplus) +``` + +### Include Directly + +```cmake +target_include_directories(your_target PRIVATE path/to/tomlplusplus/include) +``` + +### Compiler Requirements + +| Compiler | Minimum Version | +|----------|-----------------| +| GCC | 8+ | +| Clang | 8+ | +| MSVC | 19.20+ (VS 2019) | +| ICC | 19.11+ | + +--- + +## Configuration Options + +Define before including to customize behavior: + +```cpp +// Disable exceptions +#define TOML_EXCEPTIONS 0 + +// Disable optional features +#define TOML_ENABLE_FORMATTERS 0 +#define TOML_ENABLE_PARSER 0 // Write-only mode + +// Unicode handling +#define TOML_ASSUME_UTF8_EVERYWHERE 1 +``` + +--- + +## Error Handling + +### With Exceptions (Default) + +```cpp +try { + auto config = toml::parse_file("config.toml"); +} catch (const toml::parse_error& err) { + std::cerr << "Parse error at " << err.source().begin << ":\n" + << err.description() << std::endl; +} +``` + +### Without Exceptions + +```cpp +#define TOML_EXCEPTIONS 0 + +toml::parse_result result = toml::parse_file("config.toml"); +if (!result) { + std::cerr << "Parse error: " << result.error() << std::endl; + return; +} +toml::table& config = result.table(); +``` + +--- + +## Testing + +toml++ includes a comprehensive test suite: + +```bash +cd tomlplusplus +mkdir build && cd build +cmake .. -DTOML_BUILD_TESTS=ON +cmake --build . +ctest -V +``` + +See [ci-tomlplusplus.yml](../../.github/workflows/ci-tomlplusplus.yml) for CI configuration. + +--- + +## Documentation + +| Resource | Description | +|----------|-------------| +| [API Docs](https://projecttick.org/tomlplusplus/) | Full API reference | +| [TOML Spec](https://toml.io/en/v1.0.0) | TOML v1.0.0 specification | +| [Original README](../../tomlplusplus/README.md) | Upstream library documentation | +| [Website Build](./website-tomlplusplus.md) | Building API docs | + +--- + +## Copyright & Licensing + +``` +Copyright (c) Mark Gillard <mark.gillard@outlook.com.au> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software to deal in the Software without restriction, including the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. +``` + +Full license: `tomlplusplus/LICENSE` + +--- + +## Related Documentation + +- [cmark](./cmark.md) — Markdown parser (similar use case) +- [libnbt++](./libnbtplusplus.md) — NBT format parser +- [Website toml++ Docs](./website-tomlplusplus.md) — Building documentation +- [Third-party Libraries](./third-party.md) — All dependencies + +--- + +## External Links + +- [toml++ GitHub](https://github.com/marzer/tomlplusplus) +- [TOML Official Site](https://toml.io/) +- [toml++ Online Docs](https://marzer.github.io/tomlplusplus/) +- [TOML Test Suite](https://github.com/BurntSushi/toml-test) diff --git a/archived/projt-launcher/docs/handbook/website-tomlplusplus.md b/archived/projt-launcher/docs/handbook/website-tomlplusplus.md new file mode 100644 index 0000000000..0fbdeeac90 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/website-tomlplusplus.md @@ -0,0 +1,124 @@ +# toml++ Documentation Setup `website/tomlplusplus/` + +> **Location**: `website/tomlplusplus/` +> **Tools**: Poxy, Doxygen, m.css +> **Output**: API documentation HTML +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +This directory contains configuration for building the toml++ API documentation using Poxy (a Doxygen + m.css wrapper). + +--- + +## Quick Start + +### Install Dependencies + +```bash +npm run setup:doxygen +``` + +This installs: +- **Doxygen** (via Homebrew on macOS, apt on Linux) +- **Poxy** (via pipx) + +### Build Documentation + +```bash +npm run build:tomlplusplus +``` + +### Full Site Build + +```bash +npm run build # Includes toml++ docs +``` + +--- + +## Manual Setup + +### macOS + +```bash +brew install doxygen pipx +pipx install poxy +``` + +### Linux + +```bash +sudo apt-get install doxygen python3-pip +python3 -m pip install --user pipx +pipx install poxy +``` + +--- + +## Configuration + +Documentation is configured via `poxy.toml`: + +| Setting | Value | +|---------|-------| +| Source paths | `../../tomlplusplus/include` | +| Pages | `pages/` directory | +| Images | `images/` directory | +| Theme | Dark (default) | +| Output | `html/` directory | + +--- + +## Directory Structure + +``` +website/tomlplusplus/ +├── poxy.toml # Poxy configuration +├── pages/ # Documentation pages (Markdown) +│ └── main_page.md +├── images/ # Badges, logos, graphics +└── html/ # Generated output (after build) +``` + +--- + +## Build Process + +1. **Poxy** reads `poxy.toml` +2. **Doxygen** parses C++ headers +3. **m.css** generates styled HTML +4. Output copied to `_site/tomlplusplus/` during site build + +--- + +## Troubleshooting + +### ModuleNotFoundError: jinja2 + +Install to Homebrew Python: + +```bash +/opt/homebrew/bin/python3 -m pip install --break-system-packages jinja2 Pygments +``` + +### Doxygen Warnings + +Minor warnings about unresolved links are normal and don't prevent generation. + +--- + +## Related Documentation + +- [toml++](./tomlplusplus.md) — Library documentation +- [Workflows](./workflows.md) — CI builds documentation + +--- + +## External Links + +- [Poxy Documentation](https://github.com/marzer/poxy) +- [Doxygen Manual](https://www.doxygen.nl/manual/) +- [m.css](https://mcss.mosra.cz/) diff --git a/archived/projt-launcher/docs/handbook/wiki/development/index.md b/archived/projt-launcher/docs/handbook/wiki/development/index.md new file mode 100644 index 0000000000..27f68678c7 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/development/index.md @@ -0,0 +1,21 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Development + +If you would like to contribute to ProjT Launcher, you might find it useful to join our Discord Server or Matrix Space. + +## Building + +If you want to build ProjT Launcher yourself and/or contribute, check out our [Build Instructions](./build-instructions) page for a handy guide. + +## Code formatting + +Please follow the existing formatting. + +In general, by order of importance: + +- Make sure your IDE is not messing up line endings or whitespace and avoid using linters. +- Prefer readability to dogma. +- Keep to the existing formatting. +- Indent with 4 space unless it's in a submodule. +- Keep lists (of arguments, parameters, initializers...) as lists, not paragraphs. It should either read from top to bottom, or left to right. Not both. diff --git a/archived/projt-launcher/docs/handbook/wiki/development/instructions/index.md b/archived/projt-launcher/docs/handbook/wiki/development/instructions/index.md new file mode 100644 index 0000000000..cbe5817943 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/development/instructions/index.md @@ -0,0 +1,23 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +<script> + function appendToURL(url, path) { + if (!url.pathname.endsWith("/")) { + url.pathname += "/"; // if there isn't a slash, add it + } + url.pathname += path; + } + + let url = new URL(window.location.href); + // redirect the user to the correct place + if (navigator.platform.indexOf("Mac") !== -1) { + appendToURL(url, "macos"); + window.location.href = url.href; + } else if (navigator.platform.indexOf("nix") !== -1 || navigator.platform.indexOf("nux") !== -1 || navigator.userAgent.indexOf("X11") !== -1) { + appendToURL(url, "linux"); + window.location.href = url.href; + }else{ + appendToURL(url, "windows"); + window.location.href = url.href; + } +</script> diff --git a/archived/projt-launcher/docs/handbook/wiki/development/instructions/linux.md b/archived/projt-launcher/docs/handbook/wiki/development/instructions/linux.md new file mode 100644 index 0000000000..9c6a771c3f --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/development/instructions/linux.md @@ -0,0 +1,260 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Linux Build Instructions + +## Contents + +[[toc]] + +## Getting the source + +Clone the source code using git, and grab all the submodules: + +```bash +git clone --recursive https://github.com/Project-Tick/ProjT-Launcher.git +cd ProjT-Launcher +``` + +**The rest of the documentation assumes you have already cloned the repository.** + +## Building + +Getting the project to build and run on Linux is easy if you use any modern and up-to-date Linux distribution. + +### Build dependencies + +- A C++ compiler capable of building C++17 code. +- Qt Development tools 6.0 or newer (`qt6-base-dev qtchooser qt6-base-dev-tools libqt6core6 libqt6core5compat6-dev libqt6network6 qt6-networkauth-dev` on Debian (testing/unstable) based systems). +- Alternatively, you can also use Qt 5.12 or newer (`qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5core5a libqt5network5 libqt5gui5 libqt5networkauth5-dev` on Debian-based systems), if you prefer it. +- cmake 3.15 or newer (`cmake` on Debian-based system) +- ninja (`ninja-build` on Debian-based systems) +- extra-cmake-modules (`extra-cmake-modules` on Debian-based system) +- zlib (`zlib1g-dev` on Debian-based system) +- Java JDK (`openjdk-17-jdk` on Debian-based system) +- GL headers (`libgl1-mesa-dev` on Debian-based system) +- scdoc if you want to generate manpages (`scdoc` on Debian-based system) + +You can use IDEs, like KDevelop, QtCreator or CLion to open the CMake project, if you want to work on the code. + +### Building a portable binary + +```bash +cmake -S . -B build -G Ninja \ + -DCMAKE_INSTALL_PREFIX=install +# -DLauncher_QT_VERSION_MAJOR="5" # if you want to use Qt 5 + +cmake --build build +cmake --install build +cmake --install build --component portable +``` + +### Building & installing to the system + +This is the preferred method of installation, and is suitable for packages. + +```bash +cmake -S . -B build -G Ninja \ +혻 -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX="/usr" \ # Use "/usr" when building Linux packages. If building not for package, use "/usr/local" + -DENABLE_LTO=ON # if you want to enable LTO/IPO +# -DLauncher_QT_VERSION_MAJOR="5" # if you want to use Qt 5 + +cmake --build build +cmake --install build # Optionally specify DESTDIR for packages (i.e. DESTDIR=${pkgdir} cmake --install ...) +``` + +<!-- ### Building a .deb + +Requirements: [makedeb](https://docs.makedeb.org/) installed on your system. + +```bash +git clone https://mpr.makedeb.org/projtlauncher.git +cd projtlauncher +makedeb -s +``` + +The .deb will be located in the directory the repo was cloned in. + +### Building an .rpm for Fedora + +Build dependencies are automatically installed using `DNF`, however, you will also need the `rpmdevtools` package (on Fedora), +in order to fetch sources and set up your tree. +You don't need to clone the repo for this; the spec file handles that. + +```bash +cd ~ +# setup your ~/rpmbuild directory, required for rpmbuild to work. +rpmdev-setuptree +# get the rpm spec file from the projtlauncher on pagure +git clone https://pagure.io/projtlauncher.git +cd projtlauncher +# install build dependencies +sudo dnf builddep projtlauncher.spec +sudo dnf builddep -D "_without_qt6 1" projtlauncher.spec # if you want to use Qt 5 instead of Qt 6 +# download build sources +spectool -g -R projtlauncher.spec +# move patches to rpmbuild sources directory +cp *.patch ~/rpmbuild/SOURCES +# copy any patches to rpmbuild sources directory +cp *.patch ~/rpmbuild/SOURCES +# now build! +rpmbuild -bb projtlauncher.spec +rpmbuild -bb --without qt6 projtlauncher.spec # if you want to use Qt 5 instead of Qt 6 +``` + +The path to the .rpm packages will be printed once the build is complete. + +### Building an .rpm for openSUSE + +Unlike Fedora, the openSUSE packages depend on the [Open Build Service](https://build.opensuse.org/), so you will need to install the command line tool `osc` by following [this](https://openbuildservice.org/help/manuals/obs-user-guide/cha.obs.osc.html#sec.obs.osc.install) guide. +It also uses the [obs_scm](https://github.com/openSUSE/obs-service-tar_scm) service, which is available in the `obs-service-obs_scm` package if it's not already installed. + +```bash +osc checkout home:getchoo + +# there will be 4 directories in home:getchoo, with some having a -qt5 and/or -nightly suffix +# -qt5 packages will build with Qt 5 instead of Qt 6, while -nightly packages will build with the latest commit (updated every 24h) +# for this example, we're just using the stable release package that builds with Qt 6 +# NOTE: only -qt5 will build on Leap +cd home:getchoo/projtlauncher + +# to build against the current version of Leap, replace `openSUSE_Tumbleweed` with 15.4 +osc build --sccache openSUSE_Tumbleweed +``` + +The path to the .rpm packages will be printed once the build is complete. + +### Building a Flatpak + +You don't need to clone the entire ProjT Launcher repo for the latest stable version; the Flatpak file handles that. However, cloning the source repository is necessary to build from the latest commit (contains upstream manifest). +Both `flatpak` and `flatpak-builder` packages must be installed on your system to proceed, including all build dependencies previously mentioned (at the top of page). + +#### Latest Stable Release + +```bash +git clone --recursive https://github.com/flathub/org.projecttick.ProjTLauncher +cd org.projecttick.ProjTLauncher +flatpak install org.kde.Sdk/x86_64/6.7 runtime/org.freedesktop.Sdk.Extension.openjdk17/x86_64/23.08 runtime/org.freedesktop.Sdk.Extension.openjdk8/x86_64/23.08 runtime/org.freedesktop.Sdk.Extension.openjdk21/x86_64/23.08 # build requirements +# remove --user --install if you want to build without installing +flatpak-builder --user --install flatbuild org.projecttick.ProjTLauncher.yml +``` + +#### Latest Commit + +```bash +git clone --recursive https://github.com/Project-Tick/ProjT-Launcher # source repo - contains upstream manifest +cd ProjTLauncher/flatpak +flatpak install org.kde.Sdk/x86_64/6.7 runtime/org.freedesktop.Sdk.Extension.openjdk17/x86_64/23.08 runtime/org.freedesktop.Sdk.Extension.openjdk8/x86_64/23.08 runtime/org.freedesktop.Sdk.Extension.openjdk21/x86_64/23.08 # build requirements +# remove --user --install if you want to build without installing +flatpak-builder --user --install flatbuild org.projecttick.ProjTLauncher.yml --> + +### Installing Qt using the installer (optional) + +1. Run the Qt installer. +2. Choose a place to install Qt. +3. Choose the components that you wish install. + + - You need Qt 6.0.x 64-bit ticked. (or a newer version) + - Alternatively you can choose Qt 5.12.0 or newer + - You need Tools/Qt Creator ticked. + - Other components are selected by default, you can un-tick them if you don't need them. + +4. Accept the license agreements. +5. Double-check the install details and then click "Install". + + - Installation can take a very long time, go grab a cup of tea or something and let it work. + +## IDEs and Tooling + +There are a few tools that you can set up to make your development workflow smoother. In addition, some IDEs also require a bit more setup to work with Qt and CMake. + +### ccache + +**ccache** is a compiler cache. It speeds up recompilation by caching previous compilations and detecting when the same compilation is being done again. + +You can [download it here](https://ccache.dev/download.html). After setting up, builds will be incremental, and the builds after the first one will be much faster. + +### VS Code + +To set up VS Code, you can download [the C/C++ extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools), since it provides IntelliSense auto complete, linting, formatting, and various other features. + +Then, you need to set up the configuration. Go into the command palette and open up C/C++: Edit Configurations (UI). There, add a new configuration for ProjTLauncher. + +1. Add the path to your Qt `include` folder to `includePath` +2. Add `-L/{path to your Qt installation}/lib` to `compilerArgs` +3. Set `compileCommands` to `${workspaceFolder}/build/compile_commands.json` +4. Set `cppStandard` to `c++14` or higher. + +For step 3 to work, you also have to reconfigure CMake to generate a `compile_commands.json` file. To do this, add `-DCMAKE_EXPORT_COMPILE_COMMANDS=ON` to the end of your CMake configuration command and run it again. You should see a file at `build/compile_commands.json`. + +Now the VS Code setup should be fully working. To test, open up some files and see if any error squiggles appear. If there are none, it's working properly! + +Here is an example of what `.vscode/c_cpp_properties.json` looks like on macOS with Qt installed via Homebrew: + +```json +{ + "configurations": [ + { + "name": "Mac (ProjTLauncher)", + "includePath": [ + "${workspaceFolder}/**", + "/opt/homebrew/opt/qt@6/include/**" + ], + "defines": [], + "macFrameworkPath": [ + "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks" + ], + "compilerPath": "/usr/bin/clang", + "compilerArgs": [ + "-L/opt/homebrew/opt/qt@6/lib" + ], + "compileCommands": "${workspaceFolder}/build/compile_commands.json", + "cStandard": "c17", + "cppStandard": "c++17", + "intelliSenseMode": "macos-clang-arm64" + } + ], + "version": 4 +} +``` + +### CLion + +1. Open CLion +2. Choose `File->Open` +3. Navigate to the source folder +4. Go to settings `Ctrl+Alt+S` +5. Navigate to `Toolchains` in `Build, Execution, Deployment` + - Set the correct build tools ([see here](https://i.imgur.com/daFAdVe.png)) + - CMake: `cmake` (optional) + - Make: `make` (optional) + - C Compiler: `gcc` + - C++ Compiler: `g++` + - Debugger: `gdb` (optional) +6. Navigate to `CMake` in `Build, Execution, Deployment` + - Set `Build directory` to `build` +7. Navigate to `Edit Configurations` ([see here](https://i.imgur.com/fu53nc3.png)) + - Create a new configuration + - Name: `All` + - Target: `All targets` + - Choose the newly added configuration as default + +Now you should be able to build and test ProjT Launcher with the `Build` and `Run` buttons. + +### Qt Creator + +1. Open Qt Creator. +2. Choose `File->Open File or Project`. +3. Navigate to the Launcher source folder you cloned and choose CMakeLists.txt. +4. Read the instructions that just popped up about a build location and choose one. +5. You should see "Run CMake" in the window. + + - Make sure that Generator is set to "Unix Generator (Desktop Qt 6.x.x GCC 64bit)". + - Alternatively this is probably "Unix Generator (Desktop Qt 5.12.x GCC 64bit)" + - Hit the "Run CMake" button. + - You'll see warnings, and it might not be clear that it succeeded until you scroll to the bottom of the window. + - Hit "Finish" if CMake ran successfully. + +6. Cross your fingers, and press the "Run" button (bottom left of Qt Creator). + + - If the project builds successfully it will run and the Launcher window will pop up. diff --git a/archived/projt-launcher/docs/handbook/wiki/development/instructions/macos.md b/archived/projt-launcher/docs/handbook/wiki/development/instructions/macos.md new file mode 100644 index 0000000000..a9cb92461d --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/development/instructions/macos.md @@ -0,0 +1,162 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Build Instructions + +## Contents + +[[toc]] + +## Getting the source + +Clone the source code using git, and grab all the submodules: + +```zsh +git clone --recursive https://github.com/Project-Tick/ProjT-Launcher.git +cd ProjT-Launcher +``` + +**The rest of the documentation assumes you have already cloned the repository.** + +## Building + +### Install prerequisites + +- Install XCode Command Line tools. +- Install the official build of CMake (<https://cmake.org/download/>). +- Install extra-cmake-modules +- Install JDK 8 (<https://adoptium.net/temurin/releases/?variant=openjdk8&jvmVariant=hotspot>). +- Install any version of Qt 6 (recommended) or Qt 5.12 or newer + +Using [homebrew](https://brew.sh) you can install these dependencies with a single command: + +```zsh +brew update # in the case your repositories weren't updated +brew install qt openjdk@17 cmake ninja extra-cmake-modules # use qt@5 if you want to install qt5 +``` + +### XCode Command Line tools + +If you don't have XCode Command Line tools installed, you can install them with this command: + +```zsh +xcode-select --install +``` + +### Build + +Choose an installation path. + +This is where the final `ProjT-Launcher.app` will be constructed when you run `make install`. Supply it as the `CMAKE_INSTALL_PREFIX` argument during CMake configuration. By default, it's in the dist folder, under ProjT-Launcher. + +[If you are on zsh](https://support.apple.com/kb/HT208050),zsh does not ignore comments by default, run the following to ignore comments for this session: + +```zsh +setopt interactivecomments +``` + +```zsh +mkdir build +cmake \ + -S . \ + -B build \ + -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX:PATH="$(dirname $PWD)/dist/" \ + -DCMAKE_INSTALL_PREFIX="dist" \ + -DCMAKE_PREFIX_PATH="/path/to/Qt/" \ + -DQt5_DIR="/path/to/Qt/" \ + -DQt6_DIR="/path/to/Qt/" \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=11 \ + -DLauncher_QT_VERSION_MAJOR=6 \ # if you want to use Qt 6 + -DENABLE_LTO=ON \ # if you want to enable LTO/IPO + -DLauncher_BUILD_PLATFORM=macOS \ +# if you want to enable LTO/IPO: + -DENABLE_LTO=ON +#-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" # to build a universal binary (not recommended for development) +#-DLauncher_QT_VERSION_MAJOR=5 # if you want to use Qt 5 + +cmake --build build +cmake --install build +``` + +Remember to replace `/path/to/Qt/` with the actual path. For newer Qt installations, it is often in your home directory. For the Homebrew installation, it's likely to be in `/opt/homebrew/opt/qt`. + +**Note:** The final app bundle may not run due to code signing issues, which +need to be fixed with `codesign -fs -`. + +## IDEs and Tooling + +There are a few tools that you can set up to make your development workflow smoother. In addition, some IDEs also require a bit more setup to work with Qt and CMake. + +### ccache + +**ccache** is a compiler cache. It speeds up recompilation by caching previous compilations and detecting when the same compilation is being done again. + +You can [download it here](https://ccache.dev/download.html). After setting up, builds will be incremental, and the builds after the first one will be much faster. + +### VS Code + +To set up VS Code, you can download [the C/C++ extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools), since it provides IntelliSense auto complete, linting, formatting, and various other features. + +Then, you need to set up the configuration. Go into the command palette and open up C/C++: Edit Configurations (UI). There, add a new configuration for ProjTLauncher. + +1. Add the path to your Qt `include` folder to `includePath` +2. Add `-L/{path to your Qt installation}/lib` to `compilerArgs` +3. Set `compileCommands` to `${workspaceFolder}/build/compile_commands.json` +4. Set `cppStandard` to `c++14` or higher. + +For step 3 to work, you also have to reconfigure CMake to generate a `compile_commands.json` file. To do this, add `-DCMAKE_EXPORT_COMPILE_COMMANDS=ON` to the end of your CMake configuration command and run it again. You should see a file at `build/compile_commands.json`. + +Now the VS Code setup should be fully working. To test, open up some files and see if any error squiggles appear. If there are none, it's working properly! + +Here is an example of what `.vscode/c_cpp_properties.json` looks like on macOS with Qt installed via Homebrew: + +```json +{ + "configurations": [ + { + "name": "Mac (ProjTLauncher)", + "includePath": [ + "${workspaceFolder}/**", + "/opt/homebrew/opt/qt@6/include/**" + ], + "defines": [], + "macFrameworkPath": [ + "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks" + ], + "compilerPath": "/usr/bin/clang", + "compilerArgs": [ + "-L/opt/homebrew/opt/qt@6/lib" + ], + "compileCommands": "${workspaceFolder}/build/compile_commands.json", + "cStandard": "c17", + "cppStandard": "c++17", + "intelliSenseMode": "macos-clang-arm64" + } + ], + "version": 4 +} +``` + +### CLion + +1. Open CLion +2. Choose `File->Open` +3. Navigate to the source folder +4. Go to settings `Ctrl+Alt+S` +5. Navigate to `Toolchains` in `Build, Execution, Deployment` + - Set the correct build tools ([see here](https://i.imgur.com/daFAdVe.png)) + - CMake: `cmake` (optional) + - Make: `make` (optional) + - C Compiler: `gcc` + - C++ Compiler: `g++` + - Debugger: `gdb` (optional) +6. Navigate to `CMake` in `Build, Execution, Deployment` + - Set `Build directory` to `build` +7. Navigate to `Edit Configurations` ([see here](https://i.imgur.com/fu53nc3.png)) + - Create a new configuration + - Name: `All` + - Target: `All targets` + - Choose the newly added configuration as default + +Now you should be able to build and test ProjT Launcher with the `Build` and `Run` buttons. diff --git a/archived/projt-launcher/docs/handbook/wiki/development/instructions/windows.md b/archived/projt-launcher/docs/handbook/wiki/development/instructions/windows.md new file mode 100644 index 0000000000..dfe3b4733a --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/development/instructions/windows.md @@ -0,0 +1,201 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Build Instructions + +## Contents + +[[toc]] + +## Getting the source + +Clone the source code using git, and grab all the submodules: + +```bash +git clone --recursive https://github.com/Project-Tick/ProjT-Launcher.git +cd ProjT-Launcher +``` + +**The rest of the documentation assumes you have already cloned the repository.** + +## Building With MSVC + +### Dependencies + +- [Visual Studio](https://visualstudio.microsoft.com/downloads/) - Software Distribution and Building Platform for Windows + - If you don't want install the Visual Studio IDE, go to 'Tools For Visual Studio' and download 'Build Tools for Visual Studio' instead + - Select 'Desktop development with C++', note that in the optional components (right side) CMake will be selected +- [Java Development Kit 8 or later](https://adoptium.net/) + - Make sure that "Set JAVA_HOME variable" is enabled in the Adoptium installer. +- [Qt](https://www.qt.io/download-qt-installer) + - For Qt 6 (Qt 6.6.2 is the recommended one), 'Qt 5 Compatibility Module' & 'Qt Image Formats' are required + - For Qt 5 (Qt 5.15.2 is the recommended one), OpenSSL Toolkit is required + - If you don't want to use the Qt installer, than you can use [aqt](https://github.com/miurahr/aqtinstall), see [aqt-list](https://ddalcino.github.io/aqt-list-server/) for help with command arguments. + +### Compile from command line on Windows using msbuild + +You will need to run commands from `x64 Native Tools Command Prompt` or `x86 Native Tools Command Prompt` depending on if you are building 64bit or 32bit. +These instructions assume you are using the `x64 Native Tools Command Prompt` to build for 64bit. +All commands are for a debug build, for release builds, replace `Debug` with `Release` in the cmake build and install commands. + +1. `cd` into the folder you cloned ProjT Launcher to. Put quotation marks around the path. +2. Now we can prepare the build itself: Run `cmake -Bbuild -DCMAKE_INSTALL_PREFIX=install -DENABLE_LTO=ON -DCMAKE_PREFIX_PATH=C:\Qt\6.6.2\msvc2019_64\lib\cmake`. These options will copy the final build to the `install` folder after the build. + + - If you have installed Qt in a non-default location, then change the `CMAKE_PREFIX_PATH` to `-DCMAKE_PREFIX_PATH=<Path to Qt Install>\6.6.2\msvc2019_64\lib\cmake`, replacing `<Path to Qt Install>` with the path to your Qt install. + - If you are building for 32bit, change `msvc2019_64` to `msvc2019`. + - If you want to build using Qt 5, then add the `-DLauncher_QT_VERSION_MAJOR=5` parameter and change `CMAKE_PREFIX_PATH` to point to Qt 5. + +3. Now you need to run the build itself: Run `cmake --build build --config Debug -- /p:UseMultiToolTask=true /p:EnforceProcessCountAcrossBuilds=true`. + + - If preferred, `UseMultiToolTask` & `EnforceProcessCountAcrossBuilds` can be set as environment variables instead of passing as arguments. + +4. Now, wait for it to compile. This could take some time, so hopefully it compiles properly. +5. Run the command `cmake --install build --config Debug`, and it should install ProjT Launcher to whatever the `-DCMAKE_INSTALL_PREFIX` was. +6. If you don't want ProjT Launcher to store its data in `%APPDATA%`, run `cmake --install build --config Debug --component portable` after the install process. +7. When building on Qt 5, whenever compiling, the OpenSSL DLLs aren't put into the directory to where ProjT Launcher installs which are necessary in that case, meaning that you cannot log in. The best way to fix this, is just to do `robocopy D:/Qt/Tools/OpenSSL/Win_x64/bin/ install libcrypto-1_1-x64.dll libssl-1_1-x64.dll`. This should copy the required OpenSSL DLLs to log in. When building on Qt 6 this is not necessary because it can use schannel, the Windows tls library. + + - Replace `<Path to Qt Install>` with the path to your Qt install. + - If building for 32bit, replace `Win_x64` with `Win_x86` and remove `-x64` from the dlls names. + +#### Using ccache + +CMake with the msbuild generator currently does not support `CMAKE_CXX_COMPILER_LAUNCHER`, so the process of setting up [ccache](#ccache) differs from other build systems. +ccache 4.7.x or newer is required for MSVC support. + +1. Copy `ccache.exe` and rename that copy to `cl.exe` +2. In the build command, add `/p:TrackFileAccess=false /p:CLToolExe=cl.exe /p:CLToolPath=<path to ccache cl>` to the end of the build arguments + + - Replace `<path to ccache cl>` with the path to the copy of `ccache.exe` you renamed to `cl.exe` + +**If this doesn't work for you, please let us know on our Discord sever, or Matrix Space.** + +## Building with MSYS2 + +### MSYS2 Dependencies + +- [MSYS2](https://www.msys2.org/) - Software Distribution and Building Platform for Windows +- [Java Development Kit 8 or later](https://adoptium.net/) + - Make sure that "Set JAVA_HOME variable" is enabled in the Adoptium installer. + +### Preparing MSYS2 + +1. Open one of the shortcuts from the MSYS2 folder in the Start menu + + - We recommend building using the CLANG64 msystem of MSYS2, as it compiles considerably faster and with a few less bugs. + +2. Install helpers: Run `pacman -Syu pactoys git mingw-w64-x86_64-binutils` in the MSYS2 shell. +3. Install all build dependencies using `pacboy`: Run `pacboy -S toolchain:p cmake:p ninja:p qt6-base:p qt6-5compat:p qt6-svg:p qt6-imageformats:p quazip-qt6:p extra-cmake-modules:p ninja:p ccache:p`. + + - Alternatively you can use Qt 5 (for older Windows versions), by running the following command instead: `pacboy -S toolchain:p cmake:p ninja:p qt5-base:p qt5-svg:p qt5-imageformats:p quazip-qt5:p extra-cmake-modules:p ninja:p ccache:p` + - This might take a while, as it will install Qt and all the build tools required. + +### Compile from command line on Windows + +1. `cd` into the folder you cloned ProjT Launcher to. Put quotation marks around the path. +2. Now we can prepare the build itself: Run `cmake -Bbuild -DCMAKE_INSTALL_PREFIX=install -DENABLE_LTO=ON -DCMAKE_OBJDUMP=/mingw64/bin/objdump.exe -DCMAKE_BUILD_TYPE=Debug -G Ninja`. These options will copy the final build to the `install` folder after the build. + + - Replace Debug with Release if you want to build a Release build. + - If you want to build using Qt 5, then add the `-DLauncher_QT_VERSION_MAJOR=5` parameter + - If you want to use [ccache](#ccache) to speed up recompilations, add the parameter `-DCMAKE_CXX_COMPILER_LAUNCHER=ccache` + +3. Now you need to run the build itself: Run `cmake --build build`. +4. Now, wait for it to compile. This could take some time, so hopefully it compiles properly. +5. Run the command `cmake --install build`, and it should install ProjT Launcher to whatever the `-DCMAKE_INSTALL_PREFIX` was. +6. If you don't want ProjT Launcher to store its data in `%APPDATA%`, run `cmake --install build --component portable` after the install process +7. When building on Qt 5, whenever compiling, the OpenSSL DLLs aren't put into the directory to where ProjT Launcher installs which are necessary in that case, meaning that you cannot log in. The best way to fix this, is just to do `cp /(msystem)/bin/libcrypto-1_1.dll /(msystem)/bin/libssl-1_1.dll install`. This should copy the required OpenSSL DLLs to log in. When building on Qt 6 this is not necessary because it can use schannel, the Windows tls library. + + - Replace `(msystem)` with the msystem you're using (e.g. clang64). On 64-bit msystems, like *MSYS2 CLANG64*, you have to add `-x64` to the dlls. + +**If this doesn't work for you, please let us know on our Discord server, or Matrix Space.** + +## IDEs and Tooling + +There are a few tools that you can set up to make your development workflow smoother. In addition, some IDEs also require a bit more setup to work with Qt and CMake. + +### ccache + +**ccache** is a compiler cache. It speeds up recompilation by caching previous compilations and detecting when the same compilation is being done again. + +You can [download it here](https://ccache.dev/download.html). After setting up, builds will be incremental, and the builds after the first one will be much faster. + +<!-- TODO: The VS-Code instructions could be done better for windows (and in general) --> + +### VS Code + +To set up VS Code, you can download [the C/C++ extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools), since it provides IntelliSense auto complete, linting, formatting, and various other features. + +Then, you need to set up the configuration. Go into the command palette and open up C/C++: Edit Configurations (UI). There, add a new configuration for ProjT-Launcher. + +1. Add the path to your Qt `include` folder to `includePath` +2. Add `-L/{path to your Qt installation}/lib` to `compilerArgs` +3. Set `compileCommands` to `${workspaceFolder}/build/compile_commands.json` +4. Set `cppStandard` to `c++14` or higher. + +For step 3 to work, you also have to reconfigure CMake to generate a `compile_commands.json` file. To do this, add `-DCMAKE_EXPORT_COMPILE_COMMANDS=ON` to the end of your CMake configuration command and run it again. You should see a file at `build/compile_commands.json`. + +Now the VS Code setup should be fully working. To test, open up some files and see if any error squiggles appear. If there are none, it's working properly! + +Here is an example of what `.vscode/c_cpp_properties.json` looks like on macOS with Qt installed via Homebrew: + +```json +{ + "configurations": [ + { + "name": "Mac (ProjTLauncher)", + "includePath": [ + "${workspaceFolder}/**", + "/opt/homebrew/opt/qt@6/include/**" + ], + "defines": [], + "macFrameworkPath": [ + "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks" + ], + "compilerPath": "/usr/bin/clang", + "compilerArgs": [ + "-L/opt/homebrew/opt/qt@6/lib" + ], + "compileCommands": "${workspaceFolder}/build/compile_commands.json", + "cStandard": "c17", + "cppStandard": "c++17", + "intelliSenseMode": "macos-clang-arm64" + } + ], + "version": 4 +} +``` + +### CLion + +1. Open CLion +2. Choose `File->Open` +3. Navigate to the source folder +4. Go to settings `Ctrl+Alt+S` +5. Navigate to `Toolchains` in `Build, Execution, Deployment` + - Set the correct build tools ([see here](https://i.imgur.com/daFAdVe.png)) + - CMake: `cmake` (optional) + - Make: `make` (optional) + - C Compiler: `gcc` + - C++ Compiler: `g++` + - Debugger: `gdb` (optional) +6. Navigate to `CMake` in `Build, Execution, Deployment` + - Set `Build directory` to `build` +7. Navigate to `Edit Configurations` ([see here](https://i.imgur.com/fu53nc3.png)) + - Create a new configuration + - Name: `All` + - Target: `All targets` + - Choose the newly added configuration as default + +Now you should be able to build and test ProjT Launcher with the `Build` and `Run` buttons. + +### Qt Creator + +1. Install Qt Creator within MSYS2 using `pacboy -S qt-creator:p` if building with it, otherwise you may use the regular installer or your package manager of choice (e.g. scoop) + - NOTE: If you install or run Qt Creator outside of MSYS2 when compiling through it, Qt Creator will fail to find the compiler. +2. (Optional) Create a shortcut to `C:\msys64\(msystem).exe qtcreator` + - Replace `(msystem)` with the msystem you're using (e.g. clang64). +3. Open Qt Creator (with the `qtcreator` command in MSYS2). +4. Choose `File->Open File or Project`. +5. Navigate to the Launcher source folder you cloned and choose `CMakeLists.txt`. +6. When prompted to configure the project, scroll past the **many** Desktop Qt options without changing anything and click "Configure Project" at the bottom right. +7. Cross your fingers, and press the "Run" button (bottom left of Qt Creator). + + - If the project builds successfully it will run and the Launcher window will pop up. diff --git a/archived/projt-launcher/docs/handbook/wiki/development/translating.md b/archived/projt-launcher/docs/handbook/wiki/development/translating.md new file mode 100644 index 0000000000..e56a74276d --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/development/translating.md @@ -0,0 +1,16 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Translating ProjT Launcher + +The translation effort for ProjT Launcher is hosted on [Weblate](https://hosted.weblate.org/projects/projtlauncher/launcher/), and information about translating ProjT Launcher is available at <https://github.com/Project-Tick/Translations> + +Current translation progress: +<div style="display: flex; justify-content: flex-end; max-width: 100%; overflow: hidden; margin-bottom: 1rem;"> + <a href="https://hosted.weblate.org/engage/projtlauncher/"> + <img + src="https://hosted.weblate.org/widgets/projtlauncher/-/launcher/multi-auto.svg" + alt="Translation status" + style="max-width: 100%; height: auto;" + /> + </a> +</div> diff --git a/archived/projt-launcher/docs/handbook/wiki/getting-started/catpacks.md b/archived/projt-launcher/docs/handbook/wiki/getting-started/catpacks.md new file mode 100644 index 0000000000..bebb0569f6 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/getting-started/catpacks.md @@ -0,0 +1,121 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# CatPacks + +## Installation + +The CatPacks folder location is as follows: + +- on **Windows:** `%appdata%\ProjTLauncher\catpacks` +- on **Mac:** `~/Library/Application Support/ProjTLauncher/catpacks` +- on **Linux:** `~/.local/share/ProjTLauncher/catpacks` +- on **Flatpak:** `~/.var/app/org.projecttick.ProjTLauncher/data/ProjTLauncher/catpacks` + +After you move the CatPack to the mentioned folder restart ProjT Launcher, then open the global settings. +In the Launcher section, click the User Interface tab, and under Cat, choose the newly added CatPack. +Click the Close button, and enjoy your CatPack. + +## CatPack Types + +### 1. Simple CatPack + +The most basic CatPack is a simple image(that's all). + +### 2. Advanced CatPack + +Is a folder that contains a `catpack.json` file and some images. + +For example, the structure of a CatPack is as follows: + +```text +?붴?? test_catpack + ?쒋?? catpack.json + ?쒋?? christmas.png + ?쒋?? oneDay.png + ?쒋?? maxwell.png + ?쒋?? newyear.png + ?붴?? newyear2.png +``` + +The `catpack.json` looks as follows: + +```json +{ + "name": "My Cute Cat", + "default": "maxwell.png", + "variants": [ + { + "startTime": { + "day": 12, + "month": 4 + }, + "endTime": { + "day": 12, + "month": 4 + }, + "path": "oneDay.png" + }, + { + "startTime": { + "day": 20, + "month": 12 + }, + "endTime": { + "day": 28, + "month": 12 + }, + "path": "christmas.png" + }, + { + "startTime": { + "day": 30, + "month": 12 + }, + "endTime": { + "day": 1, + "month": 1 + }, + "path": "newyear2.png" + }, + { + "startTime": { + "day": 28, + "month": 12 + }, + "endTime": { + "day": 3, + "month": 1 + }, + "path": "newyear.png" + } + ] +} +``` + +Fields description: + +- `name` the name of the CatPack +- `default` the path to the default cat +- `variants` a list of the cats that are visible only on specific days/periods. +- `startTime` the day from which the variant is visible (inclusive) +- `endTime` the day until the variant is visible (inclusive) +- `path` the path to the variant + +All paths are relative, so you only need to put the name of the image from the CatPack(with extension). + +The default cat is the cat displayed in all periods we can't match any variants. + +The variant matching is done by looking if today is between `startTime` and `endTime`, if is matched then that variant is displayed. + +The order of variants matters as the first variant that matches the period is returned ignoring the rest. + +So for the mentioned example, the variants are displayed as follows: + +- `oneDay.png` will be visible only on 12 April each year +- `christmas.png` from 20 December until 28 December +- `newyear.png` on 29 December +- `newyear2.png` from 30 December until 1 January +- `newyear.png` from 2 January until 3 January +- `maxwell.png` for the periods that were not mentioned + +So an example of order matter is if the `newyear.png` and `newyear2.png` orders would be reversed then `newyear2.png` will never be displayed. diff --git a/archived/projt-launcher/docs/handbook/wiki/getting-started/command-line-interface.md b/archived/projt-launcher/docs/handbook/wiki/getting-started/command-line-interface.md new file mode 100644 index 0000000000..9b46bf854d --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/getting-started/command-line-interface.md @@ -0,0 +1,33 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Using ProjT Launcher via the Command Line + +```text +Usage: projtlauncher [-h] [-v] [-d <dir>] [-l <launch>] [-s <server>] [-a <profile>] [-I <import>] [--show <show>] [--alive] [--help-all] + +Options: + -d, --dir <directory> Use a custom path as application root (use '.' for current directory) + -l, --launch <instance> Launch the specified instance (by instance ID) + -s, --server <address> Join the specified server on launch (only valid in combination with --launch) + -a, --profile <profile> Use the account specified by its profile name (only valid in combination with --launch) + --alive Write a small 'live.check' file after the launcher starts + -I, --import <file> Import instance from specified zip (local path or URL) + --show <show> Opens the window for the specified instance (by instance ID) + -h, --help Displays help on commandline options. + --help-all Displays help, including generic Qt options. + -v, --version Displays version information. +``` + +## What is an instance ID, and where do I find it? + +The instance ID is the name of the folder where your instance is contained. + +To find it, **right-click** on the instance you want to know the ID of, and then click on _Instance Folder_ within the context menu. + +Now, just copy the name of the folder that opened. + +## ProjT Launcher is still opening after I close Minecraft + +Currently, the _Close ProjT Launcher after game window opens_ option opens ProjT Launcher after closing Minecraft, even when launched from the CLI. + +To disable this, open _Settings_, then select _Minecraft_, and finally, un-check _Close ProjT Launcher after game window opens_ or check _Quit the launcher after game window closes_. diff --git a/archived/projt-launcher/docs/handbook/wiki/getting-started/controller-support.md b/archived/projt-launcher/docs/handbook/wiki/getting-started/controller-support.md new file mode 100644 index 0000000000..0a1a7cc9fd --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/getting-started/controller-support.md @@ -0,0 +1,52 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Making use of Controllers + +This includes Steam Deck's Gamepad, PlayStation/Xbox controllers and so on. + +## Before proceeding + +* Please ensure that you are comfortable with the mod installation process within ProjT Launcher. +* A full guide on this can be [found here](../download-mods/). +* Not all game versions are supported at the time of writing, including those before 1.12.2. +* Please ensure a compatible version of Java is selected. [You can learn how to do so here](../installing-java/). + +Finally, if you don't have one already, you must create an **instance** with the game version and mod loader of your choice. + +## <img src="https://raw.githubusercontent.com/FabricMC/community/main/media/unascribed/png/fabric.png" alt="FabricMC Logo" height="20"><img src="https://raw.githubusercontent.com/QuiltMC/art/master/brand/svg/quilt_logo_dark.svg" alt="QuiltMC Logo" height="20"> Fabric/Quilt + +Before you continue, ensure that the correct version of the **Fabric API** mod on **Fabric** or the **Quilted Fabric API** mod on **Quilt** for your instance is installed. + +### <img src="https://cdn.modrinth.com/data/DOUdJVEm/4f8cdb3933f9efa0c5dfd5574d3ad6b101c7f3ef.png" alt="Controlify Logo" height="20"> Controlify (for Minecraft Versions 1.19.4 or newer) + +For Minecraft 1.19.4 or newer, we recommend [**Controlify**](https://modrinth.com/mod/controlify). It's a new controller mod that has [a lot of features that aren't in MidnightControls](https://github.com/isXander/Controlify/blob/1.20.x/dev/mod-comparison.md). + +It can be installed using ProjT Launcher's mod downloader function through either Modrinth (recommended) or CurseForge. Once installed, please launch your instance and navigate to the in-game controller menu (Options -> Controls -> Controller Settings) and do the calibration. Once that's done, you're ready to use your controller! + +### <img src="https://cdn-raw.modrinth.com/data/bXX9h73M/icon.svg" alt="MidnightControls Logo" height="20"> MidnightControls (for Minecraft Versions 1.18 or newer) + +For Minecraft 1.18 or newer, we recommend [**MidnightControls**](https://modrinth.com/mod/midnightcontrols), an updated fork of LambdaControls. + +It can be installed using ProjT Launcher's mod downloader function through either Modrinth (recommended) or CurseForge. Once installed, please launch your instance and navigate to the in-game controls menu. Within the in-game controls menu, you may need to change the "Mode" setting to **Controller** in order for the game to respond to input from the gamepad. If it doesn't work, you can use [**the app linked in the mod**](https://generalarcade.com/gamepadtool/) to edit the controller mappings. + +### <img src="https://cdn-raw.modrinth.com/data/W1D3UXEc/icon.png" alt="LambdaControls Logo" height="20"> LambdaControls (for Minecraft Versions 1.16.2 to 1.18) + +**NOTE:** This mod is currently unmaintained and hasn't been updated since June of 2021, so unless you really need to, use MidnightControls. + +For Minecraft 1.16.2 to 1.18, we recommend [**LambdaControls**](https://modrinth.com/mod/lambdacontrols). + +It can be installed using ProjT Launcher's mod downloader function through either Modrinth (recommended) or CurseForge. Once installed, please launch your instance and navigate to the in-game controls menu. Within the in-game controls menu, you may need to change the "Mode" setting to **Controller** in order for the game to respond to input from the gamepad. If it doesn't work, you can use [**the app linked in the mod**](https://generalarcade.com/gamepadtool/) to edit the controller mappings. + +### <img src="https://raw.githubusercontent.com/intergrav/Branding/main/deckcraft/mark/mark_svg.svg" alt="DeckCraft" height="20"> DeckCraft (for Minecraft versions 1.18.2 ??1.21.1) + +If you're on the Steam Deck, [DeckCraft](https://modrinth.com/project/deckcraft) might be useful to you. This is a modpack designed to make it easier to play Minecraft on the Deck. It includes MidnightControls, various optimizations, features, configurations, pre-installed shaders, and more. + +You can install it through the launcher by heading to `Add Instance`, select the `Modrinth` tab, then press `STEAM` + `X` together to open the keyboard and search for "DeckCraft". After this, select your preferred version and install it. + +## <img src="https://avatars0.githubusercontent.com/u/1390178?s=400&v=4" alt="Forge Logo" height="20"> Forge + +### <img src="https://raw.githubusercontent.com/MrCrayfish/Controllable/6caef1a4ac113e5c6ac1d1abde0f0cabc3e6ad97/src/main/resources/controllable_icon.png" alt="Controllable Logo" height="20"> Controllable (for Minecraft Versions 1.12.2 or newer) + +For Minecraft versions 1.12.2 or above, we also recommend [**Controllable**](https://www.curseforge.com/minecraft/mc-mods/controllable). + +Controllable can be installed using ProjT Launcher's mod downloader function through CurseForge. Once installed, you may now launch your instance, and find that the mod should begin working immediately. diff --git a/archived/projt-launcher/docs/handbook/wiki/getting-started/create-instance.md b/archived/projt-launcher/docs/handbook/wiki/getting-started/create-instance.md new file mode 100644 index 0000000000..e61d1451a7 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/getting-started/create-instance.md @@ -0,0 +1,13 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Creating an instance + +To create an instance, simply click on the **Add Instance** button on the top menu bar, or right-click an empty area in the middle of the launcher, and select **Create instance**. You can then either create a new instance by selecting your desired Minecraft version and modloader, or import an existing modpack by selecting a mod platform from the sidebar on the left. + + + +## Editing an instance + +Once an instance is created, you can right-click it to open a context menu with some basic settings. From this list, select **Edit** to access the edit menu. + + diff --git a/archived/projt-launcher/docs/handbook/wiki/getting-started/data-location.md b/archived/projt-launcher/docs/handbook/wiki/getting-started/data-location.md new file mode 100644 index 0000000000..9ca656e218 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/getting-started/data-location.md @@ -0,0 +1,32 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Data Location + +ProjT Launcher stores your data in your OS's standard application data folder. For the portable version, data is stored within its own directory. To find it, select **Folders** > **Launcher Root** in ProjT. Below is a table containing the default locations for each OS: + +| OS | Folder | +| -------------------------- | --------------------------------------------------------------- | +| Portable (Windows / Linux) | In the ProjT-Launcher folder | +| Windows | `%APPDATA%/ProjTLauncher` | +| Scoop | `%HOMEPATH%\scoop\persist\projtlauncher` | +| macOS | `~/Library/Application Support/ProjTLauncher` | +| Linux | `~/.local/share/ProjTLauncher` | +| Flatpak | `~/.var/app/org.projecttick.ProjTLauncher/data/ProjTLauncher` | + +## Internal folder structure + +| Folder | Purpose | +| ------------ | -------------------------------------------------------------- | +| assets | Stores the game files. | +| cache | Stores cached downloads. | +| catpacks | Stores the [catpacks](../catpacks). | +| icons | Stores instance icons. (default) | +| iconthemes | Stores launcher [icons themes](../change-themes#icons-pack). | +| instances | Stores user instances. (default) | +| java | Stores the java instalations managed by the launcher. | +| libraries | Stores libraries used to run Minecraft and Mod Loaders. | +| logs | Stores the logs. | +| meta | Stores the cached metadata information. | +| skins | Stores the player skins. | +| themes | Stores [themes](../change-themes). | +| translations | Stores GUI translations. | diff --git a/archived/projt-launcher/docs/handbook/wiki/getting-started/download-modpacks.md b/archived/projt-launcher/docs/handbook/wiki/getting-started/download-modpacks.md new file mode 100644 index 0000000000..fbdb79b3af --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/getting-started/download-modpacks.md @@ -0,0 +1,42 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Downloading Modpacks + +Similar to [creating an instance](../create-instance), downloading a modpack can be done through the **Add Instance** menu. Or alternatively, *right click > create instance* +You can now use the sidebar to the left of the window to choose from the following: + +* Import +* ATLauncher +* CurseForge +* FTB Legacy +* FTB App Import +* Modrinth +* Technic + +After selecting which service you wish to use, you can browse the modpacks which available to install. + +The "**Import**" option assumes that you have manually downloaded a modpack to your computer through other means, and will ask for a **.zip** or **.mrpack** archive containing a ProjT Launcher compatible pack. + +The **FTB App Import** option assumes that you have **FTB App** installed on your PC, and have the modpack installed in FTB App. + +## Screenshots + +### CurseForge + + + +### Modrinth + + + +### Technic + + + +### Import + + + +### Custom + + diff --git a/archived/projt-launcher/docs/handbook/wiki/getting-started/download-mods.md b/archived/projt-launcher/docs/handbook/wiki/getting-started/download-mods.md new file mode 100644 index 0000000000..72d939111e --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/getting-started/download-mods.md @@ -0,0 +1,19 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Downloading Mods + +Make sure you know how to [Create an Instance](../create-instance) before attempting to download mods. + +Inside the **Edit** menu, select the **Version** tab on the left sidebar. From here, you will need to decide on which mod loader you would like to use. **Fabric** is available for all versions starting with **1.14**. If you are using Forge mods, for Minecraft versions **1.20.1** and below, select **Forge**; for versions above **1.20.1**, it's generally recommended to use **NeoForge** instead. Content-heavy mods are typically made for **Forge** or **NeoForge**, while **Fabric** mods focus more on performance and QOL features. + +Once you have picked out your ideal mod loader, go to the **Mods** tab, and select the **Download Mods** option that's to the right. From here, you can choose to install from both *Modrinth* and *CurseForge* services. Modrinth focuses more towards free and open-source mods and is generally recommended, however, some older mods may only exist on CurseForge. + +It is worth noting that many mods will be available on **both platforms**. + +After you've chosen your mod provider, you can search or browse for any desired mods. Click the **Select mod for download** button to add each mod to your download queue. Once finished, you can now press **OK**, and your mods should begin downloading. + +## <img src="https://raw.githubusercontent.com/FabricMC/community/main/media/unascribed/png/fabric.png" alt="FabricMC Logo" height="20"> Fabric + +If you have elected to use the **Fabric** mod loader, then please ensure that the latest version of the **Fabric API** mod available for your game version is installed. It is mostly **required** for Fabric mods. + +If it is missing, you can install it from **Edit** > **Mods** > **Download mods** like any other mod. diff --git a/archived/projt-launcher/docs/handbook/wiki/getting-started/index.md b/archived/projt-launcher/docs/handbook/wiki/getting-started/index.md new file mode 100644 index 0000000000..b9f64caf1d --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/getting-started/index.md @@ -0,0 +1,13 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Getting Started + +How to set up and use ProjT Launcher to its fullest! + + + +## News + + + + diff --git a/archived/projt-launcher/docs/handbook/wiki/getting-started/install-of-alternatives.md b/archived/projt-launcher/docs/handbook/wiki/getting-started/install-of-alternatives.md new file mode 100644 index 0000000000..4dcaaec125 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/getting-started/install-of-alternatives.md @@ -0,0 +1,119 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Why bother? + +For older Minecraft versions, OptiFine was *the* way to make your game better, faster, and stronger through various useful features and optimizations. However, since Minecraft 1.16 there exist much better alternatives. + +## Detailed explanation + +For a very long time, OptiFine was an essential mod that many enjoyed using as it offers important benefits such as performance improvements, extra quality of life features, and more. However, it also has its downsides: + +- OptiFine is closed-source. This means that no one can easily inspect its code, and it is much more difficult for developers to make their mods compatible with OptiFine - since they can't see what could be conflicting between their mod and OptiFine. + +- OptiFine sometimes takes a long time to update to newer Minecraft versions as there is only one developer working on the mod. + +- OptiFine functions as an "all-in-one" mod (similar to a modpack). This makes it impossible for the user to disable/fully remove features that may be incompatible with other mods or that they don't need. + +In the past few years, various mods have been made to replace these features and offer a better experience for both mod developers *and* users. Most of them are open-source, updated faster due to community contributions and support, and allow you to remove features if they're incompatible with another mod or don't suit your preference. These will usually be available on Fabric and Quilt, with some of them natively supporting (or working through compatibility layers) Forge and/or NeoForge. + +## Installing things + +To install mods and modpacks, see the [Download mods](../download-mods) and [Download modpacks](../download-modpacks) pages. + +## <img src="https://raw.githubusercontent.com/FabricMC/community/main/media/unascribed/png/fabric.png" alt="FabricMC Logo" height="30"><img src="https://raw.githubusercontent.com/QuiltMC/art/master/brand/svg/quilt_logo_dark.svg" alt="QuiltMC Logo" height="30"> Fabric/Quilt Mods + +<div class="notification type-info"> +Most Fabric mods require the <a href="https://modrinth.com/mod/fabric-api">Fabric API</a> mod in order to work, while most Quilt mods require <a href="https://modrinth.com/mod/qsl">Quilted Fabric API</a> to work. +</div> + +### <img src="https://cdn.modrinth.com/data/AANobbMI/icon.png" alt="Sodium Logo" height="20"> Sodium + +[Sodium](https://modrinth.com/mod/sodium) is a mod that greatly improves render performance through various rendering optimizations. We **highly recommend** installing it when possible. + +If you use Sodium often, please consider supporting development of the mod by [donating](https://jellysquid.me/donate) to the developer! + +### <img src="https://cdn.modrinth.com/data/gvQqBUqZ/icon.png" alt="Lithium Logo" height="20"> Lithium + +[Lithium](https://modrinth.com/mod/lithium) is a mod that greatly improves render performance through various game logic optimizations. We **highly recommend** installing it when possible. + +### <img src="https://raw.githubusercontent.com/IrisShaders/Iris/trunk/src/main/resources/assets/iris/iris-logo.png" alt="Iris Logo" height="20"> Iris + +[Iris](https://irisshaders.dev/) allows you to use OptiFine shaderpacks, while also running Sodium. It currently supports almost every shaderpack, [with some exceptions](https://github.com/IrisShaders/Iris/blob/trunk/docs/supportedshaders.md#shaders-that-do-not-work-on-iris). + +### <img src="https://cdn.modrinth.com/data/Orvt0mRa/icon.png" alt="Indium Logo" height="20"> Indium + +[Indium](https://modrinth.com/mod/indium) is an addon for older Sodium versions that provides support for the Fabric Rendering API. This is needed if you want to use Sodium on Minecraft 1.20 or older with mods that use advanced rendering techniques. + +### <img src="https://cdn.modrinth.com/data/gvQqBUqZ/icon.png" alt="Lithium Logo" height="20"><img src="https://cdn.modrinth.com/data/H8CaAYZC/icon.png" alt="Starlight Logo" height="20"> Other Mods + +If you would like to go a bit further, LambdAurora maintains a [very detailed list of OptiFine alternatives for Fabric and Quilt](https://lambdaurora.dev/optifine_alternatives/). There's also [a list of mods used by the Additive modpack](https://github.com/skywardmc/additive/wiki/Give-up-OptiFine), which provides the Minecraft versions that each mod supports along with some extra information. + +## <img src="https://raw.githubusercontent.com/FabricMC/community/main/media/unascribed/png/fabric.png" alt="FabricMC Logo" height="30"><img src="https://raw.githubusercontent.com/QuiltMC/art/master/brand/svg/quilt_logo_dark.svg" alt="QuiltMC Logo" height="30"> Fabric/Quilt Modpacks + +### <img src="https://avatars.githubusercontent.com/u/92206402?s=200&v=4" alt="Fabulously Optimized Logo" height="20"> Fabulously Optimized + +If you don't want to search and install these mods manually, then try the [Fabulously Optimized](https://modrinth.com/modpack/fabulously-optimized) modpack, which supports almost all OptiFine features. + +[See the installation instructions](https://fabulously-optimized.gitbook.io/modpack/readme/install-instructions#prism-launcher) for ProjT Launcher. + +### <img src="https://cdn.modrinth.com/data/BYfVnHa7/icon.png" alt="Simply Optimized Logo" height="20"> Simply Optimized + +[Simply Optimized](https://modrinth.com/modpack/sop) is a modpack designed with just optimization in mind. SO has better out-of-the-box performance than Fabulously Optimized, but it doesn't come with the QoL mods or full OptiFine parity you would see in Fabulously Optimized, so you're expected to add any additional mods you want yourself. + +### <img src="https://raw.githubusercontent.com/skywardmc/art/main/additive/logo_512h.png" alt="Additive Logo" height="20"> Additive + +[Additive](https://modrinth.com/modpack/additive) is a modpack similar to Fabulously Optimized which aims to support nearly all OptiFine features. It's based on Adrenaline for better performance, supports Fabric, and can be installed on a wide range of Minecraft versions. + +### <img src="https://raw.githubusercontent.com/skywardmc/art/main/adrenaline/logo_512h.png" alt="Adrenaline Logo" height="20"> Adrenaline + +[Adrenaline](https://modrinth.com/modpack/adrenaline) is a Fabric modpack which aims to improve performance as much as possible while not changing anything about the vanilla game and not introducing instability. Like Simply Optimized, it does not come with any OptiFine replacement mods, so you'll have to manually install the features that you want. + +## <img src="https://avatars0.githubusercontent.com/u/1390178?s=400&v=4" alt="Forge Logo" height="30"> Forge/NeoForge Mods + +### <img src="https://cdn.modrinth.com/data/AANobbMI/icon.png" alt="Sodium Logo" height="20"> Sodium for Forge + +[Sodium](https://modrinth.com/mod/sodium) also exists for some Minecraft versions on Forge/NeoForge ??see [its support policy](https://github.com/CaffeineMC/sodium/wiki/Support-Policy). We highly recommend installing it when possible. + +### <img src="https://cdn.modrinth.com/data/gvQqBUqZ/icon.png" alt="Lithium Logo" height="20"> Lithium for Forge + +[Lithium](https://modrinth.com/mod/lithium) also exists for some Minecraft versions on Forge/NeoForge ??see [its support policy](https://github.com/CaffeineMC/lithium/wiki/Support-Policy). We highly recommend installing it when possible. + +### <img src="https://raw.githubusercontent.com/IrisShaders/Iris/trunk/src/main/resources/assets/iris/iris-logo.png" alt="Iris Logo" height="20"> Iris for Forge + +[Iris](https://irisshaders.dev/) also generally exists for the same loaders/versions as Sodium. + +<div class="notification type-warn"> +<strong>On older Minecraft versions with Forge, you'll need to use unofficial ports of OptiFine alternatives, which might have some compatibility/stability issues.</strong> + +While on some modpacks/with some mods they're going to work good, with others they might be <em>very</em> unstable so be well aware of what you're doing. If you have issues, use OptiFine. + +You can use <a href="https://modrinth.com/mod/connector">Sinytra Connector</a> to run many Fabric mods on Forge. + +<strong>Don't report issues with those on upstream's Discord support channels!</strong> +</div> + +### <img src="https://raw.githubusercontent.com/FiniteReality/embeddium/aa6657df4eaea8bdfa6243233c893207f5b7f8b4/src/main/resources/icon.png" alt="Embeddium" height="20"> Embeddium + +[Embeddium](https://modrinth.com/mod/embeddium) is a Sodium port for Forge that focuses on compatibility with other Forge mods. We generally recommend using it instead of Rubidium. Be aware of the statements above before using it. + +### <img src="https://raw.githubusercontent.com/Asek3/Oculus/1.18.2/src/main/resources/oculus-logo.png" alt="Oculus Logo" height="20"> Oculus + +[Oculus](https://modrinth.com/mod/oculus) is an Iris port for Forge. Be aware of the statements above before using it. + +### Radium + +[Radium](https://modrinth.com/mod/radium) is a Lithium port for Forge. Be aware of the statements above before using it. + +### Other mods + +You can find [a list of performance mods for Forge here](https://github.com/NordicGamerFE/usefulmods#performance-and-bug-fixing-mods). + +## <img src="https://avatars0.githubusercontent.com/u/1390178?s=400&v=4" alt="Forge Logo" height="30"> Forge Modpacks + +### <img src="https://raw.githubusercontent.com/skywardmc/art/main/hammer/logo_512h.png" alt="Hammer Logo" height="20"> Hammer + +[Hammer](https://modrinth.com/modpack/hammer) is like the Adrenaline modpack but made for Forge, utilizing Forge ports of mods and [Sinytra Connector](https://modrinth.com/mod/connector) to run Fabric/Quilt optimization mods. + +### <img src="https://raw.githubusercontent.com/skywardmc/art/main/drill/logo_512h.png" alt="Drill Logo" height="20"> Drill + +[Drill](https://modrinth.com/modpack/drill) is the Additive modpack but made for Forge, utilizing Forge ports of mods and [Sinytra Connector](https://modrinth.com/mod/connector) to run Fabric/Quilt optimization and OptiFine replacement mods. diff --git a/archived/projt-launcher/docs/handbook/wiki/getting-started/installing-java.md b/archived/projt-launcher/docs/handbook/wiki/getting-started/installing-java.md new file mode 100644 index 0000000000..f056e8dc14 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/getting-started/installing-java.md @@ -0,0 +1,179 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Installing Java + +## Automatically installing Java (recommended) + +In ProjT Launcher 0.0.1+, you can let the launcher handle Java automatically on Windows, macOS and Linux (not available in all packages) by enabling "Autodetect Java version" and "Auto-download Mojang Java" in: + +> Settings (top toolbar) > Java + +This will make the launcher automatically download the right version of Java for your version of Minecraft (Java 8 for pre-1.17, Java 17 for 1.17-1.20.4, etc.). The rest of this page is going to explain downloading Java manually, and is probably not needed for you. + +If the Java downloader is not available for you - which is the case on most Linux packages apart from the official Flatpak and AppImage downloads - manual installation is recommended instead. + +## Manually installing Java + +Oracle Java is not recommended. As of 2019, it has licensing that prohibits certain uses, and it requires an account to download certain versions. Their downloads are intended for those who have purchased a support contract from Oracle. + +Instead, this guide recommends installing **OpenJDK** from one of the reputable vendors. OpenJDK is a source code only distribution of Java made by a collaboration between Oracle and industry partners such as Adoptium, Microsoft, Red Hat, and Azul. Unlike Oracle Java, it is released under a license that minimizes legal risk for users and does not require payment. + +If you would like to learn more about OpenJDK and the vendors mentioned in this page, here are their websites: + +- [Adoptium Temurin](https://adoptium.net/) +- [Microsoft OpenJDK](https://www.microsoft.com/openjdk) +- [Azul OpenJDK](https://www.azul.com/downloads/) +- [OpenJDK source distribution](https://openjdk.org/) + +Otherwise, continue reading for quick download links and a guide for which one to choose. + +### Selecting Java + +Once you have **installed** Java, ProjT Launcher will be able to detect it during the first time set-up wizard. + +If you installed Java after already completing the first time setup process, you can access and modify your Java configuration globally for all instances through: + +> Settings > Java > Java Runtime > Auto-Detect... + +or for a specific instance: + +> Right click an instance > Edit > Settings > Java > Java installation > Auto-Detect... + +If you have just installed a version of Java and it doesn't show up, try pressing Refresh or restart the launcher. If you don't have your desired Java version installed, keep reading. + +### Installing Java on Windows + +**First, check your CPU architecture.** Here is a method that works on all Windows versions: + +1. Click or tap on the **Start Menu** +2. Search **Command Prompt** or **Terminal** and click on it +3. Type in `echo %PROCESSOR_ARCHITECTURE%` and press enter +4. Read the result. + - If it says `AMD64`, you have a 64-bit **x86-64** CPU. This is sometimes called **x64** or **amd64**. + - If it says `X86`, you have a 32-bit **x86** CPU. This is sometimes called **x32** or **x86-32**. + - If it says `ARM64`, you have a 64-bit **ARM** CPU. This is sometimes called **aarch64** or **ARM64**. + +Then, download the appropriate Java: + +| Minecraft | CPU type | Download page | Viable alternatives | +| :---: | :---: | -- | --- | +| Minecraft **1.20.5** or above | x86-64 | [Microsoft OpenJDK 21 for Windows x64, `.msi` installer](https://aka.ms/download-jdk/microsoft-jdk-21-windows-x64.msi) | Azul, Coretto, Temurin, GraalVM | +| | x86 | Not available :( | | +| | aarch64 | [Microsoft OpenJDK 21 for Windows aarch64, `.msi` installer](https://aka.ms/download-jdk/microsoft-jdk-21-windows-aarch64.msi) | Azul | +| Minecraft **1.17** to **1.20.4** | x86-64 | [Microsoft OpenJDK 17 for Windows x64, `.msi` installer](https://aka.ms/download-jdk/microsoft-jdk-17-windows-x64.msi) | Azul, Coretto, Temurin, GraalVM | +| | x86 | [Temurin OpenJDK 17 for Windows x32, `.msi` installer](https://adoptium.net/temurin/releases/?version=17&arch=x86&os=windows) | Azul, Coretto | +| | aarch64 | [Microsoft OpenJDK 17 for Windows aarch64, `.msi` installer](https://aka.ms/download-jdk/microsoft-jdk-17-windows-aarch64.msi) | Azul | +| Minecraft **1.16** or below | x86-64 | [Temurin OpenJDK 8 for Windows x64, `.msi` installer](https://adoptium.net/temurin/releases/?version=8&arch=x64&os=windows) | Azul, Coretto | +| | x86 | [Temurin OpenJDK 8 for Windows x64, `.msi` installer](https://adoptium.net/temurin/releases/?version=8&arch=x86&os=windows) | Azul, Coretto | +| | aarch64 | Not available :( | | + +**Tip:** If you are on Windows 11, you can automatically install 8, 17 and 21 by running `winget install Microsoft.OpenJDK.21; winget install Microsoft.OpenJDK.17; winget install EclipseAdoptium.Temurin.8.JDK` in the Terminal app. + +### Installing Java on macOS + +**First, check your CPU architecture.** + +1. Open the Apple menu in the top left corner of the screen +2. Click "About This Mac" +3. Check what it says after "Processor" + - If it contains `Intel`, you have a 64-bit **x86-64** CPU. This is sometimes called **x64** or **amd64**. + - If it contains `Apple`, you have a 64-bit **ARM** CPU. This is sometimes called **aarch64** or **ARM64**. + +Then, download the appropriate Java: + +| Minecraft | CPU type | Download page | Viable alternatives | +| :---: | :---: | --- | --- | +| Minecraft **1.20.5** or above | x86-64 | [Microsoft OpenJDK 21 for macOS x64, `.pkg` installer](https://learn.microsoft.com/en-us/java/openjdk/download) | Azul, Coretto, Temurin, GraalVM | +| | aarch64 | [Microsoft OpenJDK 21 for macOS aarch64, `.pkg` installer](https://learn.microsoft.com/en-us/java/openjdk/download) | Azul, Coretto | +| Minecraft **1.17** to **1.20.4** | x86-64 | [Microsoft OpenJDK 17 for macOS x64, `.pkg` installer](https://learn.microsoft.com/en-us/java/openjdk/download) | Azul, Coretto, Temurin, GraalVM | +| | aarch64 | [Microsoft OpenJDK 17 for macOS aarch64, `.pkg` installer](https://learn.microsoft.com/en-us/java/openjdk/download) | Azul, Coretto | +| Minecraft **1.16** or below | x86-64 | [Temurin OpenJDK 8 for macOS x64, `.pkg` installer](https://adoptium.net/temurin/releases/?version=8) | Azul, Coretto | +| | aarch64 | [Azul OpenJDK 8 for macOS aarch64, `.dmg` installer](https://www.azul.com/downloads/?version=java-8-lts&os=macos&architecture=arm-64-bit&package=jdk) | Coretto | + +### Installing Java on Linux + +On Linux, it's recommended to use your package manager for installing Java. + +#### Fedora, RHEL, CentOS, AlmaLinux, or RockyLinux + +On the COPR package all required Java versions should be installed, but this is the command to install it: + +```bash +sudo dnf install java-1.8.0-openjdk java-17-openjdk java-21-openjdk +``` + +#### Void Linux + +```bash +sudo xbps-install openjdk17-jre openjdk8-jre openjdk21-jre +``` + +#### Arch Linux, Manjaro, EndeavorOS, Garuda + +```bash +sudo pacman -S jre17-openjdk jre8-openjdk jre21-openjdk +``` + +#### Ubuntu, Pop!\_OS, Linux Mint, Zorin OS, or elementaryOS + +```bash +sudo apt install openjdk-17-jre openjdk-8-jre openjdk-21-jre +``` + +#### Debian, MX Linux + +```bash +sudo apt install openjdk-17-jre openjdk-21-jre +``` + +Java 8 is not available in Debian 10+ due to lack of security support, but you can use the Adoptium repository for security support until 2026: + +```bash +wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo apt-key add - +sudo add-apt-repository --yes https://packages.adoptium.net/artifactory/deb/ +sudo apt-get update && sudo apt-get install temurin-8-jdk +``` + +#### Alpine Linux + +```bash +sudo apk add openjdk17 openjdk8 +``` + +#### Flatpak + +The ProjT Launcher Flatpak already bundles Java. + +#### NixOS + +The ProjT Launcher NixOS package already bundles Java. + +### Special cases + +#### Forge 1.16.5 and Java 8u321+ + +Old versions of Forge crash with Java 8u321+. For this reason, using Java 8u312 or lower is recommended. + +#### A note about Intel HD 2000/3000 on Windows 10 + +Since those iGPUs are not *officially* supported on Windows 10, with them the game is likely going to crash with any modern java binary. + +<!-- markdownlint-disable-next-line link-fragments --> +*For 1.16.5 or older* there's a workaround in installing an older Java binary. Mojang Java 8u51 is recommended, and can be automatically installed with the [above](#automatically-installing-java-(recommended)). + +Unfortunately there's no workaround for Java 17 (and so newer Minecraft), so you can only downgrade your Windows or switch to Linux there. +If you want to try, [there's this guide that could work](https://gist.github.com/rb-dahlb/26f316c5b6089807a139fc44ee69f0d1). Nothing is guaranteed here, though. + +#### Older Minecraft on MacOS + +If you use some older Minecraft versions, you might have had this error: + +```text +Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSWindow drag regions should only be invalidated on the Main Thread!' +``` + +Here is a fix: + +- First, remove, if you had, [your current Oracle Java](https://explainjava.com/uninstall-java-macos/) +- Then download and install [this Java 8u241 binary](https://files.multimc.org/downloads/jre-8u241-macosx-x64.dmg) +- Select this java binary on ProjT Launcher, and it should fix your issue! diff --git a/archived/projt-launcher/docs/handbook/wiki/getting-started/installing-optifine.md b/archived/projt-launcher/docs/handbook/wiki/getting-started/installing-optifine.md new file mode 100644 index 0000000000..c0da206bb6 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/getting-started/installing-optifine.md @@ -0,0 +1,66 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Before you continue + +Because OptiFine is an old, closed-source project, it has evolved to cause many mod incompatibilities, and doesn't do as good of a job as some the alternatives out there. + +Also, if you're using the Fabric mod loader, there's no native support for it, and the current workaround is known to be buggy and quite unstable, due to the very nature of OptiFine and OptiFabric. + +Therefore, you should consider the use of OptiFine alternatives whenever possible. [See the wiki page about it](../install-of-alternatives). + +## <img src="https://www.optifine.net/favicon.ico" alt="OptiFine Logo" height="20" /> Installing OptiFine standalone + +This method requires you either have the Minecraft version you wish to install OptiFine on to be installed through the vanilla launcher or to recreate the folder structure somewhere on your system (like /.minecraft/versions/*1.18.2*/*1.18.2*.jar). + +Go to <https://optifine.net/downloads> and find your respective Minecraft version (eg. 1.18.2). + +Once found, click **mirror**. Now click the **download** button to download your OptiFine jar file. + +Execute the OptiFine jar file and change the selected folder location if required, then hit the **"Extract"** button and save the jarmod file somewhere you'll remember. + +Now in ProjT Launcher edit the instance you wish to install OptiFine on, open the **Version** tab and click **Add to Minecraft.jar**, select the extracted OptiFine jarmod (the file ending in \_MOD.jar) and confirm. + +OptiFine will now be installed as a jarmod in that instance, so you can remove the installer and extracted jarmod. + +From OptiFine Version **H1_pre2** the instructions for installing OptiFine on ProjT Launcher have changed. Make sure to have the version of Minecraft that you wish to install OptiFine on installed through the vanilla launcher. + +1. Extract the MOD jar with the OptiFine installer +2. Open it with any archiver +3. Move all files from the folder called **notch** to the top folder of the archive file and click **save**. +4. Open ProjT Launcher, edit the instance you wish to install OptiFine on, open the **Version** tab and click **Add to Minecraft.jar**, select the extracted / modified OptiFine jarmod (the file ending in _MOD.jar) and confirm. + +## <img src="https://www.optifine.net/favicon.ico" alt="OptiFine Logo" height="20" /> Installing OptiFine on top of a modloader + +Make sure you know how to [download mods](../download-mods) before attempting to install OptiFine. + +Go to <https://optifine.net/downloads> and find your respective Minecraft version (eg. 1.18.2). + +Once found, click **mirror**. Now click the **download** button to download your OptiFine jar file. + +Remember where you have kept your **.jar** file, and continue to ProjT Launcher. Follow the steps from the [download mods](../download-mods) page, and choose either Forge or Fabric. + +### <img src="https://avatars0.githubusercontent.com/u/1390178?s=400&v=4" alt="Forge Logo" height="20"> Forge + +Forge does not require any extra steps besides adding the **.jar** for OptiFine into ProjT Launcher. + +**NOTE:** Some versions of OptiFine **don't** work on Forge! + +### <img src="https://raw.githubusercontent.com/FabricMC/community/main/media/unascribed/png/fabric.png" alt="FabricMC Logo" height="20"> Fabric + +**Note:** If you're playing on Minecraft versions older than 1.16, you might need to also install the [Fabric API](../download-mods/#fabric) mod. + +Fabric, unlike Forge, does not natively support OptiFine, and will require the installation of OptiFabric. + +Go into the **Mods** tab on the left side and then in the right menu select **Download mods**, then select *CurseForge* and search *OptiFabric*. Once found, click **Select mod for download**, and then press **OK**. You may now proceed with adding the .jar file for OptiFine into ProjT Launcher. + +If there were results shown in the search, your Minecraft version may not be compatible with OptiFabric. In this case, you can either try the Forge method, or choose to wait until support for your Minecraft version is added. + +### <img src="https://raw.githubusercontent.com/QuiltMC/art/master/brand/svg/quilt_logo_dark.svg" alt="QuiltMC Logo" height="20"> Quilt + +There's no way of running OptiFine on Quilt at the time of writing. + +### Adding the .jar file into ProjT Launcher + +Go into the **Mods** tab on the left side of the **Edit Instance** menu, and then click on the **Add .jar** option to the right of the window. + +Now, find and select the **.jar** file you downloaded earlier, and it should now be added to your instance. Enjoy! diff --git a/archived/projt-launcher/docs/handbook/wiki/getting-started/installing-projtlauncher.md b/archived/projt-launcher/docs/handbook/wiki/getting-started/installing-projtlauncher.md new file mode 100644 index 0000000000..a8bc7260bb --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/getting-started/installing-projtlauncher.md @@ -0,0 +1,5 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# <img src="https://raw.githubusercontent.com/Project-Tick/ProjT-Launcher/develop/program_info/org.projecttick.ProjTLauncher.svg" alt="ProjT Launcher Logo" height="20" /> Installing ProjT Launcher + +Installing ProjT Launcher on most platforms should be quite straightforward. Head over to our [Downloads](/projtlauncher/download/) page, and choose the option that'll work best for your operating system. diff --git a/archived/projt-launcher/docs/handbook/wiki/getting-started/migrating-prismlauncher.md b/archived/projt-launcher/docs/handbook/wiki/getting-started/migrating-prismlauncher.md new file mode 100644 index 0000000000..81a0df930f --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/getting-started/migrating-prismlauncher.md @@ -0,0 +1,31 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Migrating instances from ProjT Launcher + +## <img src="https://avatars.githubusercontent.com/u/116031705" alt="Prism Launcher Logo" height="20" /> In Prism Launcher + +In order to transfer an instance, or multiple instances from Prism Launcher to ProjT Launcher, you must begin the process by opening Prism Launcher on your computer. + +Now that Prism Launcher is open, navigate to the **Folders** tab located on the top menu bar, to the left of the Settings tab. + +Left-click on the tab and select the **View Instance Folder** option. This should then open your system's file explorer application with the correct directory in view. + +Now that the Prism Launcher instance directory is open, you may **select**, and then **copy** the instances that you wish to transfer. + +## <img src="https://raw.githubusercontent.com/Project-Tick/ProjT-Launcher/develop/program_info/org.projecttick.ProjTLauncher.svg" alt="Prism Launcher Logo" height="20" /> In ProjT Launcher + +To complete the transfer process, you must now open ProjT Launcher. + +As you did in Prism Launcher previously, navigate to the **Folders** tab located on the top menu bar, to the left of the Settings tab. + +Left-click on the tab and select the **Instances** option. This should once again open your system's file explorer application with the correct directory in view. + +Now that the ProjT Launcher instance directory is open, you may **paste** the instance(s) that you previously copied from the Prism Launcher directory. + +*Optional: If you would like to transfer your pack icon selections, navigate up from the Prism Launcher instances folder to the main Prism Launcher folder. Do the same for Prism Launcher. Copy the* **icons** *folder from Prism Launcher to Prism Launcher.* + +## Finishing up + +Now, in **ProjT Launcher**, your instances should appear as they normally would in Prism Launcher. + +If you have transferred instances across devices or packaging formats, you may need to change the version of **Java** that'll be used to launch Minecraft. You can learn how to do so on [this page](../installing-java). diff --git a/archived/projt-launcher/docs/handbook/wiki/getting-started/settings.md b/archived/projt-launcher/docs/handbook/wiki/getting-started/settings.md new file mode 100644 index 0000000000..9337471a13 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/getting-started/settings.md @@ -0,0 +1,49 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Settings + +ProjT Launcher has various settings to customize your experience. + +## Accounts + + + +## Appearance + + + +## General + +### Backups Opened + + + +### Backups Closed + + + +## Java + + + +## Language + + + +## Tools + + + +## Console + +### Backups + + + +### Minecraft Log + + + +### Version + + diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/apis.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/apis.md new file mode 100644 index 0000000000..17ab081fab --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/apis.md @@ -0,0 +1,45 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# APIs + +## Services + + + +### Pastebin Service + +<!-- TODO: add image of Pastebin Service section --> + +This is where you can choose which Paste Service to use. + +### Metadata Server + +<!-- TODO: add image of Metadata Server section --> + +This is where you can set where the launcher gets it metadata. + +## API Keys + + + +### Microsoft Authentication + +<!-- TODO: add image of Microsoft Authentication section --> + +Set this if you want to use your own client ID for Microsoft Authentication. + +### CurseForge Core API + +<!-- TODO: add image of CurseForge Core API section --> + +Set this if you want to use your own CurseForge API key. + +## Miscellaneous + + + +### User Agent + +<!-- TODO: add image of User Agent section --> + +Set this if you want to use a custom User Agent. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/atl-platform.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/atl-platform.md new file mode 100644 index 0000000000..5628052d08 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/atl-platform.md @@ -0,0 +1,7 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# ATLauncher + + + +Here you can browse ATLauncher packs and install them. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/custom-commands.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/custom-commands.md new file mode 100644 index 0000000000..ec1497ba38 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/custom-commands.md @@ -0,0 +1,18 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Custom Commands + + + +Pre-launch command runs before the instance launches and post-exit command runs after it exits. + +Both will be run in the launcher's working folder with extra environment variables: + +- $INST_NAME - Name of the instance +- $INST_ID - ID of the instance (its folder name) +- $INST_DIR - absolute path of the instance +- $INST_MC_DIR - absolute path of Minecraft +- $INST_JAVA - Java binary used for launch +- $INST_JAVA_ARGS - command-line parameters used for launch (warning: will not work correctly if arguments contain spaces) + +Wrapper command allows launching using an extra wrapper program (like 'optirun' on Linux) diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/environment-variables.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/environment-variables.md new file mode 100644 index 0000000000..c2e7cdf171 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/environment-variables.md @@ -0,0 +1,7 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Environment Variables + + + +Here you can add environment variables to be provided to the java runtime when launching the game. This can be useful for setting up specific configurations or debugging options. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/flame-platform.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/flame-platform.md new file mode 100644 index 0000000000..d2024ae9c7 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/flame-platform.md @@ -0,0 +1,9 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# CurseForge + + + +Here you can browse CurseForge packs and install them. + +Note: Some modpacks may require the downloading of certain components via browser. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/ftb-platform.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/ftb-platform.md new file mode 100644 index 0000000000..f8473f74bc --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/ftb-platform.md @@ -0,0 +1,9 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# FTB + + + +Here you can browse FTB packs and install them. + +Note: Some modpacks may require the downloading of certain components via browser. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/index.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/index.md new file mode 100644 index 0000000000..f187fb21d7 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/index.md @@ -0,0 +1,41 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Help Pages + +Guides for ProjT Launcher settings, instance management, and mod platform importers. Content is adapted from the upstream Prism Launcher help pages with ProjT branding and local screenshots. + +## Settings + +- [Launcher Settings](./launcher-settings/) +- [Java Settings](./java-settings/) +- [Java Wizard](./java-wizard/) +- [Language Settings](./language-settings/) +- [Minecraft Settings](./minecraft-settings/) +- [Proxy Settings](./proxy-settings/) +- [Custom Commands](./custom-commands/) +- [Environment Variables](./environment-variables/) +- [APIs](./apis/) +- [External Tools](./tools/) +- [Notes](./notes/) + +## Instances + +- [Instance Version](./instance-version/) +- [Instance Copy](./instance-copy/) +- [Worlds](./worlds/) +- [Screenshots](./screenshots-management/) +- [Zip Import](./zip-import/) + +## Mods & Downloads + +- [Mods](./loader-mods/) +- [Mod Downloader](./mod-platform/) + +## Modpack Platforms + +- [Custom / Vanilla](./vanilla-platform/) +- [Modrinth](./modrinth-platform/) +- [CurseForge](./flame-platform/) +- [FTB](./ftb-platform/) +- [Technic](./technic-platform/) +- [ATLauncher](./atl-platform/) diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/instance-copy.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/instance-copy.md new file mode 100644 index 0000000000..6d7f674ab3 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/instance-copy.md @@ -0,0 +1,77 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Copy an Instance + +When you right click on an instance, you can choose to copy it. After selecting this option, you will see a new window. You can choose an icon, name and a group for the new instance. + + + +## Instance Copy Options + +This is where you can find options and copy settings for your new instance. + +### Keep play time + +This option will allow you to keep your playtime from your original instance, if this setting is enabled in Global Settings, see: [Game Time](../minecraft-settings/#game-time) + +### Copy saves + +This option allows you to copy all saved games from your original instance to your new one. + +### Copy game options + +This option allows you to copy all game settings, if you want your configuration to be cloned. + +### Copy resource packs + +This option allows you to copy all the resource packs to your new instance. + +### Copy screenshots + +This option allows you to copy all your screenshots to your new instance folder. + +### Copy shader packs + +This option allows you to copy all your shader packs to your new instance folder. + +### Copy servers + +This option allows you to copy all your servers to your new instance. You can find them in the multiplayer menu of your new instance. + +### Copy mods + +This option allows you to copy all your mods to your new instance folder. + +### Select all + +This option allows you to select all the precedent options. + +## Advanced Copy Options + +This is where you can set more advanced options, such as links or cloning. + +### Symbolic and Hard Link Options + +You can't use these options if your partition is on FAT filesystem. + +#### Use symbolic links + +This option will create a symbolic link between the two instances. + +#### Use hard links + +This option will create a hard link between the two instances. + +#### Link files recursively + +This option will link all files, instead of just the parent folder. + +#### Don't link saves + +This option will disable the link of the saves. The world saves will be copied instead. + +### CoW (Copy-on-Write) Options + +#### Clone instead of copying + +This option is only supported on APFS, BTRFS, BCACHEFS, REFS, XFS and ZFS filesystems. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/instance-version.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/instance-version.md new file mode 100644 index 0000000000..f8287bcb0c --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/instance-version.md @@ -0,0 +1,37 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Instance Version + + + +This page is for managing the core parts of the Instance. + +### Selection + +<!-- TODO: add image of Selection section --> + +Here you can change the version, change the load order and remove components. + +### Edit + +<!-- TODO: add image of Edit section --> + +This is for customizing the .json file that is used to load that component. + +### Install + +<!-- TODO: add image of Install section --> + +From here you can install loader mods. + +### Advanced + +<!-- TODO: add image of Advanced section --> + +This is for adding and replacing components that change the Minecraft.jar + +### Folder + +<!-- TODO: add image of Folder section --> + +This are shortcuts that open a specific folder. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/java-settings.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/java-settings.md new file mode 100644 index 0000000000..00154be71b --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/java-settings.md @@ -0,0 +1,42 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Java Settings + +### Java settings + +In this page you can set the global Java settings. + + + +## Memory + + + +Java memory settings. +NOTE: MORE RAM ALLOCATED DOESN'T MEAN BETTER PERFORMANCE! In fact, in most use cases (except you're playing big modpacks) 4GB of ram allocated should be more than enough + +## Java Runtime + + + +This is where the settings for the Java runtime live, like the location of the runtime and any Java arguments to use. + +For information about how to get a correct Java version, see: [Installing Java](../getting-started/installing-java/). + +**Auto-detect** will check your computer for all java versions and show you a list of them, the best one on top. + +**Test** can be used to test the selected Java runtime along with your memory settings and JVM arguments without starting the game. + +**Skip java compatibility checks** skips java compatibility checks at game launch + +**Autodetect Java version** (Recommended) sets the correct java version at game launch (only looks with managed (see below) java and will change the java path in instance settings) + +**Auto-download Mojang Java** (Recomnended) will automatically download needed the Java runtimes you need (needs the above setting to be on) + +## Java Management + + + +This is where you can download and remove the java that were installed by ProjT Launcher. + + diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/java-wizard.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/java-wizard.md new file mode 100644 index 0000000000..51a5f7a31b --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/java-wizard.md @@ -0,0 +1,13 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Java Wizard + + + +In this page you can set the global Java settings. + +For more information on how to manually download and install Java check the documentation [found here](../getting-started/installing-java/). + +For more information about each Java setting check the documentation [found here](../java-settings/). + +We recommend that new users enable both the Autodetect and Auto-download Java features, in order not to need to manually set up their java path for each instance. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/language-settings.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/language-settings.md new file mode 100644 index 0000000000..823773bd0d --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/language-settings.md @@ -0,0 +1,7 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Language Settings + + + +In this Page, you can select the language ProjT Launcher should use. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/launcher-settings.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/launcher-settings.md new file mode 100644 index 0000000000..84f3982142 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/launcher-settings.md @@ -0,0 +1,63 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Launcher Settings + +## Features + + + +### Folders + +<!-- TODO: add image of folder section --> + +This is where you can set the location for the Instances, Mods & Icons folders. + +### Mods + +<!-- TODO: add image of mods section --> + +Disable the usage of metadata provided by Modrinth and CurseForge for mods. + +## User Interface + + + +### Instance view sorting mode + +<!-- TODO: add image of Instance view sorting mode section --> + +How the instances should be sorted. + +### Theme + +<!-- TODO: add image of Theme section --> + +This is where you can choose which Icon Theme, Color Theme or Background Cat you want. + +### Tools + +<!-- TODO: add image of Tools section --> + +This is where you can choose if you want a menubar or toolbar. + +## Console + + + +### Console Settings + +<!-- TODO: add image of Console Settings section --> + +This is where you set when the log window should appear. + +### History limit + +<!-- TODO: add image of History limit section --> + +This is where you set if you want to limit the log length and by how much. + +### Console font + +<!-- TODO: add image of Console font section --> + +This is where you can change the font and font size of the log. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/loader-mods.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/loader-mods.md new file mode 100644 index 0000000000..1b4a23e1b6 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/loader-mods.md @@ -0,0 +1,11 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Mods + + + +This page reflects the contents of the instance's mods folder and is used for mods that loaders like Forge, Fabric, NeoForge, Quilt and LiteLoader can read and add to the game. Unlike an ordinary file explorer, it also shows details about the mods like version and name. + +You can drag and drop more mods into the view, just like any other folder. The mods also have a checkbox next to them, which allows you to temporarily disable them. + +Clicking "Download Mods" you can download mods from Modrinth and CurseForge. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/minecraft-settings.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/minecraft-settings.md new file mode 100644 index 0000000000..607820c866 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/minecraft-settings.md @@ -0,0 +1,37 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Minecraft Settings + + + +### Window Size + +<!-- TODO: add image of Window Size section --> + +This is where you set the Window size and if it should be maximized\*. + +\*Only works on 1.5.2 and older + +### Native library workarounds + +<!-- TODO: add image of Native library workarounds section --> + +Enable the usage of system libraries instead of the included ones. + +### Performance + +<!-- TODO: add image of Performance section --> + +Enable some external tools related to performance. + +### Game time + +<!-- TODO: add image of Game time section --> + +Set if you want to record play time and which to show. + +### Miscellaneous + +<!-- TODO: add image of Miscellaneous section --> + +Set when you want to close or quit the launcher. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/mod-platform.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/mod-platform.md new file mode 100644 index 0000000000..7219cb7b0a --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/mod-platform.md @@ -0,0 +1,17 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Mod Downloader + + + +In this page, you can download mods from Modrinth and CurseForge. + +On the left, you can choose the mod provider. + +Clicking "Select mod for Download" selects the mod to be downloaded. + +Clicking "Filter options" you can choose how strict the filters will be. + +Clicking "Cancel" returns to the previous page. + +Clicking "OK" allows you to see the mods you have decided to download and to download them. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/modrinth-platform.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/modrinth-platform.md new file mode 100644 index 0000000000..ad87016f0a --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/modrinth-platform.md @@ -0,0 +1,7 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Modrinth + + + +Here you can browse Modrinth packs and install them. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/notes.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/notes.md new file mode 100644 index 0000000000..0625623582 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/notes.md @@ -0,0 +1,7 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Notes + + + +Here you can write some notes about your instance in plain text. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/proxy-settings.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/proxy-settings.md new file mode 100644 index 0000000000..fb4e6d6959 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/proxy-settings.md @@ -0,0 +1,23 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Proxy Settings + + + +### Type + +<!-- TODO: add image of Type section --> + +This is where you choose if and what type of proxy you want to use. + +### Address and Port + +<!-- TODO: add image of Address and Port section --> + +This is where you can set the Address and Port of your proxy server. + +### Authentication + +<!-- TODO: add image of Authentication section --> + +This is where you fill in the login details of your proxy. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/screenshots-management.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/screenshots-management.md new file mode 100644 index 0000000000..06a5d091b7 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/screenshots-management.md @@ -0,0 +1,7 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Screenshots + + + +Here you can rename, deleted, copy and upload you in game screenshots. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/technic-platform.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/technic-platform.md new file mode 100644 index 0000000000..8863f4fe58 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/technic-platform.md @@ -0,0 +1,7 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Technic + + + +Here you can browse Technic packs and install them. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/tools.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/tools.md new file mode 100644 index 0000000000..eaa65ad193 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/tools.md @@ -0,0 +1,31 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# External Tools + + + +<!-- TODO: add description of what each tool does --> + +### JProfiler + +<!-- TODO: add image of JProfiler section --> + +This is where you set to path to your JProfiler executable. + +### JVisualVM + +<!-- TODO: add image of JVisualVM section --> + +This is where you set to path to your JVisualVM executable. + +### MCEdit + +<!-- TODO: add image of MCEdit section --> + +This is where you set to path to your MCEdit executable. + +### External Editors + +<!-- TODO: add image of External Editors section --> + +This is where you set to path to your text editor of choice or leave it blank to use the systems default one. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/vanilla-platform.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/vanilla-platform.md new file mode 100644 index 0000000000..099b950fd8 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/vanilla-platform.md @@ -0,0 +1,7 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Custom / Vanilla + + + +This is where you can choose which minecraft version you want to play with and what mod loader to install. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/worlds.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/worlds.md new file mode 100644 index 0000000000..3ff1013bc7 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/worlds.md @@ -0,0 +1,7 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Worlds + + + +Here you can do some basic management of your worlds that you have in that Instance. diff --git a/archived/projt-launcher/docs/handbook/wiki/help-pages/zip-import.md b/archived/projt-launcher/docs/handbook/wiki/help-pages/zip-import.md new file mode 100644 index 0000000000..9570b428ef --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/help-pages/zip-import.md @@ -0,0 +1,7 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Zip Import + + + +Here you can import modpacks from a zip or mrpack file either from a website or from your filesystem. diff --git a/archived/projt-launcher/docs/handbook/wiki/overview/code-of-conduct.md b/archived/projt-launcher/docs/handbook/wiki/overview/code-of-conduct.md new file mode 100644 index 0000000000..8dd0f6379b --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/overview/code-of-conduct.md @@ -0,0 +1,91 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Contributor Covenant 3.0 Code of Conduct + +## Our Pledge + +We pledge to make our community welcoming, safe, and equitable for all. + +We are committed to fostering an environment that respects and promotes the dignity, rights, and contributions of all individuals, regardless of characteristics including race, ethnicity, caste, color, age, physical characteristics, neurodiversity, disability, sex or gender, gender identity or expression, sexual orientation, language, philosophy or religion, national or social origin, socio-economic position, level of education, or other status. The same privileges of participation are extended to everyone who participates in good faith and in accordance with this Covenant. + +## Encouraged Behaviors + +While acknowledging differences in social norms, we all strive to meet our community's expectations for positive behavior. We also understand that our words and actions may be interpreted differently than we intend based on culture, background, or native language. + +With these considerations in mind, we agree to behave mindfully toward each other and act in ways that center our shared values, including: + +1. Respecting the **purpose of our community**, our activities, and our ways of gathering. +2. Engaging **kindly and honestly** with others. +3. Respecting **different viewpoints** and experiences. +4. **Taking responsibility** for our actions and contributions. +5. Gracefully giving and accepting **constructive feedback**. +6. Committing to **repairing harm** when it occurs. +7. Behaving in other ways that promote and sustain the **well-being of our community**. + +## Restricted Behaviors + +We agree to restrict the following behaviors in our community. Instances, threats, and promotion of these behaviors are violations of this Code of Conduct. + +1. **Harassment.** Violating explicitly expressed boundaries or engaging in unnecessary personal attention after any clear request to stop. +2. **Character attacks.** Making insulting, demeaning, or pejorative comments directed at a community member or group of people. +3. **Stereotyping or discrimination.** Characterizing anyone?셲 personality or behavior on the basis of immutable identities or traits. +4. **Sexualization.** Behaving in a way that would generally be considered inappropriately intimate in the context or purpose of the community. +5. **Violating confidentiality**. Sharing or acting on someone's personal or private information without their permission. +6. **Endangerment.** Causing, encouraging, or threatening violence or other harm toward any person or group. +7. Behaving in other ways that **threaten the well-being** of our community. + +### Other Restrictions + +1. **Misleading identity.** Impersonating someone else for any reason, or pretending to be someone else to evade enforcement actions. +2. **Failing to credit sources.** Not properly crediting the sources of content you contribute. +3. **Promotional materials**. Sharing marketing or other commercial content in a way that is outside the norms of the community. +4. **Irresponsible communication.** Failing to responsibly present content which includes, links or describes any other restricted behaviors. + +## Reporting an Issue + +Tensions can occur between community members even when they are trying their best to collaborate. Not every conflict represents a code of conduct violation, and this Code of Conduct reinforces encouraged behaviors and norms that can help avoid conflicts and minimize harm. + +To report a possible violation, please contact the Community Moderators via +email at [yongdohyun@projtlauncher.yongdohyun.org.tr](mailto:yongdohyun@projtlauncher.yongdohyun.org.tr). + +All reports will be reviewed promptly and handled confidentially. + +Community Moderators take reports of violations seriously and will make every effort to respond in a timely manner. They will investigate all reports of code of conduct violations, reviewing messages, logs, and recordings, or interviewing witnesses and other participants. Community Moderators will keep investigation and enforcement actions as transparent as possible while prioritizing safety and confidentiality. In order to honor these values, enforcement actions are carried out in private with the involved parties, but communicating to the whole community may be part of a mutually agreed upon resolution. For this project, Community Moderators are the project maintainers. + +## Addressing and Repairing Harm + +The remedies and repairs outlined below are based on best practices in code of +conduct enforcement and are applied at the discretion of the project maintainers. + +If an investigation by the Community Moderators finds that this Code of Conduct has been violated, the following enforcement ladder may be used to determine how best to repair harm, based on the incident's impact on the individuals involved and the community as a whole. Depending on the severity of a violation, lower rungs on the ladder may be skipped. + +1) Warning + 1) Event: A violation involving a single incident or series of incidents. + 2) Consequence: A private, written warning from the Community Moderators. + 3) Repair: Examples of repair include a private written apology, acknowledgement of responsibility, and seeking clarification on expectations. +2) Temporarily Limited Activities + 1) Event: A repeated incidence of a violation that previously resulted in a warning, or the first incidence of a more serious violation. + 2) Consequence: A private, written warning with a time-limited cooldown period designed to underscore the seriousness of the situation and give the community members involved time to process the incident. The cooldown period may be limited to particular communication channels or interactions with particular community members. + 3) Repair: Examples of repair may include making an apology, using the cooldown period to reflect on actions and impact, and being thoughtful about re-entering community spaces after the period is over. +3) Temporary Suspension + 1) Event: A pattern of repeated violation which the Community Moderators have tried to address with warnings, or a single serious violation. + 2) Consequence: A private written warning with conditions for return from suspension. In general, temporary suspensions give the person being suspended time to reflect upon their behavior and possible corrective actions. + 3) Repair: Examples of repair include respecting the spirit of the suspension, meeting the specified conditions for return, and being thoughtful about how to reintegrate with the community when the suspension is lifted. +4) Permanent Ban + 1) Event: A pattern of repeated code of conduct violations that other steps on the ladder have failed to resolve, or a violation so serious that the Community Moderators determine there is no way to keep the community safe with this person as a member. + 2) Consequence: Access to all community spaces, tools, and communication channels is removed. In general, permanent bans should be rarely used, should have strong reasoning behind them, and should only be resorted to if working through other remedies has failed to change the behavior. + 3) Repair: There is no possible repair in cases of this severity. + +This enforcement ladder is intended as a guideline. It does not limit the ability of Community Managers to use their discretion and judgment, in keeping with the best interests of our community. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public or other spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event. + +## Attribution + +This Code of Conduct is adapted from the Contributor Covenant, version 3.0, permanently available at [https://www.contributor-covenant.org/version/3/0/](https://www.contributor-covenant.org/version/3/0/). + +Contributor Covenant is stewarded by the Organization for Ethical Source and licensed under CC BY-SA 4.0. To view a copy of this license, visit [https://creativecommons.org/licenses/by-sa/4.0/](https://creativecommons.org/licenses/by-sa/4.0/) + +For answers to common questions about Contributor Covenant, see the FAQ at [https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq). Translations are provided at [https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations). Additional enforcement and community guideline resources can be found at [https://www.contributor-covenant.org/resources](https://www.contributor-covenant.org/resources). The enforcement ladder was inspired by the work of [Mozilla?셲 code of conduct team](https://github.com/mozilla/inclusion). diff --git a/archived/projt-launcher/docs/handbook/wiki/overview/copying.md b/archived/projt-launcher/docs/handbook/wiki/overview/copying.md new file mode 100644 index 0000000000..1d096974e7 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/overview/copying.md @@ -0,0 +1,821 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +## ProjT Launcher + + ProjT Launcher - Minecraft Launcher + Copyright (C) 2026 Project Tick + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, version 3. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + + This file incorporates work covered by the following copyright and + permission notice: + + This project includes a modified version of the Prism Launcher logo. + + Original logo: + Prism Launcher Logo + © Prism Launcher Contributors + Licensed under CC BY-SA 4.0 + + Modified version: + ProjT Launcher Logo + © 2026 Project Tick + Licensed under CC BY-SA 4.0 + + Copyright 2013-2021 MultiMC Contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +## Prism Launcher + + Prism Launcher - Minecraft Launcher + Copyright (C) 2022-2025 Prism Launcher Contributors + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, version 3. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + + This file incorporates work covered by the following copyright and + permission notice: + + Copyright 2013-2021 MultiMC Contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +## PolyMC + + PolyMC - Minecraft Launcher + Copyright (C) 2021-2022 PolyMC Contributors + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, version 3. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + + This file incorporates work covered by the following copyright and + permission notice: + + Copyright 2013-2021 MultiMC Contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +## MultiMC + + Copyright 2013-2021 MultiMC Contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +## bzip2 (`bzip2/`) + + This project includes a forked copy of bzip2. + + Copyright (C) 1996–2010 Julian R Seward. + + Licensed under a BSD-style license. + + See: + - bzip2/COPYING + +## cmark (`cmark/`) + + This project includes a forked copy of cmark. + + Copyright (c) 2014 John MacFarlane. + + cmark contains code under multiple permissive licenses, including: + - BSD-2-Clause + - MIT + + Some files are derived from: + - houdini + - utf8proc + - GitHub, Inc. code + + Applicable license information is provided via SPDX headers in the source + files. Full license texts are available in LICENSES/. + +## extra-cmake-modules (`extra-cmake-modules/`) + + extra-cmake-modules is a collection of CMake modules originating from KDE. + + This component includes files under multiple permissive licenses, + including but not limited to: + + - MIT + - BSD-2-Clause + - BSD-3-Clause + - CC0-1.0 + + The applicable license for each file is documented via SPDX headers + and the corresponding license texts are available in: + + - extra-cmake-modules/LICENSES/ + - top-level LICENSES/ + + These licenses apply only to the extra-cmake-modules component and do + not affect the overall GPL-3.0-only licensing of ProjT Launcher. + +## launcherjava (`launcherjava/`) + + ProjT Launcher - Minecraft Launcher + Copyright (C) 2026 Project Tick + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, version 3. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + Linking this library statically or dynamically with other modules is + making a combined work based on this library. Thus, the terms and + conditions of the GNU General Public License cover the whole + combination. + + As a special exception, the copyright holders of this library give + you permission to link this library with independent modules to + produce an executable, regardless of the license terms of these + independent modules, and to copy and distribute the resulting + executable under terms of your choice, provided that you also meet, + for each linked independent module, the terms and conditions of the + license of that module. An independent module is a module which is + not derived from or based on this library. If you modify this + library, you may extend this exception to your version of the + library, but you are not obliged to do so. If you do not wish to do + so, delete this exception statement from your version. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + + This file incorporates work covered by the following copyright and + permission notice: + + Prism Launcher - Minecraft Launcher + Copyright (C) 2022-2025 Prism Launcher Contributors + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, version 3. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + Linking this library statically or dynamically with other modules is + making a combined work based on this library. Thus, the terms and + conditions of the GNU General Public License cover the whole + combination. + + As a special exception, the copyright holders of this library give + you permission to link this library with independent modules to + produce an executable, regardless of the license terms of these + independent modules, and to copy and distribute the resulting + executable under terms of your choice, provided that you also meet, + for each linked independent module, the terms and conditions of the + license of that module. An independent module is a module which is + not derived from or based on this library. If you modify this + library, you may extend this exception to your version of the + library, but you are not obliged to do so. If you do not wish to do + so, delete this exception statement from your version. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + + This file incorporates work covered by the following copyright and + permission notice: + + PolyMC - Minecraft Launcher + Copyright (C) 2021-2022 PolyMC Contributors + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, version 3. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + Linking this library statically or dynamically with other modules is + making a combined work based on this library. Thus, the terms and + conditions of the GNU General Public License cover the whole + combination. + + As a special exception, the copyright holders of this library give + you permission to link this library with independent modules to + produce an executable, regardless of the license terms of these + independent modules, and to copy and distribute the resulting + executable under terms of your choice, provided that you also meet, + for each linked independent module, the terms and conditions of the + license of that module. An independent module is a module which is + not derived from or based on this library. If you modify this + library, you may extend this exception to your version of the + library, but you are not obliged to do so. If you do not wish to do + so, delete this exception statement from your version. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + + This file incorporates work covered by the following copyright and + permission notice: + + Copyright 2013-2021 MultiMC Contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +## JavaCheck (`javacheck/`) + + Project Tick JavaCheck - A simple Java system property checker + Copyright (C) 2026 Project Tick + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; version 2 + of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see + <https://www.gnu.org/licenses/>. + +## libnbtplusplus (`libnbtplusplus/`) + + libnbt++ 3 - A library for the Minecraft Named Binary Tag format v3. + Copyright (C) 2026 Project Tick + + libnbt++ 3 is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + libnbt++ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with libnbt++ 3. If not, see <http://www.gnu.org/licenses/>. + + This file incorporates work covered by the following copyright and + permission notice: + + libnbt++ - A library for the Minecraft Named Binary Tag format. + Copyright (C) 2013, 2015 ljfa-ag + + libnbt++ is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + libnbt++ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with libnbt++. If not, see <http://www.gnu.org/licenses/>. + +## libqrencode (`libqrencode/`) + + Project Tick libqrencode - Qr code encoder library + Copyright (C) 2026 Project Tick + + This library is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the Free + Software Foundation; either version 2.1 of the License, or any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License along + with this library; if not, write to the Free Software Foundation, Inc., 51 + Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + This file incorporates work covered by the following copyright and + permission notice: + + Copyright (C) 2006-2018 Kentaro Fukuchi + + This library is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the Free + Software Foundation; either version 2.1 of the License, or any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License along + with this library; if not, write to the Free Software Foundation, Inc., 51 + Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +## meta (`meta/`) + + Microsoft Public License (Ms-PL) + + This license governs use of the accompanying software. If you use the + software, you accept this license. If you do not accept the license, do not + use the software. + + 1. Definitions + The terms "reproduce," "reproduction," "derivative works," and "distribution" + have the same meaning here as under U.S. copyright law. A "contribution" is + the original software, or any additions or changes to the software. A + "contributor" is any person that distributes its contribution under this + license. "Licensed patents" are a contributor's patent claims that read + directly on its contribution. + + 2. Grant of Rights + (A) Copyright Grant- Subject to the terms of this license, including the + license conditions and limitations in section 3, each contributor grants + you a non-exclusive, worldwide, royalty-free copyright license to + reproduce its contribution, prepare derivative works of its contribution, + and distribute its contribution or any derivative works that you create. + + (B) Patent Grant- Subject to the terms of this license, including the + license conditions and limitations in section 3, each contributor grants + you a non-exclusive, worldwide, royalty-free license under its licensed + patents to make, have made, use, sell, offer for sale, import, and/or + otherwise dispose of its contribution in the software or derivative works + of the contribution in the software. + + 3. Conditions and Limitations + (A) No Trademark License- This license does not grant you rights to use + any contributors' name, logo, or trademarks. + + (B) If you bring a patent claim against any contributor over patents that + you claim are infringed by the software, your patent license from such + contributor to the software ends automatically. + + (C) If you distribute any portion of the software, you must retain all + copyright, patent, trademark, and attribution notices that are present in + the software. + + (D) If you distribute any portion of the software in source code form, + you may do so only under this license by including a complete copy of + this license with your distribution. If you distribute any portion of the + software in compiled or object code form, you may only do so under a + license that complies with this license. + + (E) The software is licensed "as-is." You bear the risk of using it. The + contributors give no express warranties, guarantees, or conditions. You + may have additional consumer rights under your local laws which this + license cannot change. To the extent permitted under your local laws, the + contributors exclude the implied warranties of merchantability, fitness + for a particular purpose and non-infringement. + +## program_info (`program_info/`) + +Logos and branding assets in this directory are licensed under +Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). + +This license applies only to branding assets and does not affect +the licensing of the ProjT Launcher source code. + +See: +- program_info/LICENSE + +## quazip (`quazip/`) + + Project Tick quazip - ZIP archive library for Qt + Copyright (C) 2010 Roberto Pompermaier + Copyright (C) 2005-2014 Sergey A. Tachenov + + QuaZip is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2.1 of the License, or + (at your option) any later version. + + QuaZip is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with QuaZip. If not, see <http://www.gnu.org/licenses/>. + + This file incorporates work covered by the following copyright and + permission notice: + + Copyright (C) 2010 Roberto Pompermaier + Copyright (C) 2005-2014 Sergey A. Tachenov + + QuaZip is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2.1 of the License, or + (at your option) any later version. + + QuaZip is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with QuaZip. If not, see <http://www.gnu.org/licenses/>. + +## tomlplusplus (`tomlplusplus/`, `website/tomlplusplus/`) + + MIT License + + Copyright (c) Mark Gillard <mark.gillard@outlook.com.au> + Copyright (c) 2026 Project Tick + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is furnished + to do so, subject to the following conditions: + + The above copyright notice and this permission notice (including the next + paragraph) shall be included in all copies or substantial portions of the + Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS + OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF + OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +## website ProjT Launcher (`website/projtlauncher/`) + + ProjT Launcher - Minecraft Launcher + Copyright (C) 2026 Project Tick + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + + This file incorporates work covered by the following copyright and + permission notice: + + Prism Launcher - Minecraft Launcher + Copyright (C) 2022-2025 Prism Launcher Contributors + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + +## Project Tick Website and Handbook + + Project Tick Website and Handbook - Website and Handbook + Copyright (C) 2026 Project Tick + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + +## zlib + + Copyright notice: + + (C) 1995-2025 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +## MinGW-w64 runtime (Windows) + + Copyright (c) 2009, 2010, 2011, 2012, 2013 by the mingw-w64 project + + This license has been certified as open source. It has also been designated + as GPL compatible by the Free Software Foundation (FSF). + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions in source code must retain the accompanying copyright + notice, this list of conditions, and the following disclaimer. + 2. Redistributions in binary form must reproduce the accompanying + copyright notice, this list of conditions, and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + 3. Names of the copyright holders must not be used to endorse or promote + products derived from this software without prior written permission + from the copyright holders. + 4. The right to distribute this software or to use it for any purpose does + not give you the right to use Servicemarks (sm) or Trademarks (tm) of + the copyright holders. Use of them is covered by separate agreement + with the copyright holders. + 5. If any files are modified, you must cause the modified files to carry + prominent notices stating that you changed the files and the date of + any change. + + Disclaimer + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Information on third party licenses used in MinGW-w64 can be found in its COPYING.MinGW-w64-runtime.txt. + +## Qt 6 + + Copyright (C) 2022 The Qt Company Ltd and other contributors. + Contact: https://www.qt.io/licensing + + Licensed under LGPL v3 + +## rainbow (KGuiAddons) + + Copyright (C) 2007 Matthew Woehlke <mw_triad@users.sourceforge.net> + Copyright (C) 2007 Olaf Schmidt <ojschmidt@kde.org> + Copyright (C) 2007 Thomas Zander <zander@kde.org> + Copyright (C) 2007 Zack Rusin <zack@kde.org> + Copyright (C) 2015 Petr Mrazek <peterix@gmail.com> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + +## Batch icon set + + You are free to use Batch (the "icon set") or any part thereof (the "icons") + in any personal, open-source or commercial work without obligation of payment + (monetary or otherwise) or attribution. Do not sell the icon set, host + the icon set or rent the icon set (either in existing or modified form). + + While attribution is optional, it is always appreciated. + + Intellectual property rights are not transferred with the download of the icons. + + EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL ADAM WHITCROFT + BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, + PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THE USE OF THE ICONS, + EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +## Material Design Icons + + Copyright (c) 2014, Austin Andrews (http://materialdesignicons.com/), + with Reserved Font Name Material Design Icons. + Copyright (c) 2014, Google (http://www.google.com/design/) + uses the license at https://github.com/google/material-design-icons/blob/master/LICENSE + + This Font Software is licensed under the SIL Open Font License, Version 1.1. + This license is copied below, and is also available with a FAQ at: + http://scripts.sil.org/OFL + +## lionshead + + Code has been taken from https://github.com/natefoo/lionshead and loosely + translated to C++ laced with Qt. + + MIT License + + Copyright (c) 2017 Nate Coraor + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +## Gamemode + + Copyright (c) 2017-2022, Feral Interactive + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Feral Interactive nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +## Breeze icons + + Copyright (C) 2014 Uri Herrera <uri_herrera@nitrux.in> and others + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 3 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see <http://www.gnu.org/licenses/>. + +## Oxygen Icons + + The Oxygen Icon Theme + Copyright (C) 2007 Nuno Pinheiro <nuno@oxygen-icons.org> + Copyright (C) 2007 David Vignoni <david@icon-king.com> + Copyright (C) 2007 David Miller <miller@oxygen-icons.org> + Copyright (C) 2007 Johann Ollivier Lapeyre <johann@oxygen-icons.org> + Copyright (C) 2007 Kenneth Wimer <kwwii@bootsplash.org> + Copyright (C) 2007 Riccardo Iaconelli <riccardo@oxygen-icons.org> + + and others + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 3 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see <http://www.gnu.org/licenses/>. + +## vcpkg (`cmake/vcpkg-ports`) + + MIT License + + Copyright (c) Microsoft Corporation + + Permission is hereby granted, free of charge, to any person obtaining a copy of this + software and associated documentation files (the "Software"), to deal in the Software + without restriction, including without limitation the rights to use, copy, modify, + merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice shall be included in all copies + or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE + OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/archived/projt-launcher/docs/handbook/wiki/overview/faq.md b/archived/projt-launcher/docs/handbook/wiki/overview/faq.md new file mode 100644 index 0000000000..545a8c750c --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/overview/faq.md @@ -0,0 +1,9 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Frequently Asked Questions + +## What is ProjT Launcher? + +ProjT was forked from the PrismLauncher project in late 2025. + +The original fork was a result of continuing disagreements between a portion of the community and MultiMC's lead maintainer, which ultimately led to the creation of Prism Launcher. However, ProjT Launcher itself forked from the Prism Launcher codebase. ProjT's main motivation is not only to uphold the freedom of 3rd party packaging and re-distribution but also to offer an alternative for users dissatisfied with Prism's development pace, aiming to be a project that focuses on adding new features and is generally more open to development. diff --git a/archived/projt-launcher/docs/handbook/wiki/overview/feedback-bugs.md b/archived/projt-launcher/docs/handbook/wiki/overview/feedback-bugs.md new file mode 100644 index 0000000000..3f22810edb --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/overview/feedback-bugs.md @@ -0,0 +1,9 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Feedback and Bugs + +We really appreciate all kinds of feedback from our community. If you've run into a bug while using ProjT Launcher, or if you'd like to suggest our next killer feature, please head over to our [GitHub Issues](https://github.com/Project-Tick/ProjT-Launcher/issues) page and make a post. + +**NOTE:** If you're reporting a bug, please do have a good look through the list of issues posted by other users. It may have already been reported by someone else, or better yet, fixed! + +Once you're done there, why don't you come and [join us](https://projecttick.org/projtlauncher/#get-involved) on our Discord server, Matrix Space, or subreddit? ~~*Or how about all three?*~~ diff --git a/archived/projt-launcher/docs/handbook/wiki/overview/frequent-issues.md b/archived/projt-launcher/docs/handbook/wiki/overview/frequent-issues.md new file mode 100644 index 0000000000..9147c178ab --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/overview/frequent-issues.md @@ -0,0 +1,78 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Troubleshooting + +This is a collection of helpful information for frequent problems when using ProjT Launcher. + +## Minecraft 1.16.5 with Minecraft Forge and Java 8u321+ + +Older versions of Minecraft Forge for Minecraft 1.16.5 cause the game to crash on launch, as they do not support the latest revisions of Java 8. + +You can fix this by changing the Forge version in the launcher to the latest or recommended version. +For that go to **Version** ??**Select Forge** ??**Change Version** ??**Select newest version** ??**OK** + +Alternatively you can download and use an older Java version (i.e. Java 8u312) + +## Minecraft Forge failing to run processor + +If you are getting an error saying `Failed to run processor: java.net.ConnectException: Connection refused` when trying to launch a Minecraft Forge instance, you might have connectivity issues with IPv6. + +A workaround for this issue is adding the following JVM argument: + +```text +-Djava.net.preferIPv4Stack=true +``` + +## Common Launcher-related issues + +### <img src="https://upload.wikimedia.org/wikipedia/commons/8/87/Windows_logo_-_2021.svg" alt="Windows Logo" height="20" /> Windows (7, 8.1, 10, 11) + +#### "MSVCP140_2.dll was not found"? + +Since ProjT Launcher 0.0.1, ProjT is compiled using [MSVC](https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B) on Windows. +As a consequence of this, like most apps on Windows, you have to install vcredist for ProjT to run. +You need: + +* [vcredist 2022 x64](https://aka.ms/vs/17/release/vc_redist.x64.exe) if you're using ProjTLauncher-Windows-MSVC (the recommended version for Windows 10 64 bit/Windows 11) +* [vcredist 2022 arm64](https://aka.ms/vs/17/release/vc_redist.arm64.exe) if you're using ProjTLauncher-Windows-MSVC-arm64 (the recommended version for Windows 10/11 on ARM) + +#### How do I open a .zip file? + +Windows by default can "open" **.zip** archive files, but in order to use ProjT Launcher, you will want to **extract** it instead. + +#### Windows Protected my PC? + +This is unfortunately **normal behaviour** due to the nature of the Windows app signing process. ProjT Launcher has yet to purchase a signature, however, with enough funding, we may choose to do so in the future. ProjT Launcher is an **open-source** application. As a result of this, all of the source code is public, and can be audited by any individual or group. If you would like to do so yourself, you can do so here: <https://github.com/Project-Tick/ProjT-Launcher> + +If you are **comfortable** and **trust** ProjT Launcher, then you can click on the **More info** button, and then do the same on the **Run anyway** one too. + +### <img src="https://upload.wikimedia.org/wikipedia/commons/3/3c/TuxFlat.svg" alt="Linux Tux Logo" height="20" /> Linux + +<!-- #### How do I install the ProjT Launcher Flatpak on my Linux system? + +Detailed instructions on setting-up your system to install Flatpak applications from Flathub, can be found here: <https://flatpak.org/setup/> --> + +#### How do I open the ProjT Launcher AppImage on my Linux system? + +Depending on your system, you may need to grant the ProjT Launcher AppImage **executable** permissions. + +You can do this by opening your system's terminal application, **making sure to navigate to the location of the downloaded AppImage,** before granting the execute permission using this command: + +```bash +sudo chmod +x ProjTLauncher-Linux-{{version.current}}-x86_64.AppImage +``` + +**Please note,** that depending on the version of ProjT Launcher that you have downloaded, you may have to **change the version number** in the command above. + +If you want to simplify the installation of the AppImage, use [AppImageLauncher](https://github.com/TheAssassin/AppImageLauncher). Note that this won't work on non-systemd system, and we recommend just using packages. + +#### ProjT Launcher isn't using my system theme + +ProjT Launcher has support for Qt 6. +This means that some themes and theming platforms like KDE Plasma's theming will not work on builds using that version of the Qt toolkit. + +### <img src="https://upload.wikimedia.org/wikipedia/commons/8/87/Windows_logo_-_2021.svg" alt="Windows Logo" height="20" /> <img src="https://upload.wikimedia.org/wikipedia/commons/3/3c/TuxFlat.svg" alt="Linux Tux Logo" height="20" /> Windows and Linux + +#### I want to make my system install portable + +On ProjT Launcher you can make any install portable (or making portable installs system) just by adding (or removing) portable.txt to the ProjT Launcher root directory. diff --git a/archived/projt-launcher/docs/handbook/wiki/overview/index.md b/archived/projt-launcher/docs/handbook/wiki/overview/index.md new file mode 100644 index 0000000000..297c69f165 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/overview/index.md @@ -0,0 +1,11 @@ +> Wiki navigation: [Overview](/handbook/wiki/) | [Getting Started](/handbook/wiki/getting-started/) | [Help Pages](/handbook/wiki/help-pages/) | [Development](/handbook/wiki/development/) + +# Welcome to the ProjT Launcher Wiki! + +If you're new to ProjT Launcher and not quite sure where to begin, please go to [Getting Started](./getting-started). + +ProjT Launcher is a free and open source Minecraft launcher forked from the Prism Launcher project, with the ability to manage multiple accounts, as well as instances, each with their own mods, resource packs, and more! Our project has a much greater focus on both user-freedom, and the incorporation of new and exciting features and functionality. + +Please **do not** contact the Prism Launcher team regarding issues related ProjT Launcher. + + diff --git a/archived/projt-launcher/docs/handbook/wiki/wiki.json b/archived/projt-launcher/docs/handbook/wiki/wiki.json new file mode 100644 index 0000000000..43afe8e184 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/wiki/wiki.json @@ -0,0 +1,3 @@ +{ + "layout": "handbook.njk" +} diff --git a/archived/projt-launcher/docs/handbook/workflows.md b/archived/projt-launcher/docs/handbook/workflows.md new file mode 100644 index 0000000000..8b9a658cc9 --- /dev/null +++ b/archived/projt-launcher/docs/handbook/workflows.md @@ -0,0 +1,226 @@ +# GitHub Actions Workflows + +> **Location**: `.github/workflows/` +> **Platform**: GitHub Actions +> **Type**: CI/CD Pipeline +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +ProjT Launcher uses a modular GitHub Actions workflow architecture. The CI system is split into specialized sub-workflows that are orchestrated by a main coordinator workflow. + +--- + +## Workflow Architecture + +``` +┌─────────────────────────────────────────────────────────────┐ +│ ci-new.yml │ +│ (Main Orchestrator) │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ +│ │ ci-prepare │ │ ci-lint │ │ ci-release │ │ +│ │ .yml │ │ .yml │ │ .yml │ │ +│ └─────────────┘ └─────────────┘ └─────────────────────┘ │ +│ │ +│ ┌─────────────────────────────────────────────────────┐ │ +│ │ Library Workflows │ │ +│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌───────────┐ │ │ +│ │ │ci-zlib │ │ci-bzip2 │ │ci-quazip│ │ ci-cmark │ │ │ +│ │ │ .yml │ │ .yml │ │ .yml │ │ .yml │ │ │ +│ │ └─────────┘ └─────────┘ └─────────┘ └───────────┘ │ │ +│ │ ┌──────────────┐ ┌────────────────┐ │ │ +│ │ │ci-tomlplusplus│ │ ci-libqrencode │ │ │ +│ │ │ .yml │ │ .yml │ │ │ +│ │ └──────────────┘ └────────────────┘ │ │ +│ └─────────────────────────────────────────────────────┘ │ +│ │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ +│ │ ci-website │ │ci-scheduled │ │ (unlock) │ │ +│ │ .yml │ │ .yml │ │ Merge Gate │ │ +│ └─────────────┘ └─────────────┘ └─────────────────────┘ │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +--- + +## Workflow Files + +### Main Orchestrator + +| File | Description | +|------|-------------| +| `ci-new.yml` | Main coordinator that calls all sub-workflows with conditional logic | + +### Core Workflows + +| File | Purpose | Triggers | +|------|---------|----------| +| `ci-prepare.yml` | Initial setup, dependency caching | Called by main | +| `ci-lint.yml` | Code quality checks (clang-format, linters) | Push, PR, Manual | +| `ci-release.yml` | Build releases, create artifacts | Release, Manual | +| `ci-website.yml` | Build and deploy website | Push, PR | +| `ci-scheduled.yml` | Scheduled maintenance tasks | Cron | + +### Library Workflows + +Each bundled library has its own independent CI: + +| File | Library | Tests | +|------|---------|-------| +| `ci-zlib.yml` | zlib | Compression tests | +| `ci-bzip2.yml` | bzip2 | Compression + valgrind | +| `ci-quazip.yml` | QuaZip | Qt ZIP operations | +| `ci-cmark.yml` | cmark | Markdown parsing | +| `ci-tomlplusplus.yml` | toml++ | TOML parsing | +| `ci-libqrencode.yml` | libqrencode | QR generation | + +--- + +## Workflow Design Principles + +### 1. Modular Architecture + +Each workflow is self-contained and can be run independently: + +```yaml +# Sub-workflow pattern +on: + workflow_call: + inputs: + ref: + required: false + type: string + push: + paths: + - 'library-name/**' + pull_request: + paths: + - 'library-name/**' +``` + +### 2. Centralized Control + +The main orchestrator (`ci-new.yml`) controls when each sub-workflow runs: + +```yaml +jobs: + call-zlib: + if: needs.prepare.outputs.run-zlib == 'true' + uses: ./.github/workflows/ci-zlib.yml +``` + +### 3. Path Filtering + +Workflows only run when relevant files change: + +```yaml +paths: + - 'zlib/**' + - '.github/workflows/ci-zlib.yml' +``` + +### 4. Merge Gate + +The `unlock` job aggregates all results for merge protection: + +{% raw %} +```yaml +unlock: + needs: [lint, build, test-zlib, test-bzip2, ...] + if: always() + runs-on: ubuntu-latest + steps: + - name: Check all jobs + run: | + if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then + exit 1 + fi +``` +{% endraw %} + +--- + +## Triggers + +| Trigger | Workflows | Description | +|---------|-----------|-------------| +| `push` | All | Commits to main branches | +| `pull_request` | All | Pull request changes | +| `release` | Release | GitHub releases | +| `schedule` | Scheduled | Cron jobs | +| `workflow_dispatch` | All | Manual triggers | +| `workflow_call` | Sub-workflows | Called by orchestrator | + +--- + +## Environment Variables + +| Variable | Description | +|----------|-------------| +| `GITHUB_TOKEN` | Automatic GitHub token | +| `MSA_CLIENT_ID` | Microsoft Auth client ID | +| `CACHIX_AUTH_TOKEN` | Nix cache auth | + +--- + +## Adding New Workflows + +1. **Create the workflow file** in `.github/workflows/` +2. **Add workflow_call trigger** for orchestrator integration +3. **Add push/PR triggers** for independent execution +4. **Update ci-new.yml** to include the new workflow +5. **Document** in this handbook + +### Template + +{% raw %} +```yaml +name: CI Library Name + +on: + workflow_call: + inputs: + ref: + required: false + type: string + push: + paths: + - 'library-name/**' + - '.github/workflows/ci-libraryname.yml' + pull_request: + paths: + - 'library-name/**' + - '.github/workflows/ci-libraryname.yml' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref || github.ref }} + # Build steps... +``` +{% endraw %} + +--- + +## Related Documentation + +- [CI Support Files](./ci_support.md) — Configuration files +- [CI Evaluation](./ptcieval.md) — Nix-based validation +- [GitHub Scripts](./ptcigh.md) — Automation helpers +- [Bot](./bot.md) — PR automation + +--- + +## External Links + +- [GitHub Actions Documentation](https://docs.github.com/en/actions) +- [Workflow Syntax](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions) +- [Reusable Workflows](https://docs.github.com/en/actions/using-workflows/reusing-workflows) diff --git a/archived/projt-launcher/docs/handbook/zlib.md b/archived/projt-launcher/docs/handbook/zlib.md new file mode 100644 index 0000000000..f98183e21d --- /dev/null +++ b/archived/projt-launcher/docs/handbook/zlib.md @@ -0,0 +1,134 @@ +# Zlib `zlib/` + +> **Type**: Compression Library +> **License**: zlib License +> **Fork Origin**: [zlib.net](https://zlib.net) | [GitHub](https://github.com/madler/zlib) +> **Status**: Detached Fork (independently maintained) +> **Base Version**: 1.3.1.2 +> **Latest Version**: 0.0.5-1 + +--- + +## Overview + +Zlib is a general-purpose, lossless data-compression library used for ZIP and GZip functionality. It implements the DEFLATE compression algorithm and is one of the most widely used compression libraries in the world. + +This repository contains a maintained fork of the upstream zlib project. The fork exists to allow controlled integration, CI validation, and long-term maintenance within the ProjT Launcher monorepo. + +--- + +## Fork Policy + +This is a **detached fork** that is independently maintained by Project Tick: + +- ✅ Original codebase used as foundation +- ✅ Independent development and maintenance +- ✅ Custom CI/CD integration for ProjT Launcher +- ⚠️ May diverge from original project over time + +This fork is not synchronized with the original repository. + +--- + +## Usage in ProjT Launcher + +Zlib is used for: + +- **ZIP archive handling** via QuaZip wrapper +- **PNG image compression** for textures and assets +- **Network compression** for mod downloads +- **NBT file compression** for Minecraft world data + +--- + +## Documentation + +| Resource | Location | +|----------|----------| +| API Reference | `zlib/zlib.h` | +| FAQ | `zlib/FAQ` | +| Change History | `zlib/ChangeLog` | +| [Original CMake README](../../zlib/README-cmake.md) | Upstream CMake documentation | +| Upstream Manual | [zlib.net/manual.html](https://zlib.net/manual.html) | + +--- + +## Build Integration + +Zlib is built as part of the ProjT Launcher build system. The upstream build systems are preserved for reference, but the primary build path uses our integrated CMake configuration. + +### CMake Options + +```cmake +# In the main CMakeLists.txt, zlib is included as a subdirectory +add_subdirectory(zlib) + +# Link against zlib +target_link_libraries(your_target PRIVATE ZLIB::ZLIB) +``` + +### Standalone Build + +For development or testing purposes: + +```bash +cd zlib +mkdir build && cd build +cmake .. +cmake --build . +``` + +For upstream-specific build instructions, see [zlib.net](https://zlib.net). + +--- + +## Testing + +Zlib includes its own test suite that is run as part of CI: + +```bash +cd zlib/build +ctest -V +``` + +See [ci-zlib.yml](../../.github/workflows/ci-zlib.yml) for CI configuration. + +--- + +## Licensing + +Zlib is licensed under the **zlib License**, a permissive free software license. + +The full license text is included unmodified in `zlib/LICENSE`. + +### Copyright + +**Original Work:** +``` +Copyright © 1995–2025 +Jean-loup Gailly, Mark Adler +``` + +**Modifications:** +``` +Copyright © 2026 +Project Tick contributors +``` + +--- + +## Related Documentation + +- [QuaZip](./quazip.md) — C++ wrapper that uses zlib +- [bzip2](./bzip2.md) — Alternative compression library +- [Third-party Libraries](./third-party.md) — Overview of all dependencies + +--- + +## External Links + +- [zlib Official Website](https://zlib.net) +- [zlib Official GitHub Repository](https://github.com/madler/zlib) +- [zlib Project Tick Github Repository](https://github.com/Project-Tick/ProjT-Launcher/tree/main/zlib) +- [RFC 1950 - ZLIB Specification](https://tools.ietf.org/html/rfc1950) +- [RFC 1951 - DEFLATE Specification](https://tools.ietf.org/html/rfc1951) |
