HellsBells #275
@ -103,30 +103,31 @@ public class HellsBells {
|
|||||||
|
|
||||||
private void sideRun(boolean invert) {
|
private void sideRun(boolean invert) {
|
||||||
int length = 10 + random.nextInt(zLength - 10);
|
int length = 10 + random.nextInt(zLength - 10);
|
||||||
int xOffset = getWidthStart(xLength);
|
int width = 5 + random.nextInt(5);
|
||||||
|
int xOffset = getWidthStart(xLength, width);
|
||||||
int zOffset = getLengthStart(zLength, length);
|
int zOffset = getLengthStart(zLength, length);
|
||||||
int yOffset = 25 + getHeightStart();
|
int yOffset = getHeightStart();
|
||||||
|
|
||||||
|
|
||||||
Point redStart;
|
Point redStart;
|
||||||
Point blueStart;
|
Point blueStart;
|
||||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
|
|||||||
|
|
||||||
Zeanon markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Wird der State NONE wirklich benötigt? Wird der State NONE wirklich benötigt?
|
|||||||
if (invert) {
|
if (invert) {
|
||||||
redStart = new Point(Config.RedPasteRegion.getMaxX() - xOffset, Config.RedPasteRegion.getMaxY() + yOffset, Config.RedPasteRegion.getMaxZ() - zOffset);
|
redStart = new Point(Config.RedPasteRegion.getMaxX() - xOffset, Config.RedExtendRegion.getMaxY() + yOffset, Config.RedPasteRegion.getMaxZ() - zOffset);
|
||||||
blueStart = new Point(Config.BluePasteRegion.getMinX() + xOffset, Config.BluePasteRegion.getMaxY() + yOffset, Config.BluePasteRegion.getMinZ() + zOffset);
|
blueStart = new Point(Config.BluePasteRegion.getMinX() + xOffset, Config.BlueExtendRegion.getMaxY() + yOffset, Config.BluePasteRegion.getMinZ() + zOffset);
|
||||||
} else {
|
} else {
|
||||||
redStart = new Point(Config.RedPasteRegion.getMinX() + xOffset, Config.RedPasteRegion.getMaxY() + yOffset, Config.RedPasteRegion.getMinZ() + zOffset);
|
redStart = new Point(Config.RedPasteRegion.getMinX() + xOffset, Config.RedExtendRegion.getMaxY() + yOffset, Config.RedPasteRegion.getMinZ() + zOffset);
|
||||||
blueStart = new Point(Config.BluePasteRegion.getMaxX() - xOffset, Config.BluePasteRegion.getMaxY() + yOffset, Config.BluePasteRegion.getMaxZ() - zOffset);
|
blueStart = new Point(Config.BluePasteRegion.getMaxX() - xOffset, Config.BlueExtendRegion.getMaxY() + yOffset, Config.BluePasteRegion.getMaxZ() - zOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
dropSideBombPart(redStart, blueStart, new int[]{length}, invert);
|
dropSideBombs(redStart, blueStart, width, new int[]{length}, invert);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void dropSideBombPart(Point redStart, Point blueStart, int[] x, boolean invert) {
|
private void dropSideBombs(Point redStart, Point blueStart, int width, int[] x, boolean invert) {
|
||||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(FightSystem.getPlugin(), () -> new BukkitRunnable() {
|
new BukkitRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
for (int z = 0; z < 4; z++) {
|
for (int z = 0; z < width; z++) {
|
||||||
if (invert) {
|
if (invert) {
|
||||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Gibt es nicht random.nextInt(MIN, MAX)? (kA) Gibt es nicht random.nextInt(MIN, MAX)? (kA)
YoyoNow
hat
Nein leider bietet die normale Random implementation dies nicht an. Nein leider bietet die normale Random implementation dies nicht an.
|
|||||||
world.spawnEntity(redStart.subtractAndToLocation(world, x[0], 0, z), EntityType.PRIMED_TNT);
|
world.spawnEntity(redStart.subtractAndToLocation(world, x[0], 0, z), EntityType.PRIMED_TNT);
|
||||||
|
|
||||||
@ -145,35 +146,36 @@ public class HellsBells {
|
|||||||
|
|
||||||
x[0] -= 2;
|
x[0] -= 2;
|
||||||
}
|
}
|
||||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Auch hier müsste das zu einer Methode in Direction umwandelbar sein. Auch hier müsste das zu einer Methode in Direction umwandelbar sein.
Lixfel
hat
Stat dem If-Block mit Subtract and add: Alle Werte mit Stat dem If-Block mit Subtract and add: Alle Werte mit `int factor = direction.isNorthOrWest() ? 1 : -1;` multiplizieren.
|
|||||||
}, 0, 4L);
|
}.runTaskTimer(FightSystem.getPlugin(), 0, 4L);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void frontRun(boolean invert) {
|
private void frontRun(boolean invert) {
|
||||||
int length = 10 + random.nextInt(xLength - 10);
|
int length = 10 + random.nextInt(xLength - 10);
|
||||||
int xOffset = getWidthStart(zLength);
|
int width = 5 + random.nextInt(5);
|
||||||
int zOffset = getLengthStart(xLength, length);
|
int xOffset = getWidthStart(zLength, length);
|
||||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Üblicherweise verwenden wir eher Bukkit...getScheduler().runTaskTimer(Plugin, lambda-Methode, Zeit(en)) Üblicherweise verwenden wir eher Bukkit...getScheduler().runTaskTimer(Plugin, lambda-Methode, Zeit(en))
|
|||||||
int yOffset = 25 + getHeightStart();
|
int zOffset = getLengthStart(xLength, width);
|
||||||
|
int yOffset = getHeightStart();
|
||||||
|
|
||||||
Point redStart;
|
Point redStart;
|
||||||
Point blueStart;
|
Point blueStart;
|
||||||
|
|
||||||
if (invert) {
|
if (invert) {
|
||||||
redStart = new Point(Config.RedPasteRegion.getMaxX() - xOffset, Config.RedPasteRegion.getMaxY() + yOffset, Config.RedPasteRegion.getMaxZ() - zOffset);
|
redStart = new Point(Config.RedPasteRegion.getMaxX() - xOffset, Config.RedExtendRegion.getMaxY() + yOffset, Config.RedPasteRegion.getMaxZ() - zOffset);
|
||||||
blueStart = new Point(Config.BluePasteRegion.getMinX() + xOffset, Config.BluePasteRegion.getMaxY() + yOffset, Config.BluePasteRegion.getMinZ() + zOffset);
|
blueStart = new Point(Config.BluePasteRegion.getMinX() + xOffset, Config.BlueExtendRegion.getMaxY() + yOffset, Config.BluePasteRegion.getMinZ() + zOffset);
|
||||||
} else {
|
} else {
|
||||||
redStart = new Point(Config.RedPasteRegion.getMinX() + xOffset, Config.RedPasteRegion.getMaxY() + yOffset, Config.RedPasteRegion.getMinZ() + zOffset);
|
redStart = new Point(Config.RedPasteRegion.getMinX() + xOffset, Config.RedExtendRegion.getMaxY() + yOffset, Config.RedPasteRegion.getMinZ() + zOffset);
|
||||||
blueStart = new Point(Config.BluePasteRegion.getMaxX() - xOffset, Config.BluePasteRegion.getMaxY() + yOffset, Config.BluePasteRegion.getMaxZ() - zOffset);
|
blueStart = new Point(Config.BluePasteRegion.getMaxX() - xOffset, Config.BlueExtendRegion.getMaxY() + yOffset, Config.BluePasteRegion.getMaxZ() - zOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
dropFrontBombPart(redStart, blueStart, new int[]{length}, invert);
|
dropFrontBombs(redStart, blueStart, width, new int[]{length}, invert);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void dropFrontBombPart(Point redStart, Point blueStart, int[] z, boolean invert) {
|
private void dropFrontBombs(Point redStart, Point blueStart, int width, int[] z, boolean invert) {
|
||||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(FightSystem.getPlugin(), () -> new BukkitRunnable() {
|
new BukkitRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
for (int x = 0; x < 4; x++) {
|
for (int x = 0; x < width; x++) {
|
||||||
if (invert) {
|
if (invert) {
|
||||||
world.spawnEntity(redStart.subtractAndToLocation(world, x, 0, z[0]), EntityType.PRIMED_TNT);
|
world.spawnEntity(redStart.subtractAndToLocation(world, x, 0, z[0]), EntityType.PRIMED_TNT);
|
||||||
|
|
||||||
@ -192,19 +194,19 @@ public class HellsBells {
|
|||||||
|
|
||||||
z[0] -= 2;
|
z[0] -= 2;
|
||||||
}
|
}
|
||||||
}, 0, 4L);
|
}.runTaskTimer(FightSystem.getPlugin(), 0, 4L);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getLengthStart(int regionSize, int length) {
|
private int getLengthStart(int regionSize, int length) {
|
||||||
return random.nextInt(regionSize - length);
|
return random.nextInt(regionSize - length);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getWidthStart(int regionSize) {
|
private int getWidthStart(int regionSize, int length) {
|
||||||
return random.nextInt(regionSize - 4);
|
return random.nextInt(regionSize - length);
|
||||||
}
|
}
|
||||||
|
|
||||||
Zeanon markierte diese Unterhaltung als gelöst
Lixfel
hat
Ich weiß nicht, aber ich glaube, dafür, dass an einer Stelle mal ein subtract und ein add ausgeführt wird (generalisierbar mit * +-1) ist es etwas overkill, eine eigene Klasse dafür vorzuhalten, selbst wenn Location in der 1.8 (glaube war der Grund) eine .add o.ä. Methode bereitstellt, ist etwas overkill. Dann hat man halt beim Aufruf etwas (mehr) Arithmetik. Ich weiß nicht, aber ich glaube, dafür, dass an einer Stelle mal ein subtract und ein add ausgeführt wird (generalisierbar mit * +-1) ist es etwas overkill, eine eigene Klasse dafür vorzuhalten, selbst wenn Location in der 1.8 (glaube war der Grund) eine .add o.ä. Methode bereitstellt, ist etwas overkill. Dann hat man halt beim Aufruf etwas (mehr) Arithmetik.
|
|||||||
private int getHeightStart() {
|
private int getHeightStart() {
|
||||||
return random.nextInt(15);
|
return 5 + random.nextInt(15);
|
||||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Warum geht es nicht, Location oder Vector zu verwenden? Warum geht es nicht, Location oder Vector zu verwenden?
Zeanon
hat
Weil Location und Vektor zu mehr undurchsichtigem code führt Weil Location und Vektor zu mehr undurchsichtigem code führt
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class HellsBellsCountdown extends Countdown {
|
private class HellsBellsCountdown extends Countdown {
|
||||||
|
init() und terminate() lesen sich mir wie eine enable() und disable() eines StateDependent...