Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-19 04:50:06 +01:00
Add Path.java from mc-dev for diff visibility
Dieser Commit ist enthalten in:
Ursprung
266212f9f8
Commit
9e5d6699f5
128
src/main/java/net/minecraft/server/Path.java
Normale Datei
128
src/main/java/net/minecraft/server/Path.java
Normale Datei
@ -0,0 +1,128 @@
|
|||||||
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
public class Path {
|
||||||
|
|
||||||
|
private PathPoint[] a = new PathPoint[1024];
|
||||||
|
private int b = 0;
|
||||||
|
|
||||||
|
public Path() {}
|
||||||
|
|
||||||
|
public PathPoint a(PathPoint pathpoint) {
|
||||||
|
if (pathpoint.d >= 0) {
|
||||||
|
throw new IllegalStateException("OW KNOWS!");
|
||||||
|
} else {
|
||||||
|
if (this.b == this.a.length) {
|
||||||
|
PathPoint[] apathpoint = new PathPoint[this.b << 1];
|
||||||
|
|
||||||
|
System.arraycopy(this.a, 0, apathpoint, 0, this.b);
|
||||||
|
this.a = apathpoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.a[this.b] = pathpoint;
|
||||||
|
pathpoint.d = this.b;
|
||||||
|
this.a(this.b++);
|
||||||
|
return pathpoint;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void a() {
|
||||||
|
this.b = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PathPoint b() {
|
||||||
|
PathPoint pathpoint = this.a[0];
|
||||||
|
|
||||||
|
this.a[0] = this.a[--this.b];
|
||||||
|
this.a[this.b] = null;
|
||||||
|
if (this.b > 0) {
|
||||||
|
this.b(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
pathpoint.d = -1;
|
||||||
|
return pathpoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void a(PathPoint pathpoint, float f) {
|
||||||
|
float f1 = pathpoint.g;
|
||||||
|
|
||||||
|
pathpoint.g = f;
|
||||||
|
if (f < f1) {
|
||||||
|
this.a(pathpoint.d);
|
||||||
|
} else {
|
||||||
|
this.b(pathpoint.d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void a(int i) {
|
||||||
|
PathPoint pathpoint = this.a[i];
|
||||||
|
|
||||||
|
int j;
|
||||||
|
|
||||||
|
for (float f = pathpoint.g; i > 0; i = j) {
|
||||||
|
j = i - 1 >> 1;
|
||||||
|
PathPoint pathpoint1 = this.a[j];
|
||||||
|
|
||||||
|
if (f >= pathpoint1.g) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.a[i] = pathpoint1;
|
||||||
|
pathpoint1.d = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.a[i] = pathpoint;
|
||||||
|
pathpoint.d = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void b(int i) {
|
||||||
|
PathPoint pathpoint = this.a[i];
|
||||||
|
float f = pathpoint.g;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
int j = 1 + (i << 1);
|
||||||
|
int k = j + 1;
|
||||||
|
|
||||||
|
if (j >= this.b) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
PathPoint pathpoint1 = this.a[j];
|
||||||
|
float f1 = pathpoint1.g;
|
||||||
|
PathPoint pathpoint2;
|
||||||
|
float f2;
|
||||||
|
|
||||||
|
if (k >= this.b) {
|
||||||
|
pathpoint2 = null;
|
||||||
|
f2 = Float.POSITIVE_INFINITY;
|
||||||
|
} else {
|
||||||
|
pathpoint2 = this.a[k];
|
||||||
|
f2 = pathpoint2.g;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (f1 < f2) {
|
||||||
|
if (f1 >= f) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.a[i] = pathpoint1;
|
||||||
|
pathpoint1.d = i;
|
||||||
|
i = j;
|
||||||
|
} else {
|
||||||
|
if (f2 >= f) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.a[i] = pathpoint2;
|
||||||
|
pathpoint2.d = i;
|
||||||
|
i = k;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.a[i] = pathpoint;
|
||||||
|
pathpoint.d = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean c() {
|
||||||
|
return this.b == 0;
|
||||||
|
}
|
||||||
|
}
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren