amorphine
Новичок
- Баллы
- 16
Пишу плагин для очистки без вайпов. Научился сохранять регионы в schematic-файле, однако не получается сохранять tileEntities через сторонние api, было решено брать их из mca-файлов. Однако столкнулся с проблемой: вылетает исключение при чтении файла
Код следующий (тестовый)
NBTExplorer нормально читает файл регионов.
Код:
[20:44:49 WARN]: java.io.IOException: [JNBT] TAG_End found without a TAG_Compound/TAG_List tag preceding it.
[20:44:49 WARN]: at org.jnbt.NBTInputStream.readTagPayload(NBTInputStream.java:169)
[20:44:49 WARN]: at org.jnbt.NBTInputStream.readTag(NBTInputStream.java:145)
[20:44:49 WARN]: at org.jnbt.NBTInputStream.readTag(NBTInputStream.java:119)
[20:44:49 WARN]: at ru.amorphine.smartclean.lib.NtbChunk.loadNbt(NtbChunk.java:40)
[20:44:49 WARN]: at ru.fallus.modifire.SchematicMaster.saveSchematic(SchematicMaster.java:115)
[20:44:49 WARN]: at ru.amorphine.smartclean.RegionController.saveRegion(RegionController.java:32)
[20:44:49 WARN]: at ru.amorphine.smartclean.SmartClean.onCommand(SmartClean.java:49)
[20:44:49 WARN]: at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
[20:44:49 WARN]: at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:181)
[20:44:49 WARN]: at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:717)
[20:44:49 WARN]: at net.minecraft.network.NetHandlerPlayServer.func_147361_d(NetHandlerPlayServer.java:1317)
[20:44:49 WARN]: at net.minecraft.network.NetHandlerPlayServer.func_147354_a(NetHandlerPlayServer.java:1099)
[20:44:49 WARN]: at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:38)
[20:44:49 WARN]: at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:53)
[20:44:49 WARN]: at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:245)
[20:44:49 WARN]: at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173)
[20:44:49 WARN]: at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:991)
[20:44:49 WARN]: at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:431)
[20:44:49 WARN]: at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:809)
[20:44:49 WARN]: at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:669)
[20:44:49 WARN]: at java.lang.Thread.run(Thread.java:745)
Код следующий (тестовый)
Код:
public class NtbChunk {
private int chunk_x;
private int chunk_z;
private int region_x;
private int region_z;
private File file;
private org.jnbt.CompoundTag tag;
public NtbChunk(Location location) {
Block block = location.getBlock();
this.chunk_x = block.getChunk().getX(); this.chunk_z = block.getChunk().getZ();
this.region_x = (int)floor(chunk_x / 32.0);
this.region_z = (int)floor(region_z / 32.0);/
/ TODO fix paths to regions dirthis.file = new File("/home/amorphine/eclipse/server/world/region/" +
"r." + region_x + "." + region_z + ".mca");
}
public void loadNbt() throws IOException {
NBTInputStream stream = new NBTInputStream(new FileInputStream(file), false);
CompoundTag root = (CompoundTag) stream.readTag();stream.close();
Map chunks_map = root.getValue();
Set<String> set = chunks_map.keySet();
for(String chunk_name: set) {
Bukkit.getLogger().info(chunk_name);}
}
}
NBTExplorer нормально читает файл регионов.
Последнее редактирование: