forked from SteamWar/SteamWar
Fix TNTListener action bar message showing for WindCharge
Remove OtherTNTListener and merge into TNTListener
This commit is contained in:
+12
-3
@@ -26,8 +26,10 @@ import de.steamwar.bausystem.region.flags.Flag;
|
||||
import de.steamwar.bausystem.region.flags.TNTMode;
|
||||
import de.steamwar.bausystem.utils.ScoreboardElement;
|
||||
import de.steamwar.linkage.Linked;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.TNTPrimed;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
@@ -39,11 +41,14 @@ import java.util.List;
|
||||
@Linked
|
||||
public class TNTListener implements Listener, ScoreboardElement {
|
||||
|
||||
private void explode(List<Block> blockList) {
|
||||
private void explode(List<Block> blockList, boolean destroy) {
|
||||
blockList.removeIf(block -> {
|
||||
Region region = Region.getRegion(block.getLocation());
|
||||
TNTMode value = region.getFlags().get(Flag.TNT).getWithDefault();
|
||||
if (value == TNTMode.ALLOW) {
|
||||
if (destroy && block.getType() != Material.TNT) {
|
||||
block.setType(Material.AIR);
|
||||
}
|
||||
return false;
|
||||
} else if (value == TNTMode.ONLY_TB) {
|
||||
if (region.getBuildArea().inRegion(block.getLocation(), true)) {
|
||||
@@ -57,12 +62,16 @@ public class TNTListener implements Listener, ScoreboardElement {
|
||||
|
||||
@EventHandler
|
||||
public void onBlockExplode(BlockExplodeEvent event) {
|
||||
explode(event.blockList());
|
||||
explode(event.blockList(), false);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void onExplode(EntityExplodeEvent event) {
|
||||
explode(event.blockList());
|
||||
if (!(event.getEntity() instanceof TNTPrimed)) {
|
||||
event.blockList().clear();
|
||||
return;
|
||||
}
|
||||
explode(event.blockList(), true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user