2013-08-27 17:14:08 +02:00
|
|
|
package nautilus.game.arcade.managers;
|
|
|
|
|
2015-08-05 07:57:52 +02:00
|
|
|
import java.lang.reflect.Field;
|
2013-08-27 17:14:08 +02:00
|
|
|
import java.util.HashMap;
|
|
|
|
|
2015-08-05 07:57:52 +02:00
|
|
|
import mineplex.core.account.event.GetClientEvent;
|
2014-08-08 05:46:35 +02:00
|
|
|
import mineplex.core.achievement.Achievement;
|
2013-08-27 17:14:08 +02:00
|
|
|
import mineplex.core.common.util.C;
|
|
|
|
import mineplex.core.common.util.F;
|
|
|
|
import mineplex.core.common.util.UtilPlayer;
|
|
|
|
import mineplex.core.common.util.UtilServer;
|
2015-08-29 05:06:39 +02:00
|
|
|
import mineplex.core.common.util.UtilTime;
|
2013-08-27 17:14:08 +02:00
|
|
|
import mineplex.minecraft.game.core.combat.CombatComponent;
|
|
|
|
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
|
2015-08-29 07:09:42 +02:00
|
|
|
import mineplex.serverdata.Utility;
|
2013-08-27 17:14:08 +02:00
|
|
|
import nautilus.game.arcade.ArcadeFormat;
|
|
|
|
import nautilus.game.arcade.ArcadeManager;
|
2013-09-11 04:22:55 +02:00
|
|
|
import nautilus.game.arcade.GameType;
|
2013-08-27 17:14:08 +02:00
|
|
|
import nautilus.game.arcade.events.GameStateChangeEvent;
|
|
|
|
import nautilus.game.arcade.events.PlayerStateChangeEvent;
|
|
|
|
import nautilus.game.arcade.game.Game;
|
|
|
|
import nautilus.game.arcade.game.GemData;
|
|
|
|
import nautilus.game.arcade.game.Game.GameState;
|
|
|
|
import nautilus.game.arcade.game.GameTeam.PlayerState;
|
2015-08-05 07:57:52 +02:00
|
|
|
import net.minecraft.server.v1_7_R4.EntityHuman;
|
|
|
|
import net.minecraft.util.com.mojang.authlib.GameProfile;
|
2013-08-27 17:14:08 +02:00
|
|
|
|
|
|
|
import org.bukkit.Sound;
|
2015-08-05 07:57:52 +02:00
|
|
|
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftHumanEntity;
|
|
|
|
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
|
2013-08-27 17:14:08 +02:00
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
import org.bukkit.event.EventHandler;
|
|
|
|
import org.bukkit.event.EventPriority;
|
|
|
|
import org.bukkit.event.Listener;
|
|
|
|
import org.bukkit.event.player.PlayerQuitEvent;
|
|
|
|
|
|
|
|
public class GameGemManager implements Listener
|
|
|
|
{
|
|
|
|
ArcadeManager Manager;
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2015-08-29 05:06:39 +02:00
|
|
|
boolean DoubleGem = false;
|
|
|
|
boolean TimeReward = true;
|
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
public GameGemManager(ArcadeManager manager)
|
|
|
|
{
|
|
|
|
Manager = manager;
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2015-02-26 06:07:07 +01:00
|
|
|
Manager.getPluginManager().registerEvents(this, Manager.getPlugin());
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void PlayerKillAward(CombatDeathEvent event)
|
|
|
|
{
|
2014-08-30 08:33:56 +02:00
|
|
|
if (!Manager.IsRewardGems())
|
2014-05-02 06:35:41 +02:00
|
|
|
return;
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
Game game = Manager.GetGame();
|
|
|
|
if (game == null) return;
|
2014-10-13 00:44:30 +02:00
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
if (!(event.GetEvent().getEntity() instanceof Player))
|
|
|
|
return;
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
Player killed = (Player)event.GetEvent().getEntity();
|
|
|
|
|
|
|
|
if (event.GetLog().GetKiller() != null)
|
|
|
|
{
|
|
|
|
Player killer = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName());
|
|
|
|
|
|
|
|
if (killer != null && !killer.equals(killed))
|
|
|
|
{
|
|
|
|
//Kill
|
2014-12-15 04:33:38 +01:00
|
|
|
game.AddGems(killer, game.GetKillsGems(killer, killed, false), "Kills", true, true);
|
2013-08-27 17:14:08 +02:00
|
|
|
|
|
|
|
//First Kill
|
|
|
|
if (game.FirstKill)
|
|
|
|
{
|
2014-12-15 04:33:38 +01:00
|
|
|
game.AddGems(killer, 10, "First Blood", false, false);
|
2013-08-27 17:14:08 +02:00
|
|
|
|
|
|
|
game.FirstKill = false;
|
|
|
|
|
|
|
|
game.Announce(F.main("Game", Manager.GetColor(killer) + killer.getName() + " drew first blood!"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for (CombatComponent log : event.GetLog().GetAttackers())
|
|
|
|
{
|
|
|
|
if (event.GetLog().GetKiller() != null && log.equals(event.GetLog().GetKiller()))
|
|
|
|
continue;
|
|
|
|
|
|
|
|
Player assist = UtilPlayer.searchExact(log.GetName());
|
|
|
|
|
|
|
|
//Assist
|
|
|
|
if (assist != null)
|
2014-12-15 04:33:38 +01:00
|
|
|
game.AddGems(assist, game.GetKillsGems(assist, killed, true), "Kill Assists", true, true);
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|
|
|
|
}
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
@EventHandler
|
|
|
|
public void PlayerQuit(PlayerQuitEvent event)
|
|
|
|
{
|
2014-08-30 08:33:56 +02:00
|
|
|
if (!Manager.IsRewardGems())
|
2014-05-02 06:35:41 +02:00
|
|
|
return;
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
Game game = Manager.GetGame();
|
|
|
|
if (game == null) return;
|
|
|
|
|
|
|
|
RewardGems(game, event.getPlayer(), true);
|
|
|
|
}
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
@EventHandler(priority = EventPriority.MONITOR)
|
|
|
|
public void PlayerStateChange(PlayerStateChangeEvent event)
|
|
|
|
{
|
2014-08-30 08:33:56 +02:00
|
|
|
if (!Manager.IsRewardGems())
|
2014-05-02 06:35:41 +02:00
|
|
|
return;
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
if (event.GetState() != PlayerState.OUT)
|
|
|
|
return;
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2014-11-21 06:32:12 +01:00
|
|
|
if (event.GetGame().GetType() == GameType.WitherAssault || event.GetGame().GetType() == GameType.Paintball || event.GetGame().GetType() == GameType.MineStrike)
|
2013-11-02 05:42:37 +01:00
|
|
|
return;
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
RewardGems(event.GetGame(), event.GetPlayer(), false);
|
|
|
|
}
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2014-08-08 09:05:11 +02:00
|
|
|
@EventHandler(priority = EventPriority.MONITOR)
|
2013-08-27 17:14:08 +02:00
|
|
|
public void GameStateChange(GameStateChangeEvent event)
|
|
|
|
{
|
|
|
|
if (event.GetState() != GameState.Dead)
|
|
|
|
return;
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
for (Player player : UtilServer.getPlayers())
|
|
|
|
RewardGems(event.GetGame(), player, true);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void RewardGems(Game game, Player player, boolean give)
|
|
|
|
{
|
|
|
|
//Inform Gems
|
|
|
|
AnnounceGems(game, player, game.GetPlayerGems().get(player), give);
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2015-08-04 12:21:58 +02:00
|
|
|
if (!Manager.IsRewardGems())
|
|
|
|
return;
|
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
//Give Gems
|
|
|
|
if (give)
|
2013-10-18 09:46:06 +02:00
|
|
|
GiveGems(game, player, game.GetPlayerGems().remove(player), game.GemMultiplier);
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2013-10-18 09:46:06 +02:00
|
|
|
public void GiveGems(Game game, Player player, HashMap<String,GemData> gems, double gameMult)
|
2013-08-27 17:14:08 +02:00
|
|
|
{
|
2014-08-30 08:33:56 +02:00
|
|
|
if (!Manager.IsRewardGems())
|
2014-05-02 06:35:41 +02:00
|
|
|
return;
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2015-08-04 12:21:58 +02:00
|
|
|
if (gems == null)
|
2013-08-27 17:14:08 +02:00
|
|
|
return;
|
2014-08-08 05:46:35 +02:00
|
|
|
|
|
|
|
int earned = 0;
|
2013-08-27 17:14:08 +02:00
|
|
|
|
|
|
|
for (GemData data : gems.values())
|
2014-08-08 05:46:35 +02:00
|
|
|
earned += (int)data.Gems;
|
2013-08-27 17:14:08 +02:00
|
|
|
|
2014-08-08 05:46:35 +02:00
|
|
|
if (earned <= 0)
|
|
|
|
earned = 1;
|
|
|
|
|
|
|
|
earned = (int) (earned * gameMult);
|
|
|
|
|
|
|
|
int total = earned;
|
2015-08-05 07:57:52 +02:00
|
|
|
|
|
|
|
String oldName = player.getName();
|
|
|
|
|
|
|
|
if(Manager.GetClients().Get(player).getDisguisedAs() != null)
|
|
|
|
{
|
|
|
|
changeName(player, Manager.GetClients().Get(player).GetPlayerName());
|
|
|
|
System.out.println("Gems for " + Manager.GetClients().Get(player).GetPlayerName());
|
|
|
|
}
|
2014-08-08 05:46:35 +02:00
|
|
|
|
|
|
|
//Gem Boooster
|
2014-10-13 00:44:30 +02:00
|
|
|
if (game.GemBoosterEnabled)
|
|
|
|
total += (int)(earned * game.GetGemBoostAmount());
|
2014-08-08 05:46:35 +02:00
|
|
|
|
|
|
|
//Gem Finder
|
2014-10-13 00:44:30 +02:00
|
|
|
if (game.GemHunterEnabled)
|
2014-08-08 05:46:35 +02:00
|
|
|
{
|
2015-08-04 12:21:58 +02:00
|
|
|
int gemFinder = Manager.GetAchievement().get(player.getName(), Achievement.GLOBAL_GEM_HUNTER).getLevel();
|
2014-10-13 00:44:30 +02:00
|
|
|
if (gemFinder > 0)
|
|
|
|
{
|
|
|
|
total += (int)(earned * (gemFinder * 0.25));
|
|
|
|
}
|
2014-08-08 05:46:35 +02:00
|
|
|
}
|
2015-08-29 05:06:39 +02:00
|
|
|
|
|
|
|
//Time Reward
|
|
|
|
if (TimeReward)
|
|
|
|
{
|
2015-08-29 07:09:42 +02:00
|
|
|
long timeOnline = Utility.currentTimeMillis() - Manager.GetClients().Get(player).getNetworkSessionLoginTime();
|
2015-08-29 05:06:39 +02:00
|
|
|
|
|
|
|
double hoursOnline = timeOnline/3600000d;
|
|
|
|
|
2015-10-11 05:48:02 +02:00
|
|
|
if (hoursOnline < 24)
|
|
|
|
{
|
|
|
|
if (hoursOnline > 5)
|
|
|
|
hoursOnline = 5;
|
|
|
|
|
|
|
|
total += (int)(earned * (hoursOnline * 0.2));
|
|
|
|
}
|
2015-08-29 05:06:39 +02:00
|
|
|
}
|
2014-10-13 00:44:30 +02:00
|
|
|
|
2015-08-29 05:06:39 +02:00
|
|
|
if (DoubleGem && game.GemDoubleEnabled)
|
2014-08-08 05:46:35 +02:00
|
|
|
total += earned;
|
2013-08-27 17:14:08 +02:00
|
|
|
|
2014-10-11 10:32:22 +02:00
|
|
|
Manager.GetDonation().RewardGems(null, "Earned " + game.GetName(), player.getName(), player.getUniqueId(), total);
|
2014-08-10 10:36:18 +02:00
|
|
|
|
2014-08-08 05:46:35 +02:00
|
|
|
//Stats
|
|
|
|
Manager.GetStatsManager().incrementStat(player, "Global.GemsEarned", total);
|
|
|
|
Manager.GetStatsManager().incrementStat(player, game.GetName()+".GemsEarned", total);
|
2015-08-05 07:57:52 +02:00
|
|
|
|
|
|
|
if(Manager.GetClients().Get(player).getDisguisedAs() != null)
|
|
|
|
{
|
|
|
|
changeName(player, oldName);
|
|
|
|
}
|
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|
2014-08-10 10:36:18 +02:00
|
|
|
|
2015-08-05 07:57:52 +02:00
|
|
|
private void changeName(Player player, String newName)
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
Field name = GameProfile.class.getDeclaredField("name");
|
|
|
|
Field declaredProfile = EntityHuman.class.getDeclaredField("i");
|
|
|
|
declaredProfile.setAccessible(true);
|
|
|
|
GameProfile gameProfile = (GameProfile) declaredProfile.get(((CraftHumanEntity)((CraftPlayer) player)).getHandle());
|
|
|
|
|
|
|
|
name.setAccessible(true);
|
|
|
|
name.set(gameProfile, newName);
|
|
|
|
name.setAccessible(false);
|
|
|
|
}
|
|
|
|
catch (Exception e)
|
|
|
|
{
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-08-04 12:21:58 +02:00
|
|
|
public void AnnounceGems(Game game, Player player, HashMap<String,GemData> gems, boolean give)
|
2013-08-27 17:14:08 +02:00
|
|
|
{
|
2015-08-04 12:21:58 +02:00
|
|
|
if (gems == null)
|
2013-08-27 17:14:08 +02:00
|
|
|
return;
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
player.playSound(player.getLocation(), Sound.LEVEL_UP, 2f, 1f);
|
|
|
|
|
|
|
|
UtilPlayer.message(player, "");
|
|
|
|
UtilPlayer.message(player, ArcadeFormat.Line);
|
|
|
|
|
2015-07-26 11:43:24 +02:00
|
|
|
UtilPlayer.message(player, Manager.IsRewardGems() ? "§f§lGems Earned" : "§f§lGame Stats");
|
2013-08-27 17:14:08 +02:00
|
|
|
UtilPlayer.message(player, "");
|
2014-08-10 10:36:18 +02:00
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
int earnedGems = 0;
|
|
|
|
|
|
|
|
for (String type : gems.keySet())
|
|
|
|
{
|
|
|
|
int gemCount = (int)gems.get(type).Gems;
|
|
|
|
if (gemCount <= 0)
|
|
|
|
gemCount = 1;
|
|
|
|
|
|
|
|
earnedGems += gemCount;
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2013-08-27 17:14:08 +02:00
|
|
|
int amount = gems.get(type).Amount;
|
|
|
|
String amountStr = "";
|
|
|
|
if (amount > 0)
|
|
|
|
amountStr = amount + " ";
|
2015-08-04 12:21:58 +02:00
|
|
|
|
2015-07-26 11:43:24 +02:00
|
|
|
String out = "";
|
|
|
|
if (Manager.IsRewardGems())
|
|
|
|
out += F.elem(C.cGreen + "+" + (int)(gemCount * game.GemMultiplier) + " Gems") + " for ";
|
|
|
|
out += F.elem(amountStr + type);
|
2013-08-27 17:14:08 +02:00
|
|
|
|
2015-07-26 11:43:24 +02:00
|
|
|
UtilPlayer.message(player, out);
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|
2015-08-04 12:21:58 +02:00
|
|
|
|
2015-07-26 11:43:24 +02:00
|
|
|
if (!Manager.IsRewardGems())
|
2015-08-04 12:21:58 +02:00
|
|
|
{
|
|
|
|
UtilPlayer.message(player, "");
|
|
|
|
UtilPlayer.message(player, ArcadeFormat.Line);
|
2015-07-26 11:43:24 +02:00
|
|
|
return;
|
2015-08-04 12:21:58 +02:00
|
|
|
}
|
|
|
|
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2013-09-21 05:53:12 +02:00
|
|
|
earnedGems = (int) (earnedGems * game.GemMultiplier);
|
2013-08-27 17:14:08 +02:00
|
|
|
|
2014-08-08 05:46:35 +02:00
|
|
|
int totalGems = earnedGems;
|
|
|
|
|
|
|
|
//Gem Booster
|
2014-10-13 00:44:30 +02:00
|
|
|
if (game.GetGemBoostAmount() > 0 && game.GemBoosterEnabled)
|
2013-12-24 09:14:40 +01:00
|
|
|
{
|
2015-08-04 12:21:58 +02:00
|
|
|
UtilPlayer.message(player, F.elem(C.cGreen + "+" + (int)(earnedGems*game.GetGemBoostAmount()) + " Gems") + " for " +
|
2014-08-08 09:05:11 +02:00
|
|
|
F.elem(game.GemBoosters.size() + " Gem Boosters " + C.cGreen + "+" + (int)(game.GetGemBoostAmount()*100) + "%"));
|
2014-08-08 05:46:35 +02:00
|
|
|
|
|
|
|
totalGems += earnedGems * game.GetGemBoostAmount();
|
2013-12-24 09:14:40 +01:00
|
|
|
}
|
2014-08-08 05:46:35 +02:00
|
|
|
|
|
|
|
//Gem Finder
|
2014-10-13 00:44:30 +02:00
|
|
|
if (game.GemHunterEnabled)
|
2013-08-27 17:14:08 +02:00
|
|
|
{
|
2014-10-13 00:44:30 +02:00
|
|
|
int gemFinder = Manager.GetAchievement().get(player.getName(), Achievement.GLOBAL_GEM_HUNTER).getLevel();
|
|
|
|
if (gemFinder > 0)
|
|
|
|
{
|
2015-08-04 12:21:58 +02:00
|
|
|
UtilPlayer.message(player, F.elem(C.cGreen + "+" + ((int)(earnedGems*(gemFinder * 0.25)) + " Gems")) + " for " +
|
2014-10-13 00:44:30 +02:00
|
|
|
F.elem("Gem Hunter " + gemFinder + C.cGreen + " +" + (gemFinder*25) + "%"));
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2014-10-13 00:44:30 +02:00
|
|
|
totalGems += earnedGems * (gemFinder * 0.25);
|
|
|
|
}
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2015-08-29 05:06:39 +02:00
|
|
|
//Time Reward
|
|
|
|
if (TimeReward)
|
|
|
|
{
|
2015-08-29 07:09:42 +02:00
|
|
|
long timeOnline = Utility.currentTimeMillis() - Manager.GetClients().Get(player).getNetworkSessionLoginTime();
|
2015-08-29 05:06:39 +02:00
|
|
|
|
|
|
|
double hoursOnline = timeOnline/3600000d;
|
|
|
|
|
2015-10-11 05:48:02 +02:00
|
|
|
if (hoursOnline < 24)
|
2015-08-29 05:31:29 +02:00
|
|
|
{
|
2015-10-11 05:48:02 +02:00
|
|
|
if (hoursOnline > 5)
|
|
|
|
hoursOnline = 5;
|
|
|
|
|
|
|
|
int extraGems = (int)(earnedGems * (hoursOnline * 0.2));
|
|
|
|
|
|
|
|
if (extraGems > 0)
|
|
|
|
{
|
|
|
|
UtilPlayer.message(player, F.elem(C.cGreen + "+" + extraGems + " Gems") + " for " +
|
|
|
|
F.elem("Online for " + UtilTime.MakeStr(timeOnline) + C.cGreen + " +" + (int)(hoursOnline * 20) + "%"));
|
|
|
|
|
|
|
|
totalGems += extraGems;
|
|
|
|
}
|
2015-08-29 05:31:29 +02:00
|
|
|
}
|
2015-08-29 05:06:39 +02:00
|
|
|
}
|
|
|
|
|
2014-03-01 00:35:06 +01:00
|
|
|
//Double Gem
|
2015-08-29 05:06:39 +02:00
|
|
|
if (DoubleGem && game.GemDoubleEnabled)
|
2014-03-01 00:35:06 +01:00
|
|
|
{
|
2015-07-26 11:43:24 +02:00
|
|
|
UtilPlayer.message(player, F.elem(C.cGreen + "+" + (earnedGems) + " Gems") + " for " + F.elem(C.cDGreen + "Double Gem Weekend"));
|
2014-08-08 05:46:35 +02:00
|
|
|
|
|
|
|
totalGems += earnedGems;
|
2014-03-01 00:35:06 +01:00
|
|
|
}
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2013-12-24 09:14:40 +01:00
|
|
|
//Inform
|
2013-08-27 17:14:08 +02:00
|
|
|
UtilPlayer.message(player, "");
|
|
|
|
if (give)
|
|
|
|
{
|
2015-08-04 12:21:58 +02:00
|
|
|
UtilPlayer.message(player, F.elem(C.cWhite + "§lYou now have " +
|
2014-08-08 05:46:35 +02:00
|
|
|
C.cGreen + C.Bold + (Manager.GetDonation().Get(player.getName()).GetGems() + totalGems) + " Gems"));
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2014-05-26 01:42:39 +02:00
|
|
|
UtilPlayer.message(player, F.elem(C.cWhite + "§lGame is still in progress..."));
|
|
|
|
UtilPlayer.message(player, F.elem(C.cWhite + "§lYou may earn more " + C.cGreen + C.Bold + "Gems" + C.cWhite + C.Bold + " when its completed."));
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2015-08-04 12:21:58 +02:00
|
|
|
UtilPlayer.message(player, ArcadeFormat.Line);
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|
2014-08-08 05:46:35 +02:00
|
|
|
|
2014-08-10 10:36:18 +02:00
|
|
|
|
2015-08-04 12:21:58 +02:00
|
|
|
}
|