Fixing Detonator #158
Keine Reviewer
Label
Kein Label
Bug
Codeverbesserung
Einsteiger Freundlich
Idee
In Arbeit
Neues Feature
Prio A
Security Breach
Überprüfung notwendig
Verbesserung
Zu Beobachten
Kein Meilenstein
Niemand zuständig
3 Beteiligte
Fällig am
Kein Fälligkeitsdatum gesetzt.
Abhängigkeiten
Keine Abhängigkeiten gesetzt.
Referenz: SteamWar/BauSystem#158
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren
Keine Beschreibung angegeben.
Branch "fixing_some_detonator" löschen
Das Löschen eines Branches ist permanent. Obwohl der Branch für eine kurze Zeit weiter existieren könnte, kann diese Aktion in den meisten Fällen NICHT rückgängig gemacht werden. Fortfahren?
@ -40,3 +42,3 @@
public static final ItemStack WAND;
private static final Map<Player, Detonator> players = new HashMap<>();
private static final Map<Player, Detonator> PLAYERS = new HashMap<>();
In dem Fall ist die GROßSCHREIBUNG falsch, da es sich hier nicht um eine Konstante handelt. Die Map wird schließlich ständig verändert.
@ -73,3 +75,2 @@
public static void deleteDetonator(Player player) {
if(players.containsKey(player))
players.remove(player);
HandlerList.unregisterAll(PLAYERS.remove(player));
NPE möglich.
@ -84,3 +89,3 @@
try {
powered = AutoLoader_15.getLever(activation.location.getBlock());
}catch (ClassCastException e) {
} catch (ClassCastException e) {
Warum sollte hier überhaupt eine ClassCastException auftreten? Kann das nicht bereits vorher abgefangen werden durch saubere Programmierung?
Diese ClassCastException kommt von einem früheren fix, wo man den Block nach der Registrierung ändern konnte. Der neue Block war dann nicht mehr zu einer Powerable zu Casten, und somit wurde er dann auch entfernt.
@ -113,2 +117,3 @@
static boolean getLever(Block block) {
return ((Powerable)block.getBlockData()).isPowered();
if(!(block.getBlockData() instanceof Powerable))
return false;
Bitte den Zeilenumbruch weg machen
@ -35,2 +35,3 @@
player.sendMessage("§8/§edetonator detonate §8- §7Benutzt den Fernzünder");
player.sendMessage("§8/§edetonator reset §8- §7Löscht alle markierten Positionen");
player.sendMessage("§8/§edetonator reset §8- §7Lösche alle markierten Positionen");
player.sendMessage("§8/§edetonator remove §8- §7Entferne den Fernzünder");
Wofür soll dieser Befehl genau gut sein? Ich kann ihn genauso gut einfach wegwerfen oder?
Bitte hier die Nachricht angelehnt an '/detonator wand' machen, also 'Entfernt den Fernzünder aus dem Inventar'
@ -73,3 +75,3 @@
public static void deleteDetonator(Player player) {
if(players.containsKey(player))
players.remove(player);
HandlerList.unregisterAll(players.remove(player));
Kannst du das hier auch noch callen, wenn ich den Detonator aus dem Inventar werfe bzw lösche oder geht das nicht? Oder mach es so, dass du nur immer einen detonator hast. Außerdem bitte auch beim leaven des Servers Detonator#deleteDetonator(Player) aufrufen. Da sonst memory leaks aufkommen können.
Wird es schon.
habe ich im code nicht gesehen. Also diese Methode wird nicht direkt aufgerufen oder?
@ -77,4 +79,4 @@
public void execute() {
for (Detoloader.DetonatorActivation activation: getLocations()) {
Die Zeile kann weg
@ -99,3 +87,1 @@
AutoLoader_15.setRedstone(activation.location, false), activation.activation);
break;
default:
Unnötige Leerzeile
@ -102,3 +93,4 @@
VersionedRunnable.call(new VersionedRunnable(() -> {
AutoLoader_12.setRedstone(activation.location, true);
Bukkit.getScheduler().runTaskLater(BauSystem.getPlugin(), () ->
AutoLoader_12.setRedstone(activation.location, false), activation.activation);
Lambda bitte in eine Zeile
@ -105,0 +97,4 @@
}, 12), new VersionedRunnable(() -> {
AutoLoader_15.setRedstone(activation.location, true);
Bukkit.getScheduler().runTaskLater(BauSystem.getPlugin(), () ->
AutoLoader_15.setRedstone(activation.location, false), activation.activation);
Lambda bitte in eine Zeile
@ -124,2 +117,2 @@
default:
detoloader = AutoLoader_12.onPlayerInteractLoader(event);
Detoloader detoloader = VersionedCallable.call(
new VersionedCallable<>(() ->
Auch hier Lambdas in die gleiche Zeile
@ -151,7 +152,7 @@ public class Detonator implements Listener {
print(detoloader.addBack ? "§e" + detoloader.getBlock() + " getsetzt" :
detoloader.getBlock(), detoloader.addBack);
Bitte in eine Zeile morgen. Genauso wie etwas weiter drüber (Zeile 142, 143)
Ok, Morgen!
@ -164,2 +165,3 @@
public void onPlayerQuit(PlayerQuitEvent event) {
deleteDetonator(event.getPlayer());
if(event.getPlayer().equals(player))
deleteDetonator(player);
Weg mit der neuen Zeile
@ -176,2 +180,4 @@
}
void print(String message, boolean withSize){
if(withSize)
Bitte hier unten auch um die beiden Blöcke also vom 'if' wie vom 'else' jeweils Klammern machen
@ -149,4 +145,4 @@
locs.add(new Detoloader.DetonatorActivation(detoloader.getActivation(), event.getClickedBlock().getLocation()));
}
print(detoloader.addBack ? "§e" + detoloader.getBlock() + " getsetzt" :
detoloader.getBlock(), detoloader.addBack);
Zeilenumbruch weg!
@ -178,0 +175,4 @@
}
void print(String message, boolean withSize) {
if (withSize)
Würdest du bitte hier bitte die Blöcke auch in geschweiften Klammern machen.