SteamWar/FightSystem
Archiviert
13
1
Dieses Repository wurde am 2024-08-05 archiviert. Du kannst Dateien ansehen und es klonen, aber nicht pushen oder Issues/Pull-Requests öffnen.
FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/listener/EventJoin.java
Lixfel 6ee276ca82
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
WIP multiling part 2
Signed-off-by: Lixfel <agga-games@gmx.de>
2021-10-07 09:54:53 +02:00

104 Zeilen
3.7 KiB
Java

/*
This file is a part of the SteamWar software.
Copyright (C) 2020 SteamWar.de-Serverteam
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.fightsystem.listener;
import de.steamwar.fightsystem.ArenaMode;
import de.steamwar.fightsystem.Config;
import de.steamwar.fightsystem.FightSystem;
import de.steamwar.fightsystem.fight.Fight;
import de.steamwar.fightsystem.fight.FightTeam;
import de.steamwar.fightsystem.states.FightState;
import de.steamwar.fightsystem.states.StateDependentListener;
import de.steamwar.sql.SteamwarUser;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
public class EventJoin implements Listener {
public EventJoin() {
new StateDependentListener(ArenaMode.Event, FightState.All, this);
}
@EventHandler
public void playerLogin(PlayerLoginEvent event) {
if(!Config.LiveReplay)
return;
Player player = event.getPlayer();
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
if(user.getTeam() == Config.EventTeamBlueID ||
user.getTeam() == Config.EventTeamRedID ||
user.getId() == FightSystem.getEventFight().getKampfleiter())
return;
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, FightSystem.getMessage().parse("NO_PARTICIPANT", player));
}
@EventHandler
public void handlePlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
if(FightState.Setup.contains(FightState.getFightState())){
FightTeam team = null;
if(user.getTeam() == Config.EventTeamBlueID)
team = Fight.getBlueTeam();
else if(user.getTeam() == Config.EventTeamRedID)
team = Fight.getRedTeam();
if(Config.BothTeamsPublic){
if(Fight.getRedTeam().getPlayers().size() < Fight.getBlueTeam().getPlayers().size())
team = Fight.getRedTeam();
else
team = Fight.getBlueTeam();
}else if(team == null){
if(Config.EventTeamRedID == 0)
team = Fight.getRedTeam();
else if(Config.EventTeamBlueID == 0)
team = Fight.getBlueTeam();
}
if(team != null && team.getPlayers().size() < Config.MaximumTeamMembers){
team.addMember(player);
return;
}
}
if(user.getId() == FightSystem.getEventFight().getKampfleiter()){
FightSystem.setEventLeiter(player);
return;
}
if(Config.LiveReplay)
player.kickPlayer(FightSystem.getMessage().parse("NO_PARTICIPANT", player));
}
@EventHandler
public void handlePlayerLeave(PlayerQuitEvent event){
Player player = event.getPlayer();
if(player == FightSystem.getEventLeiter())
FightSystem.setEventLeiter(null);
}
}