add config.json

This commit is contained in:
zimzaza4
2025-11-20 20:38:10 +08:00
parent f90b8bfaaf
commit e6e9756ad9
8 changed files with 53 additions and 37 deletions

17
pom.xml
View File

@@ -56,7 +56,7 @@
<dependency> <dependency>
<groupId>org.geysermc.geyser</groupId> <groupId>org.geysermc.geyser</groupId>
<artifactId>api</artifactId> <artifactId>api</artifactId>
<version>2.5.0-SNAPSHOT</version> <version>2.2.3-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
@@ -66,20 +66,5 @@
<scope>system</scope> <scope>system</scope>
<systemPath>${project.basedir}/libs/geyserutils-geyser-1.0-SNAPSHOT.jar</systemPath> <systemPath>${project.basedir}/libs/geyserutils-geyser-1.0-SNAPSHOT.jar</systemPath>
</dependency> </dependency>
<dependency>
<groupId>me.rochblondiaux</groupId>
<artifactId>blockbenchmodelreader</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>com.github.GeyserMC.PackConverter</groupId>
<artifactId>bedrock-pack-schema</artifactId>
<version>3d8150474d</version>
</dependency>
<dependency>
<groupId>com.github.GeyserMC.PackConverter</groupId>
<artifactId>pack-schema-api</artifactId>
<version>3d8150474d</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@@ -1,35 +1,37 @@
package re.imc.geysermodelenginepackgenerator; package re.imc.geysermodelenginepackgenerator;
import me.zimzaza4.geyserutils.geyser.GeyserUtils; import com.google.gson.Gson;
import org.checkerframework.checker.nullness.qual.NonNull; import lombok.Getter;
import org.geysermc.event.subscribe.Subscribe; import org.geysermc.event.subscribe.Subscribe;
import org.geysermc.geyser.api.command.Command; import org.geysermc.geyser.api.command.Command;
import org.geysermc.geyser.api.command.CommandExecutor;
import org.geysermc.geyser.api.command.CommandSource; import org.geysermc.geyser.api.command.CommandSource;
import org.geysermc.geyser.api.event.lifecycle.GeyserDefineCommandsEvent; import org.geysermc.geyser.api.event.lifecycle.GeyserDefineCommandsEvent;
import org.geysermc.geyser.api.event.lifecycle.GeyserLoadResourcePacksEvent; import org.geysermc.geyser.api.event.lifecycle.GeyserLoadResourcePacksEvent;
import org.geysermc.geyser.api.event.lifecycle.GeyserPreInitializeEvent; import org.geysermc.geyser.api.event.lifecycle.GeyserPreInitializeEvent;
import org.geysermc.geyser.api.extension.Extension; import org.geysermc.geyser.api.extension.Extension;
import org.geysermc.geyser.api.extension.ExtensionLogger; import org.geysermc.geyser.api.extension.ExtensionLogger;
import re.imc.geysermodelenginepackgenerator.config.Config;
import re.imc.geysermodelenginepackgenerator.generator.Entity; import re.imc.geysermodelenginepackgenerator.generator.Entity;
import re.imc.geysermodelenginepackgenerator.generator.Geometry;
import re.imc.geysermodelenginepackgenerator.util.ZipUtil; import re.imc.geysermodelenginepackgenerator.util.ZipUtil;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.channels.FileChannel; import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.StandardCopyOption; import java.nio.file.StandardCopyOption;
import java.util.List;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
public class ExtensionMain implements Extension { public class GeyserModelEnginePackGenerator implements Extension {
private File source; private File source;
public static ExtensionLogger logger; public static ExtensionLogger logger;
Path generatedPackZip; Path generatedPackZip;
@Getter
Config config = new Config();
@Subscribe @Subscribe
public void onLoad(GeyserPreInitializeEvent event) { public void onLoad(GeyserPreInitializeEvent event) {
@@ -57,10 +59,31 @@ public class ExtensionMain implements Extension {
} }
public void loadConfig() { public void loadConfig() {
File generatedPack = dataFolder().resolve("generated_pack").toFile(); File generatedPack = dataFolder().resolve("generated_pack").toFile();
File configFile = dataFolder().resolve("config.json").toFile();
GeneratorMain.startGenerate(source, generatedPack); Gson gson = new Gson();
if (!configFile.exists()) {
try {
configFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
try {
Files.writeString(configFile.toPath(), gson.toJson(config));
} catch (IOException e) {
e.printStackTrace();
}
}
try {
config = gson.fromJson(Files.readString(configFile.toPath()), Config.class);
} catch (IOException e) {
e.printStackTrace();
}
PackGenerator.startGenerate(source, generatedPack);
generatedPackZip = dataFolder().resolve("generated_pack.zip"); generatedPackZip = dataFolder().resolve("generated_pack.zip");
@@ -70,16 +93,17 @@ public class ExtensionMain implements Extension {
e.printStackTrace(); e.printStackTrace();
} }
for (Entity entity : GeneratorMain.entityMap.values()) { for (Entity entity : PackGenerator.entityMap.values()) {
entity.register(); entity.register();
} }
} }
@Subscribe @Subscribe
public void onPackLoad(GeyserLoadResourcePacksEvent event) { public void onPackLoad(GeyserLoadResourcePacksEvent event) {
if (Boolean.parseBoolean(System.getProperty("geyser-model-engine-auto-load-pack", "true"))) { if (Boolean.parseBoolean(System.getProperty("geyser-model-engine-auto-load-pack", "true")) || config.isAutoLoadPack()) {
event.resourcePacks().add(generatedPackZip); event.resourcePacks().add(generatedPackZip);
} }
} }

View File

@@ -5,18 +5,15 @@ import com.google.gson.GsonBuilder;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import re.imc.geysermodelenginepackgenerator.generator.*; import re.imc.geysermodelenginepackgenerator.generator.*;
import javax.imageio.ImageIO;
import java.io.*; import java.io.*;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.util.*; import java.util.*;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipFile; import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
public class GeneratorMain { public class PackGenerator {
public static final Map<String, Entity> entityMap = new HashMap<>(); public static final Map<String, Entity> entityMap = new HashMap<>();
public static final Map<String, Animation> animationMap = new HashMap<>(); public static final Map<String, Animation> animationMap = new HashMap<>();
public static final Map<String, Geometry> geometryMap = new HashMap<>(); public static final Map<String, Geometry> geometryMap = new HashMap<>();

View File

@@ -0,0 +1,12 @@
package re.imc.geysermodelenginepackgenerator.config;
import com.google.gson.annotations.SerializedName;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Config {
@SerializedName("auto_load_pack")
boolean autoLoadPack = true;
}

View File

@@ -8,7 +8,7 @@ import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import re.imc.geysermodelenginepackgenerator.GeneratorMain; import re.imc.geysermodelenginepackgenerator.PackGenerator;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map; import java.util.Map;
@@ -119,7 +119,7 @@ public class Animation {
if (i == 0) { if (i == 0) {
return; return;
} }
GeneratorMain.entityMap PackGenerator.entityMap
.get(modelId).setHasHeadAnimation(true); .get(modelId).setHasHeadAnimation(true);
object.add("bones", bones); object.add("bones", bones);

View File

@@ -5,8 +5,6 @@ import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import org.geysermc.geyser.api.extension.ExtensionLogger;
import re.imc.geysermodelenginepackgenerator.ExtensionMain;
import java.util.*; import java.util.*;

View File

@@ -1,6 +1,6 @@
name: GeyserModelEnginePackGenerator name: GeyserModelEnginePackGenerator
id: geysermodelenginepackgenerator id: geysermodelenginepackgenerator
main: re.imc.geysermodelenginepackgenerator.ExtensionMain main: re.imc.geysermodelenginepackgenerator.GeyserModelEnginePackGenerator
api: 1.0.0 api: 1.0.0
version: 1.0.0 version: 1.0.0
authors: [zimzaza4] authors: [zimzaza4]