From e6e9756ad9766b4a1389444ac14b0d38d4a186e0 Mon Sep 17 00:00:00 2001 From: zimzaza4 <3625282098@qq.com> Date: Thu, 20 Nov 2025 20:38:10 +0800 Subject: [PATCH] add config.json --- pom.xml | 17 +------ ...va => GeyserModelEnginePackGenerator.java} | 46 ++++++++++++++----- ...{GeneratorMain.java => PackGenerator.java} | 5 +- .../config/Config.java | 12 +++++ .../generator/Animation.java | 4 +- .../generator/Entity.java | 2 +- .../generator/Geometry.java | 2 - src/main/resources/extension.yml | 2 +- 8 files changed, 53 insertions(+), 37 deletions(-) rename src/main/java/re/imc/geysermodelenginepackgenerator/{ExtensionMain.java => GeyserModelEnginePackGenerator.java} (68%) rename src/main/java/re/imc/geysermodelenginepackgenerator/{GeneratorMain.java => PackGenerator.java} (99%) create mode 100644 src/main/java/re/imc/geysermodelenginepackgenerator/config/Config.java diff --git a/pom.xml b/pom.xml index e274fde..577d490 100644 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,7 @@ org.geysermc.geyser api - 2.5.0-SNAPSHOT + 2.2.3-SNAPSHOT provided @@ -66,20 +66,5 @@ system ${project.basedir}/libs/geyserutils-geyser-1.0-SNAPSHOT.jar - - me.rochblondiaux - blockbenchmodelreader - 1.2 - - - com.github.GeyserMC.PackConverter - bedrock-pack-schema - 3d8150474d - - - com.github.GeyserMC.PackConverter - pack-schema-api - 3d8150474d - \ No newline at end of file diff --git a/src/main/java/re/imc/geysermodelenginepackgenerator/ExtensionMain.java b/src/main/java/re/imc/geysermodelenginepackgenerator/GeyserModelEnginePackGenerator.java similarity index 68% rename from src/main/java/re/imc/geysermodelenginepackgenerator/ExtensionMain.java rename to src/main/java/re/imc/geysermodelenginepackgenerator/GeyserModelEnginePackGenerator.java index 64f38c9..f83ebd3 100644 --- a/src/main/java/re/imc/geysermodelenginepackgenerator/ExtensionMain.java +++ b/src/main/java/re/imc/geysermodelenginepackgenerator/GeyserModelEnginePackGenerator.java @@ -1,35 +1,37 @@ package re.imc.geysermodelenginepackgenerator; -import me.zimzaza4.geyserutils.geyser.GeyserUtils; -import org.checkerframework.checker.nullness.qual.NonNull; +import com.google.gson.Gson; +import lombok.Getter; import org.geysermc.event.subscribe.Subscribe; 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.event.lifecycle.GeyserDefineCommandsEvent; import org.geysermc.geyser.api.event.lifecycle.GeyserLoadResourcePacksEvent; import org.geysermc.geyser.api.event.lifecycle.GeyserPreInitializeEvent; import org.geysermc.geyser.api.extension.Extension; import org.geysermc.geyser.api.extension.ExtensionLogger; +import re.imc.geysermodelenginepackgenerator.config.Config; import re.imc.geysermodelenginepackgenerator.generator.Entity; -import re.imc.geysermodelenginepackgenerator.generator.Geometry; import re.imc.geysermodelenginepackgenerator.util.ZipUtil; import java.io.File; 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.Path; import java.nio.file.StandardCopyOption; -import java.util.List; import java.util.zip.ZipOutputStream; -public class ExtensionMain implements Extension { +public class GeyserModelEnginePackGenerator implements Extension { private File source; public static ExtensionLogger logger; Path generatedPackZip; + @Getter + Config config = new Config(); @Subscribe public void onLoad(GeyserPreInitializeEvent event) { @@ -57,10 +59,31 @@ public class ExtensionMain implements Extension { } public void loadConfig() { - 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"); @@ -70,16 +93,17 @@ public class ExtensionMain implements Extension { e.printStackTrace(); } - for (Entity entity : GeneratorMain.entityMap.values()) { + for (Entity entity : PackGenerator.entityMap.values()) { entity.register(); } } + @Subscribe 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); } } diff --git a/src/main/java/re/imc/geysermodelenginepackgenerator/GeneratorMain.java b/src/main/java/re/imc/geysermodelenginepackgenerator/PackGenerator.java similarity index 99% rename from src/main/java/re/imc/geysermodelenginepackgenerator/GeneratorMain.java rename to src/main/java/re/imc/geysermodelenginepackgenerator/PackGenerator.java index 5ce6077..a700ac9 100644 --- a/src/main/java/re/imc/geysermodelenginepackgenerator/GeneratorMain.java +++ b/src/main/java/re/imc/geysermodelenginepackgenerator/PackGenerator.java @@ -5,18 +5,15 @@ import com.google.gson.GsonBuilder; import com.google.gson.JsonParser; import re.imc.geysermodelenginepackgenerator.generator.*; -import javax.imageio.ImageIO; import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.StandardCopyOption; import java.util.*; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -import java.util.zip.ZipInputStream; -public class GeneratorMain { +public class PackGenerator { public static final Map entityMap = new HashMap<>(); public static final Map animationMap = new HashMap<>(); public static final Map geometryMap = new HashMap<>(); diff --git a/src/main/java/re/imc/geysermodelenginepackgenerator/config/Config.java b/src/main/java/re/imc/geysermodelenginepackgenerator/config/Config.java new file mode 100644 index 0000000..10f7efd --- /dev/null +++ b/src/main/java/re/imc/geysermodelenginepackgenerator/config/Config.java @@ -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; +} diff --git a/src/main/java/re/imc/geysermodelenginepackgenerator/generator/Animation.java b/src/main/java/re/imc/geysermodelenginepackgenerator/generator/Animation.java index d1b6946..9877b92 100644 --- a/src/main/java/re/imc/geysermodelenginepackgenerator/generator/Animation.java +++ b/src/main/java/re/imc/geysermodelenginepackgenerator/generator/Animation.java @@ -8,7 +8,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import re.imc.geysermodelenginepackgenerator.GeneratorMain; +import re.imc.geysermodelenginepackgenerator.PackGenerator; import java.util.HashSet; import java.util.Map; @@ -119,7 +119,7 @@ public class Animation { if (i == 0) { return; } - GeneratorMain.entityMap + PackGenerator.entityMap .get(modelId).setHasHeadAnimation(true); object.add("bones", bones); diff --git a/src/main/java/re/imc/geysermodelenginepackgenerator/generator/Entity.java b/src/main/java/re/imc/geysermodelenginepackgenerator/generator/Entity.java index 34d8f3e..44c98a3 100644 --- a/src/main/java/re/imc/geysermodelenginepackgenerator/generator/Entity.java +++ b/src/main/java/re/imc/geysermodelenginepackgenerator/generator/Entity.java @@ -32,7 +32,7 @@ public class Entity { "textures": { }, "geometry": { - + }, "animations": { "look_at_target": "%look_at_target%" diff --git a/src/main/java/re/imc/geysermodelenginepackgenerator/generator/Geometry.java b/src/main/java/re/imc/geysermodelenginepackgenerator/generator/Geometry.java index c7fd0a0..103b5b9 100644 --- a/src/main/java/re/imc/geysermodelenginepackgenerator/generator/Geometry.java +++ b/src/main/java/re/imc/geysermodelenginepackgenerator/generator/Geometry.java @@ -5,8 +5,6 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import org.geysermc.geyser.api.extension.ExtensionLogger; -import re.imc.geysermodelenginepackgenerator.ExtensionMain; import java.util.*; diff --git a/src/main/resources/extension.yml b/src/main/resources/extension.yml index a3de91a..2016778 100644 --- a/src/main/resources/extension.yml +++ b/src/main/resources/extension.yml @@ -1,6 +1,6 @@ name: GeyserModelEnginePackGenerator id: geysermodelenginepackgenerator -main: re.imc.geysermodelenginepackgenerator.ExtensionMain +main: re.imc.geysermodelenginepackgenerator.GeyserModelEnginePackGenerator api: 1.0.0 version: 1.0.0 authors: [zimzaza4] \ No newline at end of file