From 04ef766fb4e70f30a6ac35795965b171c87f45e3 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Wed, 28 Dec 2022 18:21:02 +0100 Subject: [PATCH] Add BarrierListener --- src/config.yml | 3 + src/de/steamwar/misslewars/Config.java | 4 ++ src/de/steamwar/misslewars/MissileWars.java | 3 + .../misslewars/listener/BasicListener.java | 2 +- .../listener/special/BarrierListener.java | 58 +++++++++++++++++++ 5 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 src/de/steamwar/misslewars/listener/special/BarrierListener.java diff --git a/src/config.yml b/src/config.yml index 5e6b695..c963eef 100644 --- a/src/config.yml +++ b/src/config.yml @@ -4,6 +4,9 @@ ShieldFlyTime: 100 PlatformTime: 30 EndTime: 200 +# Special +Barrier: true + Arena: MinX: 0 MaxX: 0 diff --git a/src/de/steamwar/misslewars/Config.java b/src/de/steamwar/misslewars/Config.java index c3cfc1a..6c9d320 100644 --- a/src/de/steamwar/misslewars/Config.java +++ b/src/de/steamwar/misslewars/Config.java @@ -56,6 +56,8 @@ public class Config { private static final int EventKampfID; + public static final boolean Barrier; + static { File configfile = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "config.yml"); if (!configfile.exists()) { @@ -102,6 +104,8 @@ public class Config { RedLeader = null; EventKampfID = Integer.parseInt(System.getProperty("fightID", "0")); + + Barrier = config.getBoolean("Barrier", false); } public static boolean isChallenge() { diff --git a/src/de/steamwar/misslewars/MissileWars.java b/src/de/steamwar/misslewars/MissileWars.java index e179d89..149d234 100644 --- a/src/de/steamwar/misslewars/MissileWars.java +++ b/src/de/steamwar/misslewars/MissileWars.java @@ -28,6 +28,7 @@ import de.steamwar.misslewars.countdowns.WaitingCountdown; import de.steamwar.misslewars.items.CustomItem; import de.steamwar.misslewars.items.Missile; import de.steamwar.misslewars.listener.*; +import de.steamwar.misslewars.listener.special.BarrierListener; import de.steamwar.misslewars.slowmo.SlowMoRunner; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -92,6 +93,8 @@ public class MissileWars extends JavaPlugin { StateDependent.setupState(fightState); + new BarrierListener(); + Bukkit.getScheduler().runTaskTimer(this, new FightInfoPacketSender(), 20, 20); } diff --git a/src/de/steamwar/misslewars/listener/BasicListener.java b/src/de/steamwar/misslewars/listener/BasicListener.java index 58f84c1..b210216 100644 --- a/src/de/steamwar/misslewars/listener/BasicListener.java +++ b/src/de/steamwar/misslewars/listener/BasicListener.java @@ -31,7 +31,7 @@ import java.util.Set; public abstract class BasicListener extends StateDependent implements Listener { - BasicListener(final Set active){ + protected BasicListener(final Set active){ super(active); } diff --git a/src/de/steamwar/misslewars/listener/special/BarrierListener.java b/src/de/steamwar/misslewars/listener/special/BarrierListener.java new file mode 100644 index 0000000..5220778 --- /dev/null +++ b/src/de/steamwar/misslewars/listener/special/BarrierListener.java @@ -0,0 +1,58 @@ +/* + * + * This file is a part of the SteamWar software. + * + * Copyright (C) 2020 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * / + */ + +package de.steamwar.misslewars.listener.special; + +import de.steamwar.misslewars.Config; +import de.steamwar.misslewars.FightState; +import de.steamwar.misslewars.listener.BasicListener; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.BlockPhysicsEvent; + +import java.util.EnumSet; + +public class BarrierListener extends BasicListener { + + public BarrierListener() { + super(EnumSet.allOf(FightState.class)); + } + + private int middle = Config.ArenaMinZ + (Config.ArenaMaxZ - Config.ArenaMinZ) / 2; + + @EventHandler + public void onBlockPhysics(BlockPhysicsEvent event) { + if (!Config.Barrier) return; + Block block = event.getBlock(); + if (block.getZ() > middle - 10 && block.getZ() < middle + 10) { + switch (block.getType()) { + case SLIME_BLOCK: + case HONEY_BLOCK: + case TNT: + block.setType(Material.AIR); + break; + default: + break; + } + } + } +}