Achievements

This commit is contained in:
Sam 2017-06-05 20:57:30 +01:00
parent c3f3d71610
commit 4a91d2821b
10 changed files with 100 additions and 35 deletions

View File

@ -1201,7 +1201,31 @@ public enum Achievement
new String[]{"Skyfall.SupplyDropsOpened"}, new String[]{"Skyfall.SupplyDropsOpened"},
new String[]{"Be the first to open 20 Supply Drops"}, new String[]{"Be the first to open 20 Supply Drops"},
new int[]{20}, new int[]{20},
AchievementCategory.SKYFALL); AchievementCategory.SKYFALL),
GEM_HUNTERS_KILLS("Gem Killer", 5000,
new String[]{"Gem Hunters.Kills"},
new String[]{"+1 for each kill"},
new int[]{10,25,50,100,1000},
AchievementCategory.GEM_HUNTERS),
GEM_HUNTERS_GEMS_EARNED("Gem Millionaire", 5000,
new String[]{"Gem Hunters.GemsEarned"},
new String[]{"+1 for each Gem cashed out"},
new int[]{1000,2500,5000,10000,100000},
AchievementCategory.GEM_HUNTERS),
GEM_HUNTERS_QUESTS("Quest Complete", 5000,
new String[]{"Gem Hunters.QuestsOpened"},
new String[]{"+1 for each quest completed"},
new int[]{10,25,50,100,1000},
AchievementCategory.GEM_HUNTERS),
GEM_HUNTERS_CHESTS_OPENED("Loot Get!", 5000,
new String[]{"Gem Hunters.ChestsOpened"},
new String[]{"+1 for each chest opened"},
new int[]{50,100,200,400,1000},
AchievementCategory.GEM_HUNTERS);
private String _name; private String _name;
private String[] _desc; private String[] _desc;

View File

@ -213,7 +213,11 @@ public enum AchievementCategory
StatDisplay.fromGame("Wins", GameDisplay.SkyfallTeams, "Wins"), StatDisplay.fromGame("Games Played", GameDisplay.SkyfallTeams, "Wins", "Losses"), StatDisplay.fromGame("Wins", GameDisplay.SkyfallTeams, "Wins"), StatDisplay.fromGame("Games Played", GameDisplay.SkyfallTeams, "Wins", "Losses"),
StatDisplay.fromGame("Kills", GameDisplay.SkyfallTeams, "Kills"), StatDisplay.fromGame("Deaths", GameDisplay.SkyfallTeams, "Deaths"), StatDisplay.fromGame("Kills", GameDisplay.SkyfallTeams, "Kills"), StatDisplay.fromGame("Deaths", GameDisplay.SkyfallTeams, "Deaths"),
StatDisplay.fromGame("Gems Earned", GameDisplay.SkyfallTeams, "GemsEarned"), null, StatDisplay.fromGame("Booster Rings", GameDisplay.SkyfallTeams, "Rings")}, StatDisplay.fromGame("Gems Earned", GameDisplay.SkyfallTeams, "GemsEarned"), null, StatDisplay.fromGame("Booster Rings", GameDisplay.SkyfallTeams, "Rings")},
Material.DIAMOND_BOOTS, 0, GameCategory.SURVIVAL, null, false, GameDisplay.Skyfall.getGameId(), GameDisplay.SkyfallTeams.getGameId()); Material.DIAMOND_BOOTS, 0, GameCategory.SURVIVAL, null, false, GameDisplay.Skyfall.getGameId(), GameDisplay.SkyfallTeams.getGameId()),
GEM_HUNTERS("Gem Hunters", null,
new StatDisplay[] {StatDisplay.KILLS, StatDisplay.GEMS_EARNED, StatDisplay.fromGame("Quests Complete", GameDisplay.GemHunters, "QuestsCompleted"), StatDisplay.fromGame("Chests Opened", GameDisplay.GemHunters, "ChestsOpened")},
Material.EMERALD, 0, GameCategory.SURVIVAL, null, false, GameDisplay.GemHunters.getGameId());
private String _name; private String _name;
private String[] _statsToPull; private String[] _statsToPull;

View File

@ -104,6 +104,8 @@ public enum GameDisplay
AlienInvasion("Alien Invasion", Material.ENDER_STONE, (byte) 0, GameCategory.EVENT, 69, false), AlienInvasion("Alien Invasion", Material.ENDER_STONE, (byte) 0, GameCategory.EVENT, 69, false),
GemHunters("Gem Hunters", Material.EMERALD, (byte) 0, GameCategory.SURVIVAL, 71, false),
Event("Mineplex Event", Material.CAKE, (byte)0, GameCategory.EVENT, 999, false), Event("Mineplex Event", Material.CAKE, (byte)0, GameCategory.EVENT, 999, false),
Brawl("Brawl", Material.DIAMOND, (byte) 0, GameCategory.EVENT, 998, false); Brawl("Brawl", Material.DIAMOND, (byte) 0, GameCategory.EVENT, 998, false);

View File

@ -78,7 +78,7 @@ public class Track implements Listener
return this._trackRequirements; return this._trackRequirements;
} }
public final String getStatName() public String getStatName()
{ {
return "track." + _id; return "track." + _id;
} }

View File

@ -59,4 +59,13 @@ public class GemHuntersTrack extends Track
getRequirements() getRequirements()
.withRequirement(1, "Gem Earned in Gem Hunters"); .withRequirement(1, "Gem Earned in Gem Hunters");
} }
/**
* Overriding this means we can hit two birds with one stat.
*/
@Override
public String getStatName()
{
return "Gem Hunters.GemsEarned";
}
} }

View File

@ -188,6 +188,7 @@ public class GemHunters extends JavaPlugin
// Creatures // Creatures
Creature creature = new Creature(this); Creature creature = new Creature(this);
creature.SetDisableCustomDrops(true);
// The old classic Damage Manager // The old classic Damage Manager
DamageManager damageManager = new DamageManager(this, new CombatManager(this), new NpcManager(this, creature), disguiseManager, new ConditionManager(this)); DamageManager damageManager = new DamageManager(this, new CombatManager(this), new NpcManager(this, creature), disguiseManager, new ConditionManager(this));

View File

@ -1,11 +1,20 @@
package mineplex.gemhunters.death; package mineplex.gemhunters.death;
import java.util.HashMap; import com.google.common.collect.Sets;
import java.util.Iterator; import mineplex.core.MiniPlugin;
import java.util.Map; import mineplex.core.ReflectivelyCreateMiniPlugin;
import java.util.Set; import mineplex.core.common.util.C;
import java.util.UUID; import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.common.util.UtilTime;
import mineplex.core.stats.StatsManager;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.gemhunters.death.event.PlayerCustomRespawnEvent;
import mineplex.gemhunters.playerstatus.PlayerStatusModule;
import mineplex.gemhunters.playerstatus.PlayerStatusType;
import mineplex.gemhunters.spawn.SpawnModule;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Material; import org.bukkit.Material;
@ -13,7 +22,6 @@ import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
@ -22,25 +30,14 @@ import org.bukkit.event.entity.ItemSpawnEvent;
import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import com.google.common.collect.Sets; import java.util.HashMap;
import java.util.Iterator;
import mineplex.core.MiniPlugin; import java.util.Map;
import mineplex.core.ReflectivelyCreateMiniPlugin; import java.util.Set;
import mineplex.core.common.util.C; import java.util.UUID;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.common.util.UtilTime;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.gemhunters.death.event.PlayerCustomRespawnEvent;
import mineplex.gemhunters.playerstatus.PlayerStatusModule;
import mineplex.gemhunters.playerstatus.PlayerStatusType;
import mineplex.gemhunters.spawn.SpawnModule;
/** /**
* This module handles anything to do with a players death * This module handles anything to do with a players death
@ -56,6 +53,7 @@ public class DeathModule extends MiniPlugin
private static final int DEATH_ANIMATION_COUNTDOWN = 2000; private static final int DEATH_ANIMATION_COUNTDOWN = 2000;
private final PlayerStatusModule _playerStatus; private final PlayerStatusModule _playerStatus;
private final StatsManager _stats;
private final SpawnModule _spawn; private final SpawnModule _spawn;
private final Map<UUID, Long> _toRemove; private final Map<UUID, Long> _toRemove;
@ -65,6 +63,7 @@ public class DeathModule extends MiniPlugin
super("Death"); super("Death");
_playerStatus = require(PlayerStatusModule.class); _playerStatus = require(PlayerStatusModule.class);
_stats = require(StatsManager.class);
_spawn = require(SpawnModule.class); _spawn = require(SpawnModule.class);
_toRemove = new HashMap<>(); _toRemove = new HashMap<>();
@ -80,6 +79,14 @@ public class DeathModule extends MiniPlugin
player.setFoodLevel(20); player.setFoodLevel(20);
player.setExhaustion(0); player.setExhaustion(0);
// Record the stats
Player killer = player.getKiller();
if (killer != null)
{
_stats.incrementStat(player, "Gem Hunters.Kills", 1);
}
startAnimation(player); startAnimation(player);
_toRemove.put(player.getUniqueId(), System.currentTimeMillis()); _toRemove.put(player.getUniqueId(), System.currentTimeMillis());
} }

View File

@ -3,16 +3,20 @@ package mineplex.gemhunters.economy;
import mineplex.core.MiniPlugin; import mineplex.core.MiniPlugin;
import mineplex.core.ReflectivelyCreateMiniPlugin; import mineplex.core.ReflectivelyCreateMiniPlugin;
import mineplex.core.common.currency.GlobalCurrency; import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.*; import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.donation.DonationManager; import mineplex.core.donation.DonationManager;
import mineplex.core.itemstack.ItemBuilder; import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.portal.GenericServer; import mineplex.core.portal.GenericServer;
import mineplex.core.portal.Intent; import mineplex.core.portal.Intent;
import mineplex.core.portal.Portal; import mineplex.core.portal.Portal;
import mineplex.core.recharge.Recharge; import mineplex.core.recharge.Recharge;
import mineplex.core.titles.tracks.TrackManager; import mineplex.core.stats.StatsManager;
import mineplex.core.titles.tracks.standard.GemHuntersTrack;
import mineplex.core.updater.UpdateType; import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent; import mineplex.core.updater.event.UpdateEvent;
import mineplex.gemhunters.economy.command.CashOutItemCommand; import mineplex.gemhunters.economy.command.CashOutItemCommand;
@ -32,7 +36,12 @@ import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.*; import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
@ReflectivelyCreateMiniPlugin @ReflectivelyCreateMiniPlugin
public class CashOutModule extends MiniPlugin public class CashOutModule extends MiniPlugin
@ -46,7 +55,7 @@ public class CashOutModule extends MiniPlugin
private static final int CASH_OUT_MAX_MOVE_DISTANCE_SQUARED = 4; private static final int CASH_OUT_MAX_MOVE_DISTANCE_SQUARED = 4;
private final DonationManager _donation; private final DonationManager _donation;
private final TrackManager _track; private final StatsManager _stats;
private final Map<UUID, CashOutSession> _sessions; private final Map<UUID, CashOutSession> _sessions;
private final Set<UUID> _aboutToCashOut; private final Set<UUID> _aboutToCashOut;
@ -56,7 +65,7 @@ public class CashOutModule extends MiniPlugin
super("Cash Out"); super("Cash Out");
_donation = require(DonationManager.class); _donation = require(DonationManager.class);
_track = require(TrackManager.class); _stats = require(StatsManager.class);
_sessions = new HashMap<>(); _sessions = new HashMap<>();
_aboutToCashOut = new HashSet<>(); _aboutToCashOut = new HashSet<>();
@ -151,7 +160,7 @@ public class CashOutModule extends MiniPlugin
_aboutToCashOut.add(player.getUniqueId()); _aboutToCashOut.add(player.getUniqueId());
_track.getTrack(GemHuntersTrack.class).incrementFor(player, completeEvent.getGems()); _stats.incrementStat(player, "Gem Hunters.GemsEarned", completeEvent.getGems());
_donation.rewardCurrencyUntilSuccess(GlobalCurrency.GEM, player, "Earned", completeEvent.getGems()); _donation.rewardCurrencyUntilSuccess(GlobalCurrency.GEM, player, "Earned", completeEvent.getGems());
session.endSession(); session.endSession();

View File

@ -5,6 +5,7 @@ import mineplex.core.ReflectivelyCreateMiniPlugin;
import mineplex.core.common.util.*; import mineplex.core.common.util.*;
import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.google.GoogleSheetsManager; import mineplex.core.google.GoogleSheetsManager;
import mineplex.core.stats.StatsManager;
import mineplex.core.updater.UpdateType; import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent; import mineplex.core.updater.event.UpdateEvent;
import mineplex.gemhunters.economy.EconomyModule; import mineplex.gemhunters.economy.EconomyModule;
@ -58,6 +59,7 @@ public class LootModule extends MiniPlugin
private final EconomyModule _economy; private final EconomyModule _economy;
private final GoogleSheetsManager _sheets; private final GoogleSheetsManager _sheets;
private final SafezoneModule _safezone; private final SafezoneModule _safezone;
private final StatsManager _stats;
private final WorldDataModule _worldData; private final WorldDataModule _worldData;
private final Map<String, Set<LootItem>> _chestLoot; private final Map<String, Set<LootItem>> _chestLoot;
@ -73,6 +75,7 @@ public class LootModule extends MiniPlugin
_economy = require(EconomyModule.class); _economy = require(EconomyModule.class);
_sheets = require(GoogleSheetsManager.class); _sheets = require(GoogleSheetsManager.class);
_safezone = require(SafezoneModule.class); _safezone = require(SafezoneModule.class);
_stats = require(StatsManager.class);
_worldData = require(WorldDataModule.class); _worldData = require(WorldDataModule.class);
_chestLoot = new HashMap<>(); _chestLoot = new HashMap<>();
_chestProperties = new HashMap<>(); _chestProperties = new HashMap<>();
@ -453,7 +456,8 @@ public class LootModule extends MiniPlugin
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
_stats.incrementStat(player, "Gem Hunters.ChestsOpened", 1);
fillChest(player, block, key); fillChest(player, block, key);
} }

View File

@ -5,6 +5,7 @@ import java.util.UUID;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import mineplex.core.common.util.*; import mineplex.core.common.util.*;
import mineplex.core.stats.StatsManager;
import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -87,6 +88,7 @@ public class QuestModule extends MiniClientPlugin<QuestPlayerData>
}; };
private final EconomyModule _economy; private final EconomyModule _economy;
private final StatsManager _stats;
private final WorldDataModule _worldData; private final WorldDataModule _worldData;
private QuestModule() private QuestModule()
@ -94,6 +96,7 @@ public class QuestModule extends MiniClientPlugin<QuestPlayerData>
super("Quest"); super("Quest");
_economy = require(EconomyModule.class); _economy = require(EconomyModule.class);
_stats = require(StatsManager.class);
_worldData = require(WorldDataModule.class); _worldData = require(WorldDataModule.class);
Menu<?> menu = new QuestUI(this); Menu<?> menu = new QuestUI(this);
@ -311,7 +314,9 @@ public class QuestModule extends MiniClientPlugin<QuestPlayerData>
} }
player.sendMessage(F.main(_moduleName, "Completed " + F.name(quest.getName()) + ".")); player.sendMessage(F.main(_moduleName, "Completed " + F.name(quest.getName()) + "."));
_stats.incrementStat(player, "Gem Hunters.Quests Completed", 1);
QuestPlayerData playerData = Get(player); QuestPlayerData playerData = Get(player);
playerData.getActiveQuests().remove(Integer.valueOf(quest.getId())); playerData.getActiveQuests().remove(Integer.valueOf(quest.getId()));
playerData.getCompletedQuests().add(quest.getId()); playerData.getCompletedQuests().add(quest.getId());