Работа с World

Версия Minecraft
1.6.4
77
2
2
Здравствуйте, как реализовать полное удаление определенного Entity из мира?
Нужно удалить все выброшенные предметы из всех миров на сервере.
Как это реализовать, и что использовать, чтобы предметы удалились не только в активных чанках.

(Данный код удаляет только прогруженных энтити)

1596020573401.png
 
77
2
2
Я пришел за помощью, в падлу сказать хотя-бы класс майна где это используется? С чтением вроде разобрался, но вылазит ошибка
1596033938337.png

Java:
 @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("-----------------");
            }
        }
    }
 
77
2
2
При данном коде, выдает ошибку, что файл мистически не найден. А путь до файла дублируется1596038106987.png

Java:
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;
}
 
77
2
2
Java:
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;
    }
}
Это из-за того метода в классе RegionFileCache, он добавляет в существующий путь свой..
 
Сверху