Signed-off-by: Lixfel <agga-games@gmx.de>
Dieser Commit ist enthalten in:
Ursprung
221f5930c9
Commit
594816bb7d
@ -52,5 +52,5 @@ public enum ArenaMode {
|
||||
public static final Set<ArenaMode> Restartable = Collections.unmodifiableSet(EnumSet.of(NORMAL, RANKED, REPLAY));
|
||||
public static final Set<ArenaMode> SoloLeader = Collections.unmodifiableSet(EnumSet.of(TEST, CHECK, PREPARE));
|
||||
public static final Set<ArenaMode> NotOnBau = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(TEST, CHECK, PREPARE, REPLAY)));
|
||||
public static final Set<ArenaMode> VariableTime = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(TEST, CHECK, REPLAY)));
|
||||
public static final Set<ArenaMode> SeriousFight = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(TEST, CHECK, REPLAY)));
|
||||
}
|
||||
|
@ -19,7 +19,6 @@
|
||||
|
||||
package de.steamwar.fightsystem;
|
||||
|
||||
import de.steamwar.core.CommandRemover;
|
||||
import de.steamwar.fightsystem.commands.*;
|
||||
import de.steamwar.fightsystem.countdown.*;
|
||||
import de.steamwar.fightsystem.event.HellsBells;
|
||||
@ -30,7 +29,6 @@ import de.steamwar.fightsystem.listener.Shutdown;
|
||||
import de.steamwar.fightsystem.listener.*;
|
||||
import de.steamwar.fightsystem.record.*;
|
||||
import de.steamwar.fightsystem.states.FightState;
|
||||
import de.steamwar.fightsystem.states.OneShotStateDependent;
|
||||
import de.steamwar.fightsystem.utils.*;
|
||||
import de.steamwar.fightsystem.winconditions.*;
|
||||
import de.steamwar.message.Message;
|
||||
@ -40,8 +38,6 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
public class FightSystem extends JavaPlugin {
|
||||
|
||||
private static FightSystem plugin;
|
||||
@ -50,6 +46,7 @@ public class FightSystem extends JavaPlugin {
|
||||
|
||||
private Message message;
|
||||
private FightTeam lastWinner;
|
||||
private String lastWinreason;
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
@ -92,6 +89,7 @@ public class FightSystem extends JavaPlugin {
|
||||
new TechHider();
|
||||
new FightWorld();
|
||||
new FightUI();
|
||||
new FightStatistics();
|
||||
new BungeeFightInfo();
|
||||
|
||||
new WinconditionAllDead();
|
||||
@ -122,6 +120,7 @@ public class FightSystem extends JavaPlugin {
|
||||
new RemoveCommand();
|
||||
new AcceptCommand();
|
||||
new DeclineCommand();
|
||||
new GamemodeCommand();
|
||||
new InviteCommand();
|
||||
new ReadyCommand();
|
||||
new AkCommand();
|
||||
@ -135,17 +134,6 @@ public class FightSystem extends JavaPlugin {
|
||||
new LiveRecorder();
|
||||
new FileRecorder();
|
||||
|
||||
new OneShotStateDependent(ArenaMode.AntiReplay, FightState.PreRunning, () -> FightUI.addSubtitle("UI_PRE_RUNNING"));
|
||||
new OneShotStateDependent(ArenaMode.AntiReplay, FightState.Running, () -> FightUI.addSubtitle("UI_RUNNING"));
|
||||
new OneShotStateDependent(ArenaMode.AntiTest, FightState.Running, FightStatistics::start);
|
||||
|
||||
try {
|
||||
CommandRemover.removeAll("gamemode");
|
||||
CommandInjector.injectCommand(new GamemodeCommand());
|
||||
} catch (Exception e) {
|
||||
getLogger().log(Level.SEVERE, "Failed to replace commands", e);
|
||||
}
|
||||
|
||||
REntity.initWatchers();
|
||||
|
||||
if(Config.mode == ArenaMode.EVENT) {
|
||||
@ -167,9 +155,6 @@ public class FightSystem extends JavaPlugin {
|
||||
|
||||
public static void setPreLeaderState() {
|
||||
FightState.setFightState(FightState.PRE_LEADER_SETUP);
|
||||
|
||||
Fight.getBlueTeam().reset();
|
||||
Fight.getRedTeam().reset();
|
||||
}
|
||||
|
||||
public static void setPreSchemState() {
|
||||
@ -190,22 +175,10 @@ public class FightSystem extends JavaPlugin {
|
||||
|
||||
public static void setSpectateState(FightTeam winFightTeam, String winreason, String subtitle, Object... params) {
|
||||
plugin.lastWinner = winFightTeam;
|
||||
plugin.lastWinreason = winreason;
|
||||
FightUI.printWin(winFightTeam, subtitle, params);
|
||||
|
||||
FightState.setFightState(FightState.SPECTATE);
|
||||
|
||||
if(!Config.test() && !PacketProcessor.isReplaying()){
|
||||
if(Config.mode == ArenaMode.EVENT) {
|
||||
if (winFightTeam == null)
|
||||
getEventFight().setErgebnis(0);
|
||||
else if (winFightTeam.isBlue())
|
||||
getEventFight().setErgebnis(1);
|
||||
else
|
||||
getEventFight().setErgebnis(2);
|
||||
}
|
||||
|
||||
FightStatistics.saveStats(winFightTeam, winreason);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setEventLeiter(Player el){
|
||||
@ -241,6 +214,10 @@ public class FightSystem extends JavaPlugin {
|
||||
return plugin.lastWinner;
|
||||
}
|
||||
|
||||
public static String getLastWinreason() {
|
||||
return plugin.lastWinreason;
|
||||
}
|
||||
|
||||
public static void shutdown() {
|
||||
//Staggered kick to prevent lobby overloading
|
||||
if(Bukkit.getOnlinePlayers().isEmpty()){
|
||||
|
@ -20,6 +20,7 @@
|
||||
package de.steamwar.fightsystem.commands;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import de.steamwar.core.CommandRemover;
|
||||
import de.steamwar.fightsystem.Config;
|
||||
import de.steamwar.fightsystem.FightSystem;
|
||||
import net.md_5.bungee.api.ChatMessageType;
|
||||
@ -31,6 +32,7 @@ import org.bukkit.util.StringUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
|
||||
public class GamemodeCommand extends BukkitCommand {
|
||||
|
||||
@ -42,6 +44,13 @@ public class GamemodeCommand extends BukkitCommand {
|
||||
List<String> aliases = new ArrayList<>();
|
||||
aliases.add("gm");
|
||||
this.setAliases(aliases);
|
||||
|
||||
try {
|
||||
CommandRemover.removeAll("gamemode");
|
||||
CommandInjector.injectCommand(this);
|
||||
} catch (Exception e) {
|
||||
FightSystem.getPlugin().getLogger().log(Level.SEVERE, "Failed to replace commands", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -30,7 +30,7 @@ public class PostSchemCountdown extends Countdown {
|
||||
|
||||
public PostSchemCountdown() {
|
||||
super(Config.SetupDuration, new Message("POST_SCHEM_COUNTDOWN"), null, false);
|
||||
new StateDependentCountdown(ArenaMode.VariableTime, FightState.PostSchemSetup, this);
|
||||
new StateDependentCountdown(ArenaMode.SeriousFight, FightState.PostSchemSetup, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -28,6 +28,7 @@ import de.steamwar.fightsystem.listener.FightScoreboard;
|
||||
import de.steamwar.fightsystem.listener.PersonalKitCreator;
|
||||
import de.steamwar.fightsystem.record.GlobalRecorder;
|
||||
import de.steamwar.fightsystem.states.FightState;
|
||||
import de.steamwar.fightsystem.states.OneShotStateDependent;
|
||||
import de.steamwar.fightsystem.states.StateDependent;
|
||||
import de.steamwar.fightsystem.utils.*;
|
||||
import de.steamwar.inventory.SWItem;
|
||||
@ -90,6 +91,8 @@ public class FightTeam {
|
||||
BountifulWrapper.impl.setNametagVisibility(team);
|
||||
team.setNameTagVisibility(NameTagVisibility.HIDE_FOR_OTHER_TEAMS);
|
||||
team.setAllowFriendlyFire(false);
|
||||
|
||||
new OneShotStateDependent(ArenaMode.All, FightState.PreLeaderSetup, () -> Bukkit.getScheduler().runTask(FightSystem.getPlugin(), this::reset));
|
||||
}
|
||||
|
||||
public void setPrefixAndName(String prefix, String name){
|
||||
@ -149,7 +152,7 @@ public class FightTeam {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void reset(){
|
||||
public void reset() {
|
||||
skip = false;
|
||||
ready = false;
|
||||
schematic.reset();
|
||||
|
@ -27,6 +27,8 @@ import de.steamwar.fightsystem.fight.Fight;
|
||||
import de.steamwar.fightsystem.fight.FightPlayer;
|
||||
import de.steamwar.fightsystem.fight.FightTeam;
|
||||
import de.steamwar.fightsystem.record.FileRecorder;
|
||||
import de.steamwar.fightsystem.states.FightState;
|
||||
import de.steamwar.fightsystem.states.OneShotStateDependent;
|
||||
import de.steamwar.fightsystem.winconditions.Wincondition;
|
||||
import de.steamwar.sql.Elo;
|
||||
import de.steamwar.sql.Schematic;
|
||||
@ -42,16 +44,33 @@ import static de.steamwar.sql.Fight.create;
|
||||
import static de.steamwar.sql.Fight.setReplay;
|
||||
|
||||
public class FightStatistics {
|
||||
private FightStatistics(){}
|
||||
|
||||
private static Timestamp starttime = Timestamp.from(Instant.now());
|
||||
private static final int K = 20;
|
||||
|
||||
public static void start(){
|
||||
private Timestamp starttime = Timestamp.from(Instant.now());
|
||||
|
||||
public FightStatistics() {
|
||||
new OneShotStateDependent(ArenaMode.SeriousFight, FightState.Running, this::enable);
|
||||
new OneShotStateDependent(ArenaMode.Event, FightState.Spectate, this::setEventResult);
|
||||
new OneShotStateDependent(ArenaMode.SeriousFight, FightState.Spectate, this::disable);
|
||||
}
|
||||
|
||||
private void enable(){
|
||||
starttime = Timestamp.from(Instant.now());
|
||||
}
|
||||
|
||||
public static void saveStats(FightTeam winner, String windescription){
|
||||
private void setEventResult() {
|
||||
if (FightSystem.getLastWinner() == null)
|
||||
FightSystem.getEventFight().setErgebnis(0);
|
||||
else if (FightSystem.getLastWinner().isBlue())
|
||||
FightSystem.getEventFight().setErgebnis(1);
|
||||
else
|
||||
FightSystem.getEventFight().setErgebnis(2);
|
||||
}
|
||||
|
||||
private void disable() {
|
||||
FightTeam winner = FightSystem.getLastWinner();
|
||||
String windescription = FightSystem.getLastWinreason();
|
||||
String gameMode = Config.SchematicType.toDB();
|
||||
|
||||
int blueLeader = getLeader(Fight.getBlueTeam());
|
||||
@ -120,7 +139,7 @@ public class FightStatistics {
|
||||
}
|
||||
}
|
||||
|
||||
private static int getLeader(FightTeam team){
|
||||
private int getLeader(FightTeam team){
|
||||
if(team.getLeader() != null)
|
||||
return SteamwarUser.get(team.getLeader().getPlayer().getUniqueId()).getId();
|
||||
else if(team.getDesignatedLeader() != null)
|
||||
@ -128,7 +147,7 @@ public class FightStatistics {
|
||||
return 0;
|
||||
}
|
||||
|
||||
private static void savePlayerStats(FightPlayer fp, int fightId){
|
||||
private void savePlayerStats(FightPlayer fp, int fightId){
|
||||
SteamwarUser user = SteamwarUser.get(fp.getPlayer().getUniqueId());
|
||||
de.steamwar.sql.FightPlayer.create(fightId, user.getId(), fp.getTeam().isBlue(), fp.getKit().getName(), fp.getKills(), !fp.isLiving());
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ import de.steamwar.fightsystem.fight.Fight;
|
||||
import de.steamwar.fightsystem.fight.FightTeam;
|
||||
import de.steamwar.fightsystem.record.GlobalRecorder;
|
||||
import de.steamwar.fightsystem.states.FightState;
|
||||
import de.steamwar.fightsystem.states.OneShotStateDependent;
|
||||
import de.steamwar.fightsystem.states.StateDependentCountdown;
|
||||
import de.steamwar.fightsystem.states.StateDependentTask;
|
||||
import de.steamwar.fightsystem.winconditions.Wincondition;
|
||||
@ -51,6 +52,8 @@ public class FightUI {
|
||||
new StateDependentTask(ArenaMode.AntiReplay, FightState.All, this::update, 20, 20);
|
||||
new StateDependentTask(ArenaMode.All, FightState.All, this::sendToPlayers, 5, 5);
|
||||
new StateDependentTask(ArenaMode.All, FightState.All, this::tpsWatcher, 20, 20);
|
||||
new OneShotStateDependent(ArenaMode.AntiReplay, FightState.PreRunning, () -> addSubtitle("UI_PRE_RUNNING"));
|
||||
new OneShotStateDependent(ArenaMode.AntiReplay, FightState.Running, () -> addSubtitle("UI_RUNNING"));
|
||||
instance = this;
|
||||
}
|
||||
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren