From 02ac3cd665faec7e142c9e5064c782156a7b793c Mon Sep 17 00:00:00 2001 From: Zeanon Date: Thu, 13 Jan 2022 16:12:50 +0100 Subject: [PATCH 01/21] First draft --- FightSystem_Core/src/config.yml | 1 + .../de/steamwar/fightsystem/FightSystem.java | 2 + .../fightsystem/FightSystem.properties | 265 +++++++++--------- .../de/steamwar/fightsystem/event/Meteor.java | 160 +++++++++++ .../winconditions/Winconditions.java | 3 +- 5 files changed, 298 insertions(+), 133 deletions(-) create mode 100644 FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java diff --git a/FightSystem_Core/src/config.yml b/FightSystem_Core/src/config.yml index 65406e2..0df080e 100644 --- a/FightSystem_Core/src/config.yml +++ b/FightSystem_Core/src/config.yml @@ -108,6 +108,7 @@ WinConditions: # defaults to none if missing # - PUMPKIN_TECH_KO # - HELLS_BELLS + # - METEOR 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 e3fd6d9..4d5e3ea 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java @@ -22,6 +22,7 @@ package de.steamwar.fightsystem; import de.steamwar.fightsystem.commands.*; import de.steamwar.fightsystem.countdown.*; import de.steamwar.fightsystem.event.HellsBells; +import de.steamwar.fightsystem.event.Meteor; import de.steamwar.fightsystem.fight.Fight; import de.steamwar.fightsystem.fight.FightTeam; import de.steamwar.fightsystem.fight.FightWorld; @@ -109,6 +110,7 @@ public class FightSystem extends JavaPlugin { new WinconditionPercentTimeout(); new HellsBells(); + new Meteor(); new NoPlayersOnlineCountdown(); new PreSchemCountdown(); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties index 1bc5a62..99b789c 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties @@ -17,204 +17,205 @@ # along with this program. If not, see . # -PREFIX=§eArena§8» +PREFIX=�eArena�8� # Commands -NO_TEAM=§cDu bist in keinem Team -FIGHT_ALREADY_STARTED=§cDer Kampf hat bereits begonnen -NOT_LEADER=§cDu bist kein Leader -PLAYER_UNAVAILABLE=§cDer Spieler ist nicht in der Arena +NO_TEAM=�cDu bist in keinem Team +FIGHT_ALREADY_STARTED=�cDer Kampf hat bereits begonnen +NOT_LEADER=�cDu bist kein Leader +PLAYER_UNAVAILABLE=�cDer Spieler ist nicht in der Arena -NO_INVITATION=§cDu wurdest von keinem Team eingeladen -INVITATION_DECLINED=§cEinladung abgelehnt -INVITATION_DECLINED_TEAM=§e{0} §chat die Einladung abgelehnt -PLAYER_IN_TEAM=§e{0} §cist bereits in einem Team -ALREADY_INVITED=§e{0} §cwurde bereits eingeladen -INVITATION_SENT=§e{0} §7eingeladen +NO_INVITATION=�cDu wurdest von keinem Team eingeladen +INVITATION_DECLINED=�cEinladung abgelehnt +INVITATION_DECLINED_TEAM=�e{0} �chat die Einladung abgelehnt +PLAYER_IN_TEAM=�e{0} �cist bereits in einem Team +ALREADY_INVITED=�e{0} �cwurde bereits eingeladen +INVITATION_SENT=�e{0} �7eingeladen -NOT_IN_TEAM=§e{0} §cist nicht in deinem Team +NOT_IN_TEAM=�e{0} �cist nicht in deinem Team -KIT_UNAVAILABLE=§cDieses Kit gibt es nicht -KIT_CHOSEN=§7Kit §e{0} §7gewählt +KIT_UNAVAILABLE=�cDieses Kit gibt es nicht +KIT_CHOSEN=�7Kit �e{0} �7gew�hlt -GAMEMODE_NOT_ALLOWED=§cSpielmodusänderung verboten -GAMEMODE_UNKNOWN=§cUnbekannter Spielmodus {0} -GAMEMODE_HELP=§8/§7gm §8[§eSpielmodus§8] +GAMEMODE_NOT_ALLOWED=�cSpielmodus�nderung verboten +GAMEMODE_UNKNOWN=�cUnbekannter Spielmodus {0} +GAMEMODE_HELP=�8/�7gm �8[�eSpielmodus�8] -INVITE_HELP=§8/§einvite §8[§eSpieler§8] +INVITE_HELP=�8/�einvite �8[�eSpieler�8] -LEADER_FULL=§cAlle Teams haben bereits einen Leader -ALREADY_IN_TEAM=§cDu bist bereits in einem Team +LEADER_FULL=�cAlle Teams haben bereits einen Leader +ALREADY_IN_TEAM=�cDu bist bereits in einem Team -LOCKSCHEM_HELP=§8/§7lockschem §8[§eTeam§8] -UNKNOWN_TEAM=§cDieses Team existiert nicht -LOCKSCHEM_LOCKED=§7Schematic gesperrt -LOCKSCHEM_LOCKED_BY=§cDie Schematic wurde von §e{0} §cgesperrt +LOCKSCHEM_HELP=�8/�7lockschem �8[�eTeam�8] +UNKNOWN_TEAM=�cDieses Team existiert nicht +LOCKSCHEM_LOCKED=�7Schematic gesperrt +LOCKSCHEM_LOCKED_BY=�cDie Schematic wurde von �e{0} �cgesperrt -REMOVE_HELP=§8/§eremove §8[§eSpieler§8] +REMOVE_HELP=�8/�eremove �8[�eSpieler�8] -REPLAY_LOCKED=§7Replaywiedergabe für 1 Monat gesperrt +REPLAY_LOCKED=�7Replaywiedergabe f�r 1 Monat gesperrt -NOT_FIGHTLEADER=§cDu bist nicht Kampfleiter -WIN_HELP=§8/§7win §8[§eTeam §8or §etie§8] +NOT_FIGHTLEADER=�cDu bist nicht Kampfleiter +WIN_HELP=�8/�7win �8[�eTeam �8or �etie�8] # GUI INVITATION_TITLE=Einladung von {0} -INVITATION_ACCEPT=§aAnnehmen -INVITATION_DECLINE=§cAblehnen -INVITATION_CHAT_ACCEPT=§8/§aaccept§8, §7um die Einladung §aanzunehmen -INVITATION_CHAT_DECLINE=§8/§cdecline§8, §7um die Einladung §cabzulehnen +INVITATION_ACCEPT=�aAnnehmen +INVITATION_DECLINE=�cAblehnen +INVITATION_CHAT_ACCEPT=�8/�aaccept�8, �7um die Einladung �aanzunehmen +INVITATION_CHAT_DECLINE=�8/�cdecline�8, �7um die Einladung �cabzulehnen STATE_TITLE=Kampfstatus -STATE_PRE_LEADER_SETUP=§7Teamleaderwartephase -STATE_PRE_SCHEM_SETUP=§7Schemauswahlphase -STATE_POST_SCHEM_SETUP=§7Vorbereitungsphase -STATE_PRE_RUNNING=§eKitausgabe -STATE_RUNNING=§eKampfphase -STATE_SPECTATE_WIN=§7Sieg {0} -STATE_SPECTATE_TIE=§7Unentschieden +STATE_PRE_LEADER_SETUP=�7Teamleaderwartephase +STATE_PRE_SCHEM_SETUP=�7Schemauswahlphase +STATE_POST_SCHEM_SETUP=�7Vorbereitungsphase +STATE_PRE_RUNNING=�eKitausgabe +STATE_RUNNING=�eKampfphase +STATE_SPECTATE_WIN=�7Sieg {0} +STATE_SPECTATE_TIE=�7Unentschieden INVITE_TITLE=Spieler einladen REMOVE_TITLE=Spieler rauswerfen KIT_SELECTION_TITLE=Kitauswahl -KIT_NO_KITS=§cKeine Kits gefunden -KIT_CREATE=§eNeues Kit +KIT_NO_KITS=�cKeine Kits gefunden +KIT_CREATE=�eNeues Kit KITNAME_TITLE=Kitname eingeben -KITNAME_IN_USE=§cDieser Kitname wird bereits genutzt -KIT_SEARCH=§eSuchen +KITNAME_IN_USE=�cDieser Kitname wird bereits genutzt +KIT_SEARCH=�eSuchen KITSEARCH_TITLE=Nach Kit suchen -SCHEM_NO_ENEMY=§cKeine Schematicwahl ohne Gegner +SCHEM_NO_ENEMY=�cKeine Schematicwahl ohne Gegner SCHEM_TITLE={0}-Auswahl -SCHEM_PUBLIC=§eÖffentliches {0} -SCHEM_PRIVATE=§ePrivates {0} -SCHEM_NO_PRIVATE=§7Kein privates {0} vorhanden -SCHEM_PRIVATE_FORBIDDEN=§7Kein privates {0} erlaubt +SCHEM_PUBLIC=�e�ffentliches {0} +SCHEM_PRIVATE=�ePrivates {0} +SCHEM_NO_PRIVATE=�7Kein privates {0} vorhanden +SCHEM_PRIVATE_FORBIDDEN=�7Kein privates {0} erlaubt # Countdowns -COUNTDOWN_MINUTES=§e{0} §7Minuten {1} -COUNTDOWN_SECONDS=§e{0} §7Sekunden {1} -COUNTDOWN_SECOND=§eEine §7Sekunde {1} +COUNTDOWN_MINUTES=�e{0} �7Minuten {1} +COUNTDOWN_SECONDS=�e{0} �7Sekunden {1} +COUNTDOWN_SECOND=�eEine �7Sekunde {1} ENTERN_COUNTDOWN=bis Entern erlaubt ist -ENTERN_ALLOWED=§eEntern §7ist nun erlaubt +ENTERN_ALLOWED=�eEntern �7ist nun erlaubt SHUTDOWN_COUNTDOWN=bis der Server gestoppt wird -PRE_SCHEM_COUNTDOWN=bis eine Public-Schematic gewählt wird +PRE_SCHEM_COUNTDOWN=bis eine Public-Schematic gew�hlt wird POST_SCHEM_COUNTDOWN=bis die Kits verteilt werden PRE_RUNNING_COUNTDOWN=bis die Arena freigegeben ist RUNNING_COUNTDOWN=bis der Kampf vorbei ist -SPECTATE_COUNTDOWN=bis die Arena zurückgesetzt wird +SPECTATE_COUNTDOWN=bis die Arena zur�ckgesetzt wird # Fight -SCHEMATIC_UNLOADABLE=§cSchematic konnte nicht geladen werden -SCHEMATIC_CHOSEN=§7{0} §e{1} §7gewählt -TEAM_READY=§aTeam bereit -TEAM_NOT_READY=§c§mTeam bereit -SKIP_READY=§aBeschleunigung zum nächsten Event -SKIP_NOT_READY=§c§mBeschleunigung zum nächsten Event -TEAM_CHAT={0}{1}§8» {0}{2} -CHOOSE_KIT=§eKit wählen -RESPAWN=§eRespawn -INVITE_PLAYERS=§eSpieler einladen -REMOVE_PLAYERS=§cSpieler rauswerfen -CHOOSE_SCHEMATIC=§e{0} wählen -SCHEMATIC_REQUIRED=§cZuerst muss eine Schematic gewählt sein +SCHEMATIC_UNLOADABLE=�cSchematic konnte nicht geladen werden +SCHEMATIC_CHOSEN=�7{0} �e{1} �7gew�hlt +TEAM_READY=�aTeam bereit +TEAM_NOT_READY=�c�mTeam bereit +SKIP_READY=�aBeschleunigung zum n�chsten Event +SKIP_NOT_READY=�c�mBeschleunigung zum n�chsten Event +TEAM_CHAT={0}{1}�8� {0}{2} +CHOOSE_KIT=�eKit w�hlen +RESPAWN=�eRespawn +INVITE_PLAYERS=�eSpieler einladen +REMOVE_PLAYERS=�cSpieler rauswerfen +CHOOSE_SCHEMATIC=�e{0} w�hlen +SCHEMATIC_REQUIRED=�cZuerst muss eine Schematic gew�hlt sein -KIT_PREVIEW_EDIT=§7Kit bearbeiten -KIT_PREVIEW_CHOOSE=§aKit wählen -KIT_PREVIEW_BACK=§cZurück -KIT_PREVIEW_DELETE=§cKit löschen -KIT_DELETION_CONFIRMATION=Kit wirklich löschen? -KIT_DELETION_ABORT=§cAbbrechen -KIT_DELETION_DELETE=§aLöschen +KIT_PREVIEW_EDIT=�7Kit bearbeiten +KIT_PREVIEW_CHOOSE=�aKit w�hlen +KIT_PREVIEW_BACK=�cZur�ck +KIT_PREVIEW_DELETE=�cKit l�schen +KIT_DELETION_CONFIRMATION=Kit wirklich l�schen? +KIT_DELETION_ABORT=�cAbbrechen +KIT_DELETION_DELETE=�aL�schen # Listener -NO_ARENA_LEAVING=§cDu darfst die Arena nicht verlassen -CHECK_JOIN_DENIED=§cAuf diesem Server wird momentan eine Schematic geprüft! -CHECK_COMMAND_LOCKED=§cDieser Befehl ist beim Prüfen gesperrt! Admin wird benachrichtigt. -NO_BLOCK_BREAK=§cDu darfst hier derzeit keine Blöcke abbauen -NO_BLOCK_PLACE=§cDu darfst hier derzeit keine Blöcke setzen -NO_BOW_USAGE=§cDu darfst den Bogen erst nach Kampfbeginn nutzen -NO_PARTICIPANT=§cDu bist kein Kampfteilnehmer -NO_FRIENDLY_FIRE=§cDu darfst deinen Teamkollegen keinen Schaden zufügen -NO_TNT_PLACE=§cDu darfst kein TNT setzen -NO_TELEPORT=§cDu darfst diese Teleportfunktion nicht benutzen -OPEN_INVENTORY_TO_CUSTOMIZE=§eInventar zum Anpassen des Kits öffnen -RESOURCEPACK_REQUIRED=§cAuf Eventserver kann nur mit dem SteamWar-Resourcepack beigetreten werden\n§cDa du abgelehnt hast, musst du nun in der Serverliste erst einmal wieder Ressourcenpakete von SteamWar aktivieren -NO_ENTERN=§cDu darfst nicht entern -NO_TEAMAREA=§cDu darfst nicht zu den Teams -TEST_BECOME_LEADER=§7Werde zum Teamleader mit §8/§eleader -PREPARE_SCHEM_DELETED=§cAnscheinend wurde die auszufahrende Schematic gelöscht, Einsenden wird abgebrochen. -PREPARE_ACTIVE_PISTON=§cIm Teambereich wurden sich noch bewegende Pistons gefunden, Einsenden wird abgebrochen. -PREPARE_FAILED_SAVING=§cDie Schematic konnte nicht gespeichert werden, Einsenden wird abgebrochen. -PREPARE_SENT_IN=§aDie Schematic wird nun zeitnah von einem Teammitglied überprüft -PARTICIPANT_CHAT={0} {1}§8» §7{2} -FIGHTLEADER_CHAT=§e{0}§8» §e{1} -SPECTATOR_CHAT=§7{0}§8» §7{1} +NO_ARENA_LEAVING=�cDu darfst die Arena nicht verlassen +CHECK_JOIN_DENIED=�cAuf diesem Server wird momentan eine Schematic gepr�ft! +CHECK_COMMAND_LOCKED=�cDieser Befehl ist beim Pr�fen gesperrt! Admin wird benachrichtigt. +NO_BLOCK_BREAK=�cDu darfst hier derzeit keine Bl�cke abbauen +NO_BLOCK_PLACE=�cDu darfst hier derzeit keine Bl�cke setzen +NO_BOW_USAGE=�cDu darfst den Bogen erst nach Kampfbeginn nutzen +NO_PARTICIPANT=�cDu bist kein Kampfteilnehmer +NO_FRIENDLY_FIRE=�cDu darfst deinen Teamkollegen keinen Schaden zuf�gen +NO_TNT_PLACE=�cDu darfst kein TNT setzen +NO_TELEPORT=�cDu darfst diese Teleportfunktion nicht benutzen +OPEN_INVENTORY_TO_CUSTOMIZE=�eInventar zum Anpassen des Kits �ffnen +RESOURCEPACK_REQUIRED=�cAuf Eventserver kann nur mit dem SteamWar-Resourcepack beigetreten werden\n�cDa du abgelehnt hast, musst du nun in der Serverliste erst einmal wieder Ressourcenpakete von SteamWar aktivieren +NO_ENTERN=�cDu darfst nicht entern +NO_TEAMAREA=�cDu darfst nicht zu den Teams +TEST_BECOME_LEADER=�7Werde zum Teamleader mit �8/�eleader +PREPARE_SCHEM_DELETED=�cAnscheinend wurde die auszufahrende Schematic gel�scht, Einsenden wird abgebrochen. +PREPARE_ACTIVE_PISTON=�cIm Teambereich wurden sich noch bewegende Pistons gefunden, Einsenden wird abgebrochen. +PREPARE_FAILED_SAVING=�cDie Schematic konnte nicht gespeichert werden, Einsenden wird abgebrochen. +PREPARE_SENT_IN=�aDie Schematic wird nun zeitnah von einem Teammitglied �berpr�ft +PARTICIPANT_CHAT={0} {1}�8� �7{2} +FIGHTLEADER_CHAT=�e{0}�8� �e{1} +SPECTATOR_CHAT=�7{0}�8� �7{1} # Replay -REPLAY_ENDS=§cReplay beendet +REPLAY_ENDS=�cReplay beendet OLD_STRING={0} # States -COMMAND_CURRENTLY_UNAVAILABLE=§cDieser Befehl ist zu diesem Kampfzeitpunkt nicht verfügbar +COMMAND_CURRENTLY_UNAVAILABLE=�cDieser Befehl ist zu diesem Kampfzeitpunkt nicht verf�gbar # Utils -TPS_WARNING=§c{0} §7TPS +TPS_WARNING=�c{0} �7TPS -UI_PRE_RUNNING=§7Kits verteilt -UI_RUNNING=§aArena freigegeben -UI_SKIP=§7Sprung zum nächsten Ereignis -UI_PLAYER_JOINS=§a§l» {0}{1} -UI_PLAYER_LEAVES=§c§l« {0}{1} -UI_LEADER_JOINS=§a§l» {0}Leader {1} -UI_PLAYER_DEATH={0}{1} §7ist gestorben -UI_PLAYER_LEAVE={0}{1} §7hat den Kampf verlassen -UI_ELO=§7ELO von {0}{1}§8: §7{2}§8»§e{3} +UI_PRE_RUNNING=�7Kits verteilt +UI_RUNNING=�aArena freigegeben +UI_SKIP=�7Sprung zum n�chsten Ereignis +UI_PLAYER_JOINS=�a�l� {0}{1} +UI_PLAYER_LEAVES=�c�l� {0}{1} +UI_LEADER_JOINS=�a�l� {0}Leader {1} +UI_PLAYER_DEATH={0}{1} �7ist gestorben +UI_PLAYER_LEAVE={0}{1} �7hat den Kampf verlassen +UI_ELO=�7ELO von {0}{1}�8: �7{2}�8��e{3} UI_WIN={0}Sieg {1} -UI_DRAW=§7Unentschieden +UI_DRAW=�7Unentschieden -BAR_PRE_LEADER=§7Warten auf Teamleader -BAR_PRE_SCHEM={1} §7Schemauswahl {0} {2} -BAR_PREPARE={1} {3} §7Vorbereitung {0} {4} {2} -BAR_PRE_RUNNING={1} {3} §7Kampfbeginn in {0} {4} {2} +BAR_PRE_LEADER=�7Warten auf Teamleader +BAR_PRE_SCHEM={1} �7Schemauswahl {0} {2} +BAR_PREPARE={1} {3} �7Vorbereitung {0} {4} {2} +BAR_PRE_RUNNING={1} {3} �7Kampfbeginn in {0} {4} {2} BAR_RUNNING0={1} {3} {0} {4} {2} BAR_RUNNING1={1} {3} {5} {0} {6} {4} {2} BAR_RUNNING2={1} {3} {5} {7} {0} {6} {8} {4} {2} BAR_RUNNING3={1} {3} {5} {7} {9} {0} {6} {8} {10} {4} {2} -BAR_SPECTATE={1} §7Kampf vorbei {0} {2} -BAR_TIE={1} §7Unentschieden {0} {2} -BAR_WIN={1} §7Sieg {3} {0} {2} -BAR_POINTS={0} §8Punkte -BAR_PERCENT={0}§8% -BAR_CANNONS={0} §8Kanonen -BAR_WATER={0} §8Wasser +BAR_SPECTATE={1} �7Kampf vorbei {0} {2} +BAR_TIE={1} �7Unentschieden {0} {2} +BAR_WIN={1} �7Sieg {3} {0} {2} +BAR_POINTS={0} �8Punkte +BAR_PERCENT={0}�8% +BAR_CANNONS={0} �8Kanonen +BAR_WATER={0} �8Wasser # Winconditions HELLS_BELLS_COUNTDOWN=bis die Bomben fallen -TECHKO_COUNTDOWN=bis {0} §7einen Schuss abgegeben haben muss +METEOR_COUNTDOWN=bis es Meteore regnet +TECHKO_COUNTDOWN=bis {0} �7einen Schuss abgegeben haben muss -WIN_FIGHTLEADER=§7Kampfleiterentscheidung -WIN_PERCENT={0} §7zu beschädigt -WIN_OFFLINE_BOTH=§7Beide Teams offline -WIN_OFFLINE={0} §7offline -WIN_RANKED_LEFT={0} §7hat den Kampf verlassen -WIN_ALL_DEAD={0}Alle Spieler kampfunfähig -WIN_LEADER_DEAD={0} kampfunfähig -WIN_TIME_OVER=§7Zeit abgelaufen +WIN_FIGHTLEADER=�7Kampfleiterentscheidung +WIN_PERCENT={0} �7zu besch�digt +WIN_OFFLINE_BOTH=�7Beide Teams offline +WIN_OFFLINE={0} �7offline +WIN_RANKED_LEFT={0} �7hat den Kampf verlassen +WIN_ALL_DEAD={0}Alle Spieler kampfunf�hig +WIN_LEADER_DEAD={0} kampfunf�hig +WIN_TIME_OVER=�7Zeit abgelaufen WIN_MORE_HEALTH={0}Mehr verbleibende Leben -WIN_LESS_DAMAGE={0} §7weniger beschädigt +WIN_LESS_DAMAGE={0} �7weniger besch�digt WIN_POINTS={0} hat mehr Punkte -WIN_POINTS_EQUAL=§7Gleicher Punktestand -WIN_TECHKO={0} §7ist Tech K.O. +WIN_POINTS_EQUAL=�7Gleicher Punktestand +WIN_TECHKO={0} �7ist Tech K.O. diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java new file mode 100644 index 0000000..10e6881 --- /dev/null +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -0,0 +1,160 @@ +package de.steamwar.fightsystem.event; + +import de.steamwar.fightsystem.Config; +import de.steamwar.fightsystem.countdown.Countdown; +import de.steamwar.fightsystem.states.FightState; +import de.steamwar.fightsystem.states.StateDependent; +import de.steamwar.fightsystem.utils.Message; +import de.steamwar.fightsystem.utils.SWSound; +import de.steamwar.fightsystem.winconditions.Winconditions; +import java.util.Random; +import java.util.logging.Level; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.entity.Fireball; +import org.bukkit.util.Vector; + + +public class Meteor { + + public static final Random random = new Random(); + + private final World world = Bukkit.getWorlds().get(0); + private final int xLength = Config.RedExtendRegion.getMaxX() - Config.RedExtendRegion.getMinX(); + private final int zLength = Config.RedExtendRegion.getMaxZ() - Config.RedExtendRegion.getMinZ(); + private Meteor.State current = Meteor.State.PRE; + private int currentDrops = 0; + private Meteor.MeteorCountdown currentCountdown; + + public void startCountdown() { + if (current == Meteor.State.PRE) { + current = current.getNext(); + } else if (current != Meteor.State.LAST && currentDrops >= current.SWITCH_AFTER) { + currentDrops = 0; + } + + currentDrops++; + currentCountdown = new Meteor.MeteorCountdown(current.MIN_TIME + random.nextInt(current.MAX_TIME - current.MIN_TIME)); + currentCountdown.enable(); + } + + public void drop() { + int xOffset = getStart(xLength); + int zOffset = getStart(zLength); + int yOffset = getHeightStart(); + + Meteor.Point redStart = new Meteor.Point(Config.RedExtendRegion.getMinX() + xOffset, Config.RedExtendRegion.getMaxY() + yOffset, Config.RedExtendRegion.getMaxZ() - zOffset); + Meteor.Point blueStart = new Meteor.Point(Config.BlueExtendRegion.getMinX() + xOffset, Config.BlueExtendRegion.getMaxY() + yOffset, Config.BlueExtendRegion.getMinZ() + zOffset); + + Fireball fireballRed = world.spawn(redStart.toLocation(world), Fireball.class); + fireballRed.setDirection(new Vector(0, -1, 0)); + fireballRed.setBounce(false); + fireballRed.setIsIncendiary(false); + fireballRed.setYield(current.minExplosion + random.nextInt(current.maxExplosion - current.minExplosion)); + + Fireball fireballBlue = world.spawn(blueStart.toLocation(world), Fireball.class); + fireballBlue.setDirection(new Vector(0, -1, 0)); + fireballBlue.setBounce(false); + fireballBlue.setIsIncendiary(false); + fireballBlue.setYield(current.minExplosion + random.nextInt(current.maxExplosion - current.minExplosion)); + } + + private int getStart(int regionSize) { + double randomNumber = (random.nextDouble() - random.nextDouble()) / 2 + 0.5; + Bukkit.getLogger().log(Level.INFO, "Calculated Start: " + (int) (randomNumber * (regionSize - 1))); + return Math.max(Math.min((int) (randomNumber * (regionSize - 1)), regionSize - 1), 0); + } + + private int getHeightStart() { + return 5 + random.nextInt(15); + } + + public Meteor() { + new StateDependent(Winconditions.METEOR, FightState.Running) { + @Override + public void enable() { + startCountdown(); + } + + @Override + public void disable() { + currentCountdown.disable(); + } + }.register(); + } + + private class MeteorCountdown extends Countdown { + + public MeteorCountdown(int time) { + super(time, new Message("METEOR_COUNTDOWN"), SWSound.BLOCK_NOTE_BASS, true); + } + + @Override + public void countdownFinished() { + drop(); + startCountdown(); + } + } + + private static class Point { + + private final int x; + private final int y; + private final int z; + + public Point(int x, int y, int z) { + this.x = x; + this.y = y; + this.z = z; + } + + public Location toLocation(World world) { + return new Location(world, this.x, this.y, this.z); //NOSONAR + } + } + + private enum State { + + PRE(60, 80, 1, 0, 0), + FIRST(40, 60, 3, 1, 3), + SECOND(30, 40, 4, 2, 4), + THIRD(20, 30, 4, 3, 6), + FOURTH(10, 20, 5, 4, 7), + LAST(5, 10, 0, 5, 10); + + + State(int minTime, int maxTime, int switchAfter, int minExplosion, int maxExplosion) { + this.MIN_TIME = minTime; + this.MAX_TIME = maxTime; + this.SWITCH_AFTER = switchAfter; + this.minExplosion = minExplosion; + this.maxExplosion = maxExplosion; + } + + private final int MIN_TIME; //NOSONAR + private final int MAX_TIME; //NOSONAR + private final int SWITCH_AFTER; //NOSONAR + private final int minExplosion; //NOSONAR + private final int maxExplosion; //NOSONAR + + + public Meteor.State getNext() { + switch (this) { + case PRE: + return FIRST; + case FIRST: + return SECOND; + case SECOND: + return THIRD; + case THIRD: + return FOURTH; + case FOURTH: + case LAST: + return LAST; + default: + return PRE; + } + } + } +} \ No newline at end of file diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/Winconditions.java b/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/Winconditions.java index 2d9c5f6..6c228ce 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/Winconditions.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/Winconditions.java @@ -36,5 +36,6 @@ public enum Winconditions { WATER_TECH_KO, PUMPKIN_TECH_KO, - HELLS_BELLS + HELLS_BELLS, + METEOR } -- 2.39.2 From 8d2fe1df857434862be8dd4b9c213553a9faab9b Mon Sep 17 00:00:00 2001 From: Zeanon Date: Fri, 14 Jan 2022 17:02:51 +0100 Subject: [PATCH 02/21] added explosion --- .../de/steamwar/fightsystem/event/Meteor.java | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index 10e6881..b9c8f0e 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -4,6 +4,7 @@ import de.steamwar.fightsystem.Config; import de.steamwar.fightsystem.countdown.Countdown; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.states.StateDependent; +import de.steamwar.fightsystem.states.StateDependentListener; import de.steamwar.fightsystem.utils.Message; import de.steamwar.fightsystem.utils.SWSound; import de.steamwar.fightsystem.winconditions.Winconditions; @@ -13,10 +14,13 @@ import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Fireball; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.util.Vector; -public class Meteor { +public class Meteor implements Listener { public static final Random random = new Random(); @@ -39,6 +43,13 @@ public class Meteor { currentCountdown.enable(); } + @EventHandler + public void explode(ProjectileHitEvent event) { + if (event.getEntity() instanceof Fireball) { + event.getEntity().getWorld().createExplosion(event.getEntity().getLocation(), current.explosionSize); + } + } + public void drop() { int xOffset = getStart(xLength); int zOffset = getStart(zLength); @@ -51,13 +62,13 @@ public class Meteor { fireballRed.setDirection(new Vector(0, -1, 0)); fireballRed.setBounce(false); fireballRed.setIsIncendiary(false); - fireballRed.setYield(current.minExplosion + random.nextInt(current.maxExplosion - current.minExplosion)); + fireballRed.setYield(current.explosionSize); Fireball fireballBlue = world.spawn(blueStart.toLocation(world), Fireball.class); fireballBlue.setDirection(new Vector(0, -1, 0)); fireballBlue.setBounce(false); fireballBlue.setIsIncendiary(false); - fireballBlue.setYield(current.minExplosion + random.nextInt(current.maxExplosion - current.minExplosion)); + fireballBlue.setYield(current.explosionSize); } private int getStart(int regionSize) { @@ -71,6 +82,8 @@ public class Meteor { } public Meteor() { + new StateDependentListener(Winconditions.METEOR, FightState.Running, this); + new StateDependent(Winconditions.METEOR, FightState.Running) { @Override public void enable() { @@ -116,27 +129,25 @@ public class Meteor { private enum State { - PRE(60, 80, 1, 0, 0), - FIRST(40, 60, 3, 1, 3), - SECOND(30, 40, 4, 2, 4), - THIRD(20, 30, 4, 3, 6), - FOURTH(10, 20, 5, 4, 7), - LAST(5, 10, 0, 5, 10); + PRE(60, 80, 1, 0), + FIRST(40, 60, 3, 1), + SECOND(30, 40, 4, 2), + THIRD(20, 30, 4, 3), + FOURTH(10, 20, 5, 4), + LAST(5, 10, 0, 5); - State(int minTime, int maxTime, int switchAfter, int minExplosion, int maxExplosion) { + State(int minTime, int maxTime, int switchAfter, int explosionSize) { this.MIN_TIME = minTime; this.MAX_TIME = maxTime; this.SWITCH_AFTER = switchAfter; - this.minExplosion = minExplosion; - this.maxExplosion = maxExplosion; + this.explosionSize = explosionSize; } private final int MIN_TIME; //NOSONAR private final int MAX_TIME; //NOSONAR private final int SWITCH_AFTER; //NOSONAR - private final int minExplosion; //NOSONAR - private final int maxExplosion; //NOSONAR + private final int explosionSize; //NOSONAR public Meteor.State getNext() { -- 2.39.2 From 9fee882663d268895b284445136c221679fdf523 Mon Sep 17 00:00:00 2001 From: Chaos Date: Fri, 14 Jan 2022 17:04:57 +0100 Subject: [PATCH 03/21] Fix FightSystem.properties --- .../fightsystem/FightSystem.properties | 264 +++++++++--------- 1 file changed, 132 insertions(+), 132 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties index 99b789c..ba892b1 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties @@ -17,205 +17,205 @@ # along with this program. If not, see . # -PREFIX=�eArena�8� +PREFIX=§eArena§8» # Commands -NO_TEAM=�cDu bist in keinem Team -FIGHT_ALREADY_STARTED=�cDer Kampf hat bereits begonnen -NOT_LEADER=�cDu bist kein Leader -PLAYER_UNAVAILABLE=�cDer Spieler ist nicht in der Arena +NO_TEAM=§cDu bist in keinem Team +FIGHT_ALREADY_STARTED=§cDer Kampf hat bereits begonnen +NOT_LEADER=§cDu bist kein Leader +PLAYER_UNAVAILABLE=§cDer Spieler ist nicht in der Arena -NO_INVITATION=�cDu wurdest von keinem Team eingeladen -INVITATION_DECLINED=�cEinladung abgelehnt -INVITATION_DECLINED_TEAM=�e{0} �chat die Einladung abgelehnt -PLAYER_IN_TEAM=�e{0} �cist bereits in einem Team -ALREADY_INVITED=�e{0} �cwurde bereits eingeladen -INVITATION_SENT=�e{0} �7eingeladen +NO_INVITATION=§cDu wurdest von keinem Team eingeladen +INVITATION_DECLINED=§cEinladung abgelehnt +INVITATION_DECLINED_TEAM=§e{0} §chat die Einladung abgelehnt +PLAYER_IN_TEAM=§e{0} §cist bereits in einem Team +ALREADY_INVITED=§e{0} §cwurde bereits eingeladen +INVITATION_SENT=§e{0} §7eingeladen -NOT_IN_TEAM=�e{0} �cist nicht in deinem Team +NOT_IN_TEAM=§e{0} §cist nicht in deinem Team -KIT_UNAVAILABLE=�cDieses Kit gibt es nicht -KIT_CHOSEN=�7Kit �e{0} �7gew�hlt +KIT_UNAVAILABLE=§cDieses Kit gibt es nicht +KIT_CHOSEN=§7Kit §e{0} §7gewählt -GAMEMODE_NOT_ALLOWED=�cSpielmodus�nderung verboten -GAMEMODE_UNKNOWN=�cUnbekannter Spielmodus {0} -GAMEMODE_HELP=�8/�7gm �8[�eSpielmodus�8] +GAMEMODE_NOT_ALLOWED=§cSpielmodusänderung verboten +GAMEMODE_UNKNOWN=§cUnbekannter Spielmodus {0} +GAMEMODE_HELP=§8/§7gm §8[§eSpielmodus§8] -INVITE_HELP=�8/�einvite �8[�eSpieler�8] +INVITE_HELP=§8/§einvite §8[§eSpieler§8] -LEADER_FULL=�cAlle Teams haben bereits einen Leader -ALREADY_IN_TEAM=�cDu bist bereits in einem Team +LEADER_FULL=§cAlle Teams haben bereits einen Leader +ALREADY_IN_TEAM=§cDu bist bereits in einem Team -LOCKSCHEM_HELP=�8/�7lockschem �8[�eTeam�8] -UNKNOWN_TEAM=�cDieses Team existiert nicht -LOCKSCHEM_LOCKED=�7Schematic gesperrt -LOCKSCHEM_LOCKED_BY=�cDie Schematic wurde von �e{0} �cgesperrt +LOCKSCHEM_HELP=§8/§7lockschem §8[§eTeam§8] +UNKNOWN_TEAM=§cDieses Team existiert nicht +LOCKSCHEM_LOCKED=§7Schematic gesperrt +LOCKSCHEM_LOCKED_BY=§cDie Schematic wurde von §e{0} §cgesperrt -REMOVE_HELP=�8/�eremove �8[�eSpieler�8] +REMOVE_HELP=§8/§eremove §8[§eSpieler§8] -REPLAY_LOCKED=�7Replaywiedergabe f�r 1 Monat gesperrt +REPLAY_LOCKED=§7Replaywiedergabe für 1 Monat gesperrt -NOT_FIGHTLEADER=�cDu bist nicht Kampfleiter -WIN_HELP=�8/�7win �8[�eTeam �8or �etie�8] +NOT_FIGHTLEADER=§cDu bist nicht Kampfleiter +WIN_HELP=§8/§7win §8[§eTeam §8or §etie§8] # GUI INVITATION_TITLE=Einladung von {0} -INVITATION_ACCEPT=�aAnnehmen -INVITATION_DECLINE=�cAblehnen -INVITATION_CHAT_ACCEPT=�8/�aaccept�8, �7um die Einladung �aanzunehmen -INVITATION_CHAT_DECLINE=�8/�cdecline�8, �7um die Einladung �cabzulehnen +INVITATION_ACCEPT=§aAnnehmen +INVITATION_DECLINE=§cAblehnen +INVITATION_CHAT_ACCEPT=§8/§aaccept§8, §7um die Einladung §aanzunehmen +INVITATION_CHAT_DECLINE=§8/§cdecline§8, §7um die Einladung §cabzulehnen STATE_TITLE=Kampfstatus -STATE_PRE_LEADER_SETUP=�7Teamleaderwartephase -STATE_PRE_SCHEM_SETUP=�7Schemauswahlphase -STATE_POST_SCHEM_SETUP=�7Vorbereitungsphase -STATE_PRE_RUNNING=�eKitausgabe -STATE_RUNNING=�eKampfphase -STATE_SPECTATE_WIN=�7Sieg {0} -STATE_SPECTATE_TIE=�7Unentschieden +STATE_PRE_LEADER_SETUP=§7Teamleaderwartephase +STATE_PRE_SCHEM_SETUP=§7Schemauswahlphase +STATE_POST_SCHEM_SETUP=§7Vorbereitungsphase +STATE_PRE_RUNNING=§eKitausgabe +STATE_RUNNING=§eKampfphase +STATE_SPECTATE_WIN=§7Sieg {0} +STATE_SPECTATE_TIE=§7Unentschieden INVITE_TITLE=Spieler einladen REMOVE_TITLE=Spieler rauswerfen KIT_SELECTION_TITLE=Kitauswahl -KIT_NO_KITS=�cKeine Kits gefunden -KIT_CREATE=�eNeues Kit +KIT_NO_KITS=§cKeine Kits gefunden +KIT_CREATE=§eNeues Kit KITNAME_TITLE=Kitname eingeben -KITNAME_IN_USE=�cDieser Kitname wird bereits genutzt -KIT_SEARCH=�eSuchen +KITNAME_IN_USE=§cDieser Kitname wird bereits genutzt +KIT_SEARCH=§eSuchen KITSEARCH_TITLE=Nach Kit suchen -SCHEM_NO_ENEMY=�cKeine Schematicwahl ohne Gegner +SCHEM_NO_ENEMY=§cKeine Schematicwahl ohne Gegner SCHEM_TITLE={0}-Auswahl -SCHEM_PUBLIC=�e�ffentliches {0} -SCHEM_PRIVATE=�ePrivates {0} -SCHEM_NO_PRIVATE=�7Kein privates {0} vorhanden -SCHEM_PRIVATE_FORBIDDEN=�7Kein privates {0} erlaubt +SCHEM_PUBLIC=§eÖffentliches {0} +SCHEM_PRIVATE=§ePrivates {0} +SCHEM_NO_PRIVATE=§7Kein privates {0} vorhanden +SCHEM_PRIVATE_FORBIDDEN=§7Kein privates {0} erlaubt # Countdowns -COUNTDOWN_MINUTES=�e{0} �7Minuten {1} -COUNTDOWN_SECONDS=�e{0} �7Sekunden {1} -COUNTDOWN_SECOND=�eEine �7Sekunde {1} +COUNTDOWN_MINUTES=§e{0} §7Minuten {1} +COUNTDOWN_SECONDS=§e{0} §7Sekunden {1} +COUNTDOWN_SECOND=§eEine §7Sekunde {1} ENTERN_COUNTDOWN=bis Entern erlaubt ist -ENTERN_ALLOWED=�eEntern �7ist nun erlaubt +ENTERN_ALLOWED=§eEntern §7ist nun erlaubt SHUTDOWN_COUNTDOWN=bis der Server gestoppt wird -PRE_SCHEM_COUNTDOWN=bis eine Public-Schematic gew�hlt wird +PRE_SCHEM_COUNTDOWN=bis eine Public-Schematic gewählt wird POST_SCHEM_COUNTDOWN=bis die Kits verteilt werden PRE_RUNNING_COUNTDOWN=bis die Arena freigegeben ist RUNNING_COUNTDOWN=bis der Kampf vorbei ist -SPECTATE_COUNTDOWN=bis die Arena zur�ckgesetzt wird +SPECTATE_COUNTDOWN=bis die Arena zurückgesetzt wird # Fight -SCHEMATIC_UNLOADABLE=�cSchematic konnte nicht geladen werden -SCHEMATIC_CHOSEN=�7{0} �e{1} �7gew�hlt -TEAM_READY=�aTeam bereit -TEAM_NOT_READY=�c�mTeam bereit -SKIP_READY=�aBeschleunigung zum n�chsten Event -SKIP_NOT_READY=�c�mBeschleunigung zum n�chsten Event -TEAM_CHAT={0}{1}�8� {0}{2} -CHOOSE_KIT=�eKit w�hlen -RESPAWN=�eRespawn -INVITE_PLAYERS=�eSpieler einladen -REMOVE_PLAYERS=�cSpieler rauswerfen -CHOOSE_SCHEMATIC=�e{0} w�hlen -SCHEMATIC_REQUIRED=�cZuerst muss eine Schematic gew�hlt sein +SCHEMATIC_UNLOADABLE=§cSchematic konnte nicht geladen werden +SCHEMATIC_CHOSEN=§7{0} §e{1} §7gewählt +TEAM_READY=§aTeam bereit +TEAM_NOT_READY=§c§mTeam bereit +SKIP_READY=§aBeschleunigung zum nächsten Event +SKIP_NOT_READY=§c§mBeschleunigung zum nächsten Event +TEAM_CHAT={0}{1}§8» {0}{2} +CHOOSE_KIT=§eKit wählen +RESPAWN=§eRespawn +INVITE_PLAYERS=§eSpieler einladen +REMOVE_PLAYERS=§cSpieler rauswerfen +CHOOSE_SCHEMATIC=§e{0} wählen +SCHEMATIC_REQUIRED=§cZuerst muss eine Schematic gewählt sein -KIT_PREVIEW_EDIT=�7Kit bearbeiten -KIT_PREVIEW_CHOOSE=�aKit w�hlen -KIT_PREVIEW_BACK=�cZur�ck -KIT_PREVIEW_DELETE=�cKit l�schen -KIT_DELETION_CONFIRMATION=Kit wirklich l�schen? -KIT_DELETION_ABORT=�cAbbrechen -KIT_DELETION_DELETE=�aL�schen +KIT_PREVIEW_EDIT=§7Kit bearbeiten +KIT_PREVIEW_CHOOSE=§aKit wählen +KIT_PREVIEW_BACK=§cZurück +KIT_PREVIEW_DELETE=§cKit löschen +KIT_DELETION_CONFIRMATION=Kit wirklich löschen? +KIT_DELETION_ABORT=§cAbbrechen +KIT_DELETION_DELETE=§aLöschen # Listener -NO_ARENA_LEAVING=�cDu darfst die Arena nicht verlassen -CHECK_JOIN_DENIED=�cAuf diesem Server wird momentan eine Schematic gepr�ft! -CHECK_COMMAND_LOCKED=�cDieser Befehl ist beim Pr�fen gesperrt! Admin wird benachrichtigt. -NO_BLOCK_BREAK=�cDu darfst hier derzeit keine Bl�cke abbauen -NO_BLOCK_PLACE=�cDu darfst hier derzeit keine Bl�cke setzen -NO_BOW_USAGE=�cDu darfst den Bogen erst nach Kampfbeginn nutzen -NO_PARTICIPANT=�cDu bist kein Kampfteilnehmer -NO_FRIENDLY_FIRE=�cDu darfst deinen Teamkollegen keinen Schaden zuf�gen -NO_TNT_PLACE=�cDu darfst kein TNT setzen -NO_TELEPORT=�cDu darfst diese Teleportfunktion nicht benutzen -OPEN_INVENTORY_TO_CUSTOMIZE=�eInventar zum Anpassen des Kits �ffnen -RESOURCEPACK_REQUIRED=�cAuf Eventserver kann nur mit dem SteamWar-Resourcepack beigetreten werden\n�cDa du abgelehnt hast, musst du nun in der Serverliste erst einmal wieder Ressourcenpakete von SteamWar aktivieren -NO_ENTERN=�cDu darfst nicht entern -NO_TEAMAREA=�cDu darfst nicht zu den Teams -TEST_BECOME_LEADER=�7Werde zum Teamleader mit �8/�eleader -PREPARE_SCHEM_DELETED=�cAnscheinend wurde die auszufahrende Schematic gel�scht, Einsenden wird abgebrochen. -PREPARE_ACTIVE_PISTON=�cIm Teambereich wurden sich noch bewegende Pistons gefunden, Einsenden wird abgebrochen. -PREPARE_FAILED_SAVING=�cDie Schematic konnte nicht gespeichert werden, Einsenden wird abgebrochen. -PREPARE_SENT_IN=�aDie Schematic wird nun zeitnah von einem Teammitglied �berpr�ft -PARTICIPANT_CHAT={0} {1}�8� �7{2} -FIGHTLEADER_CHAT=�e{0}�8� �e{1} -SPECTATOR_CHAT=�7{0}�8� �7{1} +NO_ARENA_LEAVING=§cDu darfst die Arena nicht verlassen +CHECK_JOIN_DENIED=§cAuf diesem Server wird momentan eine Schematic geprüft! +CHECK_COMMAND_LOCKED=§cDieser Befehl ist beim Prüfen gesperrt! Admin wird benachrichtigt. +NO_BLOCK_BREAK=§cDu darfst hier derzeit keine Blöcke abbauen +NO_BLOCK_PLACE=§cDu darfst hier derzeit keine Blöcke setzen +NO_BOW_USAGE=§cDu darfst den Bogen erst nach Kampfbeginn nutzen +NO_PARTICIPANT=§cDu bist kein Kampfteilnehmer +NO_FRIENDLY_FIRE=§cDu darfst deinen Teamkollegen keinen Schaden zufügen +NO_TNT_PLACE=§cDu darfst kein TNT setzen +NO_TELEPORT=§cDu darfst diese Teleportfunktion nicht benutzen +OPEN_INVENTORY_TO_CUSTOMIZE=§eInventar zum Anpassen des Kits öffnen +RESOURCEPACK_REQUIRED=§cAuf Eventserver kann nur mit dem SteamWar-Resourcepack beigetreten werden\n§cDa du abgelehnt hast, musst du nun in der Serverliste erst einmal wieder Ressourcenpakete von SteamWar aktivieren +NO_ENTERN=§cDu darfst nicht entern +NO_TEAMAREA=§cDu darfst nicht zu den Teams +TEST_BECOME_LEADER=§7Werde zum Teamleader mit §8/§eleader +PREPARE_SCHEM_DELETED=§cAnscheinend wurde die auszufahrende Schematic gelöscht, Einsenden wird abgebrochen. +PREPARE_ACTIVE_PISTON=§cIm Teambereich wurden sich noch bewegende Pistons gefunden, Einsenden wird abgebrochen. +PREPARE_FAILED_SAVING=§cDie Schematic konnte nicht gespeichert werden, Einsenden wird abgebrochen. +PREPARE_SENT_IN=§aDie Schematic wird nun zeitnah von einem Teammitglied überprüft +PARTICIPANT_CHAT={0} {1}§8» §7{2} +FIGHTLEADER_CHAT=§e{0}§8» §e{1} +SPECTATOR_CHAT=§7{0}§8» §7{1} # Replay -REPLAY_ENDS=�cReplay beendet +REPLAY_ENDS=§cReplay beendet OLD_STRING={0} # States -COMMAND_CURRENTLY_UNAVAILABLE=�cDieser Befehl ist zu diesem Kampfzeitpunkt nicht verf�gbar +COMMAND_CURRENTLY_UNAVAILABLE=§cDieser Befehl ist zu diesem Kampfzeitpunkt nicht verfügbar # Utils -TPS_WARNING=�c{0} �7TPS +TPS_WARNING=§c{0} §7TPS -UI_PRE_RUNNING=�7Kits verteilt -UI_RUNNING=�aArena freigegeben -UI_SKIP=�7Sprung zum n�chsten Ereignis -UI_PLAYER_JOINS=�a�l� {0}{1} -UI_PLAYER_LEAVES=�c�l� {0}{1} -UI_LEADER_JOINS=�a�l� {0}Leader {1} -UI_PLAYER_DEATH={0}{1} �7ist gestorben -UI_PLAYER_LEAVE={0}{1} �7hat den Kampf verlassen -UI_ELO=�7ELO von {0}{1}�8: �7{2}�8��e{3} +UI_PRE_RUNNING=§7Kits verteilt +UI_RUNNING=§aArena freigegeben +UI_SKIP=§7Sprung zum nächsten Ereignis +UI_PLAYER_JOINS=§a§l» {0}{1} +UI_PLAYER_LEAVES=§c§l« {0}{1} +UI_LEADER_JOINS=§a§l» {0}Leader {1} +UI_PLAYER_DEATH={0}{1} §7ist gestorben +UI_PLAYER_LEAVE={0}{1} §7hat den Kampf verlassen +UI_ELO=§7ELO von {0}{1}§8: §7{2}§8Ȥe{3} UI_WIN={0}Sieg {1} -UI_DRAW=�7Unentschieden +UI_DRAW=§7Unentschieden -BAR_PRE_LEADER=�7Warten auf Teamleader -BAR_PRE_SCHEM={1} �7Schemauswahl {0} {2} -BAR_PREPARE={1} {3} �7Vorbereitung {0} {4} {2} -BAR_PRE_RUNNING={1} {3} �7Kampfbeginn in {0} {4} {2} +BAR_PRE_LEADER=§7Warten auf Teamleader +BAR_PRE_SCHEM={1} §7Schemauswahl {0} {2} +BAR_PREPARE={1} {3} §7Vorbereitung {0} {4} {2} +BAR_PRE_RUNNING={1} {3} §7Kampfbeginn in {0} {4} {2} BAR_RUNNING0={1} {3} {0} {4} {2} BAR_RUNNING1={1} {3} {5} {0} {6} {4} {2} BAR_RUNNING2={1} {3} {5} {7} {0} {6} {8} {4} {2} BAR_RUNNING3={1} {3} {5} {7} {9} {0} {6} {8} {10} {4} {2} -BAR_SPECTATE={1} �7Kampf vorbei {0} {2} -BAR_TIE={1} �7Unentschieden {0} {2} -BAR_WIN={1} �7Sieg {3} {0} {2} -BAR_POINTS={0} �8Punkte -BAR_PERCENT={0}�8% -BAR_CANNONS={0} �8Kanonen -BAR_WATER={0} �8Wasser +BAR_SPECTATE={1} §7Kampf vorbei {0} {2} +BAR_TIE={1} §7Unentschieden {0} {2} +BAR_WIN={1} §7Sieg {3} {0} {2} +BAR_POINTS={0} §8Punkte +BAR_PERCENT={0}§8% +BAR_CANNONS={0} §8Kanonen +BAR_WATER={0} §8Wasser # Winconditions HELLS_BELLS_COUNTDOWN=bis die Bomben fallen METEOR_COUNTDOWN=bis es Meteore regnet -TECHKO_COUNTDOWN=bis {0} �7einen Schuss abgegeben haben muss +TECHKO_COUNTDOWN=bis {0} §7einen Schuss abgegeben haben muss -WIN_FIGHTLEADER=�7Kampfleiterentscheidung -WIN_PERCENT={0} �7zu besch�digt -WIN_OFFLINE_BOTH=�7Beide Teams offline -WIN_OFFLINE={0} �7offline -WIN_RANKED_LEFT={0} �7hat den Kampf verlassen -WIN_ALL_DEAD={0}Alle Spieler kampfunf�hig -WIN_LEADER_DEAD={0} kampfunf�hig -WIN_TIME_OVER=�7Zeit abgelaufen +WIN_FIGHTLEADER=§7Kampfleiterentscheidung +WIN_PERCENT={0} §7zu beschädigt +WIN_OFFLINE_BOTH=§7Beide Teams offline +WIN_OFFLINE={0} §7offline +WIN_RANKED_LEFT={0} §7hat den Kampf verlassen +WIN_ALL_DEAD={0}Alle Spieler kampfunfähig +WIN_LEADER_DEAD={0} kampfunfähig +WIN_TIME_OVER=§7Zeit abgelaufen WIN_MORE_HEALTH={0}Mehr verbleibende Leben -WIN_LESS_DAMAGE={0} �7weniger besch�digt +WIN_LESS_DAMAGE={0} §7weniger beschädigt WIN_POINTS={0} hat mehr Punkte -WIN_POINTS_EQUAL=�7Gleicher Punktestand -WIN_TECHKO={0} �7ist Tech K.O. +WIN_POINTS_EQUAL=§7Gleicher Punktestand +WIN_TECHKO={0} §7ist Tech K.O. -- 2.39.2 From 47665f96136615876c13ce998045827ad108d386 Mon Sep 17 00:00:00 2001 From: Zeanon Date: Fri, 14 Jan 2022 17:11:25 +0100 Subject: [PATCH 04/21] can we pls do dmg? --- .../src/de/steamwar/fightsystem/event/Meteor.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index b9c8f0e..d8013a7 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -46,6 +46,7 @@ public class Meteor implements Listener { @EventHandler public void explode(ProjectileHitEvent event) { if (event.getEntity() instanceof Fireball) { + System.out.println("explode"); event.getEntity().getWorld().createExplosion(event.getEntity().getLocation(), current.explosionSize); } } @@ -130,11 +131,11 @@ public class Meteor implements Listener { private enum State { PRE(60, 80, 1, 0), - FIRST(40, 60, 3, 1), - SECOND(30, 40, 4, 2), - THIRD(20, 30, 4, 3), - FOURTH(10, 20, 5, 4), - LAST(5, 10, 0, 5); + FIRST(40, 60, 3, 4), + SECOND(30, 40, 4, 8), + THIRD(20, 30, 4, 12), + FOURTH(10, 20, 5, 16), + LAST(5, 10, 0, 20); State(int minTime, int maxTime, int switchAfter, int explosionSize) { -- 2.39.2 From 029f51945ea05f82a236ee28bb1a3bca775bc575 Mon Sep 17 00:00:00 2001 From: Zeanon Date: Fri, 14 Jan 2022 17:20:32 +0100 Subject: [PATCH 05/21] less dmg pls --- .../de/steamwar/fightsystem/event/Meteor.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index d8013a7..4ff55e8 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -1,6 +1,7 @@ package de.steamwar.fightsystem.event; import de.steamwar.fightsystem.Config; +import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.countdown.Countdown; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.states.StateDependent; @@ -46,8 +47,8 @@ public class Meteor implements Listener { @EventHandler public void explode(ProjectileHitEvent event) { if (event.getEntity() instanceof Fireball) { - System.out.println("explode"); event.getEntity().getWorld().createExplosion(event.getEntity().getLocation(), current.explosionSize); + Bukkit.getScheduler().runTaskTimer(FightSystem.getPlugin(), () -> event.getEntity().getWorld().createExplosion(event.getEntity().getLocation(), current.explosionSize), 0L, 1L); } } @@ -63,13 +64,13 @@ public class Meteor implements Listener { fireballRed.setDirection(new Vector(0, -1, 0)); fireballRed.setBounce(false); fireballRed.setIsIncendiary(false); - fireballRed.setYield(current.explosionSize); + fireballRed.setYield(0); Fireball fireballBlue = world.spawn(blueStart.toLocation(world), Fireball.class); fireballBlue.setDirection(new Vector(0, -1, 0)); fireballBlue.setBounce(false); fireballBlue.setIsIncendiary(false); - fireballBlue.setYield(current.explosionSize); + fireballBlue.setYield(0); } private int getStart(int regionSize) { @@ -131,11 +132,11 @@ public class Meteor implements Listener { private enum State { PRE(60, 80, 1, 0), - FIRST(40, 60, 3, 4), - SECOND(30, 40, 4, 8), - THIRD(20, 30, 4, 12), - FOURTH(10, 20, 5, 16), - LAST(5, 10, 0, 20); + FIRST(40, 60, 3, 1), + SECOND(30, 40, 4, 2), + THIRD(20, 30, 4, 3), + FOURTH(10, 20, 5, 4), + LAST(5, 10, 0, 5); State(int minTime, int maxTime, int switchAfter, int explosionSize) { -- 2.39.2 From fc934389ea8b788f15c2e7d6785e12559e6dd1bc Mon Sep 17 00:00:00 2001 From: Zeanon Date: Fri, 14 Jan 2022 17:25:59 +0100 Subject: [PATCH 06/21] less dmg pls --- .../src/de/steamwar/fightsystem/event/Meteor.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index 4ff55e8..0441763 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -25,6 +25,7 @@ public class Meteor implements Listener { public static final Random random = new Random(); + private final Vector vector = new Vector(0, -1, 0); private final World world = Bukkit.getWorlds().get(0); private final int xLength = Config.RedExtendRegion.getMaxX() - Config.RedExtendRegion.getMinX(); private final int zLength = Config.RedExtendRegion.getMaxZ() - Config.RedExtendRegion.getMinZ(); @@ -48,7 +49,7 @@ public class Meteor implements Listener { public void explode(ProjectileHitEvent event) { if (event.getEntity() instanceof Fireball) { event.getEntity().getWorld().createExplosion(event.getEntity().getLocation(), current.explosionSize); - Bukkit.getScheduler().runTaskTimer(FightSystem.getPlugin(), () -> event.getEntity().getWorld().createExplosion(event.getEntity().getLocation(), current.explosionSize), 0L, 1L); + Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), () -> event.getEntity().getWorld().createExplosion(event.getEntity().getLocation(), current.explosionSize), 1L); } } @@ -61,13 +62,13 @@ public class Meteor implements Listener { Meteor.Point blueStart = new Meteor.Point(Config.BlueExtendRegion.getMinX() + xOffset, Config.BlueExtendRegion.getMaxY() + yOffset, Config.BlueExtendRegion.getMinZ() + zOffset); Fireball fireballRed = world.spawn(redStart.toLocation(world), Fireball.class); - fireballRed.setDirection(new Vector(0, -1, 0)); + fireballRed.setDirection(vector); fireballRed.setBounce(false); fireballRed.setIsIncendiary(false); fireballRed.setYield(0); Fireball fireballBlue = world.spawn(blueStart.toLocation(world), Fireball.class); - fireballBlue.setDirection(new Vector(0, -1, 0)); + fireballBlue.setDirection(vector); fireballBlue.setBounce(false); fireballBlue.setIsIncendiary(false); fireballBlue.setYield(0); -- 2.39.2 From fa8d5ce99aad67ea29f12aba70977dcb7fec9ab0 Mon Sep 17 00:00:00 2001 From: Zeanon Date: Fri, 14 Jan 2022 17:32:24 +0100 Subject: [PATCH 07/21] less dmg pls --- .../src/de/steamwar/fightsystem/event/Meteor.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index 0441763..aab277b 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -133,11 +133,11 @@ public class Meteor implements Listener { private enum State { PRE(60, 80, 1, 0), - FIRST(40, 60, 3, 1), - SECOND(30, 40, 4, 2), - THIRD(20, 30, 4, 3), - FOURTH(10, 20, 5, 4), - LAST(5, 10, 0, 5); + FIRST(40, 60, 3, 2), + SECOND(30, 40, 4, 4), + THIRD(20, 30, 4, 6), + FOURTH(10, 20, 5, 8), + LAST(5, 10, 0, 10); State(int minTime, int maxTime, int switchAfter, int explosionSize) { -- 2.39.2 From ea833f979ead83cee1b26fa65e54fc0a2f0c8fd8 Mon Sep 17 00:00:00 2001 From: Zeanon Date: Sat, 15 Jan 2022 14:53:00 +0100 Subject: [PATCH 08/21] more meteors --- .../de/steamwar/fightsystem/event/Meteor.java | 59 ++++++++++++------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index aab277b..42aa29e 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -10,6 +10,7 @@ import de.steamwar.fightsystem.utils.Message; import de.steamwar.fightsystem.utils.SWSound; import de.steamwar.fightsystem.winconditions.Winconditions; import java.util.Random; +import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -18,6 +19,7 @@ import org.bukkit.entity.Fireball; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.scheduler.BukkitTask; import org.bukkit.util.Vector; @@ -32,6 +34,7 @@ public class Meteor implements Listener { private Meteor.State current = Meteor.State.PRE; private int currentDrops = 0; private Meteor.MeteorCountdown currentCountdown; + private BukkitTask currentDropping; public void startCountdown() { if (current == Meteor.State.PRE) { @@ -54,24 +57,32 @@ public class Meteor implements Listener { } public void drop() { - int xOffset = getStart(xLength); - int zOffset = getStart(zLength); - int yOffset = getHeightStart(); + final AtomicInteger amount = new AtomicInteger(current.minAmount + random.nextInt(current.maxAmount - current.minAmount)); - Meteor.Point redStart = new Meteor.Point(Config.RedExtendRegion.getMinX() + xOffset, Config.RedExtendRegion.getMaxY() + yOffset, Config.RedExtendRegion.getMaxZ() - zOffset); - Meteor.Point blueStart = new Meteor.Point(Config.BlueExtendRegion.getMinX() + xOffset, Config.BlueExtendRegion.getMaxY() + yOffset, Config.BlueExtendRegion.getMinZ() + zOffset); + currentDropping = Bukkit.getScheduler().runTaskTimer(FightSystem.getPlugin(), () -> { + int xOffset = getStart(xLength); + int zOffset = getStart(zLength); + int yOffset = getHeightStart(); - Fireball fireballRed = world.spawn(redStart.toLocation(world), Fireball.class); - fireballRed.setDirection(vector); - fireballRed.setBounce(false); - fireballRed.setIsIncendiary(false); - fireballRed.setYield(0); + Meteor.Point redStart = new Meteor.Point(Config.RedExtendRegion.getMinX() + xOffset, Config.RedExtendRegion.getMaxY() + yOffset, Config.RedExtendRegion.getMaxZ() - zOffset); + Meteor.Point blueStart = new Meteor.Point(Config.BlueExtendRegion.getMinX() + xOffset, Config.BlueExtendRegion.getMaxY() + yOffset, Config.BlueExtendRegion.getMinZ() + zOffset); - Fireball fireballBlue = world.spawn(blueStart.toLocation(world), Fireball.class); - fireballBlue.setDirection(vector); - fireballBlue.setBounce(false); - fireballBlue.setIsIncendiary(false); - fireballBlue.setYield(0); + Fireball fireballRed = world.spawn(redStart.toLocation(world), Fireball.class); + fireballRed.setDirection(vector); + fireballRed.setBounce(false); + fireballRed.setIsIncendiary(false); + fireballRed.setYield(0); + + Fireball fireballBlue = world.spawn(blueStart.toLocation(world), Fireball.class); + fireballBlue.setDirection(vector); + fireballBlue.setBounce(false); + fireballBlue.setIsIncendiary(false); + fireballBlue.setYield(0); + + if (amount.decrementAndGet() <= 0) { + currentDropping.cancel(); + } + }, 0L, 4L); } private int getStart(int regionSize) { @@ -132,25 +143,29 @@ public class Meteor implements Listener { private enum State { - PRE(60, 80, 1, 0), - FIRST(40, 60, 3, 2), - SECOND(30, 40, 4, 4), - THIRD(20, 30, 4, 6), - FOURTH(10, 20, 5, 8), - LAST(5, 10, 0, 10); + PRE(60, 80, 1, 0, 0, 0), + FIRST(40, 60, 3, 2, 1, 3), + SECOND(30, 40, 4, 4, 2, 5), + THIRD(20, 30, 4, 6, 3, 7), + FOURTH(10, 20, 5, 8, 5, 10), + LAST(5, 10, 0, 10, 7, 15); - State(int minTime, int maxTime, int switchAfter, int explosionSize) { + State(int minTime, int maxTime, int switchAfter, int explosionSize, int minAmount, int maxAmount) { this.MIN_TIME = minTime; this.MAX_TIME = maxTime; this.SWITCH_AFTER = switchAfter; this.explosionSize = explosionSize; + this.minAmount = minAmount; + this.maxAmount = maxAmount; } private final int MIN_TIME; //NOSONAR private final int MAX_TIME; //NOSONAR private final int SWITCH_AFTER; //NOSONAR private final int explosionSize; //NOSONAR + private final int minAmount; + private final int maxAmount; public Meteor.State getNext() { -- 2.39.2 From 37a1f728f50aca9a7dd3e7b377d98ccaf3f12fd0 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sat, 15 Jan 2022 14:59:52 +0100 Subject: [PATCH 09/21] Fix HellsBells messages --- .../de/steamwar/fightsystem/FightSystem.properties | 10 ++++++++++ .../de/steamwar/fightsystem/event/HellsBells.java | 14 ++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties index ba892b1..7a1e4d3 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties @@ -203,6 +203,16 @@ BAR_WATER={0} §8Wasser # Winconditions HELLS_BELLS_COUNTDOWN=bis die Bomben fallen +HELLS_BELLS_START_1=§c!!Achtung!! Bomber im Anflug, noch ca. eine Minute bis zur Ankunft. +HELLS_BELLS_START_2=§cBomber im Anflug, ca. eine Minute bis zur Ankunft. +HELLS_BELLS_START_3=§cBomber auf dem Radar gesichtet, geschätzte Ankunftszeit: eine Minute. +HELLS_BELLS_START_4=§cUnbekanntes Flugobjekt gesichtet, trifft in ca. einer Minute ein. +HELLS_BELLS_START_5=§cFlugobjekt gesichtet. Ankunft in ca. einer Minute. +HELLS_BELLS_START_6=§cBomber erschienen, Ankunft ca. eine Minute. +HELLS_BELLS_SWAP_1=§aDie Bomben fallen nun schneller. +HELLS_BELLS_SWAP_2=§aMehr Bomber im Anflug. +HELLS_BELLS_SWAP_3=§aZusätzliche Bomber gesichtet. +HELLS_BELLS_SWAP_4=§aDas Bombardement scheint sich zu erhöhen. METEOR_COUNTDOWN=bis es Meteore regnet TECHKO_COUNTDOWN=bis {0} §7einen Schuss abgegeben haben muss diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java index fbce5a5..013e314 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java @@ -22,6 +22,7 @@ package de.steamwar.fightsystem.event; import de.steamwar.fightsystem.Config; import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.countdown.Countdown; +import de.steamwar.fightsystem.record.GlobalRecorder; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.states.StateDependent; import de.steamwar.fightsystem.utils.Message; @@ -33,6 +34,8 @@ import org.bukkit.World; import org.bukkit.entity.EntityType; import org.bukkit.scheduler.BukkitTask; +import java.util.Arrays; +import java.util.List; import java.util.Random; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; @@ -50,10 +53,21 @@ public class HellsBells { private HellsBellsCountdown currentCountdown; private BukkitTask currentDropping; + private final List startMessages = Arrays.asList("HELLS_BELLS_START_1", "HELLS_BELLS_START_2", + "HELLS_BELLS_START_3", "HELLS_BELLS_START_4", "HELLS_BELLS_START_5", "HELLS_BELLS_START_6"); + private final List stateSwapMessages = Arrays.asList("HELLS_BELLS_SWAP_1", "HELLS_BELLS_SWAP_2", + "HELLS_BELLS_SWAP_3", "HELLS_BELLS_SWAP_4"); + public void startCountdown() { if (current == State.PRE) { + String startMessage = startMessages.get(random.nextInt(startMessages.size())); + GlobalRecorder.getInstance().system(startMessage); + FightSystem.getMessage().broadcast(startMessage); current = current.getNext(); } else if (current != State.LAST && currentDrops >= current.SWITCH_AFTER) { + String stateSwapMessage = stateSwapMessages.get(random.nextInt(stateSwapMessages.size())); + GlobalRecorder.getInstance().system(stateSwapMessage); + FightSystem.getMessage().broadcast(stateSwapMessage); currentDrops = 0; } -- 2.39.2 From f2b86c9b1d0b0198f5042bec6634d035ef14253e Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sat, 15 Jan 2022 16:06:43 +0100 Subject: [PATCH 10/21] Fix HellBells and Meteor --- .../fightsystem/event/HellsBells.java | 1 + .../de/steamwar/fightsystem/event/Meteor.java | 31 ++++++++++++++----- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java index 013e314..a089262 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java @@ -69,6 +69,7 @@ public class HellsBells { GlobalRecorder.getInstance().system(stateSwapMessage); FightSystem.getMessage().broadcast(stateSwapMessage); currentDrops = 0; + current = current.getNext(); } currentDrops++; diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index 42aa29e..2e3245f 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -15,7 +15,9 @@ import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.entity.EntityType; import org.bukkit.entity.Fireball; +import org.bukkit.entity.TNTPrimed; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.ProjectileHitEvent; @@ -38,9 +40,16 @@ public class Meteor implements Listener { public void startCountdown() { if (current == Meteor.State.PRE) { + Bukkit.getOnlinePlayers().forEach(player -> { + player.sendMessage("Starting"); + }); current = current.getNext(); } else if (current != Meteor.State.LAST && currentDrops >= current.SWITCH_AFTER) { + Bukkit.getOnlinePlayers().forEach(player -> { + player.sendMessage("Faster"); + }); currentDrops = 0; + current = current.getNext(); } currentDrops++; @@ -51,8 +60,10 @@ public class Meteor implements Listener { @EventHandler public void explode(ProjectileHitEvent event) { if (event.getEntity() instanceof Fireball) { - event.getEntity().getWorld().createExplosion(event.getEntity().getLocation(), current.explosionSize); - Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), () -> event.getEntity().getWorld().createExplosion(event.getEntity().getLocation(), current.explosionSize), 1L); + TNTPrimed tnt = world.spawn(event.getEntity().getLocation(), TNTPrimed.class); + tnt.setVelocity(new Vector(0, 0, 0)); + tnt.setFuseTicks(0); + tnt.setYield(current.explosionSize); } } @@ -67,6 +78,9 @@ public class Meteor implements Listener { Meteor.Point redStart = new Meteor.Point(Config.RedExtendRegion.getMinX() + xOffset, Config.RedExtendRegion.getMaxY() + yOffset, Config.RedExtendRegion.getMaxZ() - zOffset); Meteor.Point blueStart = new Meteor.Point(Config.BlueExtendRegion.getMinX() + xOffset, Config.BlueExtendRegion.getMaxY() + yOffset, Config.BlueExtendRegion.getMinZ() + zOffset); + vector.setX(random.nextDouble() - 0.5); + vector.setZ(random.nextDouble() - 0.5); + Fireball fireballRed = world.spawn(redStart.toLocation(world), Fireball.class); fireballRed.setDirection(vector); fireballRed.setBounce(false); @@ -74,6 +88,7 @@ public class Meteor implements Listener { fireballRed.setYield(0); Fireball fireballBlue = world.spawn(blueStart.toLocation(world), Fireball.class); + vector.setZ(vector.getZ() * -1); fireballBlue.setDirection(vector); fireballBlue.setBounce(false); fireballBlue.setIsIncendiary(false); @@ -143,12 +158,12 @@ public class Meteor implements Listener { private enum State { - PRE(60, 80, 1, 0, 0, 0), - FIRST(40, 60, 3, 2, 1, 3), - SECOND(30, 40, 4, 4, 2, 5), - THIRD(20, 30, 4, 6, 3, 7), - FOURTH(10, 20, 5, 8, 5, 10), - LAST(5, 10, 0, 10, 7, 15); + PRE(30, 40, 1, 0, 0, 0), + FIRST(25, 35, 3, 2, 2, 4), + SECOND(20, 30, 4, 4, 3, 6), + THIRD(15, 25, 4, 6, 4, 8), + FOURTH(10, 20, 5, 8, 6, 11), + LAST(5, 10, 0, 10, 8, 16); State(int minTime, int maxTime, int switchAfter, int explosionSize, int minAmount, int maxAmount) { -- 2.39.2 From 3440ca9d7d5ca6fcd810c2b9dad3dd635cdb880b Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sat, 15 Jan 2022 16:08:42 +0100 Subject: [PATCH 11/21] Fix FightSystem.properties --- .../fightsystem/FightSystem.properties | 264 +++++++++--------- 1 file changed, 132 insertions(+), 132 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties index 7a1e4d3..9c92a2c 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties @@ -17,188 +17,188 @@ # along with this program. If not, see . # -PREFIX=§eArena§8» +PREFIX=§eArena§8» # Commands -NO_TEAM=§cDu bist in keinem Team -FIGHT_ALREADY_STARTED=§cDer Kampf hat bereits begonnen -NOT_LEADER=§cDu bist kein Leader -PLAYER_UNAVAILABLE=§cDer Spieler ist nicht in der Arena +NO_TEAM=§cDu bist in keinem Team +FIGHT_ALREADY_STARTED=§cDer Kampf hat bereits begonnen +NOT_LEADER=§cDu bist kein Leader +PLAYER_UNAVAILABLE=§cDer Spieler ist nicht in der Arena -NO_INVITATION=§cDu wurdest von keinem Team eingeladen -INVITATION_DECLINED=§cEinladung abgelehnt -INVITATION_DECLINED_TEAM=§e{0} §chat die Einladung abgelehnt -PLAYER_IN_TEAM=§e{0} §cist bereits in einem Team -ALREADY_INVITED=§e{0} §cwurde bereits eingeladen -INVITATION_SENT=§e{0} §7eingeladen +NO_INVITATION=§cDu wurdest von keinem Team eingeladen +INVITATION_DECLINED=§cEinladung abgelehnt +INVITATION_DECLINED_TEAM=§e{0} §chat die Einladung abgelehnt +PLAYER_IN_TEAM=§e{0} §cist bereits in einem Team +ALREADY_INVITED=§e{0} §cwurde bereits eingeladen +INVITATION_SENT=§e{0} §7eingeladen -NOT_IN_TEAM=§e{0} §cist nicht in deinem Team +NOT_IN_TEAM=§e{0} §cist nicht in deinem Team -KIT_UNAVAILABLE=§cDieses Kit gibt es nicht -KIT_CHOSEN=§7Kit §e{0} §7gewählt +KIT_UNAVAILABLE=§cDieses Kit gibt es nicht +KIT_CHOSEN=§7Kit §e{0} §7gewählt -GAMEMODE_NOT_ALLOWED=§cSpielmodusänderung verboten -GAMEMODE_UNKNOWN=§cUnbekannter Spielmodus {0} -GAMEMODE_HELP=§8/§7gm §8[§eSpielmodus§8] +GAMEMODE_NOT_ALLOWED=§cSpielmodusänderung verboten +GAMEMODE_UNKNOWN=§cUnbekannter Spielmodus {0} +GAMEMODE_HELP=§8/§7gm §8[§eSpielmodus§8] -INVITE_HELP=§8/§einvite §8[§eSpieler§8] +INVITE_HELP=§8/§einvite §8[§eSpieler§8] -LEADER_FULL=§cAlle Teams haben bereits einen Leader -ALREADY_IN_TEAM=§cDu bist bereits in einem Team +LEADER_FULL=§cAlle Teams haben bereits einen Leader +ALREADY_IN_TEAM=§cDu bist bereits in einem Team -LOCKSCHEM_HELP=§8/§7lockschem §8[§eTeam§8] -UNKNOWN_TEAM=§cDieses Team existiert nicht -LOCKSCHEM_LOCKED=§7Schematic gesperrt -LOCKSCHEM_LOCKED_BY=§cDie Schematic wurde von §e{0} §cgesperrt +LOCKSCHEM_HELP=§8/§7lockschem §8[§eTeam§8] +UNKNOWN_TEAM=§cDieses Team existiert nicht +LOCKSCHEM_LOCKED=§7Schematic gesperrt +LOCKSCHEM_LOCKED_BY=§cDie Schematic wurde von §e{0} §cgesperrt -REMOVE_HELP=§8/§eremove §8[§eSpieler§8] +REMOVE_HELP=§8/§eremove §8[§eSpieler§8] -REPLAY_LOCKED=§7Replaywiedergabe für 1 Monat gesperrt +REPLAY_LOCKED=§7Replaywiedergabe für 1 Monat gesperrt -NOT_FIGHTLEADER=§cDu bist nicht Kampfleiter -WIN_HELP=§8/§7win §8[§eTeam §8or §etie§8] +NOT_FIGHTLEADER=§cDu bist nicht Kampfleiter +WIN_HELP=§8/§7win §8[§eTeam §8or §etie§8] # GUI INVITATION_TITLE=Einladung von {0} -INVITATION_ACCEPT=§aAnnehmen -INVITATION_DECLINE=§cAblehnen -INVITATION_CHAT_ACCEPT=§8/§aaccept§8, §7um die Einladung §aanzunehmen -INVITATION_CHAT_DECLINE=§8/§cdecline§8, §7um die Einladung §cabzulehnen +INVITATION_ACCEPT=§aAnnehmen +INVITATION_DECLINE=§cAblehnen +INVITATION_CHAT_ACCEPT=§8/§aaccept§8, §7um die Einladung §aanzunehmen +INVITATION_CHAT_DECLINE=§8/§cdecline§8, §7um die Einladung §cabzulehnen STATE_TITLE=Kampfstatus -STATE_PRE_LEADER_SETUP=§7Teamleaderwartephase -STATE_PRE_SCHEM_SETUP=§7Schemauswahlphase -STATE_POST_SCHEM_SETUP=§7Vorbereitungsphase -STATE_PRE_RUNNING=§eKitausgabe -STATE_RUNNING=§eKampfphase -STATE_SPECTATE_WIN=§7Sieg {0} -STATE_SPECTATE_TIE=§7Unentschieden +STATE_PRE_LEADER_SETUP=§7Teamleaderwartephase +STATE_PRE_SCHEM_SETUP=§7Schemauswahlphase +STATE_POST_SCHEM_SETUP=§7Vorbereitungsphase +STATE_PRE_RUNNING=§eKitausgabe +STATE_RUNNING=§eKampfphase +STATE_SPECTATE_WIN=§7Sieg {0} +STATE_SPECTATE_TIE=§7Unentschieden INVITE_TITLE=Spieler einladen REMOVE_TITLE=Spieler rauswerfen KIT_SELECTION_TITLE=Kitauswahl -KIT_NO_KITS=§cKeine Kits gefunden -KIT_CREATE=§eNeues Kit +KIT_NO_KITS=§cKeine Kits gefunden +KIT_CREATE=§eNeues Kit KITNAME_TITLE=Kitname eingeben -KITNAME_IN_USE=§cDieser Kitname wird bereits genutzt -KIT_SEARCH=§eSuchen +KITNAME_IN_USE=§cDieser Kitname wird bereits genutzt +KIT_SEARCH=§eSuchen KITSEARCH_TITLE=Nach Kit suchen -SCHEM_NO_ENEMY=§cKeine Schematicwahl ohne Gegner +SCHEM_NO_ENEMY=§cKeine Schematicwahl ohne Gegner SCHEM_TITLE={0}-Auswahl -SCHEM_PUBLIC=§eÖffentliches {0} -SCHEM_PRIVATE=§ePrivates {0} -SCHEM_NO_PRIVATE=§7Kein privates {0} vorhanden -SCHEM_PRIVATE_FORBIDDEN=§7Kein privates {0} erlaubt +SCHEM_PUBLIC=§eÖffentliches {0} +SCHEM_PRIVATE=§ePrivates {0} +SCHEM_NO_PRIVATE=§7Kein privates {0} vorhanden +SCHEM_PRIVATE_FORBIDDEN=§7Kein privates {0} erlaubt # Countdowns -COUNTDOWN_MINUTES=§e{0} §7Minuten {1} -COUNTDOWN_SECONDS=§e{0} §7Sekunden {1} -COUNTDOWN_SECOND=§eEine §7Sekunde {1} +COUNTDOWN_MINUTES=§e{0} §7Minuten {1} +COUNTDOWN_SECONDS=§e{0} §7Sekunden {1} +COUNTDOWN_SECOND=§eEine §7Sekunde {1} ENTERN_COUNTDOWN=bis Entern erlaubt ist -ENTERN_ALLOWED=§eEntern §7ist nun erlaubt +ENTERN_ALLOWED=§eEntern §7ist nun erlaubt SHUTDOWN_COUNTDOWN=bis der Server gestoppt wird -PRE_SCHEM_COUNTDOWN=bis eine Public-Schematic gewählt wird +PRE_SCHEM_COUNTDOWN=bis eine Public-Schematic gewählt wird POST_SCHEM_COUNTDOWN=bis die Kits verteilt werden PRE_RUNNING_COUNTDOWN=bis die Arena freigegeben ist RUNNING_COUNTDOWN=bis der Kampf vorbei ist -SPECTATE_COUNTDOWN=bis die Arena zurückgesetzt wird +SPECTATE_COUNTDOWN=bis die Arena zurückgesetzt wird # Fight -SCHEMATIC_UNLOADABLE=§cSchematic konnte nicht geladen werden -SCHEMATIC_CHOSEN=§7{0} §e{1} §7gewählt -TEAM_READY=§aTeam bereit -TEAM_NOT_READY=§c§mTeam bereit -SKIP_READY=§aBeschleunigung zum nächsten Event -SKIP_NOT_READY=§c§mBeschleunigung zum nächsten Event -TEAM_CHAT={0}{1}§8» {0}{2} -CHOOSE_KIT=§eKit wählen -RESPAWN=§eRespawn -INVITE_PLAYERS=§eSpieler einladen -REMOVE_PLAYERS=§cSpieler rauswerfen -CHOOSE_SCHEMATIC=§e{0} wählen -SCHEMATIC_REQUIRED=§cZuerst muss eine Schematic gewählt sein +SCHEMATIC_UNLOADABLE=§cSchematic konnte nicht geladen werden +SCHEMATIC_CHOSEN=§7{0} §e{1} §7gewählt +TEAM_READY=§aTeam bereit +TEAM_NOT_READY=§c§mTeam bereit +SKIP_READY=§aBeschleunigung zum nächsten Event +SKIP_NOT_READY=§c§mBeschleunigung zum nächsten Event +TEAM_CHAT={0}{1}§8» {0}{2} +CHOOSE_KIT=§eKit wählen +RESPAWN=§eRespawn +INVITE_PLAYERS=§eSpieler einladen +REMOVE_PLAYERS=§cSpieler rauswerfen +CHOOSE_SCHEMATIC=§e{0} wählen +SCHEMATIC_REQUIRED=§cZuerst muss eine Schematic gewählt sein -KIT_PREVIEW_EDIT=§7Kit bearbeiten -KIT_PREVIEW_CHOOSE=§aKit wählen -KIT_PREVIEW_BACK=§cZurück -KIT_PREVIEW_DELETE=§cKit löschen -KIT_DELETION_CONFIRMATION=Kit wirklich löschen? -KIT_DELETION_ABORT=§cAbbrechen -KIT_DELETION_DELETE=§aLöschen +KIT_PREVIEW_EDIT=§7Kit bearbeiten +KIT_PREVIEW_CHOOSE=§aKit wählen +KIT_PREVIEW_BACK=§cZurück +KIT_PREVIEW_DELETE=§cKit löschen +KIT_DELETION_CONFIRMATION=Kit wirklich löschen? +KIT_DELETION_ABORT=§cAbbrechen +KIT_DELETION_DELETE=§aLöschen # Listener -NO_ARENA_LEAVING=§cDu darfst die Arena nicht verlassen -CHECK_JOIN_DENIED=§cAuf diesem Server wird momentan eine Schematic geprüft! -CHECK_COMMAND_LOCKED=§cDieser Befehl ist beim Prüfen gesperrt! Admin wird benachrichtigt. -NO_BLOCK_BREAK=§cDu darfst hier derzeit keine Blöcke abbauen -NO_BLOCK_PLACE=§cDu darfst hier derzeit keine Blöcke setzen -NO_BOW_USAGE=§cDu darfst den Bogen erst nach Kampfbeginn nutzen -NO_PARTICIPANT=§cDu bist kein Kampfteilnehmer -NO_FRIENDLY_FIRE=§cDu darfst deinen Teamkollegen keinen Schaden zufügen -NO_TNT_PLACE=§cDu darfst kein TNT setzen -NO_TELEPORT=§cDu darfst diese Teleportfunktion nicht benutzen -OPEN_INVENTORY_TO_CUSTOMIZE=§eInventar zum Anpassen des Kits öffnen -RESOURCEPACK_REQUIRED=§cAuf Eventserver kann nur mit dem SteamWar-Resourcepack beigetreten werden\n§cDa du abgelehnt hast, musst du nun in der Serverliste erst einmal wieder Ressourcenpakete von SteamWar aktivieren -NO_ENTERN=§cDu darfst nicht entern -NO_TEAMAREA=§cDu darfst nicht zu den Teams -TEST_BECOME_LEADER=§7Werde zum Teamleader mit §8/§eleader -PREPARE_SCHEM_DELETED=§cAnscheinend wurde die auszufahrende Schematic gelöscht, Einsenden wird abgebrochen. -PREPARE_ACTIVE_PISTON=§cIm Teambereich wurden sich noch bewegende Pistons gefunden, Einsenden wird abgebrochen. -PREPARE_FAILED_SAVING=§cDie Schematic konnte nicht gespeichert werden, Einsenden wird abgebrochen. -PREPARE_SENT_IN=§aDie Schematic wird nun zeitnah von einem Teammitglied überprüft -PARTICIPANT_CHAT={0} {1}§8» §7{2} -FIGHTLEADER_CHAT=§e{0}§8» §e{1} -SPECTATOR_CHAT=§7{0}§8» §7{1} +NO_ARENA_LEAVING=§cDu darfst die Arena nicht verlassen +CHECK_JOIN_DENIED=§cAuf diesem Server wird momentan eine Schematic geprüft! +CHECK_COMMAND_LOCKED=§cDieser Befehl ist beim Prüfen gesperrt! Admin wird benachrichtigt. +NO_BLOCK_BREAK=§cDu darfst hier derzeit keine Blöcke abbauen +NO_BLOCK_PLACE=§cDu darfst hier derzeit keine Blöcke setzen +NO_BOW_USAGE=§cDu darfst den Bogen erst nach Kampfbeginn nutzen +NO_PARTICIPANT=§cDu bist kein Kampfteilnehmer +NO_FRIENDLY_FIRE=§cDu darfst deinen Teamkollegen keinen Schaden zufügen +NO_TNT_PLACE=§cDu darfst kein TNT setzen +NO_TELEPORT=§cDu darfst diese Teleportfunktion nicht benutzen +OPEN_INVENTORY_TO_CUSTOMIZE=§eInventar zum Anpassen des Kits öffnen +RESOURCEPACK_REQUIRED=§cAuf Eventserver kann nur mit dem SteamWar-Resourcepack beigetreten werden\n§cDa du abgelehnt hast, musst du nun in der Serverliste erst einmal wieder Ressourcenpakete von SteamWar aktivieren +NO_ENTERN=§cDu darfst nicht entern +NO_TEAMAREA=§cDu darfst nicht zu den Teams +TEST_BECOME_LEADER=§7Werde zum Teamleader mit §8/§eleader +PREPARE_SCHEM_DELETED=§cAnscheinend wurde die auszufahrende Schematic gelöscht, Einsenden wird abgebrochen. +PREPARE_ACTIVE_PISTON=§cIm Teambereich wurden sich noch bewegende Pistons gefunden, Einsenden wird abgebrochen. +PREPARE_FAILED_SAVING=§cDie Schematic konnte nicht gespeichert werden, Einsenden wird abgebrochen. +PREPARE_SENT_IN=§aDie Schematic wird nun zeitnah von einem Teammitglied überprüft +PARTICIPANT_CHAT={0} {1}§8» §7{2} +FIGHTLEADER_CHAT=§e{0}§8» §e{1} +SPECTATOR_CHAT=§7{0}§8» §7{1} # Replay -REPLAY_ENDS=§cReplay beendet +REPLAY_ENDS=§cReplay beendet OLD_STRING={0} # States -COMMAND_CURRENTLY_UNAVAILABLE=§cDieser Befehl ist zu diesem Kampfzeitpunkt nicht verfügbar +COMMAND_CURRENTLY_UNAVAILABLE=§cDieser Befehl ist zu diesem Kampfzeitpunkt nicht verfügbar # Utils -TPS_WARNING=§c{0} §7TPS +TPS_WARNING=§c{0} §7TPS -UI_PRE_RUNNING=§7Kits verteilt -UI_RUNNING=§aArena freigegeben -UI_SKIP=§7Sprung zum nächsten Ereignis -UI_PLAYER_JOINS=§a§l» {0}{1} -UI_PLAYER_LEAVES=§c§l« {0}{1} -UI_LEADER_JOINS=§a§l» {0}Leader {1} -UI_PLAYER_DEATH={0}{1} §7ist gestorben -UI_PLAYER_LEAVE={0}{1} §7hat den Kampf verlassen -UI_ELO=§7ELO von {0}{1}§8: §7{2}§8Ȥe{3} +UI_PRE_RUNNING=§7Kits verteilt +UI_RUNNING=§aArena freigegeben +UI_SKIP=§7Sprung zum nächsten Ereignis +UI_PLAYER_JOINS=§a§l» {0}{1} +UI_PLAYER_LEAVES=§c§l« {0}{1} +UI_LEADER_JOINS=§a§l» {0}Leader {1} +UI_PLAYER_DEATH={0}{1} §7ist gestorben +UI_PLAYER_LEAVE={0}{1} §7hat den Kampf verlassen +UI_ELO=§7ELO von {0}{1}§8: §7{2}§8»§e{3} UI_WIN={0}Sieg {1} -UI_DRAW=§7Unentschieden +UI_DRAW=§7Unentschieden -BAR_PRE_LEADER=§7Warten auf Teamleader -BAR_PRE_SCHEM={1} §7Schemauswahl {0} {2} -BAR_PREPARE={1} {3} §7Vorbereitung {0} {4} {2} -BAR_PRE_RUNNING={1} {3} §7Kampfbeginn in {0} {4} {2} +BAR_PRE_LEADER=§7Warten auf Teamleader +BAR_PRE_SCHEM={1} §7Schemauswahl {0} {2} +BAR_PREPARE={1} {3} §7Vorbereitung {0} {4} {2} +BAR_PRE_RUNNING={1} {3} §7Kampfbeginn in {0} {4} {2} BAR_RUNNING0={1} {3} {0} {4} {2} BAR_RUNNING1={1} {3} {5} {0} {6} {4} {2} BAR_RUNNING2={1} {3} {5} {7} {0} {6} {8} {4} {2} BAR_RUNNING3={1} {3} {5} {7} {9} {0} {6} {8} {10} {4} {2} -BAR_SPECTATE={1} §7Kampf vorbei {0} {2} -BAR_TIE={1} §7Unentschieden {0} {2} -BAR_WIN={1} §7Sieg {3} {0} {2} -BAR_POINTS={0} §8Punkte -BAR_PERCENT={0}§8% -BAR_CANNONS={0} §8Kanonen -BAR_WATER={0} §8Wasser +BAR_SPECTATE={1} §7Kampf vorbei {0} {2} +BAR_TIE={1} §7Unentschieden {0} {2} +BAR_WIN={1} §7Sieg {3} {0} {2} +BAR_POINTS={0} §8Punkte +BAR_PERCENT={0}§8% +BAR_CANNONS={0} §8Kanonen +BAR_WATER={0} §8Wasser # Winconditions @@ -214,18 +214,18 @@ HELLS_BELLS_SWAP_2= HELLS_BELLS_SWAP_3=§aZusätzliche Bomber gesichtet. HELLS_BELLS_SWAP_4=§aDas Bombardement scheint sich zu erhöhen. METEOR_COUNTDOWN=bis es Meteore regnet -TECHKO_COUNTDOWN=bis {0} §7einen Schuss abgegeben haben muss +TECHKO_COUNTDOWN=bis {0} §7einen Schuss abgegeben haben muss -WIN_FIGHTLEADER=§7Kampfleiterentscheidung -WIN_PERCENT={0} §7zu beschädigt -WIN_OFFLINE_BOTH=§7Beide Teams offline -WIN_OFFLINE={0} §7offline -WIN_RANKED_LEFT={0} §7hat den Kampf verlassen -WIN_ALL_DEAD={0}Alle Spieler kampfunfähig -WIN_LEADER_DEAD={0} kampfunfähig -WIN_TIME_OVER=§7Zeit abgelaufen +WIN_FIGHTLEADER=§7Kampfleiterentscheidung +WIN_PERCENT={0} §7zu beschädigt +WIN_OFFLINE_BOTH=§7Beide Teams offline +WIN_OFFLINE={0} §7offline +WIN_RANKED_LEFT={0} §7hat den Kampf verlassen +WIN_ALL_DEAD={0}Alle Spieler kampfunfähig +WIN_LEADER_DEAD={0} kampfunfähig +WIN_TIME_OVER=§7Zeit abgelaufen WIN_MORE_HEALTH={0}Mehr verbleibende Leben -WIN_LESS_DAMAGE={0} §7weniger beschädigt +WIN_LESS_DAMAGE={0} §7weniger beschädigt WIN_POINTS={0} hat mehr Punkte -WIN_POINTS_EQUAL=§7Gleicher Punktestand -WIN_TECHKO={0} §7ist Tech K.O. +WIN_POINTS_EQUAL=§7Gleicher Punktestand +WIN_TECHKO={0} §7ist Tech K.O. -- 2.39.2 From 545c5a4df0b250d217b31335a03cdc3a0d5fd17e Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sat, 15 Jan 2022 16:36:41 +0100 Subject: [PATCH 12/21] Update Meteor --- .../de/steamwar/fightsystem/event/Meteor.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index 2e3245f..c04d630 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -9,13 +9,9 @@ import de.steamwar.fightsystem.states.StateDependentListener; import de.steamwar.fightsystem.utils.Message; import de.steamwar.fightsystem.utils.SWSound; import de.steamwar.fightsystem.winconditions.Winconditions; -import java.util.Random; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; -import org.bukkit.entity.EntityType; import org.bukkit.entity.Fireball; import org.bukkit.entity.TNTPrimed; import org.bukkit.event.EventHandler; @@ -24,6 +20,10 @@ import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.scheduler.BukkitTask; import org.bukkit.util.Vector; +import java.util.Random; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.logging.Level; + public class Meteor implements Listener { @@ -36,6 +36,7 @@ public class Meteor implements Listener { private Meteor.State current = Meteor.State.PRE; private int currentDrops = 0; private Meteor.MeteorCountdown currentCountdown; + private final AtomicInteger amount = new AtomicInteger(0); private BukkitTask currentDropping; public void startCountdown() { @@ -68,7 +69,12 @@ public class Meteor implements Listener { } public void drop() { - final AtomicInteger amount = new AtomicInteger(current.minAmount + random.nextInt(current.maxAmount - current.minAmount)); + int randomAmount = current.minAmount + random.nextInt(current.maxAmount - current.minAmount); + if (amount.get() > 0) { + amount.set(amount.get() + randomAmount); + return; + } + amount.set(randomAmount); currentDropping = Bukkit.getScheduler().runTaskTimer(FightSystem.getPlugin(), () -> { int xOffset = getStart(xLength); @@ -158,12 +164,12 @@ public class Meteor implements Listener { private enum State { - PRE(30, 40, 1, 0, 0, 0), - FIRST(25, 35, 3, 2, 2, 4), - SECOND(20, 30, 4, 4, 3, 6), - THIRD(15, 25, 4, 6, 4, 8), - FOURTH(10, 20, 5, 8, 6, 11), - LAST(5, 10, 0, 10, 8, 16); + PRE(60, 80, 1, 0, 0, 0), + FIRST(25, 35, 6, 2, 2, 4), + SECOND(20, 30, 7, 4, 3, 6), + THIRD(15, 25, 7, 4, 4, 8), + FOURTH(10, 20, 8, 6, 6, 11), + LAST(5, 10, 0, 6, 8, 16); State(int minTime, int maxTime, int switchAfter, int explosionSize, int minAmount, int maxAmount) { -- 2.39.2 From 15a1caf8b38c51f534d99a2ac57596ae88f262f8 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sat, 15 Jan 2022 16:41:44 +0100 Subject: [PATCH 13/21] Update Meteor --- .../src/de/steamwar/fightsystem/event/Meteor.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index c04d630..0775fc6 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -64,7 +64,8 @@ public class Meteor implements Listener { TNTPrimed tnt = world.spawn(event.getEntity().getLocation(), TNTPrimed.class); tnt.setVelocity(new Vector(0, 0, 0)); tnt.setFuseTicks(0); - tnt.setYield(current.explosionSize); + tnt.setYield(((Fireball) event.getEntity()).getYield()); + event.getEntity().remove(); } } @@ -91,14 +92,14 @@ public class Meteor implements Listener { fireballRed.setDirection(vector); fireballRed.setBounce(false); fireballRed.setIsIncendiary(false); - fireballRed.setYield(0); + fireballRed.setYield(current.explosionSize); Fireball fireballBlue = world.spawn(blueStart.toLocation(world), Fireball.class); vector.setZ(vector.getZ() * -1); fireballBlue.setDirection(vector); fireballBlue.setBounce(false); fireballBlue.setIsIncendiary(false); - fireballBlue.setYield(0); + fireballBlue.setYield(current.explosionSize); if (amount.decrementAndGet() <= 0) { currentDropping.cancel(); -- 2.39.2 From 1e7e94d359f954337481827570748dc2493d8d4a Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 20 Jan 2022 08:19:46 +0100 Subject: [PATCH 14/21] Extract Point from HellsBells and Meteor --- .../fightsystem/event/HellsBells.java | 17 ------- .../de/steamwar/fightsystem/event/Meteor.java | 41 ++++++++--------- .../de/steamwar/fightsystem/event/Point.java | 44 +++++++++++++++++++ 3 files changed, 65 insertions(+), 37 deletions(-) create mode 100644 FightSystem_Core/src/de/steamwar/fightsystem/event/Point.java diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java index a089262..dbe75b4 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java @@ -152,23 +152,6 @@ public class HellsBells { } } - private static class Point { - - private final int x; - private final int y; - private final int z; - - public Point(int x, int y, int z) { - this.x = x; - this.y = y; - this.z = z; - } - - public Location addAndToLocation(World world, int x, int y, int z) { - return new Location(world, this.x + x, this.y + y, this.z + z); //NOSONAR - } - } - private enum State { PRE(60, 80, 1), diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index 0775fc6..b4b9e96 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -1,3 +1,22 @@ +/* + 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.fightsystem.event; import de.steamwar.fightsystem.Config; @@ -10,7 +29,6 @@ import de.steamwar.fightsystem.utils.Message; import de.steamwar.fightsystem.utils.SWSound; import de.steamwar.fightsystem.winconditions.Winconditions; import org.bukkit.Bukkit; -import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Fireball; import org.bukkit.entity.TNTPrimed; @@ -82,8 +100,8 @@ public class Meteor implements Listener { int zOffset = getStart(zLength); int yOffset = getHeightStart(); - Meteor.Point redStart = new Meteor.Point(Config.RedExtendRegion.getMinX() + xOffset, Config.RedExtendRegion.getMaxY() + yOffset, Config.RedExtendRegion.getMaxZ() - zOffset); - Meteor.Point blueStart = new Meteor.Point(Config.BlueExtendRegion.getMinX() + xOffset, Config.BlueExtendRegion.getMaxY() + yOffset, Config.BlueExtendRegion.getMinZ() + zOffset); + Point redStart = new Point(Config.RedExtendRegion.getMinX() + xOffset, Config.RedExtendRegion.getMaxY() + yOffset, Config.RedExtendRegion.getMaxZ() - zOffset); + Point blueStart = new Point(Config.BlueExtendRegion.getMinX() + xOffset, Config.BlueExtendRegion.getMaxY() + yOffset, Config.BlueExtendRegion.getMinZ() + zOffset); vector.setX(random.nextDouble() - 0.5); vector.setZ(random.nextDouble() - 0.5); @@ -146,23 +164,6 @@ public class Meteor implements Listener { } } - private static class Point { - - private final int x; - private final int y; - private final int z; - - public Point(int x, int y, int z) { - this.x = x; - this.y = y; - this.z = z; - } - - public Location toLocation(World world) { - return new Location(world, this.x, this.y, this.z); //NOSONAR - } - } - private enum State { PRE(60, 80, 1, 0, 0, 0), diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Point.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Point.java new file mode 100644 index 0000000..13dc087 --- /dev/null +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Point.java @@ -0,0 +1,44 @@ +/* + * 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.fightsystem.event; + +import org.bukkit.Location; +import org.bukkit.World; + +class Point { + + private final int x; + private final int y; + private final int z; + + public Point(int x, int y, int z) { + this.x = x; + this.y = y; + this.z = z; + } + + public Location toLocation(World world) { + return new Location(world, this.x, this.y, this.z); //NOSONAR + } + + public Location addAndToLocation(World world, int x, int y, int z) { + return new Location(world, this.x + x, this.y + y, this.z + z); //NOSONAR + } +} -- 2.39.2 From fa5b20b68002b3931a6dd1756eb7abfddc6ee9e6 Mon Sep 17 00:00:00 2001 From: Zeanon Date: Sun, 6 Feb 2022 19:42:37 +0100 Subject: [PATCH 15/21] fixed for airship --- FightSystem_Core/src/config.yml | 2 +- .../de/steamwar/fightsystem/event/Meteor.java | 19 +++++++++-------- .../winconditions/PercentWincondition.java | 21 +++++++++++-------- 3 files changed, 23 insertions(+), 19 deletions(-) diff --git a/FightSystem_Core/src/config.yml b/FightSystem_Core/src/config.yml index 0df080e..f0129eb 100644 --- a/FightSystem_Core/src/config.yml +++ b/FightSystem_Core/src/config.yml @@ -108,7 +108,7 @@ WinConditions: # defaults to none if missing # - PUMPKIN_TECH_KO # - HELLS_BELLS - # - METEOR + - METEOR WinConditionParams: # The time of any of the timeout win conditions in seconds diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index b4b9e96..29f7de9 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -31,6 +31,7 @@ import de.steamwar.fightsystem.winconditions.Winconditions; import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.entity.Fireball; +import org.bukkit.entity.LargeFireball; import org.bukkit.entity.TNTPrimed; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -58,7 +59,7 @@ public class Meteor implements Listener { private BukkitTask currentDropping; public void startCountdown() { - if (current == Meteor.State.PRE) { + if (current == Meteor.State.PRE || current == Meteor.State.FIRST) { Bukkit.getOnlinePlayers().forEach(player -> { player.sendMessage("Starting"); }); @@ -76,7 +77,7 @@ public class Meteor implements Listener { currentCountdown.enable(); } - @EventHandler + //@EventHandler public void explode(ProjectileHitEvent event) { if (event.getEntity() instanceof Fireball) { TNTPrimed tnt = world.spawn(event.getEntity().getLocation(), TNTPrimed.class); @@ -106,13 +107,13 @@ public class Meteor implements Listener { vector.setX(random.nextDouble() - 0.5); vector.setZ(random.nextDouble() - 0.5); - Fireball fireballRed = world.spawn(redStart.toLocation(world), Fireball.class); + LargeFireball fireballRed = world.spawn(redStart.toLocation(world), LargeFireball.class); fireballRed.setDirection(vector); fireballRed.setBounce(false); fireballRed.setIsIncendiary(false); fireballRed.setYield(current.explosionSize); - Fireball fireballBlue = world.spawn(blueStart.toLocation(world), Fireball.class); + LargeFireball fireballBlue = world.spawn(blueStart.toLocation(world), LargeFireball.class); vector.setZ(vector.getZ() * -1); fireballBlue.setDirection(vector); fireballBlue.setBounce(false); @@ -167,11 +168,11 @@ public class Meteor implements Listener { private enum State { PRE(60, 80, 1, 0, 0, 0), - FIRST(25, 35, 6, 2, 2, 4), - SECOND(20, 30, 7, 4, 3, 6), - THIRD(15, 25, 7, 4, 4, 8), - FOURTH(10, 20, 8, 6, 6, 11), - LAST(5, 10, 0, 6, 8, 16); + FIRST(25, 35, 6, 2, 3, 6), + SECOND(20, 30, 7, 4, 4, 8), + THIRD(15, 25, 7, 4, 5, 10), + FOURTH(10, 20, 8, 6, 7, 14), + LAST(5, 10, 0, 6, 9, 18); State(int minTime, int maxTime, int switchAfter, int explosionSize, int minAmount, int maxAmount) { diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/PercentWincondition.java b/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/PercentWincondition.java index c47c2a9..75554d2 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/PercentWincondition.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/PercentWincondition.java @@ -29,6 +29,7 @@ import de.steamwar.fightsystem.utils.Message; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.World; +import org.bukkit.entity.EntityType; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityExplodeEvent; @@ -105,17 +106,19 @@ public class PercentWincondition extends Wincondition implements PrintableWincon @EventHandler public void onEntityExplode(EntityExplodeEvent event) { - if (explosionFilter.getAsBoolean() || !team.getExtendRegion().inRegion(event.getEntity().getLocation())) { - return; - } - - event.blockList().forEach(block -> { - if (testBlock.test(block.getType())) { - currentBlocks--; + if (event.getEntityType() != EntityType.FIREBALL) { + if (explosionFilter.getAsBoolean() || !team.getExtendRegion().inRegion(event.getEntity().getLocation())) { + return; } - }); - checkWin.accept(team); + event.blockList().forEach(block -> { + if (testBlock.test(block.getType())) { + currentBlocks--; + } + }); + + checkWin.accept(team); + } } private void enable() { -- 2.39.2 From 2eef1a8e94505349ae5a46e0b21ad4f249bf9523 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 10 Feb 2022 18:22:38 +0100 Subject: [PATCH 16/21] Fix HellsBells Update Meteor --- .../steamwar/fightsystem/event/HellsBells.java | 4 ++-- .../de/steamwar/fightsystem/event/Meteor.java | 18 ++++++++++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java index dbe75b4..80a7f7b 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java @@ -59,12 +59,12 @@ public class HellsBells { "HELLS_BELLS_SWAP_3", "HELLS_BELLS_SWAP_4"); public void startCountdown() { - if (current == State.PRE) { + if (current == HellsBells.State.PRE || current == HellsBells.State.FIRST) { String startMessage = startMessages.get(random.nextInt(startMessages.size())); GlobalRecorder.getInstance().system(startMessage); FightSystem.getMessage().broadcast(startMessage); current = current.getNext(); - } else if (current != State.LAST && currentDrops >= current.SWITCH_AFTER) { + } else if (current != HellsBells.State.LAST && currentDrops >= current.SWITCH_AFTER) { String stateSwapMessage = stateSwapMessages.get(random.nextInt(stateSwapMessages.size())); GlobalRecorder.getInstance().system(stateSwapMessage); FightSystem.getMessage().broadcast(stateSwapMessage); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index 29f7de9..2ef70a9 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -22,6 +22,7 @@ package de.steamwar.fightsystem.event; import de.steamwar.fightsystem.Config; import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.countdown.Countdown; +import de.steamwar.fightsystem.record.GlobalRecorder; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.states.StateDependent; import de.steamwar.fightsystem.states.StateDependentListener; @@ -39,6 +40,8 @@ import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.scheduler.BukkitTask; import org.bukkit.util.Vector; +import java.util.Arrays; +import java.util.List; import java.util.Random; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; @@ -58,16 +61,19 @@ public class Meteor implements Listener { private final AtomicInteger amount = new AtomicInteger(0); private BukkitTask currentDropping; + private final List startMessages = Arrays.asList(); + private final List stateSwapMessages = Arrays.asList(); + public void startCountdown() { if (current == Meteor.State.PRE || current == Meteor.State.FIRST) { - Bukkit.getOnlinePlayers().forEach(player -> { - player.sendMessage("Starting"); - }); + String startMessage = startMessages.get(random.nextInt(startMessages.size())); + GlobalRecorder.getInstance().system(startMessage); + FightSystem.getMessage().broadcast(startMessage); current = current.getNext(); } else if (current != Meteor.State.LAST && currentDrops >= current.SWITCH_AFTER) { - Bukkit.getOnlinePlayers().forEach(player -> { - player.sendMessage("Faster"); - }); + String stateSwapMessage = stateSwapMessages.get(random.nextInt(stateSwapMessages.size())); + GlobalRecorder.getInstance().system(stateSwapMessage); + FightSystem.getMessage().broadcast(stateSwapMessage); currentDrops = 0; current = current.getNext(); } -- 2.39.2 From e1bdde7d00d5dbfb187a8f69efaeb8e97680982d Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 10 Feb 2022 18:33:41 +0100 Subject: [PATCH 17/21] Add messages to Meteor --- FightSystem_Core/src/config.yml | 2 +- .../src/de/steamwar/fightsystem/FightSystem.properties | 8 ++++++++ .../src/de/steamwar/fightsystem/event/Meteor.java | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/FightSystem_Core/src/config.yml b/FightSystem_Core/src/config.yml index f0129eb..0df080e 100644 --- a/FightSystem_Core/src/config.yml +++ b/FightSystem_Core/src/config.yml @@ -108,7 +108,7 @@ WinConditions: # defaults to none if missing # - PUMPKIN_TECH_KO # - HELLS_BELLS - - METEOR + # - METEOR WinConditionParams: # The time of any of the timeout win conditions in seconds diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties index 9c92a2c..ce6721a 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties @@ -213,7 +213,15 @@ HELLS_BELLS_SWAP_1= HELLS_BELLS_SWAP_2=§aMehr Bomber im Anflug. HELLS_BELLS_SWAP_3=§aZusätzliche Bomber gesichtet. HELLS_BELLS_SWAP_4=§aDas Bombardement scheint sich zu erhöhen. + +METEOR_START_1=§cEin Meteor schauer wurden am Himmel entdeckt +METEOR_START_2=§cSternschnuppen sind diesen Fight 100% wahrscheinlicher +METEOR_START_3=§cEs wurden Meteoriten am Himmel entdeckt, begeben sie sich umgehend in Sicherheit! +METEOR_START_4=§cDer Untergang steht nahe! Die Meteoriten werden uns in etwa einer Minute treffen. +METEOR_SWAP_1=§aEs hört nicht auf, die Meteoriten scheinen mehr zu werden. +METEOR_SWAP_2=§aDas war erst der Anfang, die Meteoriten kommen immer schneller und machen mehr Schaden. METEOR_COUNTDOWN=bis es Meteore regnet + TECHKO_COUNTDOWN=bis {0} §7einen Schuss abgegeben haben muss WIN_FIGHTLEADER=§7Kampfleiterentscheidung diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index 2ef70a9..a0ff787 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -61,8 +61,8 @@ public class Meteor implements Listener { private final AtomicInteger amount = new AtomicInteger(0); private BukkitTask currentDropping; - private final List startMessages = Arrays.asList(); - private final List stateSwapMessages = Arrays.asList(); + private final List startMessages = Arrays.asList("METEOR_START_1", "METEOR_START_2", "METEOR_START_3", "METEOR_START_4"); + private final List stateSwapMessages = Arrays.asList("METEOR_SWAP_1", "METEOR_SWAP_2"); public void startCountdown() { if (current == Meteor.State.PRE || current == Meteor.State.FIRST) { -- 2.39.2 From 4d51c1ff63e2a5c85762247fcfc62ad7f72a002d Mon Sep 17 00:00:00 2001 From: Zeanon Date: Thu, 10 Feb 2022 18:34:37 +0100 Subject: [PATCH 18/21] cleanup --- .../winconditions/PercentWincondition.java | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/PercentWincondition.java b/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/PercentWincondition.java index 75554d2..c0e481c 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/PercentWincondition.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/PercentWincondition.java @@ -106,19 +106,17 @@ public class PercentWincondition extends Wincondition implements PrintableWincon @EventHandler public void onEntityExplode(EntityExplodeEvent event) { - if (event.getEntityType() != EntityType.FIREBALL) { - if (explosionFilter.getAsBoolean() || !team.getExtendRegion().inRegion(event.getEntity().getLocation())) { - return; - } - - event.blockList().forEach(block -> { - if (testBlock.test(block.getType())) { - currentBlocks--; - } - }); - - checkWin.accept(team); + if (event.getEntityType() == EntityType.FIREBALL || explosionFilter.getAsBoolean() || !team.getExtendRegion().inRegion(event.getEntity().getLocation())) { + return; } + + event.blockList().forEach(block -> { + if (testBlock.test(block.getType())) { + currentBlocks--; + } + }); + + checkWin.accept(team); } private void enable() { -- 2.39.2 From 37d724f977b0d5e354c4ff78f677adf901eed2a1 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 10 Feb 2022 18:37:04 +0100 Subject: [PATCH 19/21] Add messages to Meteor --- .../src/de/steamwar/fightsystem/FightSystem.properties | 2 ++ FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties index ce6721a..f5eb688 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties @@ -218,6 +218,8 @@ METEOR_START_1= METEOR_START_2=§cSternschnuppen sind diesen Fight 100% wahrscheinlicher METEOR_START_3=§cEs wurden Meteoriten am Himmel entdeckt, begeben sie sich umgehend in Sicherheit! METEOR_START_4=§cDer Untergang steht nahe! Die Meteoriten werden uns in etwa einer Minute treffen. +METEOR_START_5=§fNEWS §cHeute Nachmittag wird es gröbere Meteoriten Schauer geben! +METEOR_START_6=§cNoch fliegende Airships sind dem Absturz geweiht. METEOR_SWAP_1=§aEs hört nicht auf, die Meteoriten scheinen mehr zu werden. METEOR_SWAP_2=§aDas war erst der Anfang, die Meteoriten kommen immer schneller und machen mehr Schaden. METEOR_COUNTDOWN=bis es Meteore regnet diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index a0ff787..4645927 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -61,7 +61,7 @@ public class Meteor implements Listener { private final AtomicInteger amount = new AtomicInteger(0); private BukkitTask currentDropping; - private final List startMessages = Arrays.asList("METEOR_START_1", "METEOR_START_2", "METEOR_START_3", "METEOR_START_4"); + private final List startMessages = Arrays.asList("METEOR_START_1", "METEOR_START_2", "METEOR_START_3", "METEOR_START_4", "METEOR_START_5", "METEOR_START_6"); private final List stateSwapMessages = Arrays.asList("METEOR_SWAP_1", "METEOR_SWAP_2"); public void startCountdown() { -- 2.39.2 From be0fb245a472e8d28678ea63336b88f1dcd0399f Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 10 Feb 2022 18:39:06 +0100 Subject: [PATCH 20/21] Add messages to Meteor --- .../src/de/steamwar/fightsystem/FightSystem.properties | 4 +++- .../src/de/steamwar/fightsystem/event/Meteor.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties index f5eb688..d627d55 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties @@ -214,7 +214,7 @@ HELLS_BELLS_SWAP_2= HELLS_BELLS_SWAP_3=§aZusätzliche Bomber gesichtet. HELLS_BELLS_SWAP_4=§aDas Bombardement scheint sich zu erhöhen. -METEOR_START_1=§cEin Meteor schauer wurden am Himmel entdeckt +METEOR_START_1=§cEin Meteorschauer wurden am Himmel entdeckt METEOR_START_2=§cSternschnuppen sind diesen Fight 100% wahrscheinlicher METEOR_START_3=§cEs wurden Meteoriten am Himmel entdeckt, begeben sie sich umgehend in Sicherheit! METEOR_START_4=§cDer Untergang steht nahe! Die Meteoriten werden uns in etwa einer Minute treffen. @@ -222,6 +222,8 @@ METEOR_START_5= METEOR_START_6=§cNoch fliegende Airships sind dem Absturz geweiht. METEOR_SWAP_1=§aEs hört nicht auf, die Meteoriten scheinen mehr zu werden. METEOR_SWAP_2=§aDas war erst der Anfang, die Meteoriten kommen immer schneller und machen mehr Schaden. +METEOR_SWAP_3=§aEs scheint als würde es nicht aufhören, die Meteoriten kommen nur schneller! +METEOR_SWAP_4=§aEin weiterer Schauer ist entdeckt worden, begebt euch in Sicherheit! METEOR_COUNTDOWN=bis es Meteore regnet TECHKO_COUNTDOWN=bis {0} §7einen Schuss abgegeben haben muss diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index 4645927..158620b 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -62,7 +62,7 @@ public class Meteor implements Listener { private BukkitTask currentDropping; private final List startMessages = Arrays.asList("METEOR_START_1", "METEOR_START_2", "METEOR_START_3", "METEOR_START_4", "METEOR_START_5", "METEOR_START_6"); - private final List stateSwapMessages = Arrays.asList("METEOR_SWAP_1", "METEOR_SWAP_2"); + private final List stateSwapMessages = Arrays.asList("METEOR_SWAP_1", "METEOR_SWAP_2", "METEOR_SWAP_3", "METEOR_SWAP_4"); public void startCountdown() { if (current == Meteor.State.PRE || current == Meteor.State.FIRST) { -- 2.39.2 From 9614b0d43c709669ab07d7f29df18e2ac746ab30 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 10 Feb 2022 18:39:26 +0100 Subject: [PATCH 21/21] Add messages to Meteor --- .../src/de/steamwar/fightsystem/FightSystem.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties index d627d55..cdd7e40 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties @@ -214,6 +214,7 @@ HELLS_BELLS_SWAP_2= HELLS_BELLS_SWAP_3=§aZusätzliche Bomber gesichtet. HELLS_BELLS_SWAP_4=§aDas Bombardement scheint sich zu erhöhen. +METEOR_COUNTDOWN=bis es Meteore regnet METEOR_START_1=§cEin Meteorschauer wurden am Himmel entdeckt METEOR_START_2=§cSternschnuppen sind diesen Fight 100% wahrscheinlicher METEOR_START_3=§cEs wurden Meteoriten am Himmel entdeckt, begeben sie sich umgehend in Sicherheit! @@ -224,7 +225,6 @@ METEOR_SWAP_1= METEOR_SWAP_2=§aDas war erst der Anfang, die Meteoriten kommen immer schneller und machen mehr Schaden. METEOR_SWAP_3=§aEs scheint als würde es nicht aufhören, die Meteoriten kommen nur schneller! METEOR_SWAP_4=§aEin weiterer Schauer ist entdeckt worden, begebt euch in Sicherheit! -METEOR_COUNTDOWN=bis es Meteore regnet TECHKO_COUNTDOWN=bis {0} §7einen Schuss abgegeben haben muss -- 2.39.2