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
3 geänderte Dateien mit 18 neuen und 11 gelöschten Zeilen
Nur Änderungen aus Commit a16a299962 werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -17,7 +17,6 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
YoyoNow markierte diese Unterhaltung als gelöst
Review

Wo kommt das Slash her?

Wo kommt das Slash her?
*/
package de.steamwar.bausystem.commands;
@ -25,6 +24,7 @@ import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.world.TNTSimulator;
import de.steamwar.bausystem.world.Welt;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
@ -58,7 +58,11 @@ public class CommandSimulator implements CommandExecutor {
if (args.length == 1) {
switch (args[0].toLowerCase()) {
case "wand":
YoyoNow markierte diese Unterhaltung als gelöst
Review

vllt. noch ein Default Case mit einer kleinen Help message

vllt. noch ein Default Case mit einer kleinen Help message
if (player.getInventory().getItemInMainHand().getType() == Material.AIR) {
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Kannst du bitte

  1. if (player.getInventory().getItemInMainHand().getType() == Material.AIR) {
  2. player.getInventory().setItemInMainHand(TNTSimulator.WAND);
    
  3. } else {
  4. player.getInventory().addItem(TNTSimulator.WAND);
    
  5. }
  • nutzen?
Kannst du bitte 1. if (player.getInventory().getItemInMainHand().getType() == Material.AIR) { 2. player.getInventory().setItemInMainHand(TNTSimulator.WAND); 3. } else { 4. player.getInventory().addItem(TNTSimulator.WAND); 5. } * nutzen?
player.getInventory().setItemInMainHand(TNTSimulator.WAND);
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Noch der alte ItemGiver

Noch der alte ItemGiver
} else {
player.getInventory().addItem(TNTSimulator.WAND);
}
player.updateInventory();
break;
case "start":

Datei anzeigen

@ -17,7 +17,6 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
YoyoNow markierte diese Unterhaltung als gelöst
Review

Selbes Slash

Selbes Slash
*/
package de.steamwar.bausystem.commands;

Datei anzeigen

@ -36,6 +36,7 @@ import org.bukkit.util.Consumer;
import org.bukkit.util.Vector;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
public class TNTSimulator {
@ -304,20 +305,23 @@ public class TNTSimulator {
public void start() {
Map<Integer, List<TNTSpawn>> first = new HashMap<>();
Map<Integer, List<TNTSpawn>> second = new HashMap<>();
AtomicInteger lastTick = new AtomicInteger(0);
TNT_SPAWNS.forEach(tntSpawn -> {
Map<Integer, List<TNTSpawn>> list = tntSpawn.isComparator() ? second : first;
for (int i = 0; i < tntSpawn.getCount(); i++) {
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Mann kann auch eine Normal foreach loop nehmen, dann muss man keinen AtomicInteger nutzen.

Mann kann auch eine Normal foreach loop nehmen, dann muss man keinen AtomicInteger nutzen.
Veraltet
Review

Doch weil ich sonst noch die Variable einmal kopieren muss, damit diese effectively final ist für den BukkitTask.

Doch weil ich sonst noch die Variable einmal kopieren muss, damit diese effectively final ist für den BukkitTask.
list.computeIfAbsent(tntSpawn.getTickOffset(), integer -> new ArrayList<>()).add(tntSpawn);
}
if (lastTick.get() < tntSpawn.getTickOffset()) {
lastTick.set(tntSpawn.getTickOffset());
}
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Wie wäre es, wenn man nicht für jeden Tick einen einzelnen Task macht, sondern einen Timer Task, welcher jeden Tick die Spawnt, die für diesen Tick geplant sind?

Wie wäre es, wenn man nicht für jeden Tick einen einzelnen Task macht, sondern einen Timer Task, welcher jeden Tick die Spawnt, die für diesen Tick geplant sind?
});
Set<Integer> ticks = new HashSet<>(first.keySet());
ticks.addAll(second.keySet());
for (int tick : ticks) {
Bukkit.getScheduler().runTaskLater(BauSystem.getPlugin(), () -> {
AtomicInteger currentTick = new AtomicInteger(0);
Bukkit.getScheduler().runTaskTimer(BauSystem.getPlugin(), () -> {
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Der Task muss auch gestoppt werden...

Der Task muss auch gestoppt werden...
int tick = currentTick.get();
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Bitte ohne (siehe Kommentar zu .start())

Bitte ohne (siehe Kommentar zu .start())
spawnRandomList(first.getOrDefault(tick, EMPTY));
spawnRandomList(second.getOrDefault(tick, EMPTY));
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
}, tick + 1L);
}
currentTick.incrementAndGet();
}, 1, 1);
}
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.
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
private void spawnRandomList(List<TNTSpawn> tntSpawns) {