Also, ich habe jetzt eigentlich mein Spigot Plugin fertig. Das Ziel: Jemand macht /rise; alle 15 sek wird die nächste y Höhe als lava gesetzt. Mein Code:
(Java)
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (command.getName().equalsIgnoreCase("rise")) {
for (int c = 0; c <= 250; c++) {
int tempC = c;
Bukkit.getScheduler().runTaskLater(this, () -> {
for (int i = 0; i <= 100; i++) {
for (int j = 0; j <= 100; j++) {
final int x = i;
final int y = tempC;
final int z = j;
Block block = world.getBlockAt(x, y, z);
block.setType(Material.LAVA);
}
}
}, 200L);
}
}
}
(Ich habe die class, etc. mal weggelassen, damit es kürzer wird. Es gibt auch deswegen keinen Fehler.)
Das runTaskLater() ist doch so eingebaut, dass der for c loop es nach 200 Ticks, als 10 Sekunden, auslöst und dann Alle x und z Koordinaten in den i und j loops durchgegangen werden. Was jetzt aber passiert:
/rise; Wartet 10 sekunden; füllt alle y Höhen.
Woran liegt das? Es ist doch angegeben, dass in jeder for c Iteration 10 Sekunden gewartet wird und dann die Höhe (mit y = c) gefüllt wird. Dann wieder 10 Sekunden warten, ... .
Hoffe jemand kann mir weiterhelfen.