hohserg написал(а):События WorldEvent.Load,Save + java сериализацию используй
public class SuperPuperClass extends WorldSavedData
{
public SuperPuperClass(String name)
{
super(name);
}
@Override
public void readFromNBT(NBTTagCompound tag)
{}
@Override
public void writeToNBT(NBTTagCompound tag)
{}
}
public void someMethod()
{
World world = FMLCommonHandler.instance().getMinecraftServerInstance().getEntityWorld();
SuperPuperClass data;
data = (SuperPuperClass) world.loadItemData(SuperPuperClass.class, "SuperPuperClass");
if (data == null) {
data = new SuperPuperClass("SuperPuperClass");
world.setItemData("SuperPuperClass", data);
// после изменения данных всегда дергаем этот метод
data.markDirty();
}
}
hohserg написал(а):Мне удобно
hohserg написал(а):Сериализация удобна тем, что можно в нее загнать любую структуру и не менять для этого код
MyData extends WorldSavedData {
public MyData(String name) {
super(name);
}
@Override
public void writeToNBT(NBTTagCompound compound) {
NBTTagList tagList = new NBTTagList();
for(int i = 0; i < MyEvent.list.size(); i++) {
String s = MyEvent.list.get(i);
if(s != null) {
NBTTagCompound tag = new NBTTagCompound();
tag.setString("" + i, s);
tagList.appendTag(tag);
}
}
compound.setTag("MyData", tagList);
}
public void readFromNBT(NBTTagCompound compound) {
NBTTagList tagList = compound.getTagList("MyData", 10);
for(int i = 0; i < tagList.tagCount(); i++) {
NBTTagCompound tag = tagList.getCompoundTagAt(i);
String s = tag.getString("" + i);
MyEvent.list.add(s);
}
}
public static void update() {
World world = FMLCommonHandler.instance().getMinecraftServerInstance().getEntityWorld();
MyData data;
data = (MyData) world.loadItemData(MyData.class, "MyData");
if (data == null) {
data = new MyData("MyData");
world.setItemData("MyData", data);
data.markDirty();
}
}