SteamWar/BauSystem2.0
Archiviert
12
0

Closes: #107
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful

Signed-off-by: yoyosource <yoyosource@nidido.de>
Dieser Commit ist enthalten in:
yoyosource 2022-08-28 13:51:07 +02:00
Ursprung ad4e5bbb26
Commit 509aa79979
2 geänderte Dateien mit 21 neuen und 8 gelöschten Zeilen

Datei anzeigen

@ -31,11 +31,16 @@ import de.steamwar.bausystem.region.flags.flagvalues.TNTMode;
import de.steamwar.bausystem.region.utils.RegionExtensionType; import de.steamwar.bausystem.region.utils.RegionExtensionType;
import de.steamwar.bausystem.region.utils.RegionType; import de.steamwar.bausystem.region.utils.RegionType;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockExplodeEvent;
import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntityExplodeEvent;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
@Linked(LinkageType.LISTENER) @Linked(LinkageType.LISTENER)
@ -44,10 +49,9 @@ public class TNTListener implements Listener {
@LinkedInstance @LinkedInstance
public CustomScriptManager customScriptManager; public CustomScriptManager customScriptManager;
@EventHandler private void explode(List<Block> blockList, Location location, EventType eventType, Event event) {
public void onExplode(EntityExplodeEvent event) {
AtomicBoolean inBuild = new AtomicBoolean(); AtomicBoolean inBuild = new AtomicBoolean();
event.blockList().removeIf(block -> { blockList.removeIf(block -> {
Region region = Region.getRegion(block.getLocation()); Region region = Region.getRegion(block.getLocation());
TNTMode value = region.getPlain(Flag.TNT); TNTMode value = region.getPlain(Flag.TNT);
if (value == TNTMode.ALLOW) { if (value == TNTMode.ALLOW) {
@ -66,12 +70,22 @@ public class TNTListener implements Listener {
return value == TNTMode.DENY; return value == TNTMode.DENY;
}); });
if (inBuild.get()) { if (inBuild.get()) {
Region region = Region.getRegion(event.getLocation()); Region region = Region.getRegion(location);
for (Player player : Bukkit.getOnlinePlayers()) { for (Player player : Bukkit.getOnlinePlayers()) {
if (region.inRegion(player.getLocation(), RegionType.NORMAL, RegionExtensionType.NORMAL)) { if (region.inRegion(player.getLocation(), RegionType.NORMAL, RegionExtensionType.NORMAL)) {
customScriptManager.callEvent(EventType.TNTExplodeInBuild, player, event); customScriptManager.callEvent(eventType, player, event);
} }
} }
} }
} }
@EventHandler
public void onBlockExplode(BlockExplodeEvent event) {
explode(event.blockList(), event.getBlock().getLocation(), null, null);
}
@EventHandler
public void onExplode(EntityExplodeEvent event) {
explode(event.blockList(), event.getLocation(), EventType.TNTExplodeInBuild, event);
}
} }

Datei anzeigen

@ -249,9 +249,8 @@ public class CustomScriptManager implements Listener {
} }
public void callEvent(EventType eventType, Player p, Event e) { public void callEvent(EventType eventType, Player p, Event e) {
if (!eventType.getEventType().equals(e.getClass())) { if (eventType == null) return;
return; if (!eventType.getEventType().equals(e.getClass())) return;
}
List<CustomScript.CustomEvent> customEvents = playerMap.getOrDefault(p, new ArrayList<>()).stream().filter(CustomScript.CustomEvent.class::isInstance).map(CustomScript.CustomEvent.class::cast).collect(Collectors.toList()); List<CustomScript.CustomEvent> customEvents = playerMap.getOrDefault(p, new ArrayList<>()).stream().filter(CustomScript.CustomEvent.class::isInstance).map(CustomScript.CustomEvent.class::cast).collect(Collectors.toList());
for (CustomScript.CustomEvent customEvent : customEvents) { for (CustomScript.CustomEvent customEvent : customEvents) {