From 0c762e56240f1eebc1cbfaacf3239c78d8e43d9c Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sun, 8 Oct 2023 18:21:19 +0200 Subject: [PATCH] TNT Distribution Signed-off-by: Lixfel --- FightSystem_Core/src/config.yml | 1 + .../de/steamwar/fightsystem/FightSystem.java | 2 + .../fightsystem/event/TNTDistributor.java | 39 +++++++++++++++++++ .../winconditions/Winconditions.java | 3 +- 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 FightSystem_Core/src/de/steamwar/fightsystem/event/TNTDistributor.java diff --git a/FightSystem_Core/src/config.yml b/FightSystem_Core/src/config.yml index 89db437..49f992a 100644 --- a/FightSystem_Core/src/config.yml +++ b/FightSystem_Core/src/config.yml @@ -122,6 +122,7 @@ WinConditions: # defaults to none if missing # - HELLS_BELLS # - METEOR # - PERSISTENT_DAMAGE + # - TNT_DISTRIBUTION WinConditionParams: # The time of any of the timeout win conditions in seconds diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java index c4898d4..e6ae767 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java @@ -27,6 +27,7 @@ import de.steamwar.fightsystem.countdown.*; import de.steamwar.fightsystem.event.HellsBells; import de.steamwar.fightsystem.event.Meteor; import de.steamwar.fightsystem.event.PersistentDamage; +import de.steamwar.fightsystem.event.TNTDistributor; import de.steamwar.fightsystem.fight.Fight; import de.steamwar.fightsystem.fight.FightTeam; import de.steamwar.fightsystem.fight.FightWorld; @@ -131,6 +132,7 @@ public class FightSystem extends JavaPlugin { new HellsBells(); new Meteor(); new PersistentDamage(); + new TNTDistributor(); new WinconditionAmongUs(); new NoPlayersOnlineCountdown(); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/TNTDistributor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/TNTDistributor.java new file mode 100644 index 0000000..dc630a3 --- /dev/null +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/TNTDistributor.java @@ -0,0 +1,39 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2023 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.fightsystem.event; + +import de.steamwar.fightsystem.ArenaMode; +import de.steamwar.fightsystem.fight.Fight; +import de.steamwar.fightsystem.states.FightState; +import de.steamwar.fightsystem.states.StateDependentTask; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +public class TNTDistributor { + + public TNTDistributor() { + new StateDependentTask(ArenaMode.AntiReplay, FightState.Running, () -> Fight.teams().forEach(team -> team.getPlayers().forEach(fp -> { + if(!fp.isLiving()) + return; + + fp.ifPlayer(player -> player.getInventory().addItem(new ItemStack(Material.TNT, 20))); + })), 0, 300); + } +} diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/Winconditions.java b/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/Winconditions.java index afd3943..fa91d9c 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/Winconditions.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/Winconditions.java @@ -40,5 +40,6 @@ public enum Winconditions { HELLS_BELLS, METEOR, AMONG_US, - PERSISTENT_DAMAGE + PERSISTENT_DAMAGE, + TNT_DISTRIBUTION }