Merge pull request 'Fix Schematics Readers' (#72) from Schematics/1.21 into main

Reviewed-on: https://steamwar.de/devlabs/SteamWar/SteamWar/pulls/72
Reviewed-by: Lixfel <lixfel@steamwar.de>
This commit is contained in:
Lixfel
2025-01-01 12:42:01 +01:00
19 changed files with 205 additions and 132 deletions
@@ -25,10 +25,13 @@ import de.steamwar.sql.NodeData;
import de.steamwar.sql.Punishment;
import de.steamwar.sql.SchematicNode;
import de.steamwar.sql.SteamwarUser;
import dev.dewy.nbt.Nbt;
import dev.dewy.nbt.tags.collection.CompoundTag;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
@@ -38,6 +41,8 @@ import java.util.logging.Level;
public class DiscordSchemUpload extends ListenerAdapter {
private static final Nbt NBT = new Nbt();
private static final List<String> SCHEM_FILE_ENDINGS = Arrays.asList(".schem", ".schematic");
@Override
@@ -79,7 +84,17 @@ public class DiscordSchemUpload extends ListenerAdapter {
node = SchematicNode.createSchematic(user.getId(), name, null);
try (InputStream in = attachment.getProxy().download().get()) {
NodeData.get(node).saveFromStream(in, fileName.substring(dot).equalsIgnoreCase(".schem"));
CompoundTag tags = NBT.fromStream(new DataInputStream(in));
NodeData.SchematicFormat version = NodeData.SchematicFormat.SPONGE_V2;
if (tags.size() == 1) {
version = NodeData.SchematicFormat.SPONGE_V3;
} else if (tags.contains("Materials")) {
version = NodeData.SchematicFormat.MCEDIT;
}
NodeData.get(node).saveFromStream(in, version);
sender.system("DC_SCHEMUPLOAD_SUCCESS", name);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();