mirror of
https://github.com/xSquishyLiam/mc-GeyserModelEnginePackGenerator-extension.git
synced 2025-12-19 14:59:16 +00:00
add reload command(geysermodelenginepackgenerator reload)
This commit is contained in:
@@ -1,10 +1,16 @@
|
||||
package re.imc.geysermodelenginepackgenerator;
|
||||
|
||||
import me.zimzaza4.geyserutils.geyser.GeyserUtils;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
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.generator.Entity;
|
||||
import re.imc.geysermodelenginepackgenerator.generator.Geometry;
|
||||
import re.imc.geysermodelenginepackgenerator.util.ZipUtil;
|
||||
@@ -15,18 +21,42 @@ import java.nio.channels.FileChannel;
|
||||
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 {
|
||||
|
||||
private File source;
|
||||
|
||||
public static ExtensionLogger logger;
|
||||
Path generatedPackZip;
|
||||
|
||||
@Subscribe
|
||||
public void onLoad(GeyserPreInitializeEvent event) {
|
||||
source = dataFolder().resolve("input").toFile();
|
||||
source.mkdirs();
|
||||
logger = logger();
|
||||
loadConfig();
|
||||
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onDefineCommand(GeyserDefineCommandsEvent event) {
|
||||
event.register(Command.builder(this)
|
||||
.name("reload")
|
||||
.source(CommandSource.class)
|
||||
.executableOnConsole(true)
|
||||
.description("GeyserModelPackGenerator Reload Command")
|
||||
.suggestedOpOnly(true)
|
||||
.permission("geysermodelenginepackgenerator.admin")
|
||||
.executor((source, command, args) -> {
|
||||
loadConfig();
|
||||
source.sendMessage("GeyserModelEnginePackGenerator reloaded!");
|
||||
})
|
||||
.build());
|
||||
}
|
||||
|
||||
public void loadConfig() {
|
||||
|
||||
File generatedPack = dataFolder().resolve("generated_pack").toFile();
|
||||
|
||||
@@ -36,14 +66,13 @@ public class ExtensionMain implements Extension {
|
||||
|
||||
try (ZipOutputStream zipOutputStream = new ZipOutputStream(Files.newOutputStream(generatedPackZip))) {
|
||||
ZipUtil.compressFolder(generatedPack, null, zipOutputStream);
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
for (Entity entity : GeneratorMain.entityMap.values()) {
|
||||
entity.register();
|
||||
}
|
||||
for (Entity entity : GeneratorMain.entityMap.values()) {
|
||||
entity.register();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,9 @@ public class GeneratorMain {
|
||||
|
||||
public static void generateFromZip(String currentPath, String modelId, ZipFile zip) {
|
||||
Entity entity = new Entity(modelId);
|
||||
if (entityMap.containsKey(modelId)) {
|
||||
return;
|
||||
}
|
||||
ModelConfig modelConfig = new ModelConfig();
|
||||
ZipEntry textureConfigFile = null;
|
||||
for (Iterator<? extends ZipEntry> it = zip.entries().asIterator(); it.hasNext(); ) {
|
||||
@@ -141,6 +144,9 @@ public class GeneratorMain {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (entityMap.containsKey(modelId)) {
|
||||
continue;
|
||||
}
|
||||
if (e.getName().endsWith(".png")) {
|
||||
String textureName = e.getName().replace(".png", "");
|
||||
Set<String> bindingBones = new HashSet<>();
|
||||
|
||||
@@ -16,6 +16,9 @@ import java.util.*;
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class Entity {
|
||||
|
||||
public static final Set<String> REGISTERED_ENTITIES = new HashSet<>();
|
||||
|
||||
public static final String TEMPLATE = """
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
@@ -116,7 +119,14 @@ public class Entity {
|
||||
|
||||
public void register() {
|
||||
|
||||
|
||||
|
||||
String id = "modelengine:" + modelId;
|
||||
boolean registered = REGISTERED_ENTITIES.contains(id);
|
||||
if (registered) {
|
||||
return;
|
||||
}
|
||||
REGISTERED_ENTITIES.add(id);
|
||||
GeyserUtils.addCustomEntity(id);
|
||||
if (geometry == null) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user