Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
c7c610c
Full rewrite main.py for memory module
PythonChicken123 May 4, 2026
b89f324
Apply automatic ruff fixes and formatting [skip ci]
github-actions[bot] May 4, 2026
48dec85
Update memory branch
PythonChicken123 May 8, 2026
8c5a221
Add pythonmemorymodules
PythonChicken123 May 8, 2026
9b89600
Create __init__.py for Windows module
PythonChicken123 May 8, 2026
60855de
Part 1/3 of upload
PythonChicken123 May 8, 2026
ef6b16b
Complete upload
PythonChicken123 May 8, 2026
bcf23ce
Delete scripts/jvm_boot_glue-gemini.py
PythonChicken123 May 8, 2026
6e4227c
Delete scripts/jvm_boot_glue.txt
PythonChicken123 May 8, 2026
2626210
Delete scripts/jvm_memory_loader.txt
PythonChicken123 May 8, 2026
51ec2ca
feat: pin JVM properties and augment DLL search path for HotSpot startup
May 8, 2026
4730908
fix: correct PE walker offset and add bounds checking
May 8, 2026
db47486
fix: hook GetModuleHandleExW/A for in-memory jvm.dll to set java.home
May 8, 2026
f0c6560
fix: wildcard search for HotSpot functions in API-set DLLs
May 8, 2026
8829b33
Update memory branch
PythonChicken123 May 9, 2026
1604f4a
Update branch
PythonChicken123 May 10, 2026
49c8079
Configure .gitattributes to ignore generated files
PythonChicken123 May 10, 2026
5a152e8
Add ignore patterns to .sourcery.yaml
PythonChicken123 May 10, 2026
b937ea6
Update .gitignore to include additional files and folders
PythonChicken123 May 10, 2026
53817c7
refactor: integrate portablemc 5.x with in-memory loading
May 10, 2026
e2fb463
refactor: integrate portablemc 5.x with in-memory loading
PythonChicken123 May 10, 2026
5725395
feat: scaffold portablemc 5.x build and packaging
May 10, 2026
d2529a4
Merge pull request #8 from PythonChicken123/v0/7442-366585c8
PythonChicken123 May 10, 2026
607dbef
Revise README with updated launcher details and features
PythonChicken123 May 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Exclude compiled Python files from diffs and stats
*.pyc linguist-generated=true
*.pyc -diff

# Treat everything these directories as generated
# This hides them from the diff view by default
static/** linguist-generated=true
scripts/portablemc/** linguist-generated=true
scripts/pythonmemorymodule/** linguist-generated=true
scripts/windows/** linguist-generated=true
214 changes: 194 additions & 20 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,37 +1,211 @@
# Python
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*.py[codz]
*$py.class

# C extensions
*.so
*.egg-info/
dist/

# Distribution / packaging
.Python
build/
venv/
env/
.env
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Launcher runtime
# Launcher
python/
portablemc_bin/
PortableMCLoader.exe
*.tmp
*.log

# User data (optional, keep if you want to exclude user‑specific files)
static/
scripts/portablemc/
scripts/pythonmemorymodule/
scripts/windows/
mods/
resourcepacks/
servers.dat
options.txt

# IDE
.vscode/
.idea/
*.swp
*.swo
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py.cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
# Pipfile.lock

# UV
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# uv.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
# poetry.lock
# poetry.toml

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
# pdm.lock
# pdm.toml
.pdm-python
.pdm-build/

# pixi
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
# pixi.lock
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
# in the .venv directory. It is recommended not to include this directory in version control.
.pixi

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# Redis
*.rdb
*.aof
*.pid

# RabbitMQ
mnesia/
rabbitmq/
rabbitmq-data/

# ActiveMQ
activemq-data/

# SageMath parsed files
*.sage.py

# Environments
.env
.envrc
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# Ruff stuff:
.ruff_cache/

# PyPI configuration file
.pypirc

# OS
Thumbs.db
.DS_Store
# Marimo
marimo/_static/
marimo/_lsp/
__marimo__/

# GitHub Actions
*.pyc
# Streamlit
.streamlit/secrets.toml
6 changes: 6 additions & 0 deletions .sourcery.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
ignore:
- "static/"
- "scripts/portablemc/"
- "scripts/pythonmemorymodule/"
- "scripts/windows/"
- "**/*.pyc"
15 changes: 8 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
# Minecraft Portable Web Launcher

A Python‑based Minecraft launcher that runs in a browser using [Flask](https://github.com/pallets/flask) and [PortableMC](https://github.com/mindstorm38/portablemc). Designed for restricted Windows environments where arbitrary `.exe` files are blocked. It uses multiple fallback mechanisms (C# compilation, PowerShell, VBScript) to bypass Group Policy restrictions if required.
A Python‑based Minecraft launcher In-process JVM loading using JPype1 and PortableMC. Designed for restricted Windows environments where arbitrary `.exe` files are blocked.

![Preview](static/preview.jpg)

> [!WARNING]
> Usage of the MSBuild bypass method is for education, launcher portability, and system compatibility testing.
> Do not use it for bypassing security policy without authorization.

## Features

- **Web interface** with live console (via Flask‑SocketIO)
Expand Down Expand Up @@ -41,12 +37,17 @@ Minecraft-Portable-Web/

- Windows 10/11
- Python 3.11+ (or the script will download an embedded Python 3.14).
- (Optional) Maturin & PyO3 - used for portablemc api
- (Optional) MSBuild (comes with .NET Framework 4.8) – used for the C# fallback.
- (Optional) PowerShell 3.0+ – used as a fallback.
- (Optional) VBScript support – used as a final fallback.

## TL;DR
* Load all executables and dlls on the RAM, disk-less, undetectable
* Cross-platform support (MacOS, Linux)
* Local imports (PortableMC)
* ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID (Stealth)
* Proxy System (Bypass to access public servers)
* Microsoft Auth System

## Getting Started

Expand Down Expand Up @@ -91,7 +92,7 @@ If you encounter any issues or have an idea to improve the launcher, please [ope
## License
MIT

## Libraries Used
## Libraries Used (will be updated soon)
* [PortableMC](https://github.com/mindstorm38/portablemc) – The Heart of The Launcher
* [Flask](https://flask.palletsprojects.com/) & [Flask‑SocketIO](https://flask-socketio.readthedocs.io/) – Web Interface
* [ansi2html](https://github.com/ralphbean/ansi2html) & [ansi_up](https://github.com/drudru/ansi_up) – ANSI colour conversion
Expand Down
Loading
Loading