worldedit이나 mcedit이 잘 못 동작하면 가끔 블럭 정보는 수정 되었는데 제거 되었어야할 타일 엔티티 정보가 홀로 남아있게 되어서 아래와 같은 에러가 납니다.
타일엔티티 정보에는 (-45,14,-56) 좌표에 몹스포너라는데
(-45,14,-56) 좌표에 실제로는 몹 스포너 블럭이 아니라 돌 블럭이 있는 경우
[20:22:38] [Server thread/INFO]: Attempted to place a tile entity (net.minecraft.server.v1_8_R3.TileEntityMobSpawner@587720d) at -45,14,-56 (STONE) where there was no entity tile!
[20:22:38] [Server thread/INFO]: Chunk coordinates: -48,-64
[20:22:38] [Server thread/WARN]: java.lang.Exception
[20:22:38] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.Chunk.a(Chunk.java:791)
[20:22:38] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.Chunk.a(Chunk.java:769)
[20:22:38] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.ChunkRegionLoader.loadEntities(ChunkRegionLoader.java:420)
[20:22:38] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_8_R3.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:46)
[20:22:38] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_8_R3.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:1)
[20:22:38] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_8_R3.util.AsynchronousExecutor.skipQueue(AsynchronousExecutor.java:337)
[20:22:38] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_8_R3.util.AsynchronousExecutor.getSkipQueue(AsynchronousExecutor.java:295)
[20:22:38] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_8_R3.chunkio.ChunkIOExecutor.syncChunkLoad(ChunkIOExecutor.java:16)
[20:22:38] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.ChunkProviderServer.getChunkAt(ChunkProviderServer.java:115)
[20:22:38] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.ChunkProviderServer.getChunkAt(ChunkProviderServer.java:97)
[20:22:38] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.k(MinecraftServer.java:373)
[20:22:38] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.a(MinecraftServer.java:337)
[20:22:38] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:256)
[20:22:38] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:528)
[20:22:38] [Server thread/WARN]: at java.lang.Thread.run(Unknown Source)
이런 지점이 상당히 많게 되면 유저가 해당 지역 진입시 에러 로그가 어마하게 쌓일 수도 있고, (8GB까지 봤습니다)
한번에 에러가 심하게 많이 올라오면 서버가 다운됩니다.
그래서 수정을 위해 코드를 짰습니다.
GlowStone++을 수정 해서 청크 로드 중에 로드에 실패한 타일 엔티티만 버리고 다시 청크를 저장합니다.
FixAnvil.java는 메인 실행 부분이고
AnvilChunkIoService.java는 GlowStone++ 소스파일 패치 입니다.
사용하실려면 GlowStone++ 소스에 넣고 컴파일 하시면 되겠습니다.
--주의사항--
보관용 맵이거나, 정말 에러가 심해서 수정이 꼭 필요한 맵에만 쓰세요.
맵의 손상은 제가 책임지지 않습니다.