more stable, progress for making 'easier-to-use'
This commit is contained in:
parent
5caeb8bee0
commit
ec6e916c7b
|
@ -1,12 +1,10 @@
|
||||||
package nautilus.game.arcade.game;
|
package nautilus.game.arcade.game;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -75,8 +73,8 @@ import nautilus.game.arcade.game.GameTeam.PlayerState;
|
||||||
import nautilus.game.arcade.kit.Kit;
|
import nautilus.game.arcade.kit.Kit;
|
||||||
import nautilus.game.arcade.kit.KitAvailability;
|
import nautilus.game.arcade.kit.KitAvailability;
|
||||||
import nautilus.game.arcade.kit.Perk;
|
import nautilus.game.arcade.kit.Perk;
|
||||||
import nautilus.game.arcade.managers.GameChatManager;
|
|
||||||
import nautilus.game.arcade.managers.GameLobbyManager;
|
import nautilus.game.arcade.managers.GameLobbyManager;
|
||||||
|
import nautilus.game.arcade.managers.chat.ChatStatData;
|
||||||
import nautilus.game.arcade.scoreboard.GameScoreboard;
|
import nautilus.game.arcade.scoreboard.GameScoreboard;
|
||||||
import nautilus.game.arcade.stats.AssistsStatTracker;
|
import nautilus.game.arcade.stats.AssistsStatTracker;
|
||||||
import nautilus.game.arcade.stats.DamageDealtStatTracker;
|
import nautilus.game.arcade.stats.DamageDealtStatTracker;
|
||||||
|
@ -274,6 +272,11 @@ public abstract class Game implements Listener
|
||||||
public long PrepareTime = 9000;
|
public long PrepareTime = 9000;
|
||||||
public boolean PlaySoundGameStart = true;
|
public boolean PlaySoundGameStart = true;
|
||||||
|
|
||||||
|
// Chat Stats
|
||||||
|
public final ChatStatData Kills = new ChatStatData(new String[]{"Kills"}, "Kills", true);
|
||||||
|
public final ChatStatData Deaths = new ChatStatData(new String[]{"Deaths"}, "Kills", true);
|
||||||
|
public final ChatStatData KDRatio = new ChatStatData(new String[]{"KDRatio"}, "KD-Ratio", true);
|
||||||
|
|
||||||
// Gems
|
// Gems
|
||||||
public double GemMultiplier = 1;
|
public double GemMultiplier = 1;
|
||||||
public boolean GemHunterEnabled = true;
|
public boolean GemHunterEnabled = true;
|
||||||
|
|
|
@ -39,7 +39,7 @@ public class BaconBrawl extends SoloGame
|
||||||
HungerSet = 20;
|
HungerSet = 20;
|
||||||
PrepareFreeze = false;
|
PrepareFreeze = false;
|
||||||
|
|
||||||
Manager.getGameChatManager().setGameChatStats("Kills", "Deaths");
|
Manager.getGameChatManager().setGameChatStats(Kills, Deaths);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|
|
@ -163,7 +163,7 @@ public class Evolution extends SoloGame
|
||||||
new KillsWhileEvolvingTracker(this)
|
new KillsWhileEvolvingTracker(this)
|
||||||
);
|
);
|
||||||
|
|
||||||
Manager.getGameChatManager().setGameChatStats("Kills", "Deaths");
|
Manager.getGameChatManager().setGameChatStats(Kills, Deaths);
|
||||||
}
|
}
|
||||||
|
|
||||||
public EvolveManager getEvolve()
|
public EvolveManager getEvolve()
|
||||||
|
|
|
@ -104,6 +104,7 @@ import nautilus.game.arcade.game.games.minestrike.items.guns.GunStats;
|
||||||
import nautilus.game.arcade.game.games.minestrike.items.guns.GunType;
|
import nautilus.game.arcade.game.games.minestrike.items.guns.GunType;
|
||||||
import nautilus.game.arcade.game.games.minestrike.kits.KitPlayer;
|
import nautilus.game.arcade.game.games.minestrike.kits.KitPlayer;
|
||||||
import nautilus.game.arcade.kit.Kit;
|
import nautilus.game.arcade.kit.Kit;
|
||||||
|
import nautilus.game.arcade.managers.chat.ChatStatData;
|
||||||
import nautilus.game.arcade.stats.KaboomStatTracker;
|
import nautilus.game.arcade.stats.KaboomStatTracker;
|
||||||
import nautilus.game.arcade.stats.KillAllOpposingMineStrikeRoundStatTracker;
|
import nautilus.game.arcade.stats.KillAllOpposingMineStrikeRoundStatTracker;
|
||||||
import nautilus.game.arcade.stats.KillFastStatTracker;
|
import nautilus.game.arcade.stats.KillFastStatTracker;
|
||||||
|
@ -309,7 +310,14 @@ public class MineStrike extends TeamGame
|
||||||
new TeamKillsStatTracker(this)
|
new TeamKillsStatTracker(this)
|
||||||
);
|
);
|
||||||
|
|
||||||
Manager.getGameChatManager().setGameChatStats("Kills", "Deaths", "KDRatio");
|
//"Kills", "Deaths", "KDRatio", "", "BoomHeadshot"
|
||||||
|
Manager.getGameChatManager().setGameChatStats(
|
||||||
|
Kills,
|
||||||
|
Deaths,
|
||||||
|
KDRatio,
|
||||||
|
new ChatStatData().blankLine(),
|
||||||
|
new ChatStatData(new String[]{null}, "Testing", false)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -3,6 +3,7 @@ package nautilus.game.arcade.managers;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.util.AbstractMap;
|
import java.util.AbstractMap;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
@ -20,6 +21,7 @@ import org.bukkit.event.player.PlayerItemConsumeEvent;
|
||||||
import net.minecraft.server.v1_8_R3.IChatBaseComponent;
|
import net.minecraft.server.v1_8_R3.IChatBaseComponent;
|
||||||
import net.minecraft.server.v1_8_R3.PacketPlayOutChat;
|
import net.minecraft.server.v1_8_R3.PacketPlayOutChat;
|
||||||
|
|
||||||
|
import com.google.gson.stream.MalformedJsonException;
|
||||||
import mineplex.core.account.CoreClient;
|
import mineplex.core.account.CoreClient;
|
||||||
import mineplex.core.common.Rank;
|
import mineplex.core.common.Rank;
|
||||||
import mineplex.core.common.jsonchat.JsonMessage;
|
import mineplex.core.common.jsonchat.JsonMessage;
|
||||||
|
@ -28,8 +30,10 @@ import mineplex.core.common.util.F;
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
import mineplex.core.party.Party;
|
import mineplex.core.party.Party;
|
||||||
import nautilus.game.arcade.ArcadeManager;
|
import nautilus.game.arcade.ArcadeManager;
|
||||||
|
import nautilus.game.arcade.game.Game;
|
||||||
import nautilus.game.arcade.game.Game.GameState;
|
import nautilus.game.arcade.game.Game.GameState;
|
||||||
import nautilus.game.arcade.game.GameTeam;
|
import nautilus.game.arcade.game.GameTeam;
|
||||||
|
import nautilus.game.arcade.managers.chat.ChatStatData;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
|
@ -38,7 +42,7 @@ public class GameChatManager implements Listener
|
||||||
|
|
||||||
private ArcadeManager _manager;
|
private ArcadeManager _manager;
|
||||||
|
|
||||||
private LinkedList<String> _chatStats = new LinkedList<>();
|
private LinkedList<ChatStatData> _chatStats = new LinkedList<ChatStatData>();
|
||||||
|
|
||||||
public GameChatManager(ArcadeManager manager)
|
public GameChatManager(ArcadeManager manager)
|
||||||
{
|
{
|
||||||
|
@ -149,11 +153,9 @@ public class GameChatManager implements Listener
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
if(safeSend(sender, format, name, message, party.GetPlayersOnline()))
|
||||||
IChatBaseComponent baseComponent = IChatBaseComponent.ChatSerializer.a(buildJSON(sender, format, name, _chatStats, message));
|
|
||||||
for(Player partyUser : party.GetPlayersOnline())
|
|
||||||
{
|
{
|
||||||
UtilPlayer.sendPacket(partyUser, new PacketPlayOutChat(baseComponent));
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,11 +202,9 @@ public class GameChatManager implements Listener
|
||||||
{
|
{
|
||||||
if(_manager.GetGame().IsLive())
|
if(_manager.GetGame().IsLive())
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
if(safeSend(sender, format, name, message, _manager.GetGame().GetPlayers(false)))
|
||||||
IChatBaseComponent baseComponent = IChatBaseComponent.ChatSerializer.a(buildJSON(sender, format, name, _chatStats, message));
|
|
||||||
for(Player player : _manager.GetGame().GetPlayers(false))
|
|
||||||
{
|
{
|
||||||
UtilPlayer.sendPacket(player, new PacketPlayOutChat(baseComponent));
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -232,66 +232,113 @@ public class GameChatManager implements Listener
|
||||||
recipientIterator.remove();
|
recipientIterator.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
IChatBaseComponent baseComponent = IChatBaseComponent.ChatSerializer.a(buildJSON(sender, format, name, _chatStats, message));
|
if(safeSend(sender, format, name, message, event.getRecipients()))
|
||||||
for(Player player : event.getRecipients())
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean safeSend(Player sender, String format, String name, String message, Collection<Player> sendto)
|
||||||
|
{
|
||||||
|
String json = buildJSON(sender, format, name, _chatStats, message);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IChatBaseComponent baseComponent = IChatBaseComponent.ChatSerializer.a(json);
|
||||||
|
for(Player player : sendto)
|
||||||
{
|
{
|
||||||
UtilPlayer.sendPacket(player, new PacketPlayOutChat(baseComponent));
|
UtilPlayer.sendPacket(player, new PacketPlayOutChat(baseComponent));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGameChatStats(String... stats)
|
return true;
|
||||||
{
|
}
|
||||||
for(String str : stats)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
System.out.println(str);
|
System.out.println("");
|
||||||
_chatStats.add(str);
|
System.out.println("ChatStats Failed to send JSON message..");
|
||||||
|
System.out.println(json);
|
||||||
|
System.out.println("");
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String buildJSON(Player player, String format, String name, LinkedList<String> hoverText, String message)
|
public void setGameChatStats(ChatStatData... stats)
|
||||||
{
|
{
|
||||||
LinkedHashMap<Integer, Map.Entry<String, String>> temp = new LinkedHashMap<Integer, Map.Entry<String, String>>();
|
for(ChatStatData chatStat : stats)
|
||||||
|
{
|
||||||
|
System.out.println(chatStat.getStat());
|
||||||
|
_chatStats.add(chatStat);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildJSON(Player player, String format, String name, LinkedList<ChatStatData> hoverText, String message)
|
||||||
|
{
|
||||||
|
LinkedList<Map.Entry<String, String>> temp = new LinkedList<Map.Entry<String, String>>();
|
||||||
|
|
||||||
ChatColor teamColor = _manager.GetGame().GetTeam(player).GetColor();
|
ChatColor teamColor = _manager.GetGame().GetTeam(player).GetColor();
|
||||||
temp.put(0, new AbstractMap.SimpleEntry<String, String>(C.Bold + teamColor + ChatColor.stripColor(name) + teamColor + "'s stats", ""));
|
temp.add(new AbstractMap.SimpleEntry<String, String>(teamColor + C.Bold + ChatColor.stripColor(name) + teamColor + "'s stats", ""));
|
||||||
temp.put(1, new AbstractMap.SimpleEntry<String, String>(" ", ""));
|
temp.add(new AbstractMap.SimpleEntry<String, String>(" ", ""));
|
||||||
|
|
||||||
int x = 2;
|
Game game = _manager.GetGame();
|
||||||
for(String str : hoverText)
|
String gameName = game.GetName();
|
||||||
|
|
||||||
|
for (int i = 0; i < hoverText.size(); i++)
|
||||||
{
|
{
|
||||||
if(!_manager.GetGame().GetStats().containsKey(player))
|
if (!_manager.GetGame().GetStats().containsKey(player))
|
||||||
{
|
{
|
||||||
temp.put(x, new AbstractMap.SimpleEntry<String, String>(C.cGray + "Retrieving stats..", ""));
|
temp.add(new AbstractMap.SimpleEntry<String, String>(C.cGray + "Retrieving stats..", ""));
|
||||||
x++;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_manager.GetGame().GetStats().get(player).containsKey(_manager.GetGame().GetName() + "." + str))
|
ChatStatData chatStatData = hoverText.get(i);
|
||||||
|
String display = (chatStatData.getDisplay() == null ? chatStatData.getStat()[0] : chatStatData.getDisplay());
|
||||||
|
|
||||||
|
if(!chatStatData.isValue())
|
||||||
{
|
{
|
||||||
temp.put(x, new AbstractMap.SimpleEntry<String, String>(str, (_manager.GetGame().GetStats().get(player).get(_manager.GetGame().GetName() + "." + str).toString())));
|
temp.add(new AbstractMap.SimpleEntry<String, String>(chatStatData.getDisplay(), ""));
|
||||||
}
|
continue;
|
||||||
else if(str.equalsIgnoreCase("kdratio"))
|
|
||||||
{
|
|
||||||
int kills = _manager.GetGame().GetStats().get(player).get(_manager.GetGame().GetName() + ".Kills");
|
|
||||||
int deaths = _manager.GetGame().GetStats().get(player).get(_manager.GetGame().GetName() + ".Deaths");
|
|
||||||
temp.put(x, new AbstractMap.SimpleEntry<String, String>(str, getRatio(kills, deaths, "##.##")));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
x++;
|
if (chatStatData.getStat()[0].equalsIgnoreCase("kdratio"))
|
||||||
|
{
|
||||||
|
int kills;
|
||||||
|
int deaths;
|
||||||
|
|
||||||
|
if (game.GetStats().get(player).containsKey(gameName + ".Kills"))
|
||||||
|
kills = game.GetStats().get(player).get(gameName + ".Kills");
|
||||||
|
else
|
||||||
|
kills = 0;
|
||||||
|
|
||||||
|
if (game.GetStats().get(player).containsKey(gameName + ".Deaths"))
|
||||||
|
deaths = game.GetStats().get(player).get(gameName + ".Deaths");
|
||||||
|
else
|
||||||
|
deaths = 0;
|
||||||
|
|
||||||
|
temp.add(new AbstractMap.SimpleEntry<String, String>(display + ": ", getRatio(kills, deaths, "##.##")));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (game.GetStats().get(player).containsKey(gameName + "." + chatStatData.getStat()))
|
||||||
|
{
|
||||||
|
temp.add(new AbstractMap.SimpleEntry<String, String>(display + ": ", (game.GetStats().get(player).get(gameName + "." + chatStatData.getStat()).toString())));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
temp.add(new AbstractMap.SimpleEntry<String, String>(display + ": ", "0"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String f = "{\"text\":\"\",\"extra\":[{\"text\":\"" + format + "\"},";
|
String f = "{\"text\":\"\",\"extra\":[{\"text\":\"" + JSONObject.escape(format) + "\"},";
|
||||||
String n = "{\"text\":\"" + name + "\",";
|
String n = "{\"text\":\"" + JSONObject.escape(name) + "\",";
|
||||||
String stats = "\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"";
|
String stats = "\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"";
|
||||||
String m = ",{\"text\":\"" + message + "\"}]}";
|
String m = ",{\"text\":\"" + JSONObject.escape(message) + "\"}]}";
|
||||||
|
|
||||||
for(int i = 0; i < temp.size(); i++)
|
for (int i = 0; i < temp.size(); i++)
|
||||||
{
|
{
|
||||||
if(temp.containsKey(i))
|
stats += C.cWhite + JSONObject.escape(temp.get(i).getKey()) + C.cGray + JSONObject.escape(temp.get(i).getValue()) + (i >= temp.size()-1 ? "\"}}}" : "\\n");
|
||||||
stats += C.cWhite + temp.get(i).getKey() + ": " + C.cGray + temp.get(i).getValue() + (i == hoverText.size()-1 ? "\"}}}" : "\\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
System.out.println(f + n + stats + m);
|
||||||
return f + n + stats + m;
|
return f + n + stats + m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
package nautilus.game.arcade.managers.chat;
|
||||||
|
|
||||||
|
import mineplex.core.chat.Chat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by TeddyDev on 10/01/2016.
|
||||||
|
*/
|
||||||
|
public class ChatStatData
|
||||||
|
{
|
||||||
|
private String[] _stat;
|
||||||
|
private String _display;
|
||||||
|
private boolean _isValue;
|
||||||
|
|
||||||
|
public ChatStatData()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public ChatStatData(String[] stat, String display, boolean isValue)
|
||||||
|
{
|
||||||
|
_stat = stat;
|
||||||
|
_display = display;
|
||||||
|
_isValue = isValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ChatStatData blankLine()
|
||||||
|
{
|
||||||
|
_stat = new String[]{null};
|
||||||
|
_display = " ";
|
||||||
|
_isValue = false;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String[] getStat()
|
||||||
|
{
|
||||||
|
return _stat;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDisplay()
|
||||||
|
{
|
||||||
|
return _display;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isValue()
|
||||||
|
{
|
||||||
|
return _isValue;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue