Трабл с WorldSavedData

Версия Minecraft
1.7.10
1,193
31
182
В всд храню свои зоны AABB ака зоны захвата баз.
Естественно все это сохраняю в нбт и гружу оттуда

Java:
@Override
    public void readFromNBT(NBTTagCompound tag) {
        
        System.out.println("-------------BAZE LOAD------------");
        if(tag.hasKey("bazes", NBT.TAG_LIST)) {
            bazeList.clear();
            
            NBTTagList nbttaglist = tag.getTagList("bazes", NBT.TAG_COMPOUND);
            for(int i = 0; i < nbttaglist.tagCount(); i++) {
                NBTTagCompound bazeNBT = nbttaglist.getCompoundTagAt(i);
                Baze baze = new Baze(bazeNBT.getString("name"), bazeNBT.getDouble("x1"), bazeNBT.getDouble("y1"), bazeNBT.getDouble("z1"),
                                     bazeNBT.getDouble("x2"), bazeNBT.getDouble("y2"), bazeNBT.getDouble("z2"));
                bazeList.add(baze);
                //System.out.println(bazeList);
            }
        }
        dataBaze = tag;
    }

    @Override
    public void writeToNBT(NBTTagCompound tag) {
        System.out.println("-------------BAZE SAVE------------");
        NBTTagList listOfBazes = new NBTTagList();
        for(Baze baze : bazeList) {
            NBTTagCompound bazeNBT = new NBTTagCompound();
            bazeNBT.setString("name", baze.getBazeName());
            bazeNBT.setDouble("x1", baze.minX);
            bazeNBT.setDouble("y1", baze.minY);
            bazeNBT.setDouble("z1", baze.minZ);
            bazeNBT.setDouble("x2", baze.maxX);
            bazeNBT.setDouble("y2", baze.maxY);
            bazeNBT.setDouble("z2", baze.maxZ);
            listOfBazes.appendTag(bazeNBT);
        }
        tag.setTag("bazes", listOfBazes);
        dataBaze = tag;
        //System.out.println(dataBaze);
    }
Все ок, базу создаю командой, в мире появляется Baze extends AABB, рендерю кубик этого аабб шобы видно было его.
Выхожу с мира, захожу обратно, все норм, кубик остается значит все сейвится в нбт.


Выхожу значит полностью с майна, запускаю по новой, вхожу в мир - и моего кубика мать его нет! Дебажил лист из всд с моими зонами, пишет что там пусто, лол...
Создаю снова зону, делаю аналогичные действия, все повторяется. Извините, с всд еще только разбираюсь.
В логе еще пишет вот такую хрень:
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: java.lang.RuntimeException: Failed to instantiate class smt.pack.clan.baze.BazeManager
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.world.storage.MapStorage.loadData(MapStorage.java:64)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at smt.pack.clan.baze.BazeManager.get(BazeManager.java:129)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at smt.pack.clan.baze.BazeEvents.onUpdateFlag(BazeEvents.java:18)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at cpw.mods.fml.common.eventhandler.ASMEventHandler_59_BazeEvents_onUpdateFlag_WorldTickEvent.invoke(.dynamic)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:140)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at cpw.mods.fml.common.FMLCommonHandler.onPostWorldTick(FMLCommonHandler.java:255)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:712)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: Caused by: java.lang.NoSuchMethodException: smt.pack.clan.baze.BazeManager.<init>(java.lang.String)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at java.lang.Class.getConstructor0(Unknown Source)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at java.lang.Class.getConstructor(Unknown Source)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.world.storage.MapStorage.loadData(MapStorage.java:60)
[02:01:56] [Server thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: ... 11 more
Вооот. Не знаю, с чем это связано. Не может найти конструктор? Но почему?
Класс вот такой, если нужно:
public class BazeManager extends WorldSavedData {


public static final String IDENTIFICATOR = "baze";
public static NBTTagCompound dataBaze;
/** ADDED IN PRE INIT SMTClan*/
public BazeManager() {
super(IDENTIFICATOR);

}


public static ArrayList<Baze> bazeList = new ArrayList();

/** Called from the BazeEvents*/
public void onUpdate() {
for(Baze baze : bazeList) {
baze.onUpdate();
}

this.markDirty();
}

public void addBaze(Baze baze) {
if(!bazeList.contains(baze)) {
bazeList.add(baze);
this.markDirty();
}

}

public static Baze forName(String name) {
for(int i = 0; i < bazeList.size(); i++) {
Baze baze = bazeList.get(i);
if(baze.getBazeName().equals(name)) {
return baze;
}
}
return null;

}

public void removeBaze(Baze baze) {
if(bazeList.contains(baze)) {
bazeList.remove(baze);
this.markDirty();
}

}

public String getBazeOwner(Baze baze) {
return baze.getBazeOwner();
}

@SideOnly(Side.CLIENT)
public static void readFromNBTClient(NBTTagCompound tag) {
//System.out.println("-------------BAZE LOAD CLIENT------------");
if(tag.hasKey("bazes", NBT.TAG_LIST)) {
bazeList.clear();

NBTTagList nbttaglist = tag.getTagList("bazes", NBT.TAG_COMPOUND);
for(int i = 0; i < nbttaglist.tagCount(); i++) {
NBTTagCompound bazeNBT = nbttaglist.getCompoundTagAt(i);
Baze baze = new Baze(bazeNBT.getString("name"), bazeNBT.getDouble("x1"), bazeNBT.getDouble("y1"), bazeNBT.getDouble("z1"),
bazeNBT.getDouble("x2"), bazeNBT.getDouble("y2"), bazeNBT.getDouble("z2"));
bazeList.add(baze);
}
}

}
@Override
public void readFromNBT(NBTTagCompound tag) {

System.out.println("-------------BAZE LOAD------------");
if(tag.hasKey("bazes", NBT.TAG_LIST)) {
bazeList.clear();

NBTTagList nbttaglist = tag.getTagList("bazes", NBT.TAG_COMPOUND);
for(int i = 0; i < nbttaglist.tagCount(); i++) {
NBTTagCompound bazeNBT = nbttaglist.getCompoundTagAt(i);
Baze baze = new Baze(bazeNBT.getString("name"), bazeNBT.getDouble("x1"), bazeNBT.getDouble("y1"), bazeNBT.getDouble("z1"),
bazeNBT.getDouble("x2"), bazeNBT.getDouble("y2"), bazeNBT.getDouble("z2"));
bazeList.add(baze);
//System.out.println(bazeList);
}
}
dataBaze = tag;
}

@Override
public void writeToNBT(NBTTagCompound tag) {
System.out.println("-------------BAZE SAVE------------");
NBTTagList listOfBazes = new NBTTagList();
for(Baze baze : bazeList) {
NBTTagCompound bazeNBT = new NBTTagCompound();
bazeNBT.setString("name", baze.getBazeName());
bazeNBT.setDouble("x1", baze.minX);
bazeNBT.setDouble("y1", baze.minY);
bazeNBT.setDouble("z1", baze.minZ);
bazeNBT.setDouble("x2", baze.maxX);
bazeNBT.setDouble("y2", baze.maxY);
bazeNBT.setDouble("z2", baze.maxZ);
listOfBazes.appendTag(bazeNBT);
}
tag.setTag("bazes", listOfBazes);
dataBaze = tag;
//System.out.println(dataBaze);
}

public static BazeManager get(World world) {

// The IS_GLOBAL constant is there for clarity, and should be simplified into the right branch.
MapStorage storage = world.mapStorage;
BazeManager instance = (BazeManager) storage.loadData(BazeManager.class, IDENTIFICATOR);

if (instance == null) {
instance = new BazeManager();
storage.setData(IDENTIFICATOR, instance);
}
instance.markDirty();
return instance;


}



}
Код из лога:
Java:
@SubscribeEvent
    public void onUpdateFlag(TickEvent.WorldTickEvent event) {
        
            if(event.phase == event.phase.END) {
            BazeManager bazeManager = BazeManager.get(event.world);//18 строчка
                if(bazeManager != null) {
                    bazeManager.onUpdate();
                    //System.out.println(bazeManager.bazeList);
                }
            }
        
    }
Кто шарит, в чем проблема?
 
Сверху