SteamWar/BauSystem
Archiviert
13
0

Fixing Detonator #158

Manuell gemergt
YoyoNow hat 9 Commits von fixing_some_detonator nach master 2021-01-09 20:54:38 +01:00 zusammengeführt
2 geänderte Dateien mit 15 neuen und 19 gelöschten Zeilen
Nur Änderungen aus Commit b1672be384 werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -49,6 +49,7 @@ class AutoLoader_15 {
if (!(data instanceof Powerable))
return false;
Powerable powerable = (Powerable) data;
powerable.setPowered(active);
block.setBlockData(powerable);
@ -97,11 +98,7 @@ class AutoLoader_15 {
Material material = block.getType();
if (material == Material.LEVER) {
if (powerable.isPowered()) {
return new Detoloader("Hebel", 0).setActive(false);
} else {
return new Detoloader("Hebel", 0).setActive(true);
}
return new Detoloader("Hebel", 0).setActive(!powerable.isPowered());
} else if (material == Material.STONE_BUTTON) {
return new Detoloader("Knopf", Detoloader.STONE_BUTTON);
} else if (material.name().contains("PRESSURE_PLATE")){
@ -118,6 +115,8 @@ class AutoLoader_15 {
}
static boolean getLever(Block block) {
if(!(block.getBlockData() instanceof Powerable))
return false;
Review

Bitte den Zeilenumbruch weg machen

Bitte den Zeilenumbruch weg machen
return ((Powerable) block.getBlockData()).isPowered();
}
}

Datei anzeigen

@ -41,7 +41,7 @@ import java.util.stream.Collectors;
public class Detonator implements Listener {
public static final ItemStack WAND;
private static final Map<Player, Detonator> PLAYERS = new HashMap<>();
private static final Map<Player, Detonator> players = new HashMap<>();
private final Set<Detoloader.DetonatorActivation> locs = new HashSet<>();
private final Player player;
@ -61,19 +61,20 @@ public class Detonator implements Listener {
}
public static Detonator getDetonator(Player player){
if(!PLAYERS.containsKey(player))
if(!players.containsKey(player))
return new Detonator(player);
return PLAYERS.get(player);
return players.get(player);
}
public Detonator(Player player) {
this.player = player;
Bukkit.getPluginManager().registerEvents(this, BauSystem.getPlugin());
PLAYERS.put(player, this);
players.put(player, this);
}
public static void deleteDetonator(Player player) {
HandlerList.unregisterAll(PLAYERS.remove(player));
if(players.containsKey(player))
HandlerList.unregisterAll(players.remove(player));
Review

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.

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.
Review

Wird es schon.

Wird es schon.
Review

habe ich im code nicht gesehen. Also diese Methode wird nicht direkt aufgerufen oder?

habe ich im code nicht gesehen. Also diese Methode wird nicht direkt aufgerufen oder?
}
public void execute() {
@ -86,12 +87,7 @@ public class Detonator implements Listener {
Review

Unnötige Leerzeile

Unnötige Leerzeile
}, 12), new VersionedRunnable(() -> {
boolean powered;
try {
powered = AutoLoader_15.getLever(activation.location.getBlock());
} catch (ClassCastException e) {
locs.remove(activation);
return;
}
AutoLoader_15.setRedstone(activation.location, !powered);
}, 15));
} else {
@ -113,6 +109,7 @@ public class Detonator implements Listener {
public void onPlayerInteract(PlayerInteractEvent event) {
if(!event.getPlayer().equals(player))
return;
if (event.getItem() == null) return;
if (event.getItem().isSimilar(WAND)) {
event.setCancelled(true);