upload
This commit is contained in:
+4
-1
@@ -48,4 +48,7 @@ build
|
||||
.kotlin
|
||||
|
||||
|
||||
.claude
|
||||
.claude
|
||||
|
||||
src/torchcs/server/src/com/mojang
|
||||
src/torchcs/server/src/net/minecraft
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,3 +3,6 @@
|
||||
|
||||
org.gradle.configuration-cache=true
|
||||
|
||||
minecraft_version=26.1.2
|
||||
minecraft_extracted=/home/reversedcodes/dev/GitHub/TorchCS/TorchCS-MC/bin/minecraft/java/26.1.2/extracted
|
||||
minecraft_main_class=net.minecraft.server.Main
|
||||
|
||||
@@ -7,6 +7,7 @@ import zipfile
|
||||
from pathlib import Path
|
||||
from common.constants import java_executable
|
||||
from common.http_client_minecraft import download_file, fetch_latest_java_server_metadata
|
||||
from common.version_tracker import VersionTrackerDatabase
|
||||
|
||||
log = logging.getLogger("SetupMinecraft")
|
||||
|
||||
@@ -31,7 +32,7 @@ def run_ripper(ripper_jar: Path, input_jar: Path, output_dir: Path) -> None:
|
||||
if process.returncode != 0:
|
||||
raise RuntimeError(f"Ripper exited with code {process.returncode}")
|
||||
|
||||
def setup_minecraft_java(ripper_jar: Path, java_path: Path) -> None:
|
||||
def setup_minecraft_java(ripper_jar: Path, java_path: Path, database_dir: Path) -> None:
|
||||
metadata = fetch_latest_java_server_metadata()
|
||||
|
||||
if metadata is None:
|
||||
@@ -42,7 +43,10 @@ def setup_minecraft_java(ripper_jar: Path, java_path: Path) -> None:
|
||||
version_id = metadata["id"]
|
||||
version_path = java_path / version_id
|
||||
|
||||
if (version_path / ".setup-complete").exists():
|
||||
gradle_properties = java_path.parents[2] / "gradle.properties"
|
||||
current_version = _read_gradle_property(gradle_properties, "minecraft_version")
|
||||
|
||||
if current_version == version_id:
|
||||
log.info("Minecraft Java %s is already set up, skipping.", version_id)
|
||||
return
|
||||
|
||||
@@ -61,14 +65,51 @@ def setup_minecraft_java(ripper_jar: Path, java_path: Path) -> None:
|
||||
|
||||
inner_jar = extract_jar(server_jar, version_id)
|
||||
|
||||
run_ripper(ripper_jar, inner_jar, inner_jar.parent / "src")
|
||||
project_src = java_path.parents[2] / "src" / "torchcs" / "server" / "src"
|
||||
run_ripper(ripper_jar, inner_jar, project_src)
|
||||
|
||||
(version_path / ".setup-complete").touch()
|
||||
log.info("Building version database...")
|
||||
db = VersionTrackerDatabase(str(database_dir / f"{version_id}.csv"))
|
||||
db.populate_from_src(project_src)
|
||||
database_dir.mkdir(parents=True, exist_ok=True)
|
||||
db.save()
|
||||
|
||||
extracted_dir = version_path / "extracted"
|
||||
main_class = (extracted_dir / "META-INF" / "main-class").read_text().strip()
|
||||
|
||||
_write_gradle_properties(gradle_properties, {
|
||||
"minecraft_version": version_id,
|
||||
"minecraft_extracted": str(extracted_dir),
|
||||
"minecraft_main_class": main_class,
|
||||
})
|
||||
|
||||
log.info("Decompilation complete.")
|
||||
log.info("Setup finished successfully.")
|
||||
|
||||
|
||||
def _read_gradle_property(gradle_properties: Path, key: str) -> str | None:
|
||||
if not gradle_properties.exists():
|
||||
return None
|
||||
for line in gradle_properties.read_text().splitlines():
|
||||
if line.startswith(f"{key}="):
|
||||
return line.split("=", 1)[1].strip()
|
||||
return None
|
||||
|
||||
|
||||
def _write_gradle_properties(gradle_properties: Path, values: dict) -> None:
|
||||
lines = gradle_properties.read_text().splitlines() if gradle_properties.exists() else []
|
||||
|
||||
for key, value in values.items():
|
||||
for i, line in enumerate(lines):
|
||||
if line.startswith(f"{key}="):
|
||||
lines[i] = f"{key}={value}"
|
||||
break
|
||||
else:
|
||||
lines.append(f"{key}={value}")
|
||||
|
||||
gradle_properties.write_text("\n".join(lines) + "\n")
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(description="Set up a Minecraft Java server and decompile it.")
|
||||
parser.add_argument("--root", required=True, type=Path, help="Project root directory")
|
||||
@@ -77,8 +118,9 @@ def main() -> None:
|
||||
|
||||
ripper_jar = args.root / "build" / "gradle" / "ripper" / "libs" / "ripper.jar"
|
||||
java_path = args.root / "bin" / "minecraft" / "java"
|
||||
database_dir = args.root / "database" / "mojang" / "server"
|
||||
|
||||
setup_minecraft_java(ripper_jar, java_path)
|
||||
setup_minecraft_java(ripper_jar, java_path, database_dir)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from common.hash_minecraft import list_minecraft_src_file_paths, sha256_hash_minecraft_src_file
|
||||
from common.version_tracker import VersionTrackerDatabase
|
||||
|
||||
def find_modifies_vanilla_src():
|
||||
pass
|
||||
@@ -1,3 +1,28 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
}
|
||||
|
||||
if (!project.hasProperty('minecraft_version')) {
|
||||
logger.warn("Minecraft not set up yet. Run: ./gradlew setupMinecraft")
|
||||
return
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly files("${minecraft_extracted}/META-INF/versions/${minecraft_version}/server-${minecraft_version}.jar")
|
||||
compileOnly fileTree(dir: "${minecraft_extracted}/META-INF/libraries", include: "**/*.jar")
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
java {
|
||||
srcDirs = ["src"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
jar {
|
||||
manifest {
|
||||
attributes 'Main-Class': minecraft_main_class,
|
||||
'Minecraft-Version': minecraft_version
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user