Hallo Leute
WorldEdit ist ein Programm um die Welten durch befehle zu bearbeiten.
Der einfachste Befehl ist dort der "//set [Block]:[Data]" Befehl
Diesen nutzen wir auf dem server sehr oft... wenn eine zu große Region makiert wurde hat der server nicht genug speicher um diese setzen zu können..
Auf grund dessen möchte ich diesen befehl nun so ändern dass man damit unentlich viele blöcke setzen kann..
Der Basis Befehl siet so aus:
/**
* Sets all the blocks inside a region to a certain block type.
*
* @param region
* @param block
* @return number of blocks affected
* @throws MaxChangedBlocksException
*/
public int setBlocks(Region region, BaseBlock block)
throws MaxChangedBlocksException {
int affected = 0;
if (region instanceof CuboidRegion) {
// Doing this for speed
Vector min = region.getMinimumPoint();
Vector max = region.getMaximumPoint();
int minX = min.getBlockX();
int minY = min.getBlockY();
int minZ = min.getBlockZ();
int maxX = max.getBlockX();
int maxY = max.getBlockY();
int maxZ = max.getBlockZ();
for (int x = minX; x <= maxX; ++x) {
for (int y = minY; y <= maxY; ++y) {
for (int z = minZ; z <= maxZ; ++z) {
Vector pt = new Vector(x, y, z);
if (setBlock(pt, block)) {
++affected;
}
}
}
}
} else {
for (Vector pt : region) {
if (setBlock(pt, block)) {
++affected;
}
}
}
return affected;
}
Alles anzeigen
Nun ja, die Programmierer unter euch sehen schon warum es zu crashs kommt oder? xD
Warum ich es hier öffentlich hin schreibe? Ich möchte einfach mal zeigen was ich denn so mache.
Und damit ihr mir helfen könnt xD ich habe bisher nur alles theoretisch geplant, wie es denn so läuft weiß ich nicht...
Nun meine Grund Idee um dieses Problem zu lösen:
Alle Blöcke die darin enthalten sind in einer liste speichern und block für block diese abarbeiten mit einem Bukkit Scheduler der jeden Tick "100" Blöcke setzt.
Theoretisch kann man nun beim aufbauen der zu setzenden blöcke zugucken und durch einen weiteren befehl diesen aufbau abbrechen...
Also einen Neuen Befehl hinzufügen um das setzen abbrechen zu können.
Mal sehen was WE damit in der Wirklichkeit raus macht xD
Oder hat jemand eine Idee die noch einfacher geht?
Performanter?
Schneller muss es nicht mal gehen, hierbei geht es darum das der Server nicht crashen kann durch WE arbeiten.
Kleiner