slime-mc 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- slime_mc-1.0.0/.gitignore +56 -0
- slime_mc-1.0.0/CHANGELOG.md +69 -0
- slime_mc-1.0.0/CONTRIBUTING.md +102 -0
- slime_mc-1.0.0/LICENSE +21 -0
- slime_mc-1.0.0/PKG-INFO +423 -0
- slime_mc-1.0.0/README.md +382 -0
- slime_mc-1.0.0/RELEASING.md +99 -0
- slime_mc-1.0.0/pyproject.toml +97 -0
- slime_mc-1.0.0/src/slime/__init__.py +10 -0
- slime_mc-1.0.0/src/slime/__main__.py +6 -0
- slime_mc-1.0.0/src/slime/api/__init__.py +1 -0
- slime_mc-1.0.0/src/slime/api/adoptium.py +211 -0
- slime_mc-1.0.0/src/slime/api/papermc.py +256 -0
- slime_mc-1.0.0/src/slime/checks.py +413 -0
- slime_mc-1.0.0/src/slime/cli.py +1248 -0
- slime_mc-1.0.0/src/slime/config.py +230 -0
- slime_mc-1.0.0/src/slime/errors.py +48 -0
- slime_mc-1.0.0/src/slime/java.py +279 -0
- slime_mc-1.0.0/src/slime/logging_setup.py +39 -0
- slime_mc-1.0.0/src/slime/models.py +361 -0
- slime_mc-1.0.0/src/slime/process.py +323 -0
- slime_mc-1.0.0/src/slime/properties.py +196 -0
- slime_mc-1.0.0/src/slime/provision.py +165 -0
- slime_mc-1.0.0/src/slime/store.py +145 -0
- slime_mc-1.0.0/src/slime/tui/__init__.py +5 -0
- slime_mc-1.0.0/src/slime/tui/app.py +184 -0
- slime_mc-1.0.0/src/slime/tui/app.tcss +222 -0
- slime_mc-1.0.0/src/slime/tui/screens/__init__.py +1 -0
- slime_mc-1.0.0/src/slime/tui/screens/confirm.py +48 -0
- slime_mc-1.0.0/src/slime/tui/screens/create.py +280 -0
- slime_mc-1.0.0/src/slime/tui/screens/dashboard.py +122 -0
- slime_mc-1.0.0/src/slime/tui/screens/doctor.py +112 -0
- slime_mc-1.0.0/src/slime/tui/screens/java.py +222 -0
- slime_mc-1.0.0/src/slime/tui/screens/server.py +219 -0
- slime_mc-1.0.0/src/slime/utils/__init__.py +1 -0
- slime_mc-1.0.0/src/slime/utils/archives.py +97 -0
- slime_mc-1.0.0/src/slime/utils/downloads.py +132 -0
- slime_mc-1.0.0/tests/conftest.py +19 -0
- slime_mc-1.0.0/tests/fixtures/adoptium_assets.json +17 -0
- slime_mc-1.0.0/tests/fixtures/adoptium_releases.json +1 -0
- slime_mc-1.0.0/tests/fixtures/fill_builds.json +32 -0
- slime_mc-1.0.0/tests/fixtures/fill_projects.json +1 -0
- slime_mc-1.0.0/tests/fixtures/fill_versions.json +1 -0
- slime_mc-1.0.0/tests/test_adoptium.py +125 -0
- slime_mc-1.0.0/tests/test_archives.py +92 -0
- slime_mc-1.0.0/tests/test_checks.py +203 -0
- slime_mc-1.0.0/tests/test_cli.py +188 -0
- slime_mc-1.0.0/tests/test_config.py +101 -0
- slime_mc-1.0.0/tests/test_downloads.py +102 -0
- slime_mc-1.0.0/tests/test_java.py +277 -0
- slime_mc-1.0.0/tests/test_models.py +212 -0
- slime_mc-1.0.0/tests/test_papermc.py +222 -0
- slime_mc-1.0.0/tests/test_process.py +205 -0
- slime_mc-1.0.0/tests/test_properties.py +111 -0
- slime_mc-1.0.0/tests/test_provision.py +184 -0
- slime_mc-1.0.0/tests/test_store.py +160 -0
- slime_mc-1.0.0/tests/test_version.py +28 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Byte-compiled / optimized files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# Virtual environments
|
|
7
|
+
.venv/
|
|
8
|
+
venv/
|
|
9
|
+
env/
|
|
10
|
+
ENV/
|
|
11
|
+
|
|
12
|
+
# Packaging and build artifacts
|
|
13
|
+
build/
|
|
14
|
+
dist/
|
|
15
|
+
*.egg-info/
|
|
16
|
+
*.egg
|
|
17
|
+
.eggs/
|
|
18
|
+
wheelhouse/
|
|
19
|
+
|
|
20
|
+
# Test and tooling caches
|
|
21
|
+
.pytest_cache/
|
|
22
|
+
.mypy_cache/
|
|
23
|
+
.ruff_cache/
|
|
24
|
+
.coverage
|
|
25
|
+
.coverage.*
|
|
26
|
+
coverage.xml
|
|
27
|
+
htmlcov/
|
|
28
|
+
.tox/
|
|
29
|
+
.nox/
|
|
30
|
+
.hypothesis/
|
|
31
|
+
|
|
32
|
+
# Slime runtime home (when SLIME_HOME points inside the checkout)
|
|
33
|
+
.slime/
|
|
34
|
+
slime-home/
|
|
35
|
+
|
|
36
|
+
# Logs and temporary files
|
|
37
|
+
*.log
|
|
38
|
+
tmp/
|
|
39
|
+
.cache/
|
|
40
|
+
|
|
41
|
+
# IDE and editor files
|
|
42
|
+
.idea/
|
|
43
|
+
.vscode/
|
|
44
|
+
*.swp
|
|
45
|
+
*.swo
|
|
46
|
+
*~
|
|
47
|
+
|
|
48
|
+
# Secrets and local overrides
|
|
49
|
+
.env
|
|
50
|
+
.env.*
|
|
51
|
+
!.env.example
|
|
52
|
+
|
|
53
|
+
# OS metadata
|
|
54
|
+
.DS_Store
|
|
55
|
+
Thumbs.db
|
|
56
|
+
desktop.ini
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [1.0.0] - 2026-11-02
|
|
11
|
+
|
|
12
|
+
First public release. This consolidates the 0.1.0 development series, which was
|
|
13
|
+
never published. Slime is distributed as `slime-mc` on PyPI and installs the
|
|
14
|
+
`slime` entry point.
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- Full-screen Textual TUI: server dashboard, creation wizard, live console,
|
|
19
|
+
Java manager and environment diagnostics.
|
|
20
|
+
- Typer CLI with commands for servers, Java runtimes, diagnostics and
|
|
21
|
+
configuration.
|
|
22
|
+
- PaperMC Fill API v3 client for Paper, Folia, Velocity and Waterfall,
|
|
23
|
+
including build channels (`STABLE`, `BETA`, `ALPHA`, `ANY`).
|
|
24
|
+
- Eclipse Adoptium API v3 client and Temurin Java manager: download, SHA-256
|
|
25
|
+
verification, safe archive extraction and per-server runtime selection.
|
|
26
|
+
- Server provisioning: jar download, generated `server.properties` and
|
|
27
|
+
`eula.txt`, port, memory and Java version defaults.
|
|
28
|
+
- Foreground server process management with streamed console output, command
|
|
29
|
+
input, graceful stop and per-server logs.
|
|
30
|
+
- Environment checks (`slime doctor`): Python, OS, disk space, port conflicts,
|
|
31
|
+
EULA, jar, Java and `server.properties` consistency, with a CI-friendly exit
|
|
32
|
+
code.
|
|
33
|
+
- TOML configuration (`~/.slime/config.toml`) and `SLIME_HOME` / `--home`
|
|
34
|
+
overrides.
|
|
35
|
+
- Test suite covering models, properties, config, store, checks, API clients,
|
|
36
|
+
provisioning, process handling, CLI, archives, downloads and Java management.
|
|
37
|
+
- GitHub Actions CI for Windows and Linux on Python 3.11-3.14, plus a tagged
|
|
38
|
+
release workflow that builds, publishes to PyPI and creates a GitHub release.
|
|
39
|
+
- Project infrastructure: MIT license, changelog, contribution guide, release
|
|
40
|
+
checklist, `.gitignore` and `.gitattributes`.
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
|
|
44
|
+
- Adapted the Fill API parsers to the 2026 response format while staying
|
|
45
|
+
tolerant of the older shape.
|
|
46
|
+
- Calendar-based Minecraft versions `26.x+` now default to Java 25.
|
|
47
|
+
- Migrated TUI imports to Textual 2.x (`from textual import work`).
|
|
48
|
+
- API clients now derive their default `User-Agent` from the package version
|
|
49
|
+
instead of hard-coding it.
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
|
|
53
|
+
- Removed a circular import between TUI screens and `SlimeApp`.
|
|
54
|
+
- `ServerStore.write_pid()` now creates the parent directory, so a PID file can
|
|
55
|
+
be written before the server directory exists.
|
|
56
|
+
- Replaced `Enum` with `StrEnum`, typed bindings with `ClassVar`, and removed
|
|
57
|
+
unsafe `try/except/pass` blocks; `ruff check .` and `mypy` are clean.
|
|
58
|
+
|
|
59
|
+
### Known limitations
|
|
60
|
+
|
|
61
|
+
- No cross-process `stop`: a server lives as long as the Slime process that
|
|
62
|
+
started it. Stop it from the TUI, with `Ctrl+C`, or with the `stop` console
|
|
63
|
+
command.
|
|
64
|
+
- Generated proxies (`velocity.toml`, `waterfall.yml`) must be configured
|
|
65
|
+
manually.
|
|
66
|
+
- Windows 7 / 8 / 8.1 are not supported by this branch.
|
|
67
|
+
|
|
68
|
+
[Unreleased]: https://github.com/cizik5064-bit/slime/compare/v1.0.0...HEAD
|
|
69
|
+
[1.0.0]: https://github.com/cizik5064-bit/slime/releases/tag/v1.0.0
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Contributing to Slime
|
|
2
|
+
|
|
3
|
+
Thanks for taking the time to help. Slime is a small project, so clear reports
|
|
4
|
+
and focused pull requests are very welcome.
|
|
5
|
+
|
|
6
|
+
## Before you start
|
|
7
|
+
|
|
8
|
+
- For bugs, open an issue with the Slime version (`slime --version`), your OS,
|
|
9
|
+
Python version and the exact command you ran. Include relevant lines from
|
|
10
|
+
`~/.slime/logs/slime.log`. Never paste tokens, passwords or other secrets.
|
|
11
|
+
- For features, open an issue first so we can agree on the scope before you
|
|
12
|
+
spend time on code.
|
|
13
|
+
- Report security problems privately to the maintainers instead of opening a
|
|
14
|
+
public issue.
|
|
15
|
+
|
|
16
|
+
## Development setup
|
|
17
|
+
|
|
18
|
+
Requirements: Python 3.11+ and git.
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
git clone https://github.com/cizik5064-bit/slime.git
|
|
22
|
+
cd slime
|
|
23
|
+
python -m venv .venv
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Windows:
|
|
27
|
+
|
|
28
|
+
```powershell
|
|
29
|
+
.venv\Scripts\Activate.ps1
|
|
30
|
+
pip install -e ".[dev]"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Linux/macOS:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
source .venv/bin/activate
|
|
37
|
+
pip install -e ".[dev]"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Run the app from the checkout with `slime` or `python -m slime`. Use a temporary
|
|
41
|
+
home directory when experimenting so your real servers are not touched:
|
|
42
|
+
|
|
43
|
+
```powershell
|
|
44
|
+
$env:SLIME_HOME = "$env:TEMP\slime-dev"
|
|
45
|
+
slime doctor
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Checks
|
|
49
|
+
|
|
50
|
+
Every change must keep these commands green:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
ruff check .
|
|
54
|
+
mypy
|
|
55
|
+
pytest
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
`pytest` and the linters run in CI on Windows and Linux for Python 3.11 through
|
|
59
|
+
3.14. Tests must not depend on network access; use `respx` and the fixtures in
|
|
60
|
+
`tests/fixtures` for HTTP clients.
|
|
61
|
+
|
|
62
|
+
## Code style
|
|
63
|
+
|
|
64
|
+
- Code, identifiers, UI strings, docstrings and documentation are in English.
|
|
65
|
+
- Keep the existing layout: API clients return dataclasses, provisioning is
|
|
66
|
+
separate from process management, and the TUI only orchestrates services.
|
|
67
|
+
- Add type hints to public functions. Prefer small, testable modules.
|
|
68
|
+
- Do not add dependencies without discussing it in an issue first.
|
|
69
|
+
- Never accept the Minecraft EULA on the user's behalf.
|
|
70
|
+
- Do not log secrets, tokens or personal data.
|
|
71
|
+
|
|
72
|
+
## Tests
|
|
73
|
+
|
|
74
|
+
- Add or update tests for every behaviour change.
|
|
75
|
+
- Put shared fixtures in `tests/conftest.py`, keep network fixtures in
|
|
76
|
+
`tests/fixtures/`.
|
|
77
|
+
- A bug fix should include a regression test that fails before the fix.
|
|
78
|
+
|
|
79
|
+
## Commits and pull requests
|
|
80
|
+
|
|
81
|
+
- Use short imperative commit subjects, for example
|
|
82
|
+
`fix: create PID parent directory` or `feat: add Java 25 defaults`.
|
|
83
|
+
- Keep pull requests focused; unrelated refactors belong in a separate PR.
|
|
84
|
+
- Describe what changed, why, and how you tested it. Mention the OS and Python
|
|
85
|
+
version if the change is platform-specific.
|
|
86
|
+
- Update `CHANGELOG.md` under `[Unreleased]` for user-visible changes.
|
|
87
|
+
- Update `README.md` when behaviour, commands or requirements change.
|
|
88
|
+
|
|
89
|
+
## Versioning
|
|
90
|
+
|
|
91
|
+
Before `1.0.0`, versions are bumped at the maintainer's discretion. After the
|
|
92
|
+
first public release, every user-visible change bumps the version in
|
|
93
|
+
`pyproject.toml` and `src/slime/__init__.py`, and adds a `CHANGELOG.md` entry:
|
|
94
|
+
|
|
95
|
+
- patch for bug fixes and small changes;
|
|
96
|
+
- minor for new functionality;
|
|
97
|
+
- major for incompatible changes.
|
|
98
|
+
|
|
99
|
+
## License
|
|
100
|
+
|
|
101
|
+
By contributing, you agree that your contribution is licensed under the MIT
|
|
102
|
+
License (see `LICENSE`).
|
slime_mc-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Slime contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
slime_mc-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: slime-mc
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: A friendly Minecraft server manager for PaperMC servers, with a TUI and a CLI.
|
|
5
|
+
Project-URL: Homepage, https://github.com/cizik5064-bit/slime
|
|
6
|
+
Project-URL: Documentation, https://github.com/cizik5064-bit/slime#readme
|
|
7
|
+
Project-URL: Issues, https://github.com/cizik5064-bit/slime/issues
|
|
8
|
+
Project-URL: Changelog, https://github.com/cizik5064-bit/slime/blob/main/CHANGELOG.md
|
|
9
|
+
Author: Slime contributors
|
|
10
|
+
License: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: adoptium,cli,java,minecraft,paper,papermc,server,tui,velocity
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Environment :: Win32 (MS Windows)
|
|
16
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
17
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
18
|
+
Classifier: Operating System :: MacOS
|
|
19
|
+
Classifier: Operating System :: Microsoft :: Windows :: Windows 10
|
|
20
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
21
|
+
Classifier: Programming Language :: Python :: 3
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
26
|
+
Classifier: Topic :: Games/Entertainment
|
|
27
|
+
Classifier: Topic :: System :: Systems Administration
|
|
28
|
+
Requires-Python: >=3.11
|
|
29
|
+
Requires-Dist: httpx<1,>=0.27
|
|
30
|
+
Requires-Dist: psutil<8,>=5.9.8
|
|
31
|
+
Requires-Dist: rich<15,>=13.7.1
|
|
32
|
+
Requires-Dist: textual<3,>=0.79
|
|
33
|
+
Requires-Dist: typer<1.0,>=0.12.5
|
|
34
|
+
Provides-Extra: dev
|
|
35
|
+
Requires-Dist: mypy>=1.11; extra == 'dev'
|
|
36
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
37
|
+
Requires-Dist: pytest>=8.2; extra == 'dev'
|
|
38
|
+
Requires-Dist: respx>=0.21; extra == 'dev'
|
|
39
|
+
Requires-Dist: ruff>=0.6; extra == 'dev'
|
|
40
|
+
Description-Content-Type: text/markdown
|
|
41
|
+
|
|
42
|
+
# Slime
|
|
43
|
+
|
|
44
|
+
[](https://github.com/cizik5064-bit/slime/actions/workflows/ci.yml)
|
|
45
|
+
[](https://pypi.org/project/slime-mc/)
|
|
46
|
+
[](LICENSE)
|
|
47
|
+
[](pyproject.toml)
|
|
48
|
+
|
|
49
|
+
**A friendly Minecraft server manager for humans, not sysadmins.**
|
|
50
|
+
|
|
51
|
+
Slime is a Python application with a full-screen terminal UI (TUI) and a
|
|
52
|
+
scriptable CLI. It helps beginners create, configure, run and troubleshoot
|
|
53
|
+
Minecraft servers without hunting for jars, Java versions or API URLs.
|
|
54
|
+
|
|
55
|
+
> **Status: 1.0.0 — first public release.** Core features are implemented and
|
|
56
|
+
> covered by tests, but Slime is still young. Expect rough edges and please
|
|
57
|
+
> report them on the issue tracker.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Why Slime?
|
|
62
|
+
|
|
63
|
+
Setting up a Minecraft server usually involves five different websites, a Java
|
|
64
|
+
version you did not know you needed, a EULA you have never read, and a port
|
|
65
|
+
that is already in use. Slime turns that into a guided flow:
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
slime java install 21
|
|
69
|
+
slime server create survival --project paper --memory 4096 --accept-eula
|
|
70
|
+
slime server run survival
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Or just run `slime` and use the TUI.
|
|
74
|
+
|
|
75
|
+
## Features
|
|
76
|
+
|
|
77
|
+
- **PaperMC Fill API v3** — download the latest builds of Paper, Folia,
|
|
78
|
+
Velocity and Waterfall directly from the official API. No scraping, no
|
|
79
|
+
BuildTools.
|
|
80
|
+
- **Temurin Java manager** — install the exact Eclipse Adoptium JDK a server
|
|
81
|
+
needs (8, 11, 16, 17, 21, 25), per platform and architecture. Slime downloads
|
|
82
|
+
the archive, verifies the SHA-256 checksum, extracts it into `~/.slime/java`
|
|
83
|
+
and records the exact `bin/java` path.
|
|
84
|
+
- **TUI + CLI** — a Textual interface for browsing servers, editing settings,
|
|
85
|
+
watching the console live and sending commands; a Typer CLI for automation.
|
|
86
|
+
- **Server lifecycle** — create, start, stop, restart, delete and inspect
|
|
87
|
+
servers. A foreground console streams logs and accepts commands via stdin.
|
|
88
|
+
- **Environment checks** — Python, OS, disk space, available RAM, port
|
|
89
|
+
conflicts, EULA status, server jar, `server.properties` consistency and Java
|
|
90
|
+
availability.
|
|
91
|
+
- **Beginner-friendly defaults** — sensible `server.properties`, MOTD, port,
|
|
92
|
+
memory and Java version detection; clear error messages with actionable hints.
|
|
93
|
+
- **Cross-platform** — Windows 10+ and Linux (macOS works but is not a primary
|
|
94
|
+
target). Windows 7/8/8.1 will require a separate legacy build; see
|
|
95
|
+
[Platform support](#platform-support).
|
|
96
|
+
- **Local-first** — everything lives in `~/.slime` by default. No account, no
|
|
97
|
+
telemetry, no cloud.
|
|
98
|
+
|
|
99
|
+
## Supported projects
|
|
100
|
+
|
|
101
|
+
| Project | Kind | API | Java (by default) |
|
|
102
|
+
| --- | --- | --- | --- |
|
|
103
|
+
| Paper | Server | [Fill v3](https://fill.papermc.io/v3) | 21 for 1.20.5+, 17 for 1.17–1.20.4, 8 for ≤1.16.5 |
|
|
104
|
+
| Folia | Server | Fill v3 | same as Paper |
|
|
105
|
+
| Velocity | Proxy | Fill v3 | 17 |
|
|
106
|
+
| Waterfall | Proxy | Fill v3 | 11 |
|
|
107
|
+
|
|
108
|
+
Slime only uses the official PaperMC Fill API for these four projects. Spigot,
|
|
109
|
+
Forge, NeoForge and Fabric are not supported yet.
|
|
110
|
+
|
|
111
|
+
Proxies generate their own `velocity.toml` / `waterfall.yml` on first start.
|
|
112
|
+
Slime prepares the directory and jar, then leaves proxy networking config to
|
|
113
|
+
you.
|
|
114
|
+
|
|
115
|
+
## Requirements
|
|
116
|
+
|
|
117
|
+
- **Python 3.11+**
|
|
118
|
+
- **Windows 10+** or **Linux** (x86-64 or ARM64)
|
|
119
|
+
- Internet access for the first setup (PaperMC and Adoptium APIs)
|
|
120
|
+
- At least 1 GiB of free disk space; 5 GiB+ recommended
|
|
121
|
+
|
|
122
|
+
## Installation
|
|
123
|
+
|
|
124
|
+
Slime requires Python 3.11 or newer.
|
|
125
|
+
|
|
126
|
+
The recommended way is an isolated installation with
|
|
127
|
+
[pipx](https://pipx.pypa.io/):
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
pipx install slime-mc
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Or install it into the current environment with pip:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
pip install slime-mc
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Run it:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
slime --version
|
|
143
|
+
slime
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### From source (development)
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
git clone https://github.com/cizik5064-bit/slime.git
|
|
150
|
+
cd slime
|
|
151
|
+
python -m venv .venv
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Windows:
|
|
155
|
+
|
|
156
|
+
```powershell
|
|
157
|
+
.venv\Scripts\Activate.ps1
|
|
158
|
+
pip install -e ".[dev]"
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Linux/macOS:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
source .venv/bin/activate
|
|
165
|
+
pip install -e ".[dev]"
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for the development workflow.
|
|
169
|
+
|
|
170
|
+
## Quick start (CLI)
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
# 1. Install the Java version the server needs
|
|
174
|
+
slime java install 21
|
|
175
|
+
|
|
176
|
+
# 2. Create a Paper server using the latest Minecraft version
|
|
177
|
+
slime server create survival --project paper --memory 4096 --accept-eula
|
|
178
|
+
|
|
179
|
+
# 3. Start it in the foreground and attach the console
|
|
180
|
+
slime server run survival
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Inside the console, type Minecraft commands (`op Notch`, `say hello`, `stop`).
|
|
184
|
+
Press **Ctrl+C** to stop the server gracefully.
|
|
185
|
+
|
|
186
|
+
Useful follow-ups:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
slime server list
|
|
190
|
+
slime server info survival --checks
|
|
191
|
+
slime doctor
|
|
192
|
+
slime server versions --project paper
|
|
193
|
+
slime server builds 1.21.4 --project paper
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Choosing a version and build explicitly:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
slime server create creative \
|
|
200
|
+
--project paper \
|
|
201
|
+
--version 1.21.4 \
|
|
202
|
+
--channel STABLE \
|
|
203
|
+
--memory 6144 \
|
|
204
|
+
--port 25566 \
|
|
205
|
+
--accept-eula
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Quick start (TUI)
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
slime
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
| Key | Action |
|
|
215
|
+
| --- | --- |
|
|
216
|
+
| `n` | New server |
|
|
217
|
+
| `j` | Java manager |
|
|
218
|
+
| `d` | Doctor (environment checks) |
|
|
219
|
+
| `r` | Refresh |
|
|
220
|
+
| `q` | Quit (stops servers started by the TUI) |
|
|
221
|
+
| `Enter` | Open the selected server |
|
|
222
|
+
| `Esc` | Back |
|
|
223
|
+
|
|
224
|
+
The server screen shows live console output, a command input, and Start / Stop /
|
|
225
|
+
Restart / Delete buttons. Servers started from the TUI keep running while you
|
|
226
|
+
navigate between screens, and are stopped gracefully when you quit Slime.
|
|
227
|
+
|
|
228
|
+
## Commands
|
|
229
|
+
|
|
230
|
+
### Global
|
|
231
|
+
|
|
232
|
+
```text
|
|
233
|
+
slime [--home PATH] [--verbose] [--version]
|
|
234
|
+
slime tui
|
|
235
|
+
slime doctor [--server NAME] [--json]
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
With no arguments, `slime` opens the TUI when stdout is a terminal.
|
|
239
|
+
|
|
240
|
+
### Servers
|
|
241
|
+
|
|
242
|
+
```text
|
|
243
|
+
slime server list [--json]
|
|
244
|
+
slime server create NAME [--project paper|folia|velocity|waterfall]
|
|
245
|
+
[--version VERSION] [--build N] [--channel STABLE|BETA|ALPHA|ANY]
|
|
246
|
+
[--memory MB] [--port PORT] [--java MAJOR]
|
|
247
|
+
[--motd TEXT] [--accept-eula]
|
|
248
|
+
slime server info NAME [--checks] [--json]
|
|
249
|
+
slime server run NAME [--memory MB] [--java PATH] [--no-console]
|
|
250
|
+
slime server eula NAME [--accept/--revoke]
|
|
251
|
+
slime server delete NAME [--yes] [--keep-files]
|
|
252
|
+
slime server path NAME
|
|
253
|
+
slime server versions [--project PROJECT] [--limit N] [--json]
|
|
254
|
+
slime server builds VERSION [--project PROJECT] [--channel CHANNEL] [--limit N] [--json]
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Java
|
|
258
|
+
|
|
259
|
+
```text
|
|
260
|
+
slime java list [--json]
|
|
261
|
+
slime java releases [--json]
|
|
262
|
+
slime java install MAJOR [--force] [--os OS] [--arch ARCH]
|
|
263
|
+
slime java remove MAJOR [--yes]
|
|
264
|
+
slime java which [MAJOR] [--server NAME]
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Configuration
|
|
268
|
+
|
|
269
|
+
```text
|
|
270
|
+
slime config show [--json]
|
|
271
|
+
slime config set KEY VALUE
|
|
272
|
+
slime config path
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Editable settings: `default_memory_mb`, `default_java_major`, `default_port`,
|
|
276
|
+
`accept_eula_default`.
|
|
277
|
+
|
|
278
|
+
## How Java selection works
|
|
279
|
+
|
|
280
|
+
Each server records the Java **major** it needs. Slime resolves it in this
|
|
281
|
+
order:
|
|
282
|
+
|
|
283
|
+
1. An explicit `java_path` on the server (set with `slime server run --java`).
|
|
284
|
+
2. A Temurin runtime managed by Slime with the same major
|
|
285
|
+
(`~/.slime/java/temurin-<major>-<os>-<arch>`).
|
|
286
|
+
3. A system Java found on `PATH` or via `JAVA_HOME`, but only if its major
|
|
287
|
+
matches exactly.
|
|
288
|
+
|
|
289
|
+
If nothing matches, Slime tells you exactly what to run:
|
|
290
|
+
|
|
291
|
+
```text
|
|
292
|
+
Error: Java 21 is required by survival (Paper 1.21.4), but it is not installed.
|
|
293
|
+
Hint: Install it with: slime java install 21
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
Install specific runtimes with:
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
slime java install 17
|
|
300
|
+
slime java install 21
|
|
301
|
+
slime java list
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
Slime never installs a JDK silently. It also never overwrites `eula=true`
|
|
305
|
+
without explicit confirmation (`--accept-eula` or an interactive prompt).
|
|
306
|
+
|
|
307
|
+
## Where files live
|
|
308
|
+
|
|
309
|
+
Default home: `~/.slime` (override with `SLIME_HOME` or `--home`).
|
|
310
|
+
|
|
311
|
+
```text
|
|
312
|
+
~/.slime/
|
|
313
|
+
config.toml # settings
|
|
314
|
+
servers/
|
|
315
|
+
<name>/
|
|
316
|
+
slime.json # Slime metadata (project, build, Java, port, RAM)
|
|
317
|
+
server.jar # downloaded PaperMC jar
|
|
318
|
+
server.properties # generated for servers
|
|
319
|
+
eula.txt # generated for servers
|
|
320
|
+
world/ # created by Minecraft on first start
|
|
321
|
+
java/
|
|
322
|
+
temurin-21-windows-x64/
|
|
323
|
+
bin/java.exe
|
|
324
|
+
slime-java.json
|
|
325
|
+
cache/ # temporary downloads
|
|
326
|
+
logs/
|
|
327
|
+
slime.log
|
|
328
|
+
<server>.log # full console log per server
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
`server.properties` is only created if it is missing: existing user values are
|
|
332
|
+
preserved. Slime warns when the port in `server.properties` disagrees with the
|
|
333
|
+
port recorded in `slime.json`.
|
|
334
|
+
|
|
335
|
+
## Environment checks
|
|
336
|
+
|
|
337
|
+
`slime doctor` (or `d` in the TUI) reports:
|
|
338
|
+
|
|
339
|
+
- Python version (3.11+)
|
|
340
|
+
- Operating system (Windows 10+, Linux, macOS)
|
|
341
|
+
- Writable Slime home directory
|
|
342
|
+
- Free disk space (error below 1 GiB, warning below 5 GiB)
|
|
343
|
+
- Per server: jar, Java runtime, EULA, port, RAM, `server.properties` port
|
|
344
|
+
- Installed Java runtimes
|
|
345
|
+
|
|
346
|
+
Exit code `2` means at least one check failed, which makes it usable in CI.
|
|
347
|
+
|
|
348
|
+
## Platform support
|
|
349
|
+
|
|
350
|
+
| Platform | Status |
|
|
351
|
+
| --- | --- |
|
|
352
|
+
| Windows 10 / 11 | Primary target |
|
|
353
|
+
| Linux x86-64 | Primary target |
|
|
354
|
+
| Linux ARM64 | Supported by Adoptium; lightly tested |
|
|
355
|
+
| macOS | Should work, not a primary target |
|
|
356
|
+
| Windows 8.1 | Not supported by Python 3.11+ |
|
|
357
|
+
| Windows 7 / 8 | Needs a separate legacy build (Python 3.8, older Textual) |
|
|
358
|
+
|
|
359
|
+
Windows 7 and 8/8.1 support cannot be added to this codebase: Python 3.9+ and
|
|
360
|
+
modern Textual do not run there. A future `0.x-legacy` build may target Python
|
|
361
|
+
3.8 with pinned dependencies. Until then, Slime prints a clear compatibility
|
|
362
|
+
error on unsupported Windows versions.
|
|
363
|
+
|
|
364
|
+
## Development
|
|
365
|
+
|
|
366
|
+
```bash
|
|
367
|
+
python -m venv .venv
|
|
368
|
+
source .venv/bin/activate # Windows: .venv\Scripts\Activate.ps1
|
|
369
|
+
pip install -e ".[dev]"
|
|
370
|
+
|
|
371
|
+
ruff check .
|
|
372
|
+
pytest
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
Project layout:
|
|
376
|
+
|
|
377
|
+
```text
|
|
378
|
+
src/slime/
|
|
379
|
+
cli.py # Typer commands
|
|
380
|
+
tui/ # Textual app, screens, CSS
|
|
381
|
+
api/papermc.py # Fill API v3 client
|
|
382
|
+
api/adoptium.py # Adoptium API v3 client
|
|
383
|
+
java.py # Temurin install/discovery
|
|
384
|
+
provision.py # create-server flow
|
|
385
|
+
process.py # server process + console
|
|
386
|
+
checks.py # environment checks
|
|
387
|
+
store.py # ~/.slime/server registry
|
|
388
|
+
models.py # data models and validation
|
|
389
|
+
properties.py # server.properties / eula.txt
|
|
390
|
+
tests/ # pytest suite (in progress)
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
The design favours explicit, testable modules: API clients return dataclasses,
|
|
394
|
+
provisioning is separated from process management, and the TUI only orchestrates
|
|
395
|
+
services.
|
|
396
|
+
|
|
397
|
+
## Roadmap
|
|
398
|
+
|
|
399
|
+
- [x] Core architecture, models and validation
|
|
400
|
+
- [x] Fill API v3 client (Paper, Folia, Velocity, Waterfall)
|
|
401
|
+
- [x] Adoptium Temurin client and Java manager
|
|
402
|
+
- [x] CLI (servers, Java, diagnostics, config)
|
|
403
|
+
- [x] Textual TUI (dashboard, server console, create wizard, Java, doctor)
|
|
404
|
+
- [x] Full test suite and CI on Windows + Linux
|
|
405
|
+
- [x] First public release (1.0.0)
|
|
406
|
+
- [x] Packaging on PyPI (`slime-mc`)
|
|
407
|
+
- [ ] Backups and restore
|
|
408
|
+
- [ ] Plugin/mod browser (Modrinth / Hangar)
|
|
409
|
+
- [ ] RCON console and cross-process server control
|
|
410
|
+
- [ ] Legacy Windows 7/8.1 build
|
|
411
|
+
- [ ] Standalone binaries via PyInstaller
|
|
412
|
+
|
|
413
|
+
## Disclaimer
|
|
414
|
+
|
|
415
|
+
Slime is an unofficial community project. It is not affiliated with Mojang,
|
|
416
|
+
Microsoft, PaperMC, or Eclipse Adoptium. Minecraft is a trademark of Mojang
|
|
417
|
+
Studios. By creating a server you agree to the
|
|
418
|
+
[Minecraft EULA](https://aka.ms/MinecraftEULA); Slime only records your
|
|
419
|
+
explicit acceptance and never accepts it for you.
|
|
420
|
+
|
|
421
|
+
## License
|
|
422
|
+
|
|
423
|
+
MIT — see [LICENSE](LICENSE).
|