- Баллы
- 76
- Имя в Minecraft
- Kukuroku
Здравствуйте, подскажите мотодом как загрузить схему(из WolrdEdit) в другом потоке( что бы сервер не лагал) и постепенно(по блокам или по слоям)
Но возникает
public static void buildCraft(Location loc,String fileName){
File file = new File("plugins/WorldEdit/schematics/"+fileName+".schematic");
SchematicFormat format = SchematicFormat.getFormat(file);
try {
CuboidClipboard cc = format.load(file);
Location origin = loc.clone().add(
cc.getOffset().getBlockX(),
cc.getOffset().getBlockY(),
cc.getOffset().getBlockZ());
new Thread(){
public void run(){
for(int x=0,lx=cc.getWidth();x<lx;x++){
for(int y=0,ly=cc.getHeight();x<ly;y++){
for(int z=0,lz=cc.getLength();z<lz;z++){
BaseBlock b = cc.getBlock(new Vector(x,y,z));
Location l = origin.clone().add(x,y,z);
l.getBlock().setTypeIdAndData(b.getType(),(byte) b.getData(),false);
if(b.getType()!=0){
origin.getWorld().playEffect(l, Effect.STEP_SOUND, 1);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {e.printStackTrace();}
}
}
}
}
}
}.start();
} catch (DataException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
File file = new File("plugins/WorldEdit/schematics/"+fileName+".schematic");
SchematicFormat format = SchematicFormat.getFormat(file);
try {
CuboidClipboard cc = format.load(file);
Location origin = loc.clone().add(
cc.getOffset().getBlockX(),
cc.getOffset().getBlockY(),
cc.getOffset().getBlockZ());
new Thread(){
public void run(){
for(int x=0,lx=cc.getWidth();x<lx;x++){
for(int y=0,ly=cc.getHeight();x<ly;y++){
for(int z=0,lz=cc.getLength();z<lz;z++){
BaseBlock b = cc.getBlock(new Vector(x,y,z));
Location l = origin.clone().add(x,y,z);
l.getBlock().setTypeIdAndData(b.getType(),(byte) b.getData(),false);
if(b.getType()!=0){
origin.getWorld().playEffect(l, Effect.STEP_SOUND, 1);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {e.printStackTrace();}
}
}
}
}
}
}.start();
} catch (DataException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Но возникает
[11:09:30] [Thread-57/WARN]: Exception in thread "Thread-57"
[11:09:30] [Thread-57/WARN]: java.lang.IllegalStateException: Asynchronous block remove!
[11:09:30] [Thread-57/WARN]: at org.spigotmc.AsyncCatcher.catchOp(AsyncCatcher.java:14)
[11:09:30] [Thread-57/WARN]: at net.minecraft.server.v1_8_R3.Block.remove(Block.java:317)
[11:09:30] [Thread-57/WARN]: at net.minecraft.server.v1_8_R3.Chunk.a(Chunk.java:536)
[11:09:30] [Thread-57/WARN]: at net.minecraft.server.v1_8_R3.World.setTypeAndData(World.java:396)
[11:09:30] [Thread-57/WARN]: at org.bukkit.craftbukkit.v1_8_R3.block.CraftBlock.setTypeIdAndData(CraftBlock.java:139)
[11:09:30] [Thread-57/WARN]: at ru.undframe.bw.urils.Build$2.run(Build.java:83)
[11:09:30] [Thread-57/WARN]: java.lang.IllegalStateException: Asynchronous block remove!
[11:09:30] [Thread-57/WARN]: at org.spigotmc.AsyncCatcher.catchOp(AsyncCatcher.java:14)
[11:09:30] [Thread-57/WARN]: at net.minecraft.server.v1_8_R3.Block.remove(Block.java:317)
[11:09:30] [Thread-57/WARN]: at net.minecraft.server.v1_8_R3.Chunk.a(Chunk.java:536)
[11:09:30] [Thread-57/WARN]: at net.minecraft.server.v1_8_R3.World.setTypeAndData(World.java:396)
[11:09:30] [Thread-57/WARN]: at org.bukkit.craftbukkit.v1_8_R3.block.CraftBlock.setTypeIdAndData(CraftBlock.java:139)
[11:09:30] [Thread-57/WARN]: at ru.undframe.bw.urils.Build$2.run(Build.java:83)