В общем, есть код в цикле:
public void onEnable(){
..........
getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable()
{
public void run()
{
for (int i = 0; i < a.size(); i++) {
Block b = a.get(i);
if(b.getWorld().getBlockAt(b.getX(),b.getY(),b.getZ()).getType() == Material.AIR){
int timer = 1;
timer++;
getLogger().info("а интов у нас целых " + timer);
if(timer >= 20){
setbl(b.getWorld(),b.getX(),b.getY(),b.getZ(),0.5);
timer = 0;
}
}
}
}
и в консоли видно, что интов-то у нас всегда 1! В общем, как один раз объявить переменную, чтобы подсчёт на переменных начался?
У вас счетчик создавался на каждой итерации цикла, поэтому всегда был одинаковый, поэтому нужно было просто вынести его вне цикла:
public void run()
{
int timer = 1;
for (int i = 0; i < a.size(); i++) {
Block b = a.get(i);
if(b.getWorld().getBlockAt(b.getX(),b.getY(),b.getZ()).getType() == Material.AIR){
timer++;
getLogger().info("а интов у нас целых " + timer);
if(timer >= 20){
// ...
}
}
}
}
Я вынес в поле класса "стартовую" переменную, после чего при создании блока и записании его в массив, записывал в отдельный массив этот int под тем же номером, что и сам блок. В итоге, работает, при чём довольно стабильно.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости