Meteor #324
@ -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
|
||||||
|
@ -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();
|
||||||
|
@ -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.
|
||||||
|
160
FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java
Normale Datei
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;
|
||||||
|
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
|
|||||||
|
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,
|
WATER_TECH_KO,
|
||||||
PUMPKIN_TECH_KO,
|
PUMPKIN_TECH_KO,
|
||||||
|
|
||||||
HELLS_BELLS
|
HELLS_BELLS,
|
||||||
|
METEOR
|
||||||
}
|
}
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren
Du instanzierst den Countdown nur an einer Stelle und brauchst sonst nie Spezialfunktionalität - kannst du eigentlich zu einer Lambda-Klasse verkürzen/einfachen.
das ist einfach so aus HellsBells übernommen.