Библиотека для работы с файлами MCA

7,099
324
1,510
Такой есть? Нагуглить не получилось. Подразумеваю библиотеку, позволяющую, имея файлы мира, работать с миром на уровне абстракции блоков, чанков...
Заранее спасибо

/world/region
1525005813682.png
 

timaxa007

Модератор
5,831
409
672
Файл содержит кодировку NBT, либо можно программой:
1525006349398.png
Либо из Minecraft'а брать класс который сможет декодировать этот файл и пользоваться им.
 
Последнее редактирование:
7,099
324
1,510
Спасибо) Не знал, что этот формат основан на нбт.
Это сорцы той программы jaquadro/NBTExplorer
 

timaxa007

Модератор
5,831
409
672
Не знал, что этот формат основан на нбт.
Бывает, если ты не смотрел исходники сохранения карт ( и миров).
Кажется, это сорцы той программы
И зачем ты об этом пишешь? В Minecraft есть свой декодер NBT кодировки виде файла, если что.
 
7,099
324
1,510
Бывает, если ты не смотрел исходники сохранения карт ( и миров).
Так и есть, только на вики смотрел описание формата
В Minecraft есть свой декодер NBT кодировки виде файла.
Код там гораздо запутанней
 

timaxa007

Модератор
5,831
409
672
Код там гораздо запутанней
Эм... Ну кому как:
Java:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import net.minecraft.nbt.CompressedStreamTools;
import net.minecraft.nbt.NBTTagCompound;

public abstract class FileNBT {

    final File directory;
    final String name;

    public FileNBT(File directory, String name) {
        this.directory = directory;
        this.name = name;
    }

    public File getDirectory() {
        return directory;
    }

    public void loadData() {
        try {
            File file = new File(directory, name + ".nbt");
            if (file != null && file.exists()) {
                FileInputStream fileinputstream = new FileInputStream(file);
                NBTTagCompound nbttagcompound = CompressedStreamTools.readCompressed(fileinputstream);
                fileinputstream.close();
                readFromNBT(nbttagcompound);
            }
        } catch (Exception e) {e.printStackTrace();}
    }

    public void saveData() {
        try {
            File file = new File(directory, name + ".nbt");
            if (file.getParentFile() != null) file.getParentFile().mkdirs();
            if (file != null) {
                NBTTagCompound nbttagcompound = new NBTTagCompound();
                writeToNBT(nbttagcompound);
                FileOutputStream fileoutputstream = new FileOutputStream(file);
                CompressedStreamTools.writeCompressed(nbttagcompound, fileoutputstream);
                fileoutputstream.close();
            }
        } catch (Exception e) {e.printStackTrace();}
    }

    public abstract void readFromNBT(NBTTagCompound nbt);

    public abstract void writeToNBT(NBTTagCompound nbt);

}
 
7,099
324
1,510
Сверху