diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java index ec9395305..bab8f4cb8 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java @@ -1470,7 +1470,7 @@ public enum Achievement NANO_WINNER("Nano Winner", 0, new String[]{"Nano Games.Wins"}, new String[]{"Win Nano Games"}, - new int[][] {new int[] {100,0,1000}, new int[] {0,0,5000}, new int[]{0,0,10000}, new int[]{0,0,25000}, new int[]{0,0,50000}}, + new int[][] {new int[] {0,0,1000}, new int[] {0,0,5000}, new int[]{0,0,10000}, new int[]{0,0,25000}, new int[]{0,0,50000}}, new int[]{2,10,50,100,500}, "I", new String[] {"II","III","IV","V","X"}, @@ -1500,6 +1500,33 @@ public enum Achievement new int[]{1}, AchievementCategory.NANO_GAMES), + NANO_SHARE_FIRST("Best Friends", 500, + new String[]{"Nano Games.ShareFirst"}, + new String[]{"Share first place with at least", "one other player"}, + new int[]{1}, + AchievementCategory.NANO_GAMES), + + NANO_COPY_CAT_LEVEL("Copy Kitty", 4000, + new String[]{"Nano Games.CopyCatLevel10"}, + new String[]{"Reach Level 10 in Copy Cat"}, + new int[]{1}, + AchievementCategory.NANO_GAMES), + + NANO_QUICK_GAMES("QUICK!!!", 0, + new String[]{"Nano Games.QuickWins"}, + new String[]{"Complete Quick Challenges"}, + new int[][] {new int[] {0,0,1000}, new int[] {0,0,5000}, new int[]{0,0,10000}, new int[]{0,0,25000}, new int[]{0,0,50000}}, + new int[]{10,25,50,100,500}, + "I", + new String[] {"II","III","IV","V","X"}, + AchievementCategory.NANO_GAMES), + + NANO_SLIME_TAIL("Not dead yet", 3000, + new String[]{"Nano Games.SlimeCyclesTail"}, + new String[]{"Get a trail length of 60 blocks", "in Slime Cycles"}, + new int[]{1}, + AchievementCategory.NANO_GAMES), + ; private final String _name; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/game/nano/NanoFavourite.java b/Plugins/Mineplex.Core/src/mineplex/core/game/nano/NanoFavourite.java index a44bac9e1..2bff209af 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/game/nano/NanoFavourite.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/game/nano/NanoFavourite.java @@ -58,11 +58,13 @@ public class NanoFavourite extends MiniDbClientPlugin> return; } - NanoDisplay display = NanoDisplay.getFromId(resultSet.getInt("gameId")); + int gameId = resultSet.getInt("gameId"); + NanoDisplay display = NanoDisplay.getFromId(gameId); if (display == null) { - return; + _repository.setFavourite(accountId, gameId, false); + continue; } games.add(display); diff --git a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/components/stats/GameStatsComponent.java b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/components/stats/GameStatsComponent.java index 406b43842..28caafbc9 100644 --- a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/components/stats/GameStatsComponent.java +++ b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/components/stats/GameStatsComponent.java @@ -108,8 +108,6 @@ public class GameStatsComponent extends GameComponent implements StatsComp logs.forEach((achievement, log) -> { - player.sendMessage(achievement.getName() + " - " + log.LevelUp + " " + log.Amount); - AchievementData data = manager.get(player, achievement); if (log.LevelUp) diff --git a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/components/stats/GeneralStatsTracker.java b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/components/stats/GeneralStatsTracker.java index 5bb994a31..6008bfec6 100644 --- a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/components/stats/GeneralStatsTracker.java +++ b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/components/stats/GeneralStatsTracker.java @@ -71,11 +71,19 @@ public class GeneralStatsTracker extends StatTracker int timeInGame = (int) TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - _gameStartTime); allPlayers.forEach(player -> addStat(player, "TimeInGame", timeInGame, true, true)); - allPlayers.removeAll(winners); + if (winners != null) + { + // Wins & Losses + winners.forEach(player -> addStat(player, "Wins", 1, true, false)); - // Wins & Losses - winners.forEach(player -> addStat(player, "Wins", 1, true, false)); - allPlayers.forEach(player -> addStat(player, "Losses", 1, true, false)); + if (_game.getTeams().size() > 1 && winners.size() > 1) + { + winners.forEach(player -> addStat(player, "ShareFirst", 1, true, false)); + } + + allPlayers.removeAll(winners); + allPlayers.forEach(player -> addStat(player, "Losses", 1, true, false)); + } // Second & Third List second = placements.getPlayersAtPlace(1), third = placements.getPlayersAtPlace(2); diff --git a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/copycat/CopyCat.java b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/copycat/CopyCat.java index d28606ff6..c5cc4a3b5 100644 --- a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/copycat/CopyCat.java +++ b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/copycat/CopyCat.java @@ -121,6 +121,11 @@ public class CopyCat extends RoomedSoloGame player.getInventory().clear(); room.Colours.forEach((material, amount) -> player.getInventory().addItem(new ItemStack(material, amount))); + + if (room.Level == 10) + { + addStat(player, "CopyCatLevel10", 1, true, false); + } } }); } diff --git a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/minekart/MineKart.java b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/minekart/MineKart.java index c9d9d2c38..f43ae493a 100644 --- a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/minekart/MineKart.java +++ b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/minekart/MineKart.java @@ -115,7 +115,10 @@ public class MineKart extends SoloGame implements IPacketHandler { super(manager, GameType.MINEKART, new String[] { - "#BringBackMineKart" + "Control your Kart like a " + C.cYellow + "Boat" + C.Reset + "!", + C.cGreen + "Hold Jump" + C.Reset + " to charge a " + C.cYellow + "Drift" + C.Reset + ".", + C.cYellow + "Release Jump" + C.Reset + " to discharge your " + C.cYellow + "Drift" + C.Reset + ".", + C.cYellow + "3 Laps" + C.Reset + " to win!" }); _checkpoints = new ArrayList<>(); diff --git a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/musicminecart/MusicMinecarts.java b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/musicminecart/MusicMinecarts.java index f1fad88b0..cbd3862f9 100644 --- a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/musicminecart/MusicMinecarts.java +++ b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/musicminecart/MusicMinecarts.java @@ -49,9 +49,8 @@ public class MusicMinecarts extends SoloGame private Location _center; private List _floor; - private double _floorRadiusInitial, _floorRadius; + private double _floorRadius; private boolean _spawned; - private int _startingPlayers; public MusicMinecarts(NanoManager manager) { @@ -107,7 +106,6 @@ public class MusicMinecarts extends SoloGame _floor.sort((o1, o2) -> Double.compare(UtilMath.offset2dSquared(_center, o2), UtilMath.offset2dSquared(_center, o1))); _floor.forEach(location -> MapUtil.QuickChangeBlockAt(location, floorType, floorData)); _floorRadius = UtilMath.offset2d(_center, _floor.get(0)); - _floorRadiusInitial = _floorRadius; } @Override @@ -130,7 +128,6 @@ public class MusicMinecarts extends SoloGame return; } - _startingPlayers = getAlivePlayers().size(); runRound(true); } @@ -235,7 +232,7 @@ public class MusicMinecarts extends SoloGame private void updateArenaSize() { - double radius = Math.max(_floorRadiusInitial * ((double) getAlivePlayers().size() / _startingPlayers), 10); + double radius = Math.max(getAlivePlayers().size() * 4, 10); if (_floorRadius > radius) { diff --git a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/quick/Challenge.java b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/quick/Challenge.java index 1d69175fc..87a12e2f9 100644 --- a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/quick/Challenge.java +++ b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/quick/Challenge.java @@ -115,6 +115,8 @@ public abstract class Challenge extends ListenerComponent implements Lifetimed, player.sendMessage(F.main(_game.getManager().getName(), "You completed the challenge.")); _game.incrementScore(player, 1); + _game.addStat(player, "QuickWins", 1, false, false); + if (out) { _game.onOut(player, true); diff --git a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/slimecycles/SlimeCycles.java b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/slimecycles/SlimeCycles.java index 5b7e4bffa..fd042262e 100644 --- a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/slimecycles/SlimeCycles.java +++ b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/slimecycles/SlimeCycles.java @@ -153,6 +153,11 @@ public class SlimeCycles extends SoloGame } _trailSize++; + + if (_trailSize == 60) + { + getAlivePlayers().forEach(player -> addStat(player, "SlimeCyclesTail", 1, true, false)); + } } int getTrailSize() diff --git a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/wizards/spells/SpellTNT.java b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/wizards/spells/SpellTNT.java index e7e958d09..5aeebc660 100644 --- a/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/wizards/spells/SpellTNT.java +++ b/Plugins/Mineplex.Game.Nano/src/mineplex/game/nano/game/games/wizards/spells/SpellTNT.java @@ -35,7 +35,7 @@ public class SpellTNT extends Spell TNTPrimed tnt = location.getWorld().spawn(location, TNTPrimed.class); tnt.setVelocity(location.getDirection()); - tnt.setFuseTicks(10); + tnt.setFuseTicks(20); _owner.put(tnt, player); }