Skip to content

Commit

Permalink
things
Browse files Browse the repository at this point in the history
  • Loading branch information
Juuxel committed May 22, 2020
1 parent 089e95b commit 81f9b2b
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 20 deletions.
8 changes: 8 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
root = true

[*]
indent_size = 4
indent_style = space

[{*.java,*.groovy}]
ij_continuation_indent_size = 4
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ out/
*.iws
.gradle/
*.zip
!gradle/wrapper/gradle-wrapper.jar
11 changes: 8 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -55,24 +55,29 @@ dependencies {
}

task deobf(type: DeobfuscateTask) {
group = "build setup"
group = "fc0"
mappings = mappingsDir
inputJar = gameJar
outputJar = file("build/deobf-${gameJar.name}")
}

task decompile(type: DecompileTask, dependsOn: deobf) {
group = "build setup"
group = "fc0"
input = deobf.outputJar
output = file('src/main/java')
libraries = configurations.runtimeClasspath
}

task extractResources(type: ExtractResourcesTask) {
group = "build setup"
group = "fc0"
input = gameJar
output = file('src/main/resources')
}

task setup(dependsOn: [decompile, extractResources]) {
group = "fc0"
}

task enigma() {
doLast {
ant.setLifecycleLogLevel "WARN"
Expand Down
30 changes: 20 additions & 10 deletions buildSrc/src/main/groovy/DecompileTask.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,39 @@ import org.benf.cfr.reader.api.CfrDriver
import org.benf.cfr.reader.api.OutputSinkFactory
import org.benf.cfr.reader.api.SinkReturns
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction

import java.nio.charset.StandardCharsets
import java.nio.file.FileSystem
import java.nio.file.FileSystems
import java.nio.file.Files

class DecompileTask extends DefaultTask {
@Input
@InputFile
File input

@Input
@InputFiles
FileCollection libraries

@OutputDirectory
File output

@TaskAction
def run() {
output.deleteDir()
output.mkdirs()

def driver = new CfrDriver.Builder()
.withOptions(renamedupmembers: 'true')
.withOutputSink(new SinkFactory())
.build()
.withOptions(
renamedupmembers: 'true',
usenametable: 'false',
sugarenums: 'true',
extraclasspath: libraries.collect { it.absolutePath }.join(File.pathSeparator)
)
.withOutputSink(new SinkFactory())
.build()
driver.analyse([input.getAbsolutePath()])
}

Expand All @@ -45,8 +55,8 @@ class DecompileTask extends DefaultTask {
@Override
<T> Sink<T> getSink(SinkType sinkType, SinkClass sinkClass) {
return (sinkClass == SinkClass.DECOMPILED && sinkType == SinkType.JAVA)
? { data -> accept(data as SinkReturns.Decompiled) }
: null
? { data -> accept(data as SinkReturns.Decompiled) }
: null
}
}
}
10 changes: 6 additions & 4 deletions buildSrc/src/main/groovy/DeobfuscateTask.groovy
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
import cuchaz.enigma.command.DeobfuscateCommand
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputDirectory
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction

class DeobfuscateTask extends DefaultTask {
@Input
@InputDirectory
File mappings

@Input
@InputFile
File inputJar

@Input
@OutputFile
File outputJar

@TaskAction
Expand Down
9 changes: 6 additions & 3 deletions buildSrc/src/main/groovy/ExtractResourcesTask.groovy
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction

import java.nio.file.FileSystems
import java.nio.file.Files

class ExtractResourcesTask extends DefaultTask {
@Input
@InputFile
File input

@Input
@OutputDirectory
File output

@TaskAction
def run() {
def resources = output.toPath()
output.deleteDir()

def fs = FileSystems.newFileSystem(URI.create("jar:" + input.toPath().toUri()), Collections.emptyMap(), null)
try {
for (def root : fs.rootDirectories) {
Expand Down

0 comments on commit 81f9b2b

Please sign in to comment.