- Баллы
- 61
- Имя в Minecraft
- teramik
Ситуация непонятная, сделал плагин который генерирует заново ресурсы с какой-то вероятностью на определённой территории (типа шахты), работает эта часть плагина как отдельный поток, при запуске генерации на определённом моменте падает сервер сохраняет карту. Пробивал делать чтобы очень долго генерировало блоки (там блок в одну секунду), не помогает также падает сервер, даже еще менше работы проделано. При остановке пишет: The state engine was in incorrect state SERVER_STOPING and forced info state SERVER_STOPED. Errors may have been discarded. Java стоит x64 то-есть использует все 8 gb оперативки, да и по железу все норм. Ну и собственно сам код:
for (int y=Integer.valueOf(CountryBuilding[14][_j])+1;y<(Integer.valueOf(CountryBuilding[12][_j])+_mine_mass[Integer.valueOf(CountryBuilding[4][_j])][4]);y++){
for (int x=(Integer.valueOf(CountryBuilding[6][_j])-(_size_x/2));x<=(Integer.valueOf(CountryBuilding[6][_j])+(_size_x/2));x++){
for (int z=(Integer.valueOf(CountryBuilding[7][_j])-(_size_z/2)-1);z<=(Integer.valueOf(CountryBuilding[7][_j])+(_size_z/2))-1;z++){
Location loc=new Location(Bukkit.getWorld("world"),x,y,z);
if (loc.getBlock().getTypeId()==0||loc.getBlock().getTypeId()==8||loc.getBlock().getTypeId()==9||loc.getBlock().getTypeId()==10||loc.getBlock().getTypeId()==11){
// System.out.println("(((((("+y);
temp++;
if (temp>=_time_lagg_amount){
temp=0;
try {
Thread.sleep(_time_lagg);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Random rand = new Random();
int finalX = rand.nextInt(probability[0][2]) + 1;
for (int p=1;p<=probability[0][1];p++){
if (probability[p][2]>=finalX){
loc.getBlock().setTypeId(probability[p][1]);
loc.getBlock().setData((byte) 0);
p=probability[0][1];
}
}
}
}
}
}
for (int y=Integer.valueOf(CountryBuilding[14][_j])+1;y<(Integer.valueOf(CountryBuilding[12][_j])+_mine_mass[Integer.valueOf(CountryBuilding[4][_j])][4]);y++){
for (int x=(Integer.valueOf(CountryBuilding[6][_j])-(_size_x/2));x<=(Integer.valueOf(CountryBuilding[6][_j])+(_size_x/2));x++){
for (int z=(Integer.valueOf(CountryBuilding[7][_j])-(_size_z/2)-1);z<=(Integer.valueOf(CountryBuilding[7][_j])+(_size_z/2))-1;z++){
Location loc=new Location(Bukkit.getWorld("world"),x,y,z);
if (loc.getBlock().getTypeId()==0||loc.getBlock().getTypeId()==8||loc.getBlock().getTypeId()==9||loc.getBlock().getTypeId()==10||loc.getBlock().getTypeId()==11){
// System.out.println("(((((("+y);
temp++;
if (temp>=_time_lagg_amount){
temp=0;
try {
Thread.sleep(_time_lagg);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Random rand = new Random();
int finalX = rand.nextInt(probability[0][2]) + 1;
for (int p=1;p<=probability[0][1];p++){
if (probability[p][2]>=finalX){
loc.getBlock().setTypeId(probability[p][1]);
loc.getBlock().setData((byte) 0);
p=probability[0][1];
}
}
}
}
}
}