TntMode #163
@ -31,9 +31,10 @@ import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||
|
||||
public class CommandTNT implements CommandExecutor {
|
||||
public class CommandTNT implements CommandExecutor, Listener {
|
||||
|
||||
private static TNTMode tntMode = TNTMode.OFF;
|
||||
|
||||
@ -58,6 +59,10 @@ public class CommandTNT implements CommandExecutor {
|
||||
|
||||
}
|
||||
|
||||
public CommandTNT() {
|
||||
Bukkit.getPluginManager().registerEvents(this, BauSystem.getPlugin());
|
||||
}
|
||||
|
||||
private String getNoPermMessage() {
|
||||
return "§cDu darfst hier nicht TNT-Schaden (de-)aktivieren";
|
||||
}
|
||||
@ -71,11 +76,11 @@ public class CommandTNT implements CommandExecutor {
|
||||
}
|
||||
|
||||
private String getTestblockEnableMessage() {
|
||||
|
||||
return "§aTNT-Schaden beim Testblock aktiviert";
|
||||
return "§aTNT-Schaden am Testblock aktiviert";
|
||||
}
|
||||
|
||||
private String getDamageMessage() {
|
||||
return "§cEs ist etwas explodiert und hätte blöcke zerstört";
|
||||
return "§cEine Explosion hätte Blöcke im Baubereich zerstört";
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -110,22 +115,25 @@ public class CommandTNT implements CommandExecutor {
|
||||
|
||||
@EventHandler
|
||||
Lixfel
hat
Ich denke, ein switch-case würde sich besser lesen lassen als dieses If if else gedöns. Ich denke, ein switch-case würde sich besser lesen lassen als dieses If if else gedöns.
|
||||
public void onExplode(EntityExplodeEvent event) {
|
||||
if (tntMode == TNTMode.ON) return;
|
||||
if (tntMode == TNTMode.OFF) {
|
||||
event.blockList().clear();
|
||||
} else {
|
||||
boolean blocksDestroyed = event.blockList().removeIf(block -> {
|
||||
for (Region region : Region.getRegions()) {
|
||||
if (region.hasBuildRegion() && region.inBuildRegion(block.getLocation())) {
|
||||
return true;
|
||||
switch (tntMode) {
|
||||
case ON:
|
||||
break;
|
||||
case OFF:
|
||||
event.blockList().clear();
|
||||
break;
|
||||
case ONLY_TB:
|
||||
boolean blocksDestroyed = event.blockList().removeIf(block -> {
|
||||
Lixfel
hat
Die invertierung macht hier den Code etwas schwerer zu lesen, da dahinter eh nur eine Zeile kommt, kannst du dieses if zurückinvertieren und dann einfach sendToActionBar aufrufen. Dann hast du da weniger Probleme. Die invertierung macht hier den Code etwas schwerer zu lesen, da dahinter eh nur eine Zeile kommt, kannst du dieses if zurückinvertieren und dann einfach sendToActionBar aufrufen. Dann hast du da weniger Probleme.
|
||||
for (Region region : Region.getRegions()) {
|
||||
if (region.hasBuildRegion() && region.inBuildRegion(block.getLocation())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
if (blocksDestroyed) {
|
||||
Lixfel
hat
Auch mal mit 1.12 kurz kompilieren (sollte funzen, bin mir aber nicht ganz sicher) Auch mal mit 1.12 kurz kompilieren (sollte funzen, bin mir aber nicht ganz sicher)
YoyoNow
hat
Ja tut. Auch wenn du das gleiche schon in ToggleCommand verwendet hast. Ja tut. Auch wenn du das gleiche schon in ToggleCommand verwendet hast.
|
||||
sendToActionBar(getDamageMessage());
|
||||
}
|
||||
return false;
|
||||
});
|
||||
if (!blocksDestroyed) {
|
||||
return;
|
||||
}
|
||||
sendToActionBar(getDamageMessage());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren
§cEine Explosion hätte Blöcke im Baubereich zerstört