Make Kit Progression award XP on all kits used in a game

This commit is contained in:
Sam 2017-08-04 21:55:55 +01:00
parent e57ab4bf3d
commit 722c858491
11 changed files with 241 additions and 213 deletions

View File

@ -351,6 +351,9 @@ public abstract class Game extends ListenerComponent implements Lifetimed
public int PlayersPerTeam = 2;
public int TeamCount = 0;
// Split Kit XP
public boolean SplitKitXP = false;
private IPacketHandler _useEntityPacketHandler;
private int _deadBodyCount;
private NautHashMap<String, Entity> _deadBodies = new NautHashMap<String, Entity>();
@ -813,8 +816,6 @@ public abstract class Game extends ListenerComponent implements Lifetimed
}
UtilServer.getServer().getPluginManager().registerEvents(kit, Manager.getPlugin());
System.out.println("Kit instance of " + String.valueOf(kit instanceof ProgressingKit));
if (kit instanceof ProgressingKit)
{
ProgressingKit progressingKit = (ProgressingKit) kit;

View File

@ -137,6 +137,7 @@ public class CastleSiegeNew extends TeamGame
BlockBreakAllow.add(Material.FENCE.getId());
BlockPlaceAllow.add(Material.FENCE.getId());
InventoryClick = true;
SplitKitXP = true;
manager.GetCreature().SetDisableCustomDrops(true);

View File

@ -59,24 +59,6 @@ public class CastleSiegeTNTManager implements Listener
private static final int TNT_WEAKNESS_DISTANCE_SQUARED = 16;
private static final long TNT_MAX_TIME = TimeUnit.SECONDS.toMillis(30);
private static final long REGENERATION_TIME = TimeUnit.SECONDS.toMillis(15);
private static final List<Material> REGENERATE_BLOCKS = Arrays.asList(
Material.GRASS,
Material.DIRT,
Material.STONE,
Material.COBBLESTONE,
Material.MOSSY_COBBLESTONE,
Material.GRAVEL,
Material.SAND,
Material.LOG,
Material.LOG_2,
Material.LEAVES,
Material.LEAVES_2,
Material.WATER,
Material.STATIONARY_WATER,
Material.LADDER,
Material.SNOW,
Material.SNOW_BLOCK
);
private final CastleSiegeNew _host;
@ -309,7 +291,14 @@ public class CastleSiegeTNTManager implements Listener
for (Block block : event.blockList())
{
if (!REGENERATE_BLOCKS.contains(block.getType()))
Material material = block.getType();
byte materialData = block.getData();
if (
material == Material.SMOOTH_BRICK && materialData == 2 ||
material == Material.IRON_FENCE ||
material == Material.FENCE
)
{
continue;
}

View File

@ -133,7 +133,7 @@ public class KitHumanPaladin extends KitCastleSiege
public KitHumanPaladin(ArcadeManager manager)
{
super(manager, "Castle Paladin", KitAvailability.Free, DESCRIPTION, PERKS, UPGRADES, EntityType.ZOMBIE, IN_HAND);
super(manager, "Castle Paladin", KitAvailability.Achievement, DESCRIPTION, PERKS, UPGRADES, EntityType.ZOMBIE, IN_HAND);
setAchievementRequirements(CastleSiegeNew.getGameAchievements());
}

View File

@ -7,8 +7,6 @@ import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import mineplex.core.achievement.Achievement;
import mineplex.core.achievement.AchievementCategory;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.disguise.disguises.DisguiseSkeleton;
@ -25,7 +23,7 @@ public class KitUndeadSummoner extends KitCastleSiege
{
private static final String[] DESCRIPTION = {
"I hope Im not bugging you.",
"Say hello to my little friend.",
"",
click(false, "your eggs to spawn undead mobs to help you fight")
};
@ -34,11 +32,11 @@ public class KitUndeadSummoner extends KitCastleSiege
private static final MobPotion SILVER_FISH = new MobPotion(
new ItemBuilder(Material.MONSTER_EGG, UtilEnt.getEntityEggData(EntityType.SLIME))
.setTitle(C.cGreen + "Slime Potion")
.setTitle(C.cGreen + "Slime Egg")
.build(), EntityType.SLIME, 3);
private static final MobPotion ZOMBIE = new MobPotion(
new ItemBuilder(Material.MONSTER_EGG, UtilEnt.getEntityEggData(EntityType.ZOMBIE))
.setTitle(C.cGreen + "Zombie Potion")
.setTitle(C.cGreen + "Zombie Egg")
.build(), EntityType.ZOMBIE, 1);
private static final MobPotion SPIDER = new MobPotion(
new ItemBuilder(Material.MONSTER_EGG, UtilEnt.getEntityEggData(EntityType.SPIDER))
@ -84,11 +82,11 @@ public class KitUndeadSummoner extends KitCastleSiege
}
};
private static final ItemStack IN_HAND = new ItemStack(Material.MONSTER_EGG);
private static final ItemStack IN_HAND = new ItemStack(Material.BONE);
public KitUndeadSummoner(ArcadeManager manager)
{
super(manager, "Undead Summoner", KitAvailability.Free, DESCRIPTION, PERKS, UPGRADES, EntityType.SKELETON, IN_HAND);
super(manager, "Undead Summoner", KitAvailability.Achievement, DESCRIPTION, PERKS, UPGRADES, EntityType.SKELETON, IN_HAND);
setAchievementRequirements(CastleSiegeNew.getGameAchievements());
_witherSkeleton = true;

View File

@ -1,8 +1,6 @@
package nautilus.game.arcade.game.games.castlesiegenew.perks;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@ -11,17 +9,16 @@ import org.bukkit.Location;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Slime;
import org.bukkit.entity.ThrownPotion;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.event.entity.PotionSplashEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.util.Vector;
import mineplex.core.common.Pair;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilTime;
import mineplex.core.recharge.Recharge;
@ -42,7 +39,6 @@ public class PerkMobPotions extends Perk
private static final PotionEffect SPEED = new PotionEffect(PotionEffectType.SPEED, Integer.MAX_VALUE, 1, false, false);
private final MobPotion[] _mobPotions;
private final Map<ThrownPotion, Pair<Player, MobPotion>> _thrownPotions = new HashMap<>();
private final Set<SummonedEntity> _entities = new HashSet<>();
private final long _cooldown;
@ -101,33 +97,11 @@ public class PerkMobPotions extends Perk
Manager.GetGame().CreatureAllowOverride = true;
Location location = player.getEyeLocation();
ThrownPotion potion = player.getWorld().spawn(location.add(location.getDirection()), ThrownPotion.class);
potion.setVelocity(location.getDirection());
_thrownPotions.put(potion, Pair.create(player, clickedPotion));
Manager.GetGame().CreatureAllowOverride = false;
}
@EventHandler
public void splash(PotionSplashEvent event)
{
ThrownPotion potion = event.getEntity();
if (!_thrownPotions.containsKey(potion))
for (int i = 0; i < clickedPotion.getAmount(); i++)
{
return;
}
Pair<Player, MobPotion> pair = _thrownPotions.remove(potion);
Player player = pair.getLeft();
MobPotion mobPotion = pair.getRight();
Manager.GetGame().CreatureAllowOverride = true;
for (int i = 0; i < mobPotion.getAmount(); i++)
{
LivingEntity entity = (LivingEntity) potion.getWorld().spawnEntity(potion.getLocation(), mobPotion.getEntityType());
LivingEntity entity = (LivingEntity) player.getWorld().spawnEntity(location, clickedPotion.getEntityType());
entity.setVelocity(location.getDirection().add(new Vector(Math.random() - 0.5, 0, Math.random() - 0.5)));
entity.addPotionEffect(SPEED);
entity.setCustomName(player.getName() + "'s Minion");
entity.setCustomNameVisible(true);

View File

@ -63,7 +63,6 @@ public class Evolution extends SoloGame
private ArrayList<EvoKit> _mobKits = new ArrayList<EvoKit>();
private ArrayList<Kit> _kits = new ArrayList<Kit>();
private Map<UUID, ProgressingKit> _startedKit = Maps.newHashMap();
private NautHashMap<String, EvoToken> _tokens = new NautHashMap<String, EvoToken>();
@ -153,20 +152,6 @@ public class Evolution extends SoloGame
);
}
public void select(UUID player, ProgressingKit kit)
{
_startedKit.put(player, kit);
}
public ProgressingKit getStartedKit(UUID player, boolean remove)
{
if(remove)
{
return _startedKit.remove(player);
}
return _startedKit.get(player);
}
public EvolveManager getEvolve()
{
return _evolve;

View File

@ -8,20 +8,21 @@ import nautilus.game.arcade.game.Game;
public class KitProgressionData
{
private ProgressingKit _kit;
private Game _game;
private int _xpGained;
private final ProgressingKit _kit;
private final Game _game;
private final long _selectTime;
private long _endTime;
public KitProgressionData(ProgressingKit kit, Game game, int xpGained)
public KitProgressionData(ProgressingKit kit, Game game)
{
_kit = kit;
_game = game;
_xpGained = xpGained;
_selectTime = System.currentTimeMillis();
}
public int getXpGained()
public ProgressingKit getKit()
{
return _xpGained;
return _kit;
}
public Game getGame()
@ -29,8 +30,18 @@ public class KitProgressionData
return _game;
}
public ProgressingKit getKit()
public long getSelectTime()
{
return _kit;
return _selectTime;
}
public void setEndTime()
{
_endTime = System.currentTimeMillis();
}
public long getEndTime()
{
return _endTime;
}
}

View File

@ -1,7 +1,29 @@
package nautilus.game.arcade.kit;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import net.minecraft.server.v1_8_R3.EntityFireworks;
import net.minecraft.server.v1_8_R3.PacketPlayOutEntityStatus;
import net.minecraft.server.v1_8_R3.World;
import org.bukkit.Bukkit;
import org.bukkit.FireworkEffect;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.craftbukkit.v1_8_R3.CraftWorld;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Firework;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.FireworkMeta;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import mineplex.core.common.Rank;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.C;
@ -17,29 +39,9 @@ import mineplex.core.progression.math.Calculations;
import mineplex.core.shop.confirmation.ConfirmationPage;
import mineplex.core.shop.item.SalesPackageBase;
import mineplex.core.shop.item.SalesPackageProcessor;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.game.games.evolution.Evolution;
import nautilus.game.arcade.shop.KitPackage;
import net.minecraft.server.v1_8_R3.EntityFireworks;
import net.minecraft.server.v1_8_R3.PacketPlayOutEntityStatus;
import net.minecraft.server.v1_8_R3.World;
import org.bukkit.Bukkit;
import org.bukkit.FireworkEffect;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.craftbukkit.v1_8_R3.CraftWorld;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Firework;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.FireworkMeta;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.shop.KitPackage;
/**
* Kit wrapper for all new kits
@ -232,11 +234,6 @@ public abstract class ProgressingKit extends Kit implements ProgressiveKit
@Override
public void onSelected(UUID player)
{
if(Manager.GetGame().GetType() == GameType.Evolution)
{
Evolution evolution = (Evolution) Manager.GetGame();
evolution.select(player, this);
}
_dataManager.get(player).setCurrentKit(getInternalName());
Manager.GetGame().SetKit(Bukkit.getPlayer(player), this, true);
Manager.getProgressionKitManager().displayParticles(this, player);

View File

@ -1,5 +1,8 @@
package nautilus.game.arcade.managers;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@ -9,15 +12,12 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilPlayer;
@ -30,6 +30,8 @@ import nautilus.game.arcade.ArcadeFormat;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.events.PlayerKitApplyEvent;
import nautilus.game.arcade.events.PlayerKitGiveEvent;
import nautilus.game.arcade.game.DebugCommand;
import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.kit.ChampionsKit;
@ -43,24 +45,69 @@ import nautilus.game.arcade.kit.ProgressingKit;
public class ProgressingKitManager implements Listener
{
private ArcadeManager _manager;
private Map<UUID, KitProgressionData> _data;
private final Map<UUID, BukkitTask> _tasks = Maps.newHashMap();
private final ArcadeManager _manager;
private final Map<UUID, List<KitProgressionData>> _data;
private final Map<UUID, Integer> _xpGained;
private final Map<UUID, BukkitTask> _tasks;
private static final String LINE = ArcadeFormat.Line;
private static final String INFO = C.cWhiteB + "Kit Progression Progress";
private static final String LEVEL_INFO = "Level up a kit by playing with it.";
private static final String SPACE = " ";
public ProgressingKitManager(ArcadeManager manager)
{
_manager = manager;
_manager.getPlugin().getServer().getPluginManager().registerEvents(this, _manager.getPlugin());
_data = Maps.newHashMap();
UtilServer.RegisterEvents(this);
_data = new HashMap<>();
_xpGained = new HashMap<>();
_tasks = new HashMap<>();
manager.addCommand(new DebugCommand("kpsetlevel", Rank.ADMIN)
{
@Override
public void Execute(Player caller, String[] args)
{
if (args.length == 0)
{
caller.sendMessage(F.main("Kit", "/" + _aliasUsed + " <level>"));
return;
}
Kit kit = manager.GetGame().GetKit(caller);
if (kit == null || !(kit instanceof ProgressingKit))
{
return;
}
int level;
try
{
level = Integer.parseInt(args[0]);
}
catch (NumberFormatException e)
{
caller.sendMessage(F.main("Kit", "That is not a number."));
return;
}
if (level < 0 || level > 5)
{
caller.sendMessage(F.main("Kit", "Please enter a number between 0 and 5."));
return;
}
caller.sendMessage(F.main("Kit", "Set the upgrade level for " + F.name(kit.GetName()) + " to " + F.elem(level) + "."));
((ProgressingKit) kit).setUpgradeLevel(level, caller.getUniqueId());
}
});
}
public void displayParticles(ProgressingKit kit, UUID player)
{
if(_tasks.containsKey(player))
if (_tasks.containsKey(player))
{
//He has one selected
_tasks.remove(player).cancel();
@ -71,13 +118,13 @@ public class ProgressingKitManager implements Listener
@Override
public void run()
{
if(kit.getLivingEntity() == null)
if (kit.getLivingEntity() == null)
{
cancel();
_tasks.remove(player);
return;
}
if(Bukkit.getPlayer(player) == null)
if (Bukkit.getPlayer(player) == null)
{
cancel();
_tasks.remove(player);
@ -100,7 +147,7 @@ public class ProgressingKitManager implements Listener
public void entityClick(Player player, Kit kit)
{
PlayerKitApplyEvent kitEvent = new PlayerKitApplyEvent(_manager.GetGame(), kit, player);
UtilServer.getServer().getPluginManager().callEvent(kitEvent);
UtilServer.CallEvent(kitEvent);
if (kitEvent.isCancelled())
{
UtilPlayer.message(player, F.main("Game", kitEvent.getCancelMessage()));
@ -115,9 +162,10 @@ public class ProgressingKitManager implements Listener
{
//Odd, someone else is using a kit system.
//Shouldn't ever happen, but we'll be careful.
// Work Tim you really are big headed.
return;
}
if(!((ProgressingKit) kit).canEquipKit(player))
if (!((ProgressingKit) kit).canEquipKit(player))
{
return;
}
@ -152,6 +200,8 @@ public class ProgressingKitManager implements Listener
@EventHandler
public void onQuit(PlayerQuitEvent event)
{
UUID key = event.getPlayer().getUniqueId();
try
{
//Fail safe updating in case a player leaves the game before we do data
@ -179,47 +229,57 @@ public class ProgressingKitManager implements Listener
}
finally
{
_data.remove(event.getPlayer().getUniqueId());
}
}
@EventHandler
public void testCommand(PlayerCommandPreprocessEvent event)
{
//This needs to stay in for testing sakes if the issue arises connor
String message = event.getMessage();
String user = event.getPlayer().getName();
if(user.equalsIgnoreCase("Moppletop") || UtilServer.isTestServer())
{
if(message.startsWith("/kpsetlevel"))
{
event.setCancelled(true);
int level = Integer.parseInt(message.split(" ")[1]);
ProgressingKit kit = (ProgressingKit) _manager.GetGame().GetKit(event.getPlayer());
kit.setLevel(level, event.getPlayer().getUniqueId());
event.getPlayer().sendMessage("Set level for "+ kit.GetName() + " to " + level);
}
else if (message.startsWith("/kpclearupgrades"))
{
event.setCancelled(true);
ProgressingKit kit = (ProgressingKit) _manager.GetGame().GetKit(event.getPlayer());
kit.setUpgradeLevel(0, event.getPlayer().getUniqueId());
event.getPlayer().sendMessage("Cleared the upgrades for " + kit.GetName());
}
_data.remove(key);
_xpGained.remove(key);
}
}
@EventHandler
public void cancelParticles(GameStateChangeEvent event)
{
if(event.GetState() == GameState.Prepare)
if (event.GetState() != GameState.Prepare)
{
return;
}
event.GetGame().GetPlayers(true).forEach(this::cancelParticles);
}
@EventHandler
public void onKitChange(PlayerKitGiveEvent event)
{
Player player = event.getPlayer();
Game game = event.getGame();
Kit kit = event.getKit();
if (!game.InProgress() || !(kit instanceof ProgressingKit))
{
return;
}
List<KitProgressionData> dataList = _data.get(player.getUniqueId());
if (dataList != null)
{
for (KitProgressionData data : dataList)
{
if (data.getKit().equals(kit))
{
return;
}
else if (data.getEndTime() != 0)
{
continue;
}
data.setEndTime();
}
}
if (game.SplitKitXP || dataList == null)
{
addData(player, game, (ProgressingKit) kit);
}
}
@EventHandler
public void onChange(GameStateChangeEvent event)
@ -237,7 +297,7 @@ public class ProgressingKitManager implements Listener
private void resetDefaultKits()
{
Lists.newArrayList(UtilServer.getPlayers()).forEach(player ->
UtilServer.getPlayersCollection().forEach(player ->
{
for (Kit kit : _manager.GetGame().GetKits())
{
@ -257,29 +317,50 @@ public class ProgressingKitManager implements Listener
public void displayKitData(Player player)
{
KitProgressionData data = _data.remove(player.getUniqueId());
UUID key = player.getUniqueId();
List<KitProgressionData> dataList = _data.remove(key);
Integer xpGained = _xpGained.remove(key);
if (data == null)
{
return;
}
if (!data.getKit().usesXp())
if (dataList == null || xpGained == null)
{
return;
}
KitProgressionData latestData = dataList.get(dataList.size() - 1);
latestData.setEndTime();
long totalTime = latestData.getEndTime() - dataList.get(0).getSelectTime();
player.sendMessage(SPACE);
player.sendMessage(LINE);
player.sendMessage(INFO);
player.sendMessage(SPACE);
int xpGained = data.getXpGained();
for (KitProgressionData data : dataList)
{
long elapsed = data.getEndTime() - data.getSelectTime();
int kitXP = (int) (((double) elapsed / (double) totalTime) * xpGained);
displayKitData(player, data, kitXP);
}
player.sendMessage(SPACE);
player.sendMessage(LEVEL_INFO);
player.sendMessage(LINE);
}
private void displayKitData(Player player, KitProgressionData data, int xpGained)
{
if (!data.getKit().usesXp())
{
return;
}
ProgressingKit kit = data.getKit();
PlayerKit playerKit = _manager.getKitProgressionManager().getDataManager().get(player.getUniqueId());
if(playerKit.getLevel(kit.getInternalName()) >= 100)
if (playerKit.getLevel(kit.getInternalName()) >= 100)
{
StringBuilder builder = new StringBuilder();
String kitName = C.cGoldB + kit.getDisplayName();
@ -291,7 +372,6 @@ public class ProgressingKitManager implements Listener
player.sendMessage(C.cWhite + "You maxed out this kit! Great job, and thanks for playing on Mineplex!");
player.sendMessage(SPACE);
player.sendMessage(LINE);
return;
}
@ -302,7 +382,6 @@ public class ProgressingKitManager implements Listener
xpGained = Calculations.getXpForNextLevel(kit.getLevel(player.getUniqueId()));
}
kit.setXp(kit.getXp(player.getUniqueId()) + xpGained, player.getUniqueId());
boolean leveledUp = false;
@ -323,59 +402,61 @@ public class ProgressingKitManager implements Listener
//Name of the kit
builder.append(kitName)
.append(" ")
.append(C.Reset);
.append(" ")
.append(C.Reset);
//Current level out of 100
builder.append(C.cYellow)
.append(currentLevel)
.append(C.cGold)
.append("/")
.append(C.cYellow)
.append(100)
.append(" ")
.append(C.Reset);
.append(currentLevel)
.append(C.cGold)
.append("/")
.append(C.cYellow)
.append(100)
.append(" ")
.append(C.Reset);
//The amount of XP the player gained
builder.append(C.cGreen)
.append("+")
.append(xpGained)
.append(" ")
.append(C.Reset);
.append("+")
.append(xpGained)
.append(" ")
.append(C.Reset);
if (!leveledUp)
{
//The XP required to level up
builder.append(C.cYellow)
.append(difference)
.append(" to next level");
} else
.append(difference)
.append(" to Next Level");
}
else
{
builder.append(C.cAquaB)
.append("LEVEL UP! ")
.append(C.cYellow)
.append(Calculations.getXpForNextLevel(currentLevel))
.append(" to next level");
.append("LEVEL UP! ")
.append(C.cYellow)
.append(Calculations.getXpForNextLevel(currentLevel))
.append(" to Next Level");
player.playSound(player.getLocation(), Sound.LEVEL_UP, 1f, 1f);
}
//Send the message finally
player.sendMessage(builder.toString());
player.sendMessage(C.cWhite + "Level up by using this kit in game!");
player.sendMessage(SPACE);
player.sendMessage(LINE);
}
public void displayKitData()
{
Lists.newArrayList(UtilServer.getPlayers()).forEach(this::displayKitData);
UtilServer.getPlayersCollection().forEach(this::displayKitData);
}
public void addData(Player player, int xpGained, Game game, ProgressingKit kit)
private void addData(Player player, Game game, ProgressingKit kit)
{
_data.put(player.getUniqueId(), new KitProgressionData(kit, game, xpGained));
UUID key = player.getUniqueId();
_data.putIfAbsent(key, new ArrayList<>());
_data.get(key).add(new KitProgressionData(kit, game));
}
public void setXPEarned(Player player, int xpGained)
{
_xpGained.put(player.getUniqueId(), xpGained);
}
}

View File

@ -1,19 +1,20 @@
package nautilus.game.arcade.stats;
import java.util.List;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerQuitEvent;
import mineplex.core.common.util.NautHashMap;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.GemData;
import nautilus.game.arcade.game.games.evolution.Evolution;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.ProgressingKit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerQuitEvent;
import java.util.List;
public class ExperienceStatTracker extends StatTracker<Game>
{
@ -98,18 +99,8 @@ public class ExperienceStatTracker extends StatTracker<Game>
//Exp
int expGained = (int)(((timeExp + gemExp)*mult)*getGame().XpMult);
//Exp
Kit kit = event.GetGame().GetKit(player);
if(event.GetGame().GetType() == GameType.Evolution)
{
Evolution evolution = (Evolution) event.GetGame();
kit = evolution.getStartedKit(player.getUniqueId(), true);
}
if (kit instanceof ProgressingKit)
{
ProgressingKit progressingKit = (ProgressingKit) kit;
event.GetGame().Manager.getProgressionKitManager().addData(player, expGained, event.GetGame(), progressingKit);
}
// Kit Exp
event.GetGame().getArcadeManager().getProgressionKitManager().setXPEarned(player, expGained);
//Record Global and per Game
addStat(player, "ExpEarned", expGained, false, true);
addStat(player, "ExpEarned", expGained, false, false);