12
1

Meteor #324

Zusammengeführt
Lixfel hat 24 Commits von Meteor nach master 2022-02-11 22:48:17 +01:00 zusammengeführt
5 geänderte Dateien mit 298 neuen und 133 gelöschten Zeilen
Nur Änderungen aus Commit 02ac3cd665 werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -108,6 +108,7 @@ WinConditions: # defaults to none if missing
# - PUMPKIN_TECH_KO # - PUMPKIN_TECH_KO
# - HELLS_BELLS # - HELLS_BELLS
# - METEOR
WinConditionParams: WinConditionParams:
# The time of any of the timeout win conditions in seconds # The time of any of the timeout win conditions in seconds

Datei anzeigen

@ -22,6 +22,7 @@ package de.steamwar.fightsystem;
import de.steamwar.fightsystem.commands.*; import de.steamwar.fightsystem.commands.*;
import de.steamwar.fightsystem.countdown.*; import de.steamwar.fightsystem.countdown.*;
import de.steamwar.fightsystem.event.HellsBells; import de.steamwar.fightsystem.event.HellsBells;
import de.steamwar.fightsystem.event.Meteor;
import de.steamwar.fightsystem.fight.Fight; import de.steamwar.fightsystem.fight.Fight;
import de.steamwar.fightsystem.fight.FightTeam; import de.steamwar.fightsystem.fight.FightTeam;
import de.steamwar.fightsystem.fight.FightWorld; import de.steamwar.fightsystem.fight.FightWorld;
@ -109,6 +110,7 @@ public class FightSystem extends JavaPlugin {
new WinconditionPercentTimeout(); new WinconditionPercentTimeout();
new HellsBells(); new HellsBells();
new Meteor();
new NoPlayersOnlineCountdown(); new NoPlayersOnlineCountdown();
new PreSchemCountdown(); new PreSchemCountdown();

Datei anzeigen

@ -17,204 +17,205 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>. # along with this program. If not, see <https://www.gnu.org/licenses/>.
# #
PREFIX=§eArena§8» PREFIX=<EFBFBD>eArena<EFBFBD>8<EFBFBD>
# Commands # Commands
NO_TEAM=§cDu bist in keinem Team NO_TEAM=<EFBFBD>cDu bist in keinem Team
FIGHT_ALREADY_STARTED=§cDer Kampf hat bereits begonnen FIGHT_ALREADY_STARTED=<EFBFBD>cDer Kampf hat bereits begonnen
NOT_LEADER=§cDu bist kein Leader NOT_LEADER=<EFBFBD>cDu bist kein Leader
PLAYER_UNAVAILABLE=§cDer Spieler ist nicht in der Arena PLAYER_UNAVAILABLE=<EFBFBD>cDer Spieler ist nicht in der Arena
NO_INVITATION=§cDu wurdest von keinem Team eingeladen NO_INVITATION=<EFBFBD>cDu wurdest von keinem Team eingeladen
INVITATION_DECLINED=§cEinladung abgelehnt INVITATION_DECLINED=<EFBFBD>cEinladung abgelehnt
INVITATION_DECLINED_TEAM=§e{0} §chat die Einladung abgelehnt INVITATION_DECLINED_TEAM=<EFBFBD>e{0} <20>chat die Einladung abgelehnt
PLAYER_IN_TEAM=§e{0} §cist bereits in einem Team PLAYER_IN_TEAM=<EFBFBD>e{0} <20>cist bereits in einem Team
ALREADY_INVITED=§e{0} §cwurde bereits eingeladen ALREADY_INVITED=<EFBFBD>e{0} <20>cwurde bereits eingeladen
INVITATION_SENT=§e{0} §7eingeladen INVITATION_SENT=<EFBFBD>e{0} <20>7eingeladen
NOT_IN_TEAM=§e{0} §cist nicht in deinem Team NOT_IN_TEAM=<EFBFBD>e{0} <20>cist nicht in deinem Team
KIT_UNAVAILABLE=§cDieses Kit gibt es nicht KIT_UNAVAILABLE=<EFBFBD>cDieses Kit gibt es nicht
KIT_CHOSEN=§7Kit §e{0} §7gewählt KIT_CHOSEN=<EFBFBD>7Kit <20>e{0} <20>7gew<65>hlt
GAMEMODE_NOT_ALLOWED=§cSpielmodusänderung verboten GAMEMODE_NOT_ALLOWED=<EFBFBD>cSpielmodus<EFBFBD>nderung verboten
GAMEMODE_UNKNOWN=§cUnbekannter Spielmodus {0} GAMEMODE_UNKNOWN=<EFBFBD>cUnbekannter Spielmodus {0}
GAMEMODE_HELP=§8/§7gm §8[§eSpielmodus§8] GAMEMODE_HELP=<EFBFBD>8/<2F>7gm <20>8[<5B>eSpielmodus<75>8]
INVITE_HELP=§8/§einvite §8[§eSpieler§8] INVITE_HELP=<EFBFBD>8/<2F>einvite <20>8[<5B>eSpieler<65>8]
LEADER_FULL=§cAlle Teams haben bereits einen Leader LEADER_FULL=<EFBFBD>cAlle Teams haben bereits einen Leader
ALREADY_IN_TEAM=§cDu bist bereits in einem Team ALREADY_IN_TEAM=<EFBFBD>cDu bist bereits in einem Team
LOCKSCHEM_HELP=§8/§7lockschem §8[§eTeam§8] LOCKSCHEM_HELP=<EFBFBD>8/<2F>7lockschem <20>8[<5B>eTeam<61>8]
UNKNOWN_TEAM=§cDieses Team existiert nicht UNKNOWN_TEAM=<EFBFBD>cDieses Team existiert nicht
LOCKSCHEM_LOCKED=§7Schematic gesperrt LOCKSCHEM_LOCKED=<EFBFBD>7Schematic gesperrt
LOCKSCHEM_LOCKED_BY=§cDie Schematic wurde von §e{0} §cgesperrt LOCKSCHEM_LOCKED_BY=<EFBFBD>cDie Schematic wurde von <20>e{0} <20>cgesperrt
REMOVE_HELP=§8/§eremove §8[§eSpieler§8] REMOVE_HELP=<EFBFBD>8/<2F>eremove <20>8[<5B>eSpieler<65>8]
REPLAY_LOCKED=§7Replaywiedergabe für 1 Monat gesperrt REPLAY_LOCKED=<EFBFBD>7Replaywiedergabe f<>r 1 Monat gesperrt
NOT_FIGHTLEADER=§cDu bist nicht Kampfleiter NOT_FIGHTLEADER=<EFBFBD>cDu bist nicht Kampfleiter
WIN_HELP=§8/§7win §8[§eTeam §8or §etie§8] WIN_HELP=<EFBFBD>8/<2F>7win <20>8[<5B>eTeam <20>8or <20>etie<69>8]
# GUI # GUI
INVITATION_TITLE=Einladung von {0} INVITATION_TITLE=Einladung von {0}
INVITATION_ACCEPT=§aAnnehmen INVITATION_ACCEPT=<EFBFBD>aAnnehmen
INVITATION_DECLINE=§cAblehnen INVITATION_DECLINE=<EFBFBD>cAblehnen
INVITATION_CHAT_ACCEPT=§8/§aaccept§8, §7um die Einladung §aanzunehmen INVITATION_CHAT_ACCEPT=<EFBFBD>8/<2F>aaccept<70>8, <20>7um die Einladung <20>aanzunehmen
INVITATION_CHAT_DECLINE=§8/§cdecline§8, §7um die Einladung §cabzulehnen INVITATION_CHAT_DECLINE=<EFBFBD>8/<2F>cdecline<6E>8, <20>7um die Einladung <20>cabzulehnen
STATE_TITLE=Kampfstatus STATE_TITLE=Kampfstatus
STATE_PRE_LEADER_SETUP=§7Teamleaderwartephase STATE_PRE_LEADER_SETUP=<EFBFBD>7Teamleaderwartephase
STATE_PRE_SCHEM_SETUP=§7Schemauswahlphase STATE_PRE_SCHEM_SETUP=<EFBFBD>7Schemauswahlphase
STATE_POST_SCHEM_SETUP=§7Vorbereitungsphase STATE_POST_SCHEM_SETUP=<EFBFBD>7Vorbereitungsphase
STATE_PRE_RUNNING=§eKitausgabe STATE_PRE_RUNNING=<EFBFBD>eKitausgabe
STATE_RUNNING=§eKampfphase STATE_RUNNING=<EFBFBD>eKampfphase
STATE_SPECTATE_WIN=§7Sieg {0} STATE_SPECTATE_WIN=<EFBFBD>7Sieg {0}
STATE_SPECTATE_TIE=§7Unentschieden STATE_SPECTATE_TIE=<EFBFBD>7Unentschieden
INVITE_TITLE=Spieler einladen INVITE_TITLE=Spieler einladen
REMOVE_TITLE=Spieler rauswerfen REMOVE_TITLE=Spieler rauswerfen
KIT_SELECTION_TITLE=Kitauswahl KIT_SELECTION_TITLE=Kitauswahl
KIT_NO_KITS=§cKeine Kits gefunden KIT_NO_KITS=<EFBFBD>cKeine Kits gefunden
KIT_CREATE=§eNeues Kit KIT_CREATE=<EFBFBD>eNeues Kit
KITNAME_TITLE=Kitname eingeben KITNAME_TITLE=Kitname eingeben
KITNAME_IN_USE=§cDieser Kitname wird bereits genutzt KITNAME_IN_USE=<EFBFBD>cDieser Kitname wird bereits genutzt
KIT_SEARCH=§eSuchen KIT_SEARCH=<EFBFBD>eSuchen
KITSEARCH_TITLE=Nach Kit suchen KITSEARCH_TITLE=Nach Kit suchen
SCHEM_NO_ENEMY=§cKeine Schematicwahl ohne Gegner SCHEM_NO_ENEMY=<EFBFBD>cKeine Schematicwahl ohne Gegner
SCHEM_TITLE={0}-Auswahl SCHEM_TITLE={0}-Auswahl
SCHEM_PUBLIC=§eÖffentliches {0} SCHEM_PUBLIC=<EFBFBD>e<EFBFBD>ffentliches {0}
SCHEM_PRIVATE=§ePrivates {0} SCHEM_PRIVATE=<EFBFBD>ePrivates {0}
SCHEM_NO_PRIVATE=§7Kein privates {0} vorhanden SCHEM_NO_PRIVATE=<EFBFBD>7Kein privates {0} vorhanden
SCHEM_PRIVATE_FORBIDDEN=§7Kein privates {0} erlaubt SCHEM_PRIVATE_FORBIDDEN=<EFBFBD>7Kein privates {0} erlaubt
# Countdowns # Countdowns
COUNTDOWN_MINUTES=§e{0} §7Minuten {1} COUNTDOWN_MINUTES=<EFBFBD>e{0} <20>7Minuten {1}
COUNTDOWN_SECONDS=§e{0} §7Sekunden {1} COUNTDOWN_SECONDS=<EFBFBD>e{0} <20>7Sekunden {1}
COUNTDOWN_SECOND=§eEine §7Sekunde {1} COUNTDOWN_SECOND=<EFBFBD>eEine <20>7Sekunde {1}
ENTERN_COUNTDOWN=bis Entern erlaubt ist ENTERN_COUNTDOWN=bis Entern erlaubt ist
ENTERN_ALLOWED=§eEntern §7ist nun erlaubt ENTERN_ALLOWED=<EFBFBD>eEntern <20>7ist nun erlaubt
SHUTDOWN_COUNTDOWN=bis der Server gestoppt wird 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<EFBFBD>hlt wird
POST_SCHEM_COUNTDOWN=bis die Kits verteilt werden POST_SCHEM_COUNTDOWN=bis die Kits verteilt werden
PRE_RUNNING_COUNTDOWN=bis die Arena freigegeben ist PRE_RUNNING_COUNTDOWN=bis die Arena freigegeben ist
RUNNING_COUNTDOWN=bis der Kampf vorbei ist RUNNING_COUNTDOWN=bis der Kampf vorbei ist
SPECTATE_COUNTDOWN=bis die Arena zurückgesetzt wird SPECTATE_COUNTDOWN=bis die Arena zur<EFBFBD>ckgesetzt wird
# Fight # Fight
SCHEMATIC_UNLOADABLE=§cSchematic konnte nicht geladen werden SCHEMATIC_UNLOADABLE=<EFBFBD>cSchematic konnte nicht geladen werden
SCHEMATIC_CHOSEN=§7{0} §e{1} §7gewählt SCHEMATIC_CHOSEN=<EFBFBD>7{0} <20>e{1} <20>7gew<65>hlt
TEAM_READY=§aTeam bereit TEAM_READY=<EFBFBD>aTeam bereit
TEAM_NOT_READY=§c§mTeam bereit TEAM_NOT_READY=<EFBFBD>c<EFBFBD>mTeam bereit
SKIP_READY=§aBeschleunigung zum nächsten Event SKIP_READY=<EFBFBD>aBeschleunigung zum n<>chsten Event
SKIP_NOT_READY=§c§mBeschleunigung zum nächsten Event SKIP_NOT_READY=<EFBFBD>c<EFBFBD>mBeschleunigung zum n<>chsten Event
TEAM_CHAT={0}{1}§8» {0}{2} TEAM_CHAT={0}{1}<EFBFBD>8<EFBFBD> {0}{2}
CHOOSE_KIT=§eKit wählen CHOOSE_KIT=<EFBFBD>eKit w<>hlen
RESPAWN=§eRespawn RESPAWN=<EFBFBD>eRespawn
INVITE_PLAYERS=§eSpieler einladen INVITE_PLAYERS=<EFBFBD>eSpieler einladen
REMOVE_PLAYERS=§cSpieler rauswerfen REMOVE_PLAYERS=<EFBFBD>cSpieler rauswerfen
CHOOSE_SCHEMATIC=§e{0} wählen CHOOSE_SCHEMATIC=<EFBFBD>e{0} w<>hlen
SCHEMATIC_REQUIRED=§cZuerst muss eine Schematic gewählt sein SCHEMATIC_REQUIRED=<EFBFBD>cZuerst muss eine Schematic gew<65>hlt sein
KIT_PREVIEW_EDIT=§7Kit bearbeiten KIT_PREVIEW_EDIT=<EFBFBD>7Kit bearbeiten
KIT_PREVIEW_CHOOSE=§aKit wählen KIT_PREVIEW_CHOOSE=<EFBFBD>aKit w<>hlen
KIT_PREVIEW_BACK=§cZurück KIT_PREVIEW_BACK=<EFBFBD>cZur<EFBFBD>ck
KIT_PREVIEW_DELETE=§cKit löschen KIT_PREVIEW_DELETE=<EFBFBD>cKit l<>schen
KIT_DELETION_CONFIRMATION=Kit wirklich löschen? KIT_DELETION_CONFIRMATION=Kit wirklich l<EFBFBD>schen?
KIT_DELETION_ABORT=§cAbbrechen KIT_DELETION_ABORT=<EFBFBD>cAbbrechen
KIT_DELETION_DELETE=§aLöschen KIT_DELETION_DELETE=<EFBFBD>aL<EFBFBD>schen
# Listener # Listener
NO_ARENA_LEAVING=§cDu darfst die Arena nicht verlassen NO_ARENA_LEAVING=<EFBFBD>cDu darfst die Arena nicht verlassen
CHECK_JOIN_DENIED=§cAuf diesem Server wird momentan eine Schematic geprüft! CHECK_JOIN_DENIED=<EFBFBD>cAuf diesem Server wird momentan eine Schematic gepr<70>ft!
CHECK_COMMAND_LOCKED=§cDieser Befehl ist beim Prüfen gesperrt! Admin wird benachrichtigt. CHECK_COMMAND_LOCKED=<EFBFBD>cDieser Befehl ist beim Pr<50>fen gesperrt! Admin wird benachrichtigt.
NO_BLOCK_BREAK=§cDu darfst hier derzeit keine Blöcke abbauen NO_BLOCK_BREAK=<EFBFBD>cDu darfst hier derzeit keine Bl<42>cke abbauen
NO_BLOCK_PLACE=§cDu darfst hier derzeit keine Blöcke setzen NO_BLOCK_PLACE=<EFBFBD>cDu darfst hier derzeit keine Bl<42>cke setzen
NO_BOW_USAGE=§cDu darfst den Bogen erst nach Kampfbeginn nutzen NO_BOW_USAGE=<EFBFBD>cDu darfst den Bogen erst nach Kampfbeginn nutzen
NO_PARTICIPANT=§cDu bist kein Kampfteilnehmer NO_PARTICIPANT=<EFBFBD>cDu bist kein Kampfteilnehmer
NO_FRIENDLY_FIRE=§cDu darfst deinen Teamkollegen keinen Schaden zufügen NO_FRIENDLY_FIRE=<EFBFBD>cDu darfst deinen Teamkollegen keinen Schaden zuf<75>gen
NO_TNT_PLACE=§cDu darfst kein TNT setzen NO_TNT_PLACE=<EFBFBD>cDu darfst kein TNT setzen
NO_TELEPORT=§cDu darfst diese Teleportfunktion nicht benutzen NO_TELEPORT=<EFBFBD>cDu darfst diese Teleportfunktion nicht benutzen
OPEN_INVENTORY_TO_CUSTOMIZE=§eInventar zum Anpassen des Kits öffnen OPEN_INVENTORY_TO_CUSTOMIZE=<EFBFBD>eInventar zum Anpassen des Kits <20>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 RESOURCEPACK_REQUIRED=<EFBFBD>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_ENTERN=<EFBFBD>cDu darfst nicht entern
NO_TEAMAREA=§cDu darfst nicht zu den Teams NO_TEAMAREA=<EFBFBD>cDu darfst nicht zu den Teams
TEST_BECOME_LEADER=§7Werde zum Teamleader mit §8/§eleader TEST_BECOME_LEADER=<EFBFBD>7Werde zum Teamleader mit <20>8/<2F>eleader
PREPARE_SCHEM_DELETED=§cAnscheinend wurde die auszufahrende Schematic gelöscht, Einsenden wird abgebrochen. PREPARE_SCHEM_DELETED=<EFBFBD>cAnscheinend wurde die auszufahrende Schematic gel<65>scht, Einsenden wird abgebrochen.
PREPARE_ACTIVE_PISTON=§cIm Teambereich wurden sich noch bewegende Pistons gefunden, Einsenden wird abgebrochen. PREPARE_ACTIVE_PISTON=<EFBFBD>cIm Teambereich wurden sich noch bewegende Pistons gefunden, Einsenden wird abgebrochen.
PREPARE_FAILED_SAVING=§cDie Schematic konnte nicht gespeichert werden, Einsenden wird abgebrochen. PREPARE_FAILED_SAVING=<EFBFBD>cDie Schematic konnte nicht gespeichert werden, Einsenden wird abgebrochen.
PREPARE_SENT_IN=§aDie Schematic wird nun zeitnah von einem Teammitglied überprüft PREPARE_SENT_IN=<EFBFBD>aDie Schematic wird nun zeitnah von einem Teammitglied <20>berpr<70>ft
PARTICIPANT_CHAT={0} {1}§8» §7{2} PARTICIPANT_CHAT={0} {1}<EFBFBD>8<EFBFBD> <20>7{2}
FIGHTLEADER_CHAT=§e{0}§8» §e{1} FIGHTLEADER_CHAT=<EFBFBD>e{0}<7D>8<EFBFBD> <20>e{1}
SPECTATOR_CHAT=§7{0}§8» §7{1} SPECTATOR_CHAT=<EFBFBD>7{0}<7D>8<EFBFBD> <20>7{1}
# Replay # Replay
REPLAY_ENDS=§cReplay beendet REPLAY_ENDS=<EFBFBD>cReplay beendet
OLD_STRING={0} OLD_STRING={0}
# States # States
COMMAND_CURRENTLY_UNAVAILABLE=§cDieser Befehl ist zu diesem Kampfzeitpunkt nicht verfügbar COMMAND_CURRENTLY_UNAVAILABLE=<EFBFBD>cDieser Befehl ist zu diesem Kampfzeitpunkt nicht verf<72>gbar
# Utils # Utils
TPS_WARNING=§c{0} §7TPS TPS_WARNING=<EFBFBD>c{0} <20>7TPS
UI_PRE_RUNNING=§7Kits verteilt UI_PRE_RUNNING=<EFBFBD>7Kits verteilt
UI_RUNNING=§aArena freigegeben UI_RUNNING=<EFBFBD>aArena freigegeben
UI_SKIP=§7Sprung zum nächsten Ereignis UI_SKIP=<EFBFBD>7Sprung zum n<>chsten Ereignis
UI_PLAYER_JOINS=§a§l» {0}{1} UI_PLAYER_JOINS=<EFBFBD>a<EFBFBD>l<EFBFBD> {0}{1}
UI_PLAYER_LEAVES=§c§l« {0}{1} UI_PLAYER_LEAVES=<EFBFBD>c<EFBFBD>l<EFBFBD> {0}{1}
UI_LEADER_JOINS=§a§l» {0}Leader {1} UI_LEADER_JOINS=<EFBFBD>a<EFBFBD>l<EFBFBD> {0}Leader {1}
UI_PLAYER_DEATH={0}{1} §7ist gestorben UI_PLAYER_DEATH={0}{1} <EFBFBD>7ist gestorben
UI_PLAYER_LEAVE={0}{1} §7hat den Kampf verlassen UI_PLAYER_LEAVE={0}{1} <EFBFBD>7hat den Kampf verlassen
UI_ELO=§7ELO von {0}{1}§8: §7{2}§8»§e{3} UI_ELO=<EFBFBD>7ELO von {0}{1}<7D>8: <20>7{2}<7D>8<EFBFBD><38>e{3}
UI_WIN={0}Sieg {1} UI_WIN={0}Sieg {1}
UI_DRAW=§7Unentschieden UI_DRAW=<EFBFBD>7Unentschieden
BAR_PRE_LEADER=§7Warten auf Teamleader BAR_PRE_LEADER=<EFBFBD>7Warten auf Teamleader
BAR_PRE_SCHEM={1} §7Schemauswahl {0} {2} BAR_PRE_SCHEM={1} <EFBFBD>7Schemauswahl {0} {2}
BAR_PREPARE={1} {3} §7Vorbereitung {0} {4} {2} BAR_PREPARE={1} {3} <EFBFBD>7Vorbereitung {0} {4} {2}
BAR_PRE_RUNNING={1} {3} §7Kampfbeginn in {0} {4} {2} BAR_PRE_RUNNING={1} {3} <EFBFBD>7Kampfbeginn in {0} {4} {2}
BAR_RUNNING0={1} {3} {0} {4} {2} BAR_RUNNING0={1} {3} {0} {4} {2}
BAR_RUNNING1={1} {3} {5} {0} {6} {4} {2} BAR_RUNNING1={1} {3} {5} {0} {6} {4} {2}
BAR_RUNNING2={1} {3} {5} {7} {0} {6} {8} {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_RUNNING3={1} {3} {5} {7} {9} {0} {6} {8} {10} {4} {2}
BAR_SPECTATE={1} §7Kampf vorbei {0} {2} BAR_SPECTATE={1} <EFBFBD>7Kampf vorbei {0} {2}
BAR_TIE={1} §7Unentschieden {0} {2} BAR_TIE={1} <EFBFBD>7Unentschieden {0} {2}
BAR_WIN={1} §7Sieg {3} {0} {2} BAR_WIN={1} <EFBFBD>7Sieg {3} {0} {2}
BAR_POINTS={0} §8Punkte BAR_POINTS={0} <EFBFBD>8Punkte
BAR_PERCENT={0}§8% BAR_PERCENT={0}<EFBFBD>8%
BAR_CANNONS={0} §8Kanonen BAR_CANNONS={0} <EFBFBD>8Kanonen
BAR_WATER={0} §8Wasser BAR_WATER={0} <EFBFBD>8Wasser
# Winconditions # Winconditions
HELLS_BELLS_COUNTDOWN=bis die Bomben fallen 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} <20>7einen Schuss abgegeben haben muss
WIN_FIGHTLEADER=§7Kampfleiterentscheidung WIN_FIGHTLEADER=<EFBFBD>7Kampfleiterentscheidung
WIN_PERCENT={0} §7zu beschädigt WIN_PERCENT={0} <EFBFBD>7zu besch<63>digt
WIN_OFFLINE_BOTH=§7Beide Teams offline WIN_OFFLINE_BOTH=<EFBFBD>7Beide Teams offline
WIN_OFFLINE={0} §7offline WIN_OFFLINE={0} <EFBFBD>7offline
WIN_RANKED_LEFT={0} §7hat den Kampf verlassen WIN_RANKED_LEFT={0} <EFBFBD>7hat den Kampf verlassen
WIN_ALL_DEAD={0}Alle Spieler kampfunfähig WIN_ALL_DEAD={0}Alle Spieler kampfunf<EFBFBD>hig
WIN_LEADER_DEAD={0} kampfunfähig WIN_LEADER_DEAD={0} kampfunf<EFBFBD>hig
WIN_TIME_OVER=§7Zeit abgelaufen WIN_TIME_OVER=<EFBFBD>7Zeit abgelaufen
WIN_MORE_HEALTH={0}Mehr verbleibende Leben WIN_MORE_HEALTH={0}Mehr verbleibende Leben
WIN_LESS_DAMAGE={0} §7weniger beschädigt WIN_LESS_DAMAGE={0} <EFBFBD>7weniger besch<63>digt
WIN_POINTS={0} hat mehr Punkte WIN_POINTS={0} hat mehr Punkte
WIN_POINTS_EQUAL=§7Gleicher Punktestand WIN_POINTS_EQUAL=<EFBFBD>7Gleicher Punktestand
WIN_TECHKO={0} §7ist Tech K.O. WIN_TECHKO={0} <EFBFBD>7ist Tech K.O.

Datei anzeigen

@ -0,0 +1,160 @@
package de.steamwar.fightsystem.event;
Veraltet
Review

Fehlender License-Header

Fehlender License-Header
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;
Veraltet
Review

Warum hier ein TNT Spawnen und nicht einfach die Explosionsstärke des Fireballs hochdrehen?

Warum hier ein TNT Spawnen und nicht einfach die Explosionsstärke des Fireballs hochdrehen?
Veraltet
Review

Damit Wasser mit weggeht? Das geht nur bei TNT Schaden weg, und ich weiß nicht ob es so gut ist (für Feuerbälle) dies zu erweitern.

Damit Wasser mit weggeht? Das geht nur bei TNT Schaden weg, und ich weiß nicht ob es so gut ist (für Feuerbälle) dies zu erweitern.
Veraltet
Review
Das ist FUD. Der WaterRemover schert sich nicht darum, ob es Feuerball oder TNT ist: https://steamwar.de/devlabs/SteamWar/FightSystem/src/branch/master/FightSystem_Core/src/de/steamwar/fightsystem/listener/WaterRemover.java
Veraltet
Review

Aber wenn ich einfach eine Explosion mache, macht er es nicht weg, dass war es nämlich vorher. Werden nicht auch die beiden arten von Explosionen, anders berechnet intern, muss ich mir mal angucken.

Aber wenn ich einfach eine Explosion mache, macht er es nicht weg, dass war es nämlich vorher. Werden nicht auch die beiden arten von Explosionen, anders berechnet intern, muss ich mir mal angucken.
Veraltet
Review

Es macht einen Unterschied, ob du einen Fireball oder einen Large_Fireball (o.ä.) spawnst. Der eine ist ein Dispenser-Fireball, der andere ein Ghast-/MissileWars-Fireball!

Es macht einen Unterschied, ob du einen Fireball oder einen Large_Fireball (o.ä.) spawnst. Der eine ist ein Dispenser-Fireball, der andere ein Ghast-/MissileWars-Fireball!
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
Lixfel markierte diese Unterhaltung als gelöst
Review

Du instanzierst den Countdown nur an einer Stelle und brauchst sonst nie Spezialfunktionalität - kannst du eigentlich zu einer Lambda-Klasse verkürzen/einfachen.

Du instanzierst den Countdown nur an einer Stelle und brauchst sonst nie Spezialfunktionalität - kannst du eigentlich zu einer Lambda-Klasse verkürzen/einfachen.
Review

das ist einfach so aus HellsBells übernommen.

das ist einfach so aus HellsBells übernommen.
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;
Lixfel markierte diese Unterhaltung als gelöst
Review

Gibts die Klasse nicht schon in HellsBells?

Gibts die Klasse nicht schon in HellsBells?
Review

Vermutlich schon.

Vermutlich schon.
case THIRD:
return FOURTH;
case FOURTH:
case LAST:
return LAST;
default:
return PRE;
}
}
}
}

Datei anzeigen

@ -36,5 +36,6 @@ public enum Winconditions {
WATER_TECH_KO, WATER_TECH_KO,
PUMPKIN_TECH_KO, PUMPKIN_TECH_KO,
HELLS_BELLS HELLS_BELLS,
METEOR
} }