Mist, da war er schneller :c0,5 zu allen Koordinaten addieren gibt dir die Mitte des Blockes.
Das funktioniert leider nicht in allen Fällen.0,5 zu allen Koordinaten addieren gibt dir die Mitte des Blockes.
In welchen Fällen funktioniert es denn nicht?Das funktioniert leider nicht in allen Fällen.
Wenn der Block z.B. im Minus liegt, wird der Block daneben zurückgegeben.In welchen Fällen funktioniert es denn nicht?
Nein, wird er nicht. Der angesteuerte Eckpunkt ist immer der mit dem niedrigsten Wert, somit bekommt man damit immer die Mitte.Wenn der Block z.B. im Minus liegt, wird der Block daneben zurückgegeben.
public Location getCenter(Location loc) {
double x = loc.getX();
double y = loc.getY();
double z = loc.getZ();
if (x < 0 && z >= 0) {
x = x + 0.5D;
z = z + 0.5D;
} else if (x >= 0 && z < 0) {
x = x - 0.5D;
z = z - 0.5D;
} else {
if (x < 0) {
x = x - 0.5D;
} else
x = x + 0.5D;
if (z < 0) {
z = z - 0.5D;
} else
z = z + 0.5D;
}
return new Location(loc.getWorld(), x, y, z);
}
Teste die Methode doch Mal.Dann bliebe die Frage, von welchem Block x=-0,5 und z=-0,5 deiner Meinung nach die Mitte ist
Teste die Methode doch Mal.
Hey, danke, dass du dir die Mühe gemacht hast, meine Methode zu testen. Ich muss dazu sagen, dass ich nicht die Mitte eines 3D Blocks, sondern die Mitte eines 2D Blockes bekommen will, deswegen ignoriere ich die Y-Koordinate. Nur leider funktioniert es auch nicht, bei der X- und Z-Koordinate 0.5 hinzuzufügen. Es wäre sehr nett, wenn du mir eine Methode zukommen lässt.Also nicht nur, dass du die y koordinate ignorierst, funktioniert leider absolut nichts an deiner methode sobald man in den negativen Bereich geht.
Leider failed bereits der erste Test. Der zweite würde es natürlich auch.
No surprise at all.
Kannst du ja gerne selber testen https://pastebin.com/vfBmRmqF.
Anhang anzeigen 16599