Meteor #324
@ -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
|
||||
|
@ -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();
|
||||
|
@ -17,204 +17,205 @@
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
PREFIX=§eArena§8»
|
||||
PREFIX=<EFBFBD>eArena<EFBFBD>8<EFBFBD>
|
||||
|
||||
# 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=<EFBFBD>cDu bist in keinem Team
|
||||
FIGHT_ALREADY_STARTED=<EFBFBD>cDer Kampf hat bereits begonnen
|
||||
NOT_LEADER=<EFBFBD>cDu bist kein Leader
|
||||
PLAYER_UNAVAILABLE=<EFBFBD>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=<EFBFBD>cDu wurdest von keinem Team eingeladen
|
||||
INVITATION_DECLINED=<EFBFBD>cEinladung abgelehnt
|
||||
INVITATION_DECLINED_TEAM=<EFBFBD>e{0} <20>chat die Einladung abgelehnt
|
||||
PLAYER_IN_TEAM=<EFBFBD>e{0} <20>cist bereits in einem Team
|
||||
ALREADY_INVITED=<EFBFBD>e{0} <20>cwurde bereits eingeladen
|
||||
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_CHOSEN=§7Kit §e{0} §7gewählt
|
||||
KIT_UNAVAILABLE=<EFBFBD>cDieses Kit gibt es nicht
|
||||
KIT_CHOSEN=<EFBFBD>7Kit <20>e{0} <20>7gew<65>hlt
|
||||
|
||||
GAMEMODE_NOT_ALLOWED=§cSpielmodusänderung verboten
|
||||
GAMEMODE_UNKNOWN=§cUnbekannter Spielmodus {0}
|
||||
GAMEMODE_HELP=§8/§7gm §8[§eSpielmodus§8]
|
||||
GAMEMODE_NOT_ALLOWED=<EFBFBD>cSpielmodus<EFBFBD>nderung verboten
|
||||
GAMEMODE_UNKNOWN=<EFBFBD>cUnbekannter Spielmodus {0}
|
||||
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
|
||||
ALREADY_IN_TEAM=§cDu bist bereits in einem Team
|
||||
LEADER_FULL=<EFBFBD>cAlle Teams haben bereits einen Leader
|
||||
ALREADY_IN_TEAM=<EFBFBD>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=<EFBFBD>8/<2F>7lockschem <20>8[<5B>eTeam<61>8]
|
||||
UNKNOWN_TEAM=<EFBFBD>cDieses Team existiert nicht
|
||||
LOCKSCHEM_LOCKED=<EFBFBD>7Schematic gesperrt
|
||||
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
|
||||
WIN_HELP=§8/§7win §8[§eTeam §8or §etie§8]
|
||||
NOT_FIGHTLEADER=<EFBFBD>cDu bist nicht Kampfleiter
|
||||
WIN_HELP=<EFBFBD>8/<2F>7win <20>8[<5B>eTeam <20>8or <20>etie<69>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=<EFBFBD>aAnnehmen
|
||||
INVITATION_DECLINE=<EFBFBD>cAblehnen
|
||||
INVITATION_CHAT_ACCEPT=<EFBFBD>8/<2F>aaccept<70>8, <20>7um die Einladung <20>aanzunehmen
|
||||
INVITATION_CHAT_DECLINE=<EFBFBD>8/<2F>cdecline<6E>8, <20>7um die Einladung <20>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=<EFBFBD>7Teamleaderwartephase
|
||||
STATE_PRE_SCHEM_SETUP=<EFBFBD>7Schemauswahlphase
|
||||
STATE_POST_SCHEM_SETUP=<EFBFBD>7Vorbereitungsphase
|
||||
STATE_PRE_RUNNING=<EFBFBD>eKitausgabe
|
||||
STATE_RUNNING=<EFBFBD>eKampfphase
|
||||
STATE_SPECTATE_WIN=<EFBFBD>7Sieg {0}
|
||||
STATE_SPECTATE_TIE=<EFBFBD>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=<EFBFBD>cKeine Kits gefunden
|
||||
KIT_CREATE=<EFBFBD>eNeues Kit
|
||||
KITNAME_TITLE=Kitname eingeben
|
||||
KITNAME_IN_USE=§cDieser Kitname wird bereits genutzt
|
||||
KIT_SEARCH=§eSuchen
|
||||
KITNAME_IN_USE=<EFBFBD>cDieser Kitname wird bereits genutzt
|
||||
KIT_SEARCH=<EFBFBD>eSuchen
|
||||
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_PUBLIC=§eÖffentliches {0}
|
||||
SCHEM_PRIVATE=§ePrivates {0}
|
||||
SCHEM_NO_PRIVATE=§7Kein privates {0} vorhanden
|
||||
SCHEM_PRIVATE_FORBIDDEN=§7Kein privates {0} erlaubt
|
||||
SCHEM_PUBLIC=<EFBFBD>e<EFBFBD>ffentliches {0}
|
||||
SCHEM_PRIVATE=<EFBFBD>ePrivates {0}
|
||||
SCHEM_NO_PRIVATE=<EFBFBD>7Kein privates {0} vorhanden
|
||||
SCHEM_PRIVATE_FORBIDDEN=<EFBFBD>7Kein privates {0} erlaubt
|
||||
|
||||
|
||||
# Countdowns
|
||||
COUNTDOWN_MINUTES=§e{0} §7Minuten {1}
|
||||
COUNTDOWN_SECONDS=§e{0} §7Sekunden {1}
|
||||
COUNTDOWN_SECOND=§eEine §7Sekunde {1}
|
||||
COUNTDOWN_MINUTES=<EFBFBD>e{0} <20>7Minuten {1}
|
||||
COUNTDOWN_SECONDS=<EFBFBD>e{0} <20>7Sekunden {1}
|
||||
COUNTDOWN_SECOND=<EFBFBD>eEine <20>7Sekunde {1}
|
||||
|
||||
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
|
||||
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
|
||||
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<EFBFBD>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=<EFBFBD>cSchematic konnte nicht geladen werden
|
||||
SCHEMATIC_CHOSEN=<EFBFBD>7{0} <20>e{1} <20>7gew<65>hlt
|
||||
TEAM_READY=<EFBFBD>aTeam bereit
|
||||
TEAM_NOT_READY=<EFBFBD>c<EFBFBD>mTeam bereit
|
||||
SKIP_READY=<EFBFBD>aBeschleunigung zum n<>chsten Event
|
||||
SKIP_NOT_READY=<EFBFBD>c<EFBFBD>mBeschleunigung zum n<>chsten Event
|
||||
TEAM_CHAT={0}{1}<EFBFBD>8<EFBFBD> {0}{2}
|
||||
CHOOSE_KIT=<EFBFBD>eKit w<>hlen
|
||||
RESPAWN=<EFBFBD>eRespawn
|
||||
INVITE_PLAYERS=<EFBFBD>eSpieler einladen
|
||||
REMOVE_PLAYERS=<EFBFBD>cSpieler rauswerfen
|
||||
CHOOSE_SCHEMATIC=<EFBFBD>e{0} w<>hlen
|
||||
SCHEMATIC_REQUIRED=<EFBFBD>cZuerst muss eine Schematic gew<65>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=<EFBFBD>7Kit bearbeiten
|
||||
KIT_PREVIEW_CHOOSE=<EFBFBD>aKit w<>hlen
|
||||
KIT_PREVIEW_BACK=<EFBFBD>cZur<EFBFBD>ck
|
||||
KIT_PREVIEW_DELETE=<EFBFBD>cKit l<>schen
|
||||
KIT_DELETION_CONFIRMATION=Kit wirklich l<EFBFBD>schen?
|
||||
KIT_DELETION_ABORT=<EFBFBD>cAbbrechen
|
||||
KIT_DELETION_DELETE=<EFBFBD>aL<EFBFBD>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=<EFBFBD>cDu darfst die Arena nicht verlassen
|
||||
CHECK_JOIN_DENIED=<EFBFBD>cAuf diesem Server wird momentan eine Schematic gepr<70>ft!
|
||||
CHECK_COMMAND_LOCKED=<EFBFBD>cDieser Befehl ist beim Pr<50>fen gesperrt! Admin wird benachrichtigt.
|
||||
NO_BLOCK_BREAK=<EFBFBD>cDu darfst hier derzeit keine Bl<42>cke abbauen
|
||||
NO_BLOCK_PLACE=<EFBFBD>cDu darfst hier derzeit keine Bl<42>cke setzen
|
||||
NO_BOW_USAGE=<EFBFBD>cDu darfst den Bogen erst nach Kampfbeginn nutzen
|
||||
NO_PARTICIPANT=<EFBFBD>cDu bist kein Kampfteilnehmer
|
||||
NO_FRIENDLY_FIRE=<EFBFBD>cDu darfst deinen Teamkollegen keinen Schaden zuf<75>gen
|
||||
NO_TNT_PLACE=<EFBFBD>cDu darfst kein TNT setzen
|
||||
NO_TELEPORT=<EFBFBD>cDu darfst diese Teleportfunktion nicht benutzen
|
||||
OPEN_INVENTORY_TO_CUSTOMIZE=<EFBFBD>eInventar zum Anpassen des Kits <20>ffnen
|
||||
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=<EFBFBD>cDu darfst nicht entern
|
||||
NO_TEAMAREA=<EFBFBD>cDu darfst nicht zu den Teams
|
||||
TEST_BECOME_LEADER=<EFBFBD>7Werde zum Teamleader mit <20>8/<2F>eleader
|
||||
PREPARE_SCHEM_DELETED=<EFBFBD>cAnscheinend wurde die auszufahrende Schematic gel<65>scht, Einsenden wird abgebrochen.
|
||||
PREPARE_ACTIVE_PISTON=<EFBFBD>cIm Teambereich wurden sich noch bewegende Pistons gefunden, Einsenden wird abgebrochen.
|
||||
PREPARE_FAILED_SAVING=<EFBFBD>cDie Schematic konnte nicht gespeichert werden, Einsenden wird abgebrochen.
|
||||
PREPARE_SENT_IN=<EFBFBD>aDie Schematic wird nun zeitnah von einem Teammitglied <20>berpr<70>ft
|
||||
PARTICIPANT_CHAT={0} {1}<EFBFBD>8<EFBFBD> <20>7{2}
|
||||
FIGHTLEADER_CHAT=<EFBFBD>e{0}<7D>8<EFBFBD> <20>e{1}
|
||||
SPECTATOR_CHAT=<EFBFBD>7{0}<7D>8<EFBFBD> <20>7{1}
|
||||
|
||||
|
||||
# Replay
|
||||
REPLAY_ENDS=§cReplay beendet
|
||||
REPLAY_ENDS=<EFBFBD>cReplay beendet
|
||||
OLD_STRING={0}
|
||||
|
||||
|
||||
# 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
|
||||
TPS_WARNING=§c{0} §7TPS
|
||||
TPS_WARNING=<EFBFBD>c{0} <20>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=<EFBFBD>7Kits verteilt
|
||||
UI_RUNNING=<EFBFBD>aArena freigegeben
|
||||
UI_SKIP=<EFBFBD>7Sprung zum n<>chsten Ereignis
|
||||
UI_PLAYER_JOINS=<EFBFBD>a<EFBFBD>l<EFBFBD> {0}{1}
|
||||
UI_PLAYER_LEAVES=<EFBFBD>c<EFBFBD>l<EFBFBD> {0}{1}
|
||||
UI_LEADER_JOINS=<EFBFBD>a<EFBFBD>l<EFBFBD> {0}Leader {1}
|
||||
UI_PLAYER_DEATH={0}{1} <EFBFBD>7ist gestorben
|
||||
UI_PLAYER_LEAVE={0}{1} <EFBFBD>7hat den Kampf verlassen
|
||||
UI_ELO=<EFBFBD>7ELO von {0}{1}<7D>8: <20>7{2}<7D>8<EFBFBD><38>e{3}
|
||||
UI_WIN={0}Sieg {1}
|
||||
UI_DRAW=§7Unentschieden
|
||||
UI_DRAW=<EFBFBD>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=<EFBFBD>7Warten auf Teamleader
|
||||
BAR_PRE_SCHEM={1} <EFBFBD>7Schemauswahl {0} {2}
|
||||
BAR_PREPARE={1} {3} <EFBFBD>7Vorbereitung {0} {4} {2}
|
||||
BAR_PRE_RUNNING={1} {3} <EFBFBD>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} <EFBFBD>7Kampf vorbei {0} {2}
|
||||
BAR_TIE={1} <EFBFBD>7Unentschieden {0} {2}
|
||||
BAR_WIN={1} <EFBFBD>7Sieg {3} {0} {2}
|
||||
BAR_POINTS={0} <EFBFBD>8Punkte
|
||||
BAR_PERCENT={0}<EFBFBD>8%
|
||||
BAR_CANNONS={0} <EFBFBD>8Kanonen
|
||||
BAR_WATER={0} <EFBFBD>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} <20>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=<EFBFBD>7Kampfleiterentscheidung
|
||||
WIN_PERCENT={0} <EFBFBD>7zu besch<63>digt
|
||||
WIN_OFFLINE_BOTH=<EFBFBD>7Beide Teams offline
|
||||
WIN_OFFLINE={0} <EFBFBD>7offline
|
||||
WIN_RANKED_LEFT={0} <EFBFBD>7hat den Kampf verlassen
|
||||
WIN_ALL_DEAD={0}Alle Spieler kampfunf<EFBFBD>hig
|
||||
WIN_LEADER_DEAD={0} kampfunf<EFBFBD>hig
|
||||
WIN_TIME_OVER=<EFBFBD>7Zeit abgelaufen
|
||||
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_EQUAL=§7Gleicher Punktestand
|
||||
WIN_TECHKO={0} §7ist Tech K.O.
|
||||
WIN_POINTS_EQUAL=<EFBFBD>7Gleicher Punktestand
|
||||
WIN_TECHKO={0} <EFBFBD>7ist Tech K.O.
|
||||
|
160
FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java
Normale Datei
@ -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;
|
||||
Lixfel
hat
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?
YoyoNow
hat
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.
Lixfel
hat
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 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
YoyoNow
hat
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.
Lixfel
hat
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
Lixfel
hat
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.
YoyoNow
hat
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
Lixfel
hat
Gibts die Klasse nicht schon in HellsBells? Gibts die Klasse nicht schon in HellsBells?
YoyoNow
hat
Vermutlich schon. Vermutlich schon.
|
||||
case THIRD:
|
||||
return FOURTH;
|
||||
case FOURTH:
|
||||
case LAST:
|
||||
return LAST;
|
||||
default:
|
||||
return PRE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -36,5 +36,6 @@ public enum Winconditions {
|
||||
WATER_TECH_KO,
|
||||
PUMPKIN_TECH_KO,
|
||||
|
||||
HELLS_BELLS
|
||||
HELLS_BELLS,
|
||||
METEOR
|
||||
}
|
||||
|
Fehlender License-Header