Initial Commit
This commit is contained in:
commit
d662a55323
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
package-lock.json
|
||||||
|
node_modules
|
||||||
|
data
|
||||||
|
node.exe
|
||||||
|
node
|
||||||
|
project
|
173
ConstructFullMaven.js
Normal file
173
ConstructFullMaven.js
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
let version = require("./config.json").version
|
||||||
|
|
||||||
|
let manifest = require("./data/" + version + ".json")
|
||||||
|
let fs = require("fs")
|
||||||
|
|
||||||
|
var xml = ""
|
||||||
|
|
||||||
|
let XMLStart =
|
||||||
|
`<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>sx.reece</groupId>
|
||||||
|
<artifactId>Minecraft</artifactId>
|
||||||
|
<version>` + version + `</version>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>16</maven.compiler.source>
|
||||||
|
<maven.compiler.target>16</maven.compiler.target>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.3</version>
|
||||||
|
<configuration>
|
||||||
|
<source>16</source>
|
||||||
|
<target>16</target>
|
||||||
|
<fork>true</fork>
|
||||||
|
<compilerArgs>
|
||||||
|
<arg>-Xpkginfo:always</arg>
|
||||||
|
</compilerArgs>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>snapshot-repository</id>
|
||||||
|
<name>Maven2 Snapshot Repository</name>
|
||||||
|
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<updatePolicy>daily</updatePolicy>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
|
||||||
|
<repository>
|
||||||
|
<id>maven2-repo</id>
|
||||||
|
<url>http://central.maven.org/maven2</url>
|
||||||
|
</repository>
|
||||||
|
|
||||||
|
<repository>
|
||||||
|
<id>mojang-repo</id>
|
||||||
|
<url>https://libraries.minecraft.net</url>
|
||||||
|
</repository>
|
||||||
|
|
||||||
|
<repository>
|
||||||
|
<id>ss</id>
|
||||||
|
<url>http://maven.icm.edu.pl/artifactory/repo/</url>
|
||||||
|
</repository>
|
||||||
|
|
||||||
|
</repositories>
|
||||||
|
`
|
||||||
|
|
||||||
|
function GetKey(key, obj)
|
||||||
|
{
|
||||||
|
return key.split('.').reduce(function(a, b)
|
||||||
|
{
|
||||||
|
return a && a[b];
|
||||||
|
}, obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
xml += XMLStart
|
||||||
|
|
||||||
|
xml += " <dependencies>\r\n"
|
||||||
|
|
||||||
|
//xml += `
|
||||||
|
// <dependency>
|
||||||
|
// <groupId>sx.reece</groupId>
|
||||||
|
// <artifactId>mcerrors</artifactId>
|
||||||
|
// <version>1.0</version>
|
||||||
|
// <scope>system</scope>
|
||||||
|
// <systemPath>` + process.cwd() + "\\MinecraftErrors.jar" + `</systemPath>
|
||||||
|
// </dependency>
|
||||||
|
//`
|
||||||
|
|
||||||
|
let os = require("os")
|
||||||
|
let osname = os.type() === "Windows_NT" ? "windows" : "linux"
|
||||||
|
let arch = os.arch() === "ia32" || os.arch() === "x64" || os.arch() === "x86" ? "x86" : "arm64"
|
||||||
|
let added = {}
|
||||||
|
manifest.libraries.forEach((library) =>
|
||||||
|
{
|
||||||
|
if (library.rules)
|
||||||
|
{
|
||||||
|
var allow = false
|
||||||
|
for (rule of library.rules)
|
||||||
|
{
|
||||||
|
let testRule = function()
|
||||||
|
{
|
||||||
|
let testPair = function(value, expected)
|
||||||
|
{
|
||||||
|
let actual = GetKey(value, rule)
|
||||||
|
|
||||||
|
if (!actual)
|
||||||
|
{
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return actual != expected
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
let retState = testRule("os.name", osname) || testRule("os.arch", arch)
|
||||||
|
|
||||||
|
if (retState || Object.keys(rule).length == 1)
|
||||||
|
{
|
||||||
|
if (rule.action == "allow")
|
||||||
|
{
|
||||||
|
allow = true
|
||||||
|
}
|
||||||
|
else if (rule.action == "disallow")
|
||||||
|
{
|
||||||
|
allow = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!allow)
|
||||||
|
{
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let parts = library.name.split(":")
|
||||||
|
if (GetKey("downloads.artifact.url", library) && !added[library.name])
|
||||||
|
{
|
||||||
|
added[library.name] = "a"
|
||||||
|
xml += " <dependency>\r\n"
|
||||||
|
xml += " <groupId>" + parts[0] + "</groupId>\r\n"
|
||||||
|
xml += " <artifactId>" + parts[1] + "</artifactId>\r\n"
|
||||||
|
xml += " <version>" + parts[2] + "</version>\r\n"
|
||||||
|
xml += " </dependency>\r\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
let forceNatives = GetKey("natives." + osname, library)
|
||||||
|
let natives = GetKey("downloads.classifiers.natives-" + osname, library)
|
||||||
|
if (forceNatives)
|
||||||
|
{
|
||||||
|
xml += " <dependency>\r\n"
|
||||||
|
xml += " <groupId>" + parts[0] + "</groupId>\r\n"
|
||||||
|
xml += " <artifactId>" + parts[1] + "</artifactId>\r\n"
|
||||||
|
xml += " <version>" + parts[2] + "</version>\r\n"
|
||||||
|
xml += " <classifier>natives-" + osname + "</classifier>\r\n"
|
||||||
|
xml += " </dependency>\r\n"
|
||||||
|
console.log(natives)
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
xml += " </dependencies>\r\n"
|
||||||
|
|
||||||
|
xml += "</project>\r\n"
|
||||||
|
|
||||||
|
|
||||||
|
fs.writeFileSync("./data/tmp/minecraft-maven.xml", xml)
|
212
ConstructProjectMaven.js
Normal file
212
ConstructProjectMaven.js
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
// mvn bash:run
|
||||||
|
// mvn install
|
||||||
|
|
||||||
|
|
||||||
|
let config = require("./config.json")
|
||||||
|
|
||||||
|
let version = config.version
|
||||||
|
let devNamespace = config.devNamespace
|
||||||
|
let proj = config.proj
|
||||||
|
let projVer = config.projVer
|
||||||
|
|
||||||
|
let manifest = require("./data/" + version + ".json")
|
||||||
|
let fs = require("fs")
|
||||||
|
let os = require("os")
|
||||||
|
let osname = os.type() === "Windows_NT" ? "windows" : "linux"
|
||||||
|
let arch = os.arch() === "ia32" || os.arch() === "x64" || os.arch() === "x86" ? "x86" : "arm64"
|
||||||
|
|
||||||
|
var xml = ""
|
||||||
|
let added = {}
|
||||||
|
|
||||||
|
|
||||||
|
function GetKey(key, obj)
|
||||||
|
{
|
||||||
|
return key.split('.').reduce(function(a, b)
|
||||||
|
{
|
||||||
|
return a && a[b];
|
||||||
|
}, obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
let nodeJsCmd = ""
|
||||||
|
let nodeJsCmdSanitized = nodeJsCmd
|
||||||
|
|
||||||
|
|
||||||
|
let XMLStart =
|
||||||
|
`<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>${devNamespace}</groupId>
|
||||||
|
<artifactId>${proj}</artifactId>
|
||||||
|
<version>${projVer}</version>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>16</maven.compiler.source>
|
||||||
|
<maven.compiler.target>16</maven.compiler.target>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.3</version>
|
||||||
|
<configuration>
|
||||||
|
<source>16</source>
|
||||||
|
<target>16</target>
|
||||||
|
<fork>true</fork>
|
||||||
|
<compilerArgs>
|
||||||
|
<arg>-Xpkginfo:always</arg>
|
||||||
|
</compilerArgs>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>exec-maven-plugin</artifactId>
|
||||||
|
<version>3.0.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>test</id>
|
||||||
|
<phase>compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>exec</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<executable>node</executable>
|
||||||
|
<workingDirectory>` + process.cwd() + `</workingDirectory>
|
||||||
|
<arguments>
|
||||||
|
<argument>./UpdateJar.js</argument>
|
||||||
|
</arguments>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>snapshot-repository</id>
|
||||||
|
<name>Maven2 Snapshot Repository</name>
|
||||||
|
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<updatePolicy>daily</updatePolicy>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>maven2-repo</id>
|
||||||
|
<url>http://central.maven.org/maven2</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>mojang-repo</id>
|
||||||
|
<url>https://libraries.minecraft.net</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>ss</id>
|
||||||
|
<url>http://maven.icm.edu.pl/artifactory/repo/</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>central-repo</id>
|
||||||
|
<url>https://repo1.maven.org/maven2/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
`
|
||||||
|
|
||||||
|
xml += XMLStart
|
||||||
|
xml += " <dependencies>"
|
||||||
|
|
||||||
|
xml += `
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.minecraft</groupId>
|
||||||
|
<artifactId>mojangClient</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<scope>system</scope>
|
||||||
|
<systemPath>` + process.cwd() + `\\data\\${version}-Dummy.jar` + `</systemPath>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>exec-maven-plugin</artifactId>
|
||||||
|
<version>3.0.0</version>
|
||||||
|
</dependency>
|
||||||
|
`
|
||||||
|
|
||||||
|
manifest.libraries.forEach((library) =>
|
||||||
|
{
|
||||||
|
if (library.rules)
|
||||||
|
{
|
||||||
|
var allow = false
|
||||||
|
for (rule of library.rules)
|
||||||
|
{
|
||||||
|
let testRule = function()
|
||||||
|
{
|
||||||
|
let testPair = function(value, expected)
|
||||||
|
{
|
||||||
|
let actual = GetKey(value, rule)
|
||||||
|
|
||||||
|
if (!actual)
|
||||||
|
{
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return actual != expected
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
let retState = testRule("os.name", osname) || testRule("os.arch", arch)
|
||||||
|
|
||||||
|
if (retState || Object.keys(rule).length == 1)
|
||||||
|
{
|
||||||
|
if (rule.action == "allow")
|
||||||
|
{
|
||||||
|
allow = true
|
||||||
|
}
|
||||||
|
else if (rule.action == "disallow")
|
||||||
|
{
|
||||||
|
allow = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!allow)
|
||||||
|
{
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let parts = library.name.split(":")
|
||||||
|
if (GetKey("downloads.artifact.url", library) && !added[library.name])
|
||||||
|
{
|
||||||
|
added[library.name] = "a"
|
||||||
|
xml += " <dependency>\r\n"
|
||||||
|
xml += " <groupId>" + parts[0] + "</groupId>\r\n"
|
||||||
|
xml += " <artifactId>" + parts[1] + "</artifactId>\r\n"
|
||||||
|
xml += " <version>" + parts[2] + "</version>\r\n"
|
||||||
|
xml += " </dependency>\r\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
let forceNatives = GetKey("natives." + osname, library)
|
||||||
|
let natives = GetKey("downloads.classifiers.natives-" + osname, library)
|
||||||
|
if (forceNatives)
|
||||||
|
{
|
||||||
|
xml += " <dependency>\r\n"
|
||||||
|
xml += " <groupId>" + parts[0] + "</groupId>\r\n"
|
||||||
|
xml += " <artifactId>" + parts[1] + "</artifactId>\r\n"
|
||||||
|
xml += " <version>" + parts[2] + "</version>\r\n"
|
||||||
|
xml += " <classifier>natives-" + osname + "</classifier>\r\n"
|
||||||
|
xml += " </dependency>\r\n"
|
||||||
|
console.log(natives)
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
xml += " </dependencies>\r\n"
|
||||||
|
|
||||||
|
xml += "</project>\r\n"
|
||||||
|
|
||||||
|
|
||||||
|
fs.writeFileSync("./project/pom.xml", xml)
|
14
CreateDir.js
Normal file
14
CreateDir.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
let fs = require("fs")
|
||||||
|
|
||||||
|
function tryAdd(path) {
|
||||||
|
try {
|
||||||
|
fs.mkdirSync(path)
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
tryAdd("project")
|
||||||
|
tryAdd("project/src")
|
||||||
|
tryAdd("project/src/main")
|
||||||
|
tryAdd("project/src/resources")
|
||||||
|
tryAdd("data")
|
||||||
|
tryAdd("data/tmp")
|
29
DecompileMinecraft.js
Normal file
29
DecompileMinecraft.js
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
let ver = require("./config.json").version
|
||||||
|
let fs = require("fs")
|
||||||
|
let modBuilding = `./data/tmp/mc_decompiled_${ver}`
|
||||||
|
let unzip = require("unzipper")
|
||||||
|
|
||||||
|
function mkdir(path) {
|
||||||
|
try {
|
||||||
|
fs.mkdirSync(path)
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
function unlink(path) {
|
||||||
|
try {
|
||||||
|
fs.unlinkSync(path)
|
||||||
|
return true
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function re() {
|
||||||
|
mkdir(modBuilding)
|
||||||
|
|
||||||
|
await require("./Exec.js").exec(`java -Xmx4G -Xms1G -jar lib\\FernFlower.jar -hes=1 -hdc=1 -dgs=1 -ren=0 -lit=0 -nns=0 -asc=1 -rbr=1 ./data/${ver}-Mapped.jar ${modBuilding}`)
|
||||||
|
|
||||||
|
let sources = `${modBuilding}/${ver}-Mapped.jar`
|
||||||
|
await fs.createReadStream(sources).pipe(unzip.Extract({ path: modBuilding })).promise()
|
||||||
|
unlink(sources)
|
||||||
|
}
|
||||||
|
|
||||||
|
re()
|
20
Exec.js
Normal file
20
Exec.js
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
function exec(cmd){
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
var process = require("child_process").exec(cmd, (error, stdout, stderr) => {
|
||||||
|
if (error) {
|
||||||
|
console.log(`error: ${error.message}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (stderr) {
|
||||||
|
console.log(`stderr: ${stderr}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log(`stdout: ${stdout}`);
|
||||||
|
});
|
||||||
|
process.on('close', (code) => {
|
||||||
|
resolve()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {exec: exec}
|
4
ExportMod.bat
Normal file
4
ExportMod.bat
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
@echo off
|
||||||
|
cd project
|
||||||
|
mvn package
|
||||||
|
node ./RemapMod.js
|
5
FirstRun.bat
Normal file
5
FirstRun.bat
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
@echo off
|
||||||
|
node .\CreateDir.js
|
||||||
|
node .\PullMinecraftVersion.js
|
||||||
|
node .\MapMinecraft.js
|
||||||
|
node .\ConstructProjectMaven.js
|
2
MapMinecraft.js
Normal file
2
MapMinecraft.js
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
let ver = require("./config.json").version
|
||||||
|
require("./Exec.js").exec(`java -jar lib\\SpecialSource.jar -srg-in=.\\data\\${ver}.txt --in-jar=.\\data\\${ver}.jar -o=.\\data\\${ver}-Mapped.jar`)
|
46
PullMinecraftVersion.js
Normal file
46
PullMinecraftVersion.js
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
let fs = require("fs")
|
||||||
|
let config = require("./config.json")
|
||||||
|
let http = require('https');
|
||||||
|
let archiver = require('archiver')
|
||||||
|
|
||||||
|
var download = function(url, dest, cb) {
|
||||||
|
var file = fs.createWriteStream(dest);
|
||||||
|
http.get(url, function(response) {
|
||||||
|
response.pipe(file);
|
||||||
|
file.on('finish', function() {
|
||||||
|
file.close(cb);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function downloadAsync(url, path) {
|
||||||
|
let p = new Promise((resolve, reject) => {
|
||||||
|
download(url, path, resolve)
|
||||||
|
});
|
||||||
|
await p
|
||||||
|
}
|
||||||
|
|
||||||
|
function reformatJsonFile(path) {
|
||||||
|
fs.writeFileSync(path, JSON.stringify(JSON.parse(fs.readFileSync(path)), 0, 4))
|
||||||
|
}
|
||||||
|
|
||||||
|
async function downloadAll() {
|
||||||
|
await downloadAsync(`https://launchermeta.mojang.com/mc/game/version_manifest.json`, `./data/versions.json`)
|
||||||
|
const versions = require("./data/versions.json")
|
||||||
|
reformatJsonFile("./data/versions.json")
|
||||||
|
const version = versions.versions.find((item) => { return item.id == config.version})
|
||||||
|
let path = `./data/${config.version}.json`
|
||||||
|
await downloadAsync(version.url, path)
|
||||||
|
reformatJsonFile(path)
|
||||||
|
let game = JSON.parse(fs.readFileSync(path))
|
||||||
|
await downloadAsync(game.downloads.client.url, `./data/${config.version}.jar`)
|
||||||
|
await downloadAsync(game.downloads.client_mappings.url, `./data/${config.version}.txt`)
|
||||||
|
const output = fs.createWriteStream(`./data/${config.version}-Dummy.jar`)
|
||||||
|
const archive = archiver('zip', {
|
||||||
|
zlib: { level: 9 }
|
||||||
|
})
|
||||||
|
archive.finalize()
|
||||||
|
}
|
||||||
|
|
||||||
|
downloadAll()
|
||||||
|
|
0
RemapMod.js
Normal file
0
RemapMod.js
Normal file
78
UpdateJar.js
Normal file
78
UpdateJar.js
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
let fs = require("fs")
|
||||||
|
let config = require("./config.json")
|
||||||
|
let unzip = require("unzipper")
|
||||||
|
let zipper = require('zip-local');
|
||||||
|
|
||||||
|
let projPath = "./project/src/main/java"
|
||||||
|
let gameSrc = `./data/tmp/game_building_${config.version}`
|
||||||
|
|
||||||
|
console.log("Processing support library")
|
||||||
|
|
||||||
|
const readAllFolder = (dirMain) => {
|
||||||
|
let paths = []
|
||||||
|
const readDirMain = fs.readdirSync(dirMain);
|
||||||
|
|
||||||
|
readDirMain.forEach((dirNext) => {
|
||||||
|
if (fs.lstatSync(dirMain + "/" + dirNext).isDirectory())
|
||||||
|
{
|
||||||
|
paths = paths.concat(readAllFolder(dirMain + "/" + dirNext));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
paths.push(dirMain + "/" + dirNext)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return paths
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
let patchFiles = readAllFolder(projPath).map((path) => path.substr(projPath.length + 1))
|
||||||
|
|
||||||
|
function mkdir(path) {
|
||||||
|
try {
|
||||||
|
fs.mkdirSync(path)
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
function unlink(path) {
|
||||||
|
try {
|
||||||
|
fs.unlinkSync(path)
|
||||||
|
return true
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
let modBuilding = `./data/tmp/mod_building_${config.version}`
|
||||||
|
let hash = `./data/tmp/lastHash_${config.version}.txt`
|
||||||
|
|
||||||
|
mkdir("./data/tmp")
|
||||||
|
mkdir(gameSrc)
|
||||||
|
mkdir(modBuilding)
|
||||||
|
|
||||||
|
|
||||||
|
var lastHash = ""
|
||||||
|
try {
|
||||||
|
lastHash = fs.readFileSync(hash)
|
||||||
|
} catch (e){}
|
||||||
|
|
||||||
|
let curHash = JSON.stringify(patchFiles)
|
||||||
|
if (curHash == lastHash) return;
|
||||||
|
|
||||||
|
async function re() {
|
||||||
|
console.log("Unzipping")
|
||||||
|
await fs.createReadStream(`./data/${config.version}-Mapped.jar`).pipe(unzip.Extract({ path: gameSrc })).promise()
|
||||||
|
|
||||||
|
console.log("Deleting original classes")
|
||||||
|
patchFiles.forEach((path) => {unlink(gameSrc + '/' + path.substr(0, path.lastIndexOf(".")) + ".class") })
|
||||||
|
|
||||||
|
|
||||||
|
console.log("Deleting meta-inf")
|
||||||
|
fs.rmdirSync(gameSrc + "/META-INF", { recursive: true });
|
||||||
|
|
||||||
|
console.log("Rezipping")
|
||||||
|
zipper.sync.zip(gameSrc).compress().save(`./data/${config.version}-Dummy.jar`);
|
||||||
|
|
||||||
|
fs.writeFileSync(hash, curHash)
|
||||||
|
}
|
||||||
|
|
||||||
|
re()
|
6
config.json
Normal file
6
config.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"version": "21w38a",
|
||||||
|
"devNamespace": "sx.reece",
|
||||||
|
"proj": "altren",
|
||||||
|
"projVer": "0.0.1"
|
||||||
|
}
|
BIN
lib/SpecialSource.jar
Normal file
BIN
lib/SpecialSource.jar
Normal file
Binary file not shown.
BIN
lib/fernflower.jar
Normal file
BIN
lib/fernflower.jar
Normal file
Binary file not shown.
8
package.json
Normal file
8
package.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"dependencies":
|
||||||
|
{
|
||||||
|
"zip-local": "latest",
|
||||||
|
"archiver": "latest",
|
||||||
|
"unzipper": "latest"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user