Парсить все файлы mca регионов. Это обычный нбт, вроде. И удалять оттуда тэги энтитей.
@ForgeSubscribe
public void loadWorld(WorldEvent.Load event) {
World world = event.world;
MinecraftServer server = MinecraftServer.getServer();
if(server != null) {
if (world != null) {
String dir = world.provider.getSaveFolder();
System.out.println("-----------------");
System.out.println("World: " + world.provider.getDimensionName());
System.out.println("Save: " + dir);
long time = System.currentTimeMillis();
File direc;
if (dir != null) {
direc = new File(server.getFolderName(), dir + "/region");
} else {
direc = new File(server.getFolderName(), "region");
}
File[] regions = direc.listFiles();
int size;
if(regions != null) {
size = regions.length;
for (File file : regions) {
try {
NBTTagCompound nbtTagCompound = CompressedStreamTools.readCompressed(new FileInputStream(file));
} catch (IOException e) {
e.printStackTrace();
}
}
} else {
size = 0;
}
time = (time - System.currentTimeMillis()) / 1000;
System.out.println("Regions: " + direc);
System.out.println("Size: " + size);
System.out.println("Time: " + time + " sec");
System.out.println("-----------------");
}
}
}
DataInputStream datainputstream = RegionFileCache.getChunkInputStream(file, x, z);
NBTTagCompound chunkTag = CompressedStreamTools.read(datainputstream);
String fileName = file.getName();
String[] L = fileName.split("\\.");
int x = Integer.parseInt(L[1]);
int z = Integer.parseInt(L[2]);
try {
DataInputStream dataInputStream = RegionFileCache.c(file, x, z);
NBTTagCompound nbtTagCompound = CompressedStreamTools.read(dataInputStream);
} catch (IOException e) {
e.printStackTrace();
}
File[] regions = direc.listFiles();
int size;
if(regions != null) {
size = regions.length;
for (File file : regions) {
String fileName = file.getName();
String[] L = fileName.split("\\.");
int x = Integer.parseInt(L[1]);
int z = Integer.parseInt(L[2]);
try {
DataInputStream dataInputStream = RegionFileCache.getChunkInputStream(file, x, z);
NBTTagCompound nbtTagCompound = CompressedStreamTools.read(dataInputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
} else {
size = 0;
}
public static synchronized RegionFile createOrLoadRegionFile(File var0, int var1, int var2) {
File var3 = new File(var0, "region");
File var4 = new File(var3, "r." + (var1 >> 5) + "." + (var2 >> 5) + ".mca");
RegionFile var5 = (RegionFile)regionsByFilename.get(var4);
if (var5 != null) {
return var5;
} else {
if (!var3.exists()) {
var3.mkdirs();
}
if (regionsByFilename.size() >= 256) {
clearRegionFileReferences();
}
RegionFile var6 = new RegionFile(var4);
regionsByFilename.put(var4, var6);
return var6;
}
}