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
@ -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,
|
WATER_TECH_KO,
|
||||||
PUMPKIN_TECH_KO,
|
PUMPKIN_TECH_KO,
|
||||||
|
|
||||||
HELLS_BELLS
|
HELLS_BELLS,
|
||||||
|
METEOR
|
||||||
}
|
}
|
||||||
|
Fehlender License-Header