GUÍA RÁPIDA · WINDOWS · AULA

Python
Miney
Luanti

Python 3.12.10

uv 0.13.4

Miney 0.7.0

Luanti 5.17.0 (incluido en Miney)

VS Code + extensión Python

INSTALAR

1

Python

2

uv

3

VS Code

CONFIGURAR

4

Miney

5

Init

6

Poderes

7

Intérp.

8

PATH

COMPROBAR

9

Check

1

INSTALAR

Python 3.12.10

1

Descarga el instalador de Windows de 64 bits: https://www.python.org/downloads/release/python-31210/

2

Abre el archivo descargado. Marca Add python.exe to PATH, pulsa Install Now y espera a que termine.

3

Abre PowerShell (Inicio > escribe PowerShell > Windows PowerShell) y comprueba. Debe indicar Python 3.12.10:

python --version
2

INSTALAR

uv

1

En PowerShell, pega la línea completa, pulsa Intro y espera a que termine:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
2

Cierra PowerShell y abre una ventana nueva.

3

Comprueba. Debe aparecer una versión de uv:

uv --version
3

INSTALAR

VS Code y extensión Python

1

Descarga e instala la versión de Windows: https://code.visualstudio.com/

2

Abre VS Code (no hace falta iniciar sesión).

3

Extensiones (barra lateral) > busca Python > la publicada por Microsoft > Instalar.

4

CONFIGURAR · POWERSHELL, UNO POR UNO

Proyecto y Miney 0.7.0

1

Crea la carpeta:

mkdir C:\MineyAula
2

Entra en ella:

cd C:\MineyAula
3

Crea el entorno virtual:

uv venv --python 3.12.10
4

Instala Miney y espera a que vuelva el prompt:

uv pip install miney==0.7.0
5

CONFIGURAR

Inicializar Miney

1

Desde C:\MineyAula:

uv run miney init
2

Si aparece un menú para elegir el juego, selecciona 1, Minetest Game. La primera vez puede tardar.

Luanti viene incluido: Miney descarga su propia copia. No lo instales por separado.

6

CONFIGURAR · EN C:\MINEYAULA

Superpoderes: creativo, vuelo e invulnerabilidad

1

Copia de seguridad de world.py:

Copy-Item ".venv\Lib\site-packages\miney\env\world.py" ".venv\Lib\site-packages\miney\env\world.py.bak" -Force
2

Pega el bloque completo:

@'
from pathlib import Path
import re

archivo = Path(".venv/Lib/site-packages/miney/env/world.py")
contenido = archivo.read_text(encoding="utf-8")

# Limita la búsqueda a la función que genera luanti.conf.
inicio = contenido.find("def write_config(")
if inicio == -1:
    raise SystemExit("No se encuentra la función write_config(). No se ha modificado el archivo.")

fin = contenido.find("\ndef ", inicio + 1)
if fin == -1:
    fin = len(contenido)
funcion = contenido[inicio:fin]

# Si ya están los dos ajustes dentro de write_config(), no hace nada.
if '"creative_mode = true"' in funcion and '"enable_damage = false"' in funcion:
    print("Los ajustes ya están presentes; no se ha cambiado el archivo.")
else:
    # Busca la línea por su contenido, sin depender de la línea que viene después.
    patron = re.compile(r'(?m)^([ \t]*)"bind_address = 127\.0\.0\.1",\s*$')
    coincidencia = patron.search(funcion)
    if coincidencia is None:
        raise SystemExit("No se encuentra la línea bind_address esperada dentro de write_config(). No se ha modificado el archivo.")

    sangria = coincidencia.group(1)
    nuevas_lineas = []
    if '"creative_mode = true"' not in funcion:
        nuevas_lineas.append(sangria + '"creative_mode = true",')
    if '"enable_damage = false"' not in funcion:
        nuevas_lineas.append(sangria + '"enable_damage = false",')

    posicion = inicio + coincidencia.end()
    insercion = "\n" + "\n".join(nuevas_lineas)
    archivo.write_text(contenido[:posicion] + insercion + contenido[posicion:], encoding="utf-8")
    print("Configuración actualizada.")
'@ | uv run python -
3

Crea la carpeta del mod inmortal:

New-Item -ItemType Directory -Force ".miney\worlds\minetest_game\worldmods\inmortal"
4

Crea mod.conf:

@'
name = inmortal
description = Protege a los jugadores del daño y permite volar
'@ | Set-Content ".miney\worlds\minetest_game\worldmods\inmortal\mod.conf" -Encoding ascii
5

Crea init.lua:

@'
minetest.register_on_joinplayer(function(jugador)
    jugador:set_armor_groups({immortal = 1})

    local nombre_jugador = jugador:get_player_name()
    local privilegios = minetest.get_player_privs(nombre_jugador)
    privilegios.fly = true
    minetest.set_player_privs(nombre_jugador, privilegios)
end)
'@ | Set-Content ".miney\worlds\minetest_game\worldmods\inmortal\init.lua" -Encoding ascii
6

Arranca el mundo:

uv run miney start
7

Comprueba en el juego: inventario creativo (tecla I); K activa o desactiva el vuelo, Espacio sube y Mayús/SHIFT baja; sin indicadores de vida y una caída no reduce la salud (desde la altura, desactiva el vuelo).

Ruta final del mod: C:\MineyAula\.miney\worlds\minetest_game\worldmods\inmortal, con mod.conf e init.lua.

7

CONFIGURAR

Python del proyecto en VS Code

1

Archivo > Abrir carpeta… y abre C:\MineyAula. Declárala como de confianza (puede aparecer una notificación en la barra superior).

2

Ctrl+Mayús+P > escribe “Python: Select Interpreter” y selecciónalo.

3

Elige el intérprete de esta ruta, no otro Python del equipo (puede aparecer como “Python 3.12.10 (.venv)”):

C:\MineyAula\.venv\Scripts\python.exe
8

CONFIGURAR

Añadir uv al PATH de Windows

1

Abre una terminal de PowerShell en VS Code y ejecuta el bloque:

$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
$uvPath = "$env:USERPROFILE\.local\bin"

if (($userPath -split ";") -notcontains $uvPath) {
    [Environment]::SetEnvironmentVariable(
        "Path",
        (($userPath.TrimEnd(";") + ";" + $uvPath).TrimStart(";")),
        "User"
    )
}
2

Cierra todas las ventanas de VS Code y vuelve a abrirlo.

9

COMPROBAR

Comprobación técnica

1

En PowerShell, desde C:\MineyAula:

uv run miney check
2

Salida similar a esta (el texto exacto puede variar entre versiones):

OK Miney 0.7.0 on Python 3.12.10

OK Luanti 5.17.0 (bundled)

OK World 'minetest_game' (Minetest Game)

OK Miney mod installed and up to date

OK Server running on port 30000

OK Connection talking to Luanti 5.17.0

OK Privilege 'miney' has the 'miney' privilege

OK Content 436 node types, 33 tool types

Everything is ready. Your Python scripts can drive this world.

Estructura final

C:\MineyAula\ ├── .venv\ (entorno de Python del proyecto) └── .miney\ (datos y configuración del entorno Luanti/Miney)

La carpeta .miney puede contener mundos, archivos de ejecución y registros.