From c52908ec4874a2e120f3808b7a94b73bce7eae27 Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 13 Jul 2018 02:59:07 +0100 Subject: [PATCH] Possible final push --- .../leveling/rewards/LevelTitleReward.java | 33 +++++++++++++++++ .../mineplex/core/gadget/GadgetManager.java | 4 ++- .../src/mineplex/core/game/GameDisplay.java | 2 +- .../core/mission/MissionPopulator.java | 36 ++++++++++++++----- .../core/mission/MissionTrackerType.java | 1 + .../src/mineplex/hub/HubManager.java | 4 ++- .../game/games/dragons/DragonsTeams.java | 20 +++++++++-- .../arcade/game/games/milkcow/MilkCow.java | 32 ++++++++++++++++- .../games/squidshooters/SquidShooters.java | 2 ++ .../game/arcade/game/games/tug/TugOfWool.java | 35 +++++++++++++----- .../game/games/tug/entities/TugCow.java | 2 +- .../gamesummary/GameSummaryModule.java | 12 ++++++- .../arcade/managers/GameCreationManager.java | 8 ++--- 13 files changed, 161 insertions(+), 30 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/achievement/leveling/rewards/LevelTitleReward.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/leveling/rewards/LevelTitleReward.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/leveling/rewards/LevelTitleReward.java new file mode 100644 index 000000000..49819a3c8 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/leveling/rewards/LevelTitleReward.java @@ -0,0 +1,33 @@ +package mineplex.core.achievement.leveling.rewards; + +import org.bukkit.entity.Player; + +import mineplex.core.Managers; +import mineplex.core.common.util.C; +import mineplex.core.titles.tracks.Track; +import mineplex.core.titles.tracks.TrackManager; + +public class LevelTitleReward implements LevelReward +{ + + private static final TrackManager TRACK_MANAGER = Managers.require(TrackManager.class); + + private final Track _track; + + public LevelTitleReward(Track track) + { + _track = track; + } + + @Override + public void claim(Player player) + { + TRACK_MANAGER.unlockTrack(player, _track); + } + + @Override + public String getDescription() + { + return C.cAqua + _track.getLongName() + C.Reset + " (" + C.cAqua + "Title" + C.Reset + ")"; + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 5b2de85b0..48e22138b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -468,12 +468,14 @@ public class GadgetManager extends MiniPlugin _userGadgetPersistence = new UserGadgetPersistence(this); _incognitoManager = require(IncognitoManager.class); _gameCosmeticManager = require(GameCosmeticManager.class); - _missionManager = require(MissionManager.class); _soulManager = new SoulManager(); _castleManager = require(CastleManager.class); createGadgets(); createSets(); + + _missionManager = require(MissionManager.class); + registerTrackers(); generatePermissions(); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/game/GameDisplay.java b/Plugins/Mineplex.Core/src/mineplex/core/game/GameDisplay.java index 5d68d7423..74c23c30e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/game/GameDisplay.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/game/GameDisplay.java @@ -58,7 +58,7 @@ public enum GameDisplay SnowFight("Snow Fight", Material.SNOW_BALL, (byte)0, GameCategory.EVENT, 39, false), Spleef("Super Spleef", Material.IRON_SPADE, (byte)0, GameCategory.NONE, 40, true), SpleefTeams("Super Spleef Teams", Material.IRON_SPADE, (byte)0, GameCategory.NONE, 41, false), - SquidShooter("Squid Shooter", Material.FIREWORK_CHARGE, (byte)0, GameCategory.NONE, 43, false), + SquidShooter("Squid Shooter", Material.INK_SACK, (byte)0, GameCategory.NONE, 43, false), Stacker("Super Stacker", Material.BOWL, (byte)0, GameCategory.NONE, 42, false), SurvivalGames("Survival Games", Material.IRON_SWORD, (byte)0, GameCategory.INTERMEDIATE, 22, true), SurvivalGamesTeams("Survival Games Teams", "Survival Games", Material.IRON_SWORD, (byte)0, GameCategory.INTERMEDIATE, 23, false), diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mission/MissionPopulator.java b/Plugins/Mineplex.Core/src/mineplex/core/mission/MissionPopulator.java index c7b8c96c0..a8a9ed547 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mission/MissionPopulator.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mission/MissionPopulator.java @@ -4,10 +4,17 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import mineplex.core.Managers; import mineplex.core.achievement.leveling.rewards.LevelCurrencyReward; import mineplex.core.achievement.leveling.rewards.LevelExperienceReward; +import mineplex.core.achievement.leveling.rewards.LevelGadgetReward; +import mineplex.core.achievement.leveling.rewards.LevelTitleReward; import mineplex.core.common.currency.GlobalCurrency; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.particle.ParticleFiveYear; import mineplex.core.game.GameDisplay; +import mineplex.core.titles.tracks.TrackManager; +import mineplex.core.titles.tracks.award.FiveYearTrack; import static mineplex.core.game.GameDisplay.*; import static mineplex.core.mission.MissionTrackerType.*; @@ -24,17 +31,28 @@ public class MissionPopulator // Special Event Missions 10000+ - MissionContext.newBuilder(manager, 10000) - .name("Welcome Polly!") - .description("Play %s Games of Cake Wars") +// MissionContext.newBuilder(manager, 10000) +// .name("Welcome Polly!") +// .description("Play %s Games of Cake Wars") +// .event() +// .games(CakeWars4, CakeWarsDuos) +// .xRange(25, 25) +// .tracker(GAME_PLAY) +// .rewards( +// new LevelExperienceReward(100), +// new LevelCurrencyReward(GlobalCurrency.GEM, 50), +// new LevelCurrencyReward(GlobalCurrency.TREASURE_SHARD, 50) +// ) +// .build(); + + MissionContext.newBuilder(manager, 10001) + .name("Happy Birthday!") + .description("Join Mineplex. You've already done it!") .event() - .games(CakeWars4, CakeWarsDuos) - .xRange(25, 25) - .tracker(GAME_PLAY) + .tracker(LOBBY_JOIN) .rewards( - new LevelExperienceReward(100), - new LevelCurrencyReward(GlobalCurrency.GEM, 50), - new LevelCurrencyReward(GlobalCurrency.TREASURE_SHARD, 50) + new LevelGadgetReward(Managers.require(GadgetManager.class).getGadget(ParticleFiveYear.class)), + new LevelTitleReward(Managers.require(TrackManager.class).getTrack(FiveYearTrack.class)) ) .build(); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mission/MissionTrackerType.java b/Plugins/Mineplex.Core/src/mineplex/core/mission/MissionTrackerType.java index 8e72d0b64..1628a8543 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mission/MissionTrackerType.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mission/MissionTrackerType.java @@ -3,6 +3,7 @@ package mineplex.core.mission; public enum MissionTrackerType { + LOBBY_JOIN, LOBBY_PARKOUR, LOBBY_GADGET_USE, LOBBY_FLESH_HOOK, diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 7279a3c96..4684f9a95 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -69,6 +69,7 @@ import mineplex.core.inventory.InventoryManager; import mineplex.core.menu.MenuManager; import mineplex.core.message.PrivateMessageEvent; import mineplex.core.mission.MissionManager; +import mineplex.core.mission.MissionTrackerType; import mineplex.core.noteblock.MusicManager; import mineplex.core.notifier.NotificationManager; import mineplex.core.npc.NpcManager; @@ -367,11 +368,12 @@ public class HubManager extends MiniClientPlugin implements IChatMess } @EventHandler - public void autoOP(PlayerJoinEvent event) + public void playerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); player.setOp(_clientManager.Get(event.getPlayer()).hasPermission(Perm.AUTO_OP)); + _missionManager.incrementProgress(player, 1, MissionTrackerType.LOBBY_JOIN, null, null); } @EventHandler diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragons/DragonsTeams.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragons/DragonsTeams.java index b30cc6ccf..3fb498d40 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragons/DragonsTeams.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragons/DragonsTeams.java @@ -143,8 +143,24 @@ public class DragonsTeams extends Dragons return; } - GetPlayers(true).forEach(this::giveSurvivedGems); - AnnounceEnd(placements.get(0)); + GameTeam winner = placements.get(0); + + GetPlayers(false).forEach(player -> + { + if (!player.isOnline()) + { + return; + } + + AddGems(player, 10, "Participation", false, false); + + if (winner.HasPlayer(player)) + { + AddGems(player, 20, "Winning Team", false, false); + } + }); + + AnnounceEnd(winner); SetState(GameState.End); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/milkcow/MilkCow.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/milkcow/MilkCow.java index 53cee005f..e161bc3d9 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/milkcow/MilkCow.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/milkcow/MilkCow.java @@ -1,5 +1,8 @@ package nautilus.game.arcade.game.games.milkcow; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -300,7 +303,6 @@ public class MilkCow extends SoloGame event.setCancelled(true); player.setItemInHand(new ItemStack(Material.MILK_BUCKET)); - Bukkit.broadcastMessage(event.getEventName()); } @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) @@ -448,6 +450,34 @@ public class MilkCow extends SoloGame } } + @Override + public List getWinners() + { + if (GetState().ordinal() >= GameState.End.ordinal()) + { + Player winner = getPlacements().get(0); + + if (winner == null) + { + return Collections.emptyList(); + } + else + { + return Collections.singletonList(winner); + } + } + + return null; + } + + @Override + public List getLosers() + { + List losers = new ArrayList<>(GetPlayers(false)); + losers.removeAll(getWinners()); + return losers; + } + @Override @EventHandler public void ScoreboardUpdate(UpdateEvent event) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/squidshooters/SquidShooters.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/squidshooters/SquidShooters.java index 793702bdd..1788c1f69 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/squidshooters/SquidShooters.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/squidshooters/SquidShooters.java @@ -325,6 +325,8 @@ public class SquidShooters extends SoloGame .sorted(Comparator.comparing(player -> _kills.getOrDefault(player, 0)).reversed()) .collect(Collectors.toList()); + places.forEach(player -> AddGems(player, 10, "Participation", false, false)); + if (!places.isEmpty()) { AddGems(places.get(0), 20, "1st Place", false, false); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/tug/TugOfWool.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/tug/TugOfWool.java index dcf9acd91..aa887016d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/tug/TugOfWool.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/tug/TugOfWool.java @@ -30,6 +30,7 @@ import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack; import com.mineplex.anticheat.checks.move.Glide; +import com.mineplex.anticheat.checks.move.HeadRoll; import mineplex.core.Managers; import mineplex.core.antihack.AntiHack; @@ -75,6 +76,8 @@ public class TugOfWool extends TeamGame private static final long GAME_TIMEOUT = TimeUnit.MINUTES.toMillis(8); private static final long PURCHASE_COOLDOWN = TimeUnit.SECONDS.toMillis(5); private static final int GOLD_SLOT = 8; + private static final int MAX_GOLD = 50; + private static final double GOLD_PER_ANIMAL = 0.2, GOLD_PER_PLAYER = 0.3, GOLD_PER_SEC = 0.05, GOLD_PER_CROP_LOST = 3, GOLD_LOST_DEATH = 0.5; private final Set _teams; private final List _items; @@ -103,7 +106,7 @@ public class TugOfWool extends TeamGame AntiHack antiHack = Managers.get(AntiHack.class); antiHack.addIgnoredCheck(Glide.class); - + antiHack.addIgnoredCheck(HeadRoll.class); registerChatStats( Kills, Deaths, @@ -308,7 +311,7 @@ public class TugOfWool extends TeamGame { for (Player player : team.getEnemy().getGameTeam().GetPlayers(true)) { - incrementGold(player, 3); + incrementGold(player, GOLD_PER_CROP_LOST); } targetCrops.remove(targetLocation); @@ -361,12 +364,12 @@ public class TugOfWool extends TeamGame { if (damagee instanceof Player) { - incrementGold(damager, 0.3); + incrementGold(damager, GOLD_PER_PLAYER); } else { event.SetKnockback(false); - incrementGold(damager, 0.2); + incrementGold(damager, GOLD_PER_ANIMAL); } } } @@ -439,7 +442,7 @@ public class TugOfWool extends TeamGame player.getInventory().setItem(slot++, item.getItemStack()); } - setGold(player, _gold.getOrDefault(player, 0D) / 2D); + setGold(player, _gold.getOrDefault(player, 0D) / GOLD_LOST_DEATH); } @EventHandler @@ -504,7 +507,7 @@ public class TugOfWool extends TeamGame continue; } - incrementGold(player, 0.05); + incrementGold(player, GOLD_PER_SEC); } } @@ -575,6 +578,21 @@ public class TugOfWool extends TeamGame if (winner != null) { + for (Player player : GetPlayers(false)) + { + if (!player.isOnline()) + { + continue; + } + + AddGems(player, 10, "Participation", false, false); + + if (winner.HasPlayer(player)) + { + AddGems(player, 20, "Winning Team", false, false); + } + } + AnnounceEnd(winner); SetState(GameState.End); } @@ -601,13 +619,14 @@ public class TugOfWool extends TeamGame public void incrementGold(Player player, double amount) { setGold(player, _gold.getOrDefault(player, 0D) + amount); + AddGems(player, amount / 100D, "Gold Collected", false, true); } public void setGold(Player player, double amount) { - if (amount >= 50) + if (amount >= MAX_GOLD) { - amount = 50; + amount = MAX_GOLD; } int amountFloor = (int) Math.floor(amount); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/tug/entities/TugCow.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/tug/entities/TugCow.java index 6600e742a..a8fe2f1c1 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/tug/entities/TugCow.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/tug/entities/TugCow.java @@ -35,7 +35,7 @@ public class TugCow extends TugEntity @Override public void attack(LivingEntity other) { - other.damage(20, _entity); + other.damage(12, _entity); other.getWorld().playSound(other.getLocation(), Sound.COW_IDLE, 1, (float) Math.random()); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/modules/gamesummary/GameSummaryModule.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/modules/gamesummary/GameSummaryModule.java index 591cd441d..4e69309e0 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/modules/gamesummary/GameSummaryModule.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/modules/gamesummary/GameSummaryModule.java @@ -122,7 +122,17 @@ public class GameSummaryModule extends Module player.sendMessage(C.Bold + "Game Rewards"); player.sendMessage(""); - _components.forEach(component -> component.sendMessage(player)); + _components.forEach(component -> + { + try + { + component.sendMessage(player); + } + catch (Exception e) + { + e.printStackTrace(); + } + }); new JsonMessage(C.cGray + "Hover over for details.") .hover(HoverEvent.SHOW_TEXT, C.cGray + "Don't hover over me, silly!") diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameCreationManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameCreationManager.java index 9595cd100..c4440e3ec 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameCreationManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameCreationManager.java @@ -230,7 +230,7 @@ public class GameCreationManager implements Listener for (int i = 0; i < MAX_ATTEMPTS; i++) { gameType = UtilAlg.Random(Manager.GetGameList()); - ModePref = randomGameMode(gameType); + ModePref = randomGameMode(Manager.GetServerConfig().GameModeList, gameType); if (!_lastGames.contains(gameType)) { @@ -285,7 +285,7 @@ public class GameCreationManager implements Listener } else if (!gameModes.isEmpty()) { - mode = randomGameMode(gameType); + mode = randomGameMode(gameModes, gameType); } if (mode != null) @@ -435,10 +435,8 @@ public class GameCreationManager implements Listener return Pair.create(gameType, UtilAlg.Random(_maps.get(gameType))); } - private GameMode randomGameMode(GameType type) + private GameMode randomGameMode(List modes, GameType type) { - List modes = Manager.GetServerConfig().GameModeList; - return UtilAlg.Random(Arrays.stream(type.getGameModes()) .filter(gameMode -> modes.contains(gameMode.getName()) && (_lastMode == null || _lastMode.equals(gameMode.getName()))) .collect(Collectors.toList()));