SteamWar/BauSystem
Archiviert
13
0

CannonSimulator #164

Manuell gemergt
YoyoNow hat 37 Commits von CanonSimulator nach master 2021-03-07 10:47:37 +01:00 zusammengeführt
4 geänderte Dateien mit 20 neuen und 26 gelöschten Zeilen
Nur Änderungen aus Commit 549efa9801 werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -31,12 +31,4 @@ public class TNTSimulator_12 {
return Material.CONCRETE;
}
public static Material repeater() {
return Material.DIODE;
}
public static Material comparator() {
return Material.REDSTONE_COMPARATOR;
}
}
YoyoNow markierte diese Unterhaltung als gelöst
Review

Repeater und Comparator können über SWItem.getMaterial() erhalten werden, bitte hier entfernen.

Repeater und Comparator können über SWItem.getMaterial() erhalten werden, bitte hier entfernen.

Datei anzeigen

@ -32,12 +32,4 @@ public class TNTSimulator_15 {
return Material.RED_CONCRETE;
}
public static Material repeater() {
return Material.REPEATER;
}
public static Material comparator() {
return Material.COMPARATOR;
}
}

Datei anzeigen

@ -33,9 +33,10 @@ import org.bukkit.entity.Player;
public class CommandSimulator implements CommandExecutor {
private void help(Player player) {
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Diese Überprüfung findet nur beim Command statt, nicht wenn ein Spieler versucht, einen Simulatoritem zu verwenden....

Diese Überprüfung findet nur beim Command statt, nicht wenn ein Spieler versucht, einen Simulatoritem zu verwenden....
player.sendMessage("§8/§esimulator §8- §7Öffnet das Simulations GUI");
player.sendMessage("§8/§esimulator §8- §7Öffnet die Simulations GUI");
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Das GUI

Das GUI
Veraltet
Review

Es ist die Simulation und das GUI aber das Simulation passt net, Am besten noch einen Bindestrich dazwischen machen.

Es ist die Simulation und das GUI aber das Simulation passt net, Am besten noch einen Bindestrich dazwischen machen.
player.sendMessage("§8/§esimulator start §8- §7Startet die Simulation");
player.sendMessage("§8/§esimulator wand §8- §7Legt den Simulatorstab ins Inventar");
player.sendMessage("§8/§esimulator wand §8- §7Legt dir den Simulatorstab ins Inventar");
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Der Simulator ist ein System, evt. den Simulatorstab oder etwas ähnliches

Der Simulator ist ein System, evt. den Simulatorstab oder etwas ähnliches
Veraltet
Review

Der Satz macht keinen Sinn:

Legt dir den Simulatorstab ins Inventar

Der Satz macht keinen Sinn: > Legt dir den Simulatorstab ins Inventar
player.sendMessage("§8/§esimulator delete §8- §7Lösche alle TNT");
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Löcht

Löcht
}
private boolean permissionCheck(Player player) {
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Der Simulator ist ja eher eine Regional beschränkte sache, ich würde ihn eher unter WE oder ggf sogar unter build nehmen.

Der Simulator ist ja eher eine Regional beschränkte sache, ich würde ihn eher unter WE oder ggf sogar unter build nehmen.
@ -68,6 +69,8 @@ public class CommandSimulator implements CommandExecutor {
case "start":
TNTSimulator.get(player).start();
break;
case "delete":
TNTSimulator.get(player).delete();
default:
help(player);
break;

Datei anzeigen

@ -271,9 +271,9 @@ public class TNTSimulator {
private static Material comparatorOrNot(boolean b) {
if (b) {
return VersionedCallable.call(new VersionedCallable<>(TNTSimulator_12::comparator, 8), new VersionedCallable<>(TNTSimulator_15::comparator, 14));
return SWItem.getMaterial("REDSTONE_COMPARATOR");
} else {
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

getOrDefault?

getOrDefault?
return VersionedCallable.call(new VersionedCallable<>(TNTSimulator_12::repeater, 8), new VersionedCallable<>(TNTSimulator_15::repeater, 14));
return SWItem.getMaterial("DIODE");
}
}
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Kann addTNT nicht einfach einen Vektor nehmen und einen TNTSpawn returnen?

Kann addTNT nicht einfach einen Vektor nehmen und einen TNTSpawn returnen?
@ -319,25 +319,32 @@ public class TNTSimulator {
return (int)(d * 10000) * 0.0001;
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Der Task muss auch gestoppt werden...

Der Task muss auch gestoppt werden...
}
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Bitte ohne (siehe Kommentar zu .start())

Bitte ohne (siehe Kommentar zu .start())
public void delete() {
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Die runTaskTimer kann eine Consumable von einem BukkitTask nehmen, die könnte man nutzen

Die runTaskTimer kann eine Consumable von einem BukkitTask nehmen, die könnte man nutzen
TNT_SPAWNS.clear();
}
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Warum muss die Liste noch mal gemischt werden?

Warum muss die Liste noch mal gemischt werden?
Veraltet
Review

Damit wenn ich rechts und links in der Reihenfolge das spawne nicht immer das ganze nach links wegschießt im trace. Ist also wichtig. weil sonst viele Kanonen einen gewissen Drall haben.

Damit wenn ich rechts und links in der Reihenfolge das spawne nicht immer das ganze nach links wegschießt im trace. Ist also wichtig. weil sonst viele Kanonen einen gewissen Drall haben.
public void start() {
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Anstat deinen Komischen AtomicInteger zu nutzen, könnte man auch eine normal foreach Schleife machen

Anstat deinen Komischen AtomicInteger zu nutzen, könnte man auch eine normal foreach Schleife machen
Map<Integer, List<TNTSpawn>> first = new HashMap<>();
Map<Integer, List<TNTSpawn>> second = new HashMap<>();
AtomicInteger lastTick = new AtomicInteger(0);
TNT_SPAWNS.forEach(tntSpawn -> {
int lastTick = 0;
for (TNTSpawn tntSpawn : TNT_SPAWNS) {
Map<Integer, List<TNTSpawn>> list = tntSpawn.isComparator() ? second : first;
for (int i = 0; i < tntSpawn.getCount(); i++) {
list.computeIfAbsent(tntSpawn.getTickOffset(), integer -> new ArrayList<>()).add(tntSpawn);
}
if (lastTick.get() < tntSpawn.getTickOffset()) {
lastTick.set(tntSpawn.getTickOffset());
if (lastTick < tntSpawn.getTickOffset()) {
lastTick = tntSpawn.getTickOffset();
}
});
}
int finalLastTick = lastTick;
AtomicInteger currentTick = new AtomicInteger(0);
Bukkit.getScheduler().runTaskTimer(BauSystem.getPlugin(), bukkitTask -> {
int tick = currentTick.get();
spawnRandomList(first.getOrDefault(tick, EMPTY));
spawnRandomList(second.getOrDefault(tick, EMPTY));
if (tick > lastTick.get()) bukkitTask.cancel();
if (tick > finalLastTick) bukkitTask.cancel();
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Ok, deine Datenmodelle sind mal wieder ein komplettes Chaos. Du brauchst 3 Werte: Delay, wie viel TNT, TNTSpawn, oder? Und warum brauchst du dann dafür eine ominöse List[]?!? Vereinfache doch den code mal. tntSpawn weiß doch selbst, wie häufig er spawnen soll, warum musst du das nochmal woanders speichern? Warum tut TNTSpawn nicht einfach in der Anzahl spawnen, wie benötigt wird? Warum brauchst du die Funktion spawnRandomList, die irgendwie einfach nur in einer komplexen Art und weise alles in den TNTSpawnPairs spawnt? Das ist viel komplexer als nötig. Und wenn du das alles nur wegen der Berechnungsreihenfolge machst: Streamlinen (Eine Liste, in der jeder TNTSpawn so häufig wie sein .count() vorkommt, und dann einfach .shuffle()!

Ok, deine Datenmodelle sind mal wieder ein komplettes Chaos. Du brauchst 3 Werte: Delay, wie viel TNT, TNTSpawn, oder? Und warum brauchst du dann dafür eine ominöse List<TNTSpawnPair>[]?!? Vereinfache doch den code mal. tntSpawn weiß doch selbst, wie häufig er spawnen soll, warum musst du das nochmal woanders speichern? Warum tut TNTSpawn nicht einfach in der Anzahl spawnen, wie benötigt wird? Warum brauchst du die Funktion spawnRandomList, die irgendwie einfach nur in einer komplexen Art und weise alles in den TNTSpawnPairs spawnt? Das ist viel komplexer als nötig. Und wenn du das alles nur wegen der Berechnungsreihenfolge machst: Streamlinen (Eine Liste<TNTSpawn>, in der jeder TNTSpawn so häufig wie sein .count() vorkommt, und dann einfach .shuffle()!
currentTick.incrementAndGet();
}, 1, 1);
}
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Sollte ohne gehen (siehe .start())

Sollte ohne gehen (siehe .start())