Skip to content

Commit

Permalink
feature: 去除kt依赖,减小包大小
Browse files Browse the repository at this point in the history
  • Loading branch information
bin-tenkuu committed Feb 14, 2024
1 parent 790bd07 commit b227689
Show file tree
Hide file tree
Showing 9 changed files with 563 additions and 413 deletions.
24 changes: 24 additions & 0 deletions .run/Mindustry-moreLogicMod [jar].run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Mindustry-moreLogicMod [jar]" type="GradleRunConfiguration" factoryName="Gradle">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" value="" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="jar" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
<DebugAllEnabled>false</DebugAllEnabled>
<RunAsTest>false</RunAsTest>
<method v="2" />
</configuration>
</component>
88 changes: 45 additions & 43 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,43 +1,55 @@
version '1.0'
apply plugin: "java"

buildscript {
repositories {
mavenCentral()
}
version '1.0'

ext {
//the build number that this mod is made for
mindustryVersion = 'v136'
kotlinVersion = "1.7.10"
sdkRoot = System.getenv("ANDROID_HOME") ?: System.getenv("ANDROID_SDK_ROOT")
gameData = System.getenv("TEMP") ?: System.getenv("TMP")
}
sourceSets.main.java.srcDirs = ["src"]

dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
}
repositories {
mavenCentral()
maven { url "https://raw.githubusercontent.com/Zelaux/MindustryRepo/master/repository" }
maven { url 'https://www.jitpack.io' }
}

apply plugin: "kotlin"
java {
targetCompatibility = 8
sourceCompatibility = JavaVersion.VERSION_17
}

sourceSets.main.kotlin.srcDirs = ["src"]
ext {
//the build number that this mod is made for
mindustryVersion = 'v146'
jabelVersion = "93fde537c7"
//windows sucks
isWindows = System.getProperty("os.name").toLowerCase().contains("windows")
sdkRoot = System.getenv("ANDROID_HOME") ?: System.getenv("ANDROID_SDK_ROOT")
}

repositories {
mavenCentral()
maven { url 'https://www.jitpack.io' }
//java 8 backwards compatibility flag
allprojects {
tasks.withType(JavaCompile).tap {
configureEach {
options.compilerArgs.addAll(['--release', '8'])
}
}
}

dependencies {
compileOnly "com.github.Anuken.Arc:arc-core:$mindustryVersion"
compileOnly "com.github.Anuken.Mindustry:core:$mindustryVersion"

annotationProcessor "com.github.Anuken:jabel:$jabelVersion"
}

compileKotlin {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_1_8
//force arc version
configurations.configureEach {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.github.Anuken.Arc') {
details.useVersion "$mindustryVersion"
}
}
}

task jarAndroid {
tasks.register('jarAndroid') {
dependsOn "jar"

doLast {
Expand All @@ -50,15 +62,16 @@ task jarAndroid {
//collect dependencies needed for desugaring
def dependencies = (configurations.compileClasspath.asList() + configurations.runtimeClasspath.asList() + [new File(platformRoot, "android.jar")]).collect { "--classpath $it.path" }.join(" ")

def d8 = isWindows ? "d8.bat" : "d8"

//dex and desugar files - this requires d8 in your PATH
"d8 $dependencies --min-api 14 --output ${project.archivesBaseName}Android.jar ${project.archivesBaseName}Desktop.jar"
"$d8 $dependencies --min-api 14 --output ${base.archivesBaseName}Android.jar ${base.archivesBaseName}Desktop.jar"
.execute(null, new File("$buildDir/libs")).waitForProcessOutput(System.out, System.err)
}
}

jar {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
archiveFileName = "${project.archivesBaseName}Desktop.jar"
archiveFileName = "${base.archivesBaseName}Desktop.jar"

from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
Expand All @@ -73,28 +86,17 @@ jar {
}
}

task deploy(type: Jar) {
tasks.register('deploy', Jar) {
dependsOn jarAndroid
dependsOn jar
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
archiveFileName = "${project.archivesBaseName}.jar"
archiveFileName = "${base.archivesBaseName}.jar"

from { [zipTree("$buildDir/libs/${project.archivesBaseName}Desktop.jar"), zipTree("$buildDir/libs/${project.archivesBaseName}Android.jar")] }
from { [zipTree("$buildDir/libs/${base.archivesBaseName}Desktop.jar"), zipTree("$buildDir/libs/${base.archivesBaseName}Android.jar")] }

doLast {
delete {
delete "$buildDir/libs/${project.archivesBaseName}Desktop.jar"
delete "$buildDir/libs/${project.archivesBaseName}Android.jar"
delete "$buildDir/libs/${base.archivesBaseName}Desktop.jar"
delete "$buildDir/libs/${base.archivesBaseName}Android.jar"
}
}
}

task copy2game(type: Copy) {
dependsOn jar
from file("$buildDir/libs/")
include("${project.archivesBaseName}Desktop.jar")
into "$gameData/../../Roaming/Mindustry/mods"
doLast {
println "copy jar"
}
}
2 changes: 1 addition & 1 deletion mod.hjson
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ description: "添加更多逻辑条:打印缓存处理逻辑"
version: 1.2

#the minimum game build required to run this mod
minGameVersion: 136
minGameVersion: 146

#this is a java mod
java: true
22 changes: 22 additions & 0 deletions src/bin/morelogic/MoreStringLogicJavaPlugin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package bin.morelogic;

import arc.util.Log;
import mindustry.gen.LogicIO;
import mindustry.logic.LAssembler;
import mindustry.mod.Plugin;

/**
* @author bin
* @version 1.0.0
* @since 2024/2/14
*/
@SuppressWarnings("unused")
public class MoreStringLogicJavaPlugin extends Plugin {
@Override
public void init() {
Log.info("Loading MoreStringLogicJavaPlugin.");
LAssembler.customParsers.put(PrintBufferStatement.ID, PrintBufferStatement::read);
LogicIO.allStatements.add(PrintBufferStatement::new);
Log.info("End Loaded MoreStringLogicJavaPlugin.");
}
}
18 changes: 0 additions & 18 deletions src/bin/morelogic/MoreStringLogicJavaPlugin.kt

This file was deleted.

88 changes: 88 additions & 0 deletions src/bin/morelogic/PrintBufferStatement.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package bin.morelogic;

import arc.func.Cons;
import arc.scene.ui.Button;
import arc.scene.ui.TextField;
import arc.scene.ui.layout.Cell;
import arc.scene.ui.layout.Table;
import arc.util.Strings;
import bin.morelogic.statement.StringOp;
import mindustry.logic.LAssembler;
import mindustry.logic.LCategory;
import mindustry.logic.LExecutor;
import mindustry.logic.LStatement;

/**
* @author bin
* @version 1.0.0
* @since 2024/2/14
*/
public class PrintBufferStatement extends LStatement {
public static final String ID = "bin_String";

public StringOp op = StringOp.GetLength;
public String[] args = {"dest", "a", "b", "c"};

@Override
public Cell<TextField> field(Table table, String value, Cons<String> setter) {
return super.field(table, value, setter);
}

@Override
public void build(Table table) {
op.invoke(this, table);
}

@Override
public <T> void showSelect(Button b, T[] values, T current, Cons<T> getter) {
super.showSelect(b, values, current, getter, 4, it -> it.size(144f, 40f));
}

@Override
public LExecutor.LInstruction build(LAssembler builder) {
return op.invoke(vars(builder, args));
}

@Override
public LCategory category() {
return LCategory.operation;
}

@Override
public void write(StringBuilder builder) {
builder.append(ID);
builder.append(" ").append(op.name());
for (var s : args) {
builder.append(" ").append(s);
}
}

@Override
public String name() {
return Strings.insertSpaces("PrintBuffer");
}

public static LStatement read(String[] tokens) {
var statement = new PrintBufferStatement();
var length = tokens.length;
if (length > 1) {
statement.op = StringOp.value(tokens[1]);
}
var args = statement.args;
for (int it = 0, size = Math.min(args.length, length - 2); it < size; it++) {
String token = tokens[it + 2];
if (token != null) {
args[it] = token;
}
}
return statement;
}

public static int[] vars(LAssembler builder, String[] symbols) {
var arr = new int[symbols.length];
for (int it = 0, size = symbols.length; it < size; it++) {
arr[it] = builder.var(symbols[it]);
}
return arr;
}
}
71 changes: 0 additions & 71 deletions src/bin/morelogic/PrintBufferStatement.kt

This file was deleted.

Loading

0 comments on commit b227689

Please sign in to comment.