Merge pull request #167 from cervinakuy/next-update
Merge next-update into master
This commit is contained in:
10 files changed
+111
-101
No files matched your search
@@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>com.planetgallium</groupId>
|
||||
<artifactId>KitPvP</artifactId>
|
||||
<version>2.1.8</version>
|
||||
<version>2.1.9</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>${project.artifactId}</name>
|
||||
|
||||
@@ -95,7 +95,6 @@ public class Arena {
|
||||
public void removePlayer(Player p) {
|
||||
|
||||
CacheManager.getPlayerAbilityCooldowns(p.getName()).clear();
|
||||
CacheManager.getWitchPotionUsers().remove(p.getName());
|
||||
|
||||
for (PotionEffect effect : p.getActivePotionEffects()) {
|
||||
p.removePotionEffect(effect.getType());
|
||||
|
||||
@@ -36,6 +36,11 @@ public class Leaderboards {
|
||||
if (!isValidCacheType(key)) return;
|
||||
|
||||
List<PlayerEntry> leaderboard = getLeaderboard(key);
|
||||
|
||||
if (leaderboard.size() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerEntry lowestRankingPlayer = leaderboard.get(leaderboard.size() - 1);
|
||||
|
||||
// If updated player entry has a higher data value than the lowest ranking player in a leaderboard
|
||||
|
||||
@@ -50,9 +50,10 @@ public class Stats {
|
||||
}
|
||||
}
|
||||
|
||||
public void addExperience(Player p, int experience) {
|
||||
public void addExperience(Player p, int experienceToAdd) {
|
||||
if (levels.getBoolean("Levels.Levels.Enabled")) {
|
||||
setStat("experience", p.getName(), experience);
|
||||
int currentExperience = getStat("experience", p.getName());
|
||||
setStat("experience", p.getName(), currentExperience + experienceToAdd);
|
||||
if (getStat("experience", p.getName()) >= getRegularOrRelativeNeededExperience(p.getName())) {
|
||||
levelUp(p);
|
||||
Bukkit.getPluginManager().callEvent(new PlayerLevelUpEvent(p, getStat("level", p.getName())));
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
package com.planetgallium.kitpvp.listener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.cryptomorin.xseries.XMaterial;
|
||||
import com.cryptomorin.xseries.XSound;
|
||||
import com.planetgallium.kitpvp.api.Kit;
|
||||
import com.planetgallium.kitpvp.util.CacheManager;
|
||||
import com.planetgallium.kitpvp.util.Resource;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
@@ -84,18 +85,7 @@ public class ItemListener implements Listener {
|
||||
|
||||
if (isAbilityItem(p, "Witch", item)) {
|
||||
|
||||
Potion potion = new Potion(pickPotion(), 1);
|
||||
potion.setSplash(true);
|
||||
|
||||
ItemStack potionStack = potion.toItemStack(1);
|
||||
// ItemMeta potionMeta = potionStack.getItemMeta();
|
||||
//
|
||||
// potionMeta.setLocalizedName("WitchPotion");
|
||||
// potionStack.setItemMeta(potionMeta);
|
||||
|
||||
CacheManager.getWitchPotionUsers().add(p.getName());
|
||||
|
||||
Toolkit.setMainHandItem(p, potionStack);
|
||||
Toolkit.setMainHandItem(p, createWitchPotion());
|
||||
|
||||
}
|
||||
|
||||
@@ -491,40 +481,33 @@ public class ItemListener implements Listener {
|
||||
|
||||
if (e.getEntity().getType() == EntityType.SPLASH_POTION) {
|
||||
|
||||
if (CacheManager.getWitchPotionUsers().contains(shooter.getName())) {
|
||||
if (itemThrown.hasItemMeta() && itemThrown.getItemMeta().hasLore() &&
|
||||
itemThrown.getItemMeta().getLore().get(0).equals("§8X")) {
|
||||
|
||||
int slot = shooter.getInventory().getHeldItemSlot();
|
||||
Kit playerKit = arena.getKits().getKitOfPlayer(shooter.getName());
|
||||
|
||||
if (playerKit != null && playerKit.getName().equalsIgnoreCase("Witch")) {
|
||||
if (playerKit != null) {
|
||||
|
||||
Potion potion = new Potion(pickPotion(), 1);
|
||||
potion.setSplash(true);
|
||||
|
||||
ItemStack potionStack = potion.toItemStack(1);
|
||||
ItemStack potionStack = createWitchPotion();
|
||||
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
if (!arena.getKits().hasKit(shooter.getName()) ||
|
||||
!arena.getKits().getKitOfPlayer(shooter.getName()).getName().equals("Witch")) {
|
||||
if (!arena.getKits().hasKit(shooter.getName())) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (CacheManager.getWitchPotionUsers().contains(shooter.getName())) {
|
||||
|
||||
shooter.getInventory().setItem(slot, potionStack);
|
||||
|
||||
if (abilities.getBoolean("Abilities.Witch.Message.Enabled")) {
|
||||
shooter.sendMessage(Toolkit.translate(abilities.getString("Abilities.Witch.Message.Message")));
|
||||
}
|
||||
|
||||
XSound.play(shooter, abilities.getString("Abilities.Witch.Sound.Sound") + ", 1, " + abilities.getInt("Abliities.Witch.Sound.Pitch"));
|
||||
shooter.getInventory().setItem(slot, potionStack);
|
||||
|
||||
if (abilities.getBoolean("Abilities.Witch.Message.Enabled")) {
|
||||
shooter.sendMessage(Toolkit.translate(abilities.getString("Abilities.Witch.Message.Message")));
|
||||
}
|
||||
|
||||
XSound.play(shooter, abilities.getString("Abilities.Witch.Sound.Sound") + ", 1, " + abilities.getInt("Abliities.Witch.Sound.Pitch"));
|
||||
|
||||
}
|
||||
|
||||
}.runTaskLater(Game.getInstance(), 5 * 20);
|
||||
@@ -549,6 +532,23 @@ public class ItemListener implements Listener {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private ItemStack createWitchPotion() {
|
||||
|
||||
Potion potion = new Potion(pickPotion(), 1);
|
||||
potion.setSplash(true);
|
||||
|
||||
ItemStack potionStack = potion.toItemStack(1);
|
||||
ItemMeta potionMeta = potionStack.getItemMeta();
|
||||
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add(Toolkit.translate("&8X"));
|
||||
potionMeta.setLore(lore);
|
||||
|
||||
potionStack.setItemMeta(potionMeta);
|
||||
return potionStack;
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onShot(EntityDamageByEntityEvent e) {
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
package com.planetgallium.kitpvp.listener;
|
||||
|
||||
import com.cryptomorin.xseries.XMaterial;
|
||||
import com.planetgallium.kitpvp.util.CacheManager;
|
||||
import com.planetgallium.kitpvp.game.Arena;
|
||||
import com.planetgallium.kitpvp.util.Resources;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
@@ -17,81 +16,87 @@ import com.planetgallium.kitpvp.util.Toolkit;
|
||||
|
||||
public class TrackerListener implements Listener {
|
||||
|
||||
private Resources resources;
|
||||
private final Game plugin;
|
||||
private final Arena arena;
|
||||
private final Resources resources;
|
||||
|
||||
public TrackerListener(Game plugin) {
|
||||
this.plugin = plugin;
|
||||
this.arena = plugin.getArena();
|
||||
this.resources = plugin.getResources();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onCompassHeld(PlayerItemHeldEvent event) {
|
||||
|
||||
|
||||
if (!Toolkit.inArena(event.getPlayer())) {
|
||||
return;
|
||||
}
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (Toolkit.inArena(player)) {
|
||||
ItemStack itemHeld = player.getInventory().getItem(event.getNewSlot());
|
||||
|
||||
ItemStack item = player.getInventory().getItem(event.getNewSlot());
|
||||
if (itemHeld != null && itemHeld.getType() == XMaterial.COMPASS.parseMaterial()) {
|
||||
|
||||
if (item != null && item.getType() == XMaterial.COMPASS.parseMaterial()) {
|
||||
new BukkitRunnable() {
|
||||
|
||||
if (!CacheManager.getCompassUsers().contains(player.getName())) {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
if (!player.isOnline()) {
|
||||
CacheManager.getCompassUsers().remove(player.getName());
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
String[] nearestData = Toolkit.getNearestPlayer(player, resources.getConfig().getInt("PlayerTracker.TrackBelowY"));
|
||||
|
||||
if (player.getWorld().getPlayers().size() > 1 && nearestData != null) {
|
||||
|
||||
Player nearestPlayer = Bukkit.getPlayer(nearestData[0]);
|
||||
double nearestDistance = Double.parseDouble(nearestData[1]);
|
||||
|
||||
if (nearestPlayer == null || !nearestPlayer.isOnline()) {
|
||||
CacheManager.getCompassUsers().remove(player.getName());
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
nearestDistance = Math.round(nearestDistance * 10.0) / 10.0;
|
||||
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName(resources.getConfig().getString("PlayerTracker.Message")
|
||||
.replace("%nearestplayer%", nearestPlayer.getName())
|
||||
.replace("%distance%", String.valueOf(nearestDistance)));
|
||||
item.setItemMeta(meta);
|
||||
|
||||
player.setCompassTarget(nearestPlayer.getLocation());
|
||||
|
||||
CacheManager.getCompassUsers().add(player.getName());
|
||||
|
||||
} else {
|
||||
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName(resources.getConfig().getString("PlayerTracker.NoneOnline"));
|
||||
item.setItemMeta(meta);
|
||||
|
||||
cancel();
|
||||
|
||||
}
|
||||
// if the player using the compass leaves the server or no longer has a kit
|
||||
if (!player.isOnline() || !arena.getKits().hasKit(player.getName())) {
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
if (resources.getConfig().getBoolean("PlayerTracker.RefreshOnlyWhenHeld")) {
|
||||
ItemStack itemInHand = Toolkit.getMainHandItem(player);
|
||||
if (itemInHand == null || itemInHand.getType() != XMaterial.COMPASS.parseMaterial()) {
|
||||
cancel();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}.runTaskTimer(Game.getInstance(), 0L, 20L);
|
||||
String[] nearestPlayerData = null;
|
||||
|
||||
if (player.getWorld().getPlayers().size() == 1) {
|
||||
cancel();
|
||||
} else {
|
||||
nearestPlayerData = Toolkit.getNearestPlayer(player,
|
||||
resources.getConfig().getInt("PlayerTracker.TrackBelowY"));
|
||||
}
|
||||
|
||||
updateTrackingCompass(player, itemHeld, nearestPlayerData);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}.runTaskTimer(plugin, 0L, 20L);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void updateTrackingCompass(Player player, ItemStack compass, String[] nearestPlayerData) {
|
||||
|
||||
ItemMeta compassMeta = compass.getItemMeta();
|
||||
|
||||
if (nearestPlayerData != null) {
|
||||
Player nearestPlayer = Toolkit.getPlayer(player.getWorld(), nearestPlayerData[0]);
|
||||
double nearestPlayerDistance = Toolkit.round(Double.parseDouble(nearestPlayerData[1]), 1);
|
||||
|
||||
if (nearestPlayer != null && nearestPlayer.isOnline()) {
|
||||
compassMeta.setDisplayName(resources.getConfig().getString("PlayerTracker.Message")
|
||||
.replace("%nearestplayer%", nearestPlayer.getName())
|
||||
.replace("%distance%", String.valueOf(nearestPlayerDistance)));
|
||||
|
||||
player.setCompassTarget(nearestPlayer.getLocation());
|
||||
}
|
||||
} else {
|
||||
compassMeta.setDisplayName(resources.getConfig().getString("PlayerTracker.NoneOnline"));
|
||||
}
|
||||
|
||||
compass.setItemMeta(compassMeta);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,9 +9,7 @@ public class CacheManager {
|
||||
private static final Map<String, String> usernameToUUID = new HashMap<>();
|
||||
private static final Map<String, Kit> kitCache = new HashMap<>();
|
||||
private static final Map<String, Menu> previewMenuCache = new HashMap<>();
|
||||
private static final Set<String> compassUsers = new HashSet<>();
|
||||
private static final Map<String, Map<String, Long>> abilityCooldowns = new HashMap<>();
|
||||
private static final Set<String> witchPotionUsers = new HashSet<>();
|
||||
private static final Map<String, PlayerData> statsCache = new HashMap<>();
|
||||
|
||||
public static Map<String, String> getUUIDCache() { return usernameToUUID; }
|
||||
@@ -20,10 +18,6 @@ public class CacheManager {
|
||||
|
||||
public static Map<String, Menu> getPreviewMenuCache() { return previewMenuCache; }
|
||||
|
||||
public static Set<String> getCompassUsers() { return compassUsers; }
|
||||
|
||||
public static Set<String> getWitchPotionUsers() { return witchPotionUsers; }
|
||||
|
||||
public static Map<String, PlayerData> getStatsCache() { return statsCache; }
|
||||
|
||||
public static Map<String, Long> getPlayerAbilityCooldowns(String username) {
|
||||
@@ -39,9 +33,8 @@ public class CacheManager {
|
||||
public static void clearCaches() {
|
||||
kitCache.clear();
|
||||
previewMenuCache.clear();
|
||||
compassUsers.clear();
|
||||
abilityCooldowns.clear();
|
||||
// stats, usernameToUUID, and witchPotionUsers cache isn't here as of right now
|
||||
// stats, usernameToUUID, and cache isn't here as of right now
|
||||
}
|
||||
|
||||
}
|
||||
@@ -23,7 +23,7 @@ public class Placeholders extends PlaceholderExpansion {
|
||||
|
||||
placeholderAPItoBuiltIn.put("stats_kills", "%kills%");
|
||||
placeholderAPItoBuiltIn.put("stats_deaths", "%deaths%");
|
||||
placeholderAPItoBuiltIn.put("stats_kdr", "%kdr%");
|
||||
placeholderAPItoBuiltIn.put("stats_kd", "%kd%");
|
||||
placeholderAPItoBuiltIn.put("stats_experience", "%xp%");
|
||||
placeholderAPItoBuiltIn.put("stats_level", "%level%");
|
||||
placeholderAPItoBuiltIn.put("player_killstreak", "%streak%");
|
||||
@@ -64,6 +64,12 @@ public class Placeholders extends PlaceholderExpansion {
|
||||
|
||||
public String translatePlaceholderAPIPlaceholders(String placeholderAPIIdentifier, String username) {
|
||||
|
||||
if (!placeholderAPItoBuiltIn.containsKey(placeholderAPIIdentifier)) {
|
||||
Toolkit.printToConsole(String.format("&7[&b&lKIT-PVP&7] &cUnknown placeholder identifier [%s]. Please see plugin page.",
|
||||
placeholderAPIIdentifier));
|
||||
return "invalid-placeholder";
|
||||
}
|
||||
|
||||
return arena.replaceBuiltInPlaceholdersIfPresent(placeholderAPItoBuiltIn.get(placeholderAPIIdentifier), username);
|
||||
|
||||
}
|
||||
|
||||
@@ -69,6 +69,7 @@ PlayerTracker:
|
||||
Message: '&b&lTarget: &3%nearestplayer% &b&lDistance: &3%distance%'
|
||||
NoneOnline: '&cNo Players Online'
|
||||
TrackBelowY: 128
|
||||
RefreshOnlyWhenHeld: true
|
||||
Soups:
|
||||
Name: '&aRegenerative Soups &7(Right Click)'
|
||||
RegenAmount: 6
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
name: KitPvP
|
||||
author: Cervinakuy
|
||||
main: com.planetgallium.kitpvp.Game
|
||||
version: 2.1.8
|
||||
version: 2.1.9
|
||||
description: The ultimate all-in-one KitPvP plugin.
|
||||
website: https://www.spigotmc.org/resources/27107/
|
||||
softdepend: [PlaceholderAPI, WorldGuard]
|
||||
|
||||
Reference in new issue
Block a user