From a0cc6ded7eb0ce59357b192779f3b9498fdb1658 Mon Sep 17 00:00:00 2001 From: ASangarin Date: Mon, 30 Nov 2020 21:05:41 +0100 Subject: [PATCH] MMOCore 1.5 Cleaned up a lot of the source code. Memory/performance improvements. Requires MMOLib 1.5 --- lib/MMOLib.jar | Bin 4395349 -> 4428139 bytes pom.xml | 8 +-- .../java/net/Indyuce/mmocore/MMOCore.java | 1 - .../Indyuce/mmocore/api/PlayerActionBar.java | 4 +- .../net/Indyuce/mmocore/api/Waypoint.java | 4 +- .../Indyuce/mmocore/api/block/BlockInfo.java | 4 +- .../Indyuce/mmocore/api/block/BlockType.java | 6 +-- .../droptable/condition/BiomeCondition.java | 2 +- .../droptable/condition/WorldCondition.java | 2 +- .../dropitem/MMDropTableDropItem.java | 2 +- .../dropitem/fishing/FishingDropItem.java | 2 +- .../net/Indyuce/mmocore/api/eco/Withdraw.java | 2 +- .../api/event/PlayerChangeClassEvent.java | 2 +- .../mmocore/api/experience/EXPSource.java | 2 +- .../api/experience/PlayerProfessions.java | 7 +-- .../source/BrewPotionExperienceSource.java | 11 ++-- .../source/EnchantItemExperienceSource.java | 7 +-- .../source/KillMobExperienceSource.java | 17 +++---- .../source/SmeltItemExperienceSource.java | 9 ++-- .../Indyuce/mmocore/api/loot/LootChest.java | 2 +- .../mmocore/api/loot/LootChestRegion.java | 30 ++++++----- .../mmocore/api/loot/RegionBounds.java | 2 +- .../mmocore/api/player/PlayerData.java | 7 ++- .../player/attribute/PlayerAttributes.java | 2 +- .../api/player/profess/ClassOption.java | 4 +- .../api/player/profess/PlayerClass.java | 2 +- .../player/profess/SavedClassInformation.java | 2 +- .../profess/event/EventTriggerHandler.java | 2 +- .../profess/resource/ManaDisplayOptions.java | 6 +-- .../profess/resource/PlayerResource.java | 17 +++---- .../profess/resource/ResourceHandler.java | 2 +- .../mmocore/api/player/social/Party.java | 6 +-- .../api/player/social/guilds/Guild.java | 6 ++- .../mmocore/api/player/stats/PlayerStats.java | 2 +- .../mmocore/api/player/stats/StatType.java | 5 +- .../mmocore/api/quest/PlayerQuests.java | 31 ++++++------ .../net/Indyuce/mmocore/api/quest/Quest.java | 4 +- .../api/quest/trigger/ManaTrigger.java | 2 +- .../api/quest/trigger/StaminaTrigger.java | 2 +- .../mmocore/api/skill/PlayerSkillData.java | 7 +-- .../net/Indyuce/mmocore/api/skill/Skill.java | 2 +- .../mmocore/api/skill/SkillResult.java | 2 +- .../api/skill/result/TargetSkillResult.java | 2 +- .../mmocore/api/util/MMOCoreUtils.java | 24 ++++----- .../api/util/debug/ActionBarRunnable.java | 2 +- .../mmocore/api/util/item/ConfigItem.java | 1 + .../api/util/math/format/DelayFormat.java | 10 ++-- .../api/util/math/formula/RandomAmount.java | 2 +- .../math/particle/ChestParticleEffect.java | 4 +- .../math/particle/ParabolicProjectile.java | 2 +- .../util/math/particle/PotionParticles.java | 2 +- .../Indyuce/mmocore/command/ClassCommand.java | 2 +- .../mmocore/command/FriendsCommand.java | 6 +-- .../Indyuce/mmocore/command/GuildCommand.java | 6 +-- .../Indyuce/mmocore/command/PartyCommand.java | 6 +-- .../mmocore/command/WithdrawCommand.java | 2 +- .../command/rpg/ReloadCommandTreeNode.java | 2 +- .../rpg/admin/AdminCommandTreeNode.java | 17 ++++--- .../rpg/admin/AttributeCommandTreeNode.java | 2 +- .../rpg/admin/ExperienceCommandTreeNode.java | 12 ++--- .../admin/HideActionBarCommandTreeNode.java | 2 +- .../rpg/admin/LevelCommandTreeNode.java | 13 ++--- .../rpg/admin/PointsCommandTreeNode.java | 2 +- .../rpg/admin/ResetCommandTreeNode.java | 12 ++--- .../rpg/admin/ResourceCommandTreeNode.java | 2 +- .../rpg/debug/StatValueCommandTreeNode.java | 4 +- .../rpg/quest/StartCommandTreeNode.java | 2 +- .../comp/citizens/CitizenInteractEvent.java | 2 +- .../comp/citizens/GetItemObjective.java | 5 +- .../comp/citizens/TalktoCitizenObjective.java | 2 +- .../mmocore/comp/flags/FlagPlugin.java | 6 +-- .../mmocore/comp/holograms/CMIPlugin.java | 14 +++--- .../comp/holograms/HologramsPlugin.java | 2 +- .../holograms/HolographicDisplaysPlugin.java | 2 +- .../mythicmobs/load/CurrencyItemDrop.java | 5 +- .../comp/mythicmobs/load/GoldPouchDrop.java | 7 +-- .../KillMythicFactionExperienceSource.java | 19 +++---- .../load/KillMythicMobExperienceSource.java | 17 +++---- .../comp/mythicmobs/skill/MythicMobSkill.java | 11 ++-- .../skill/PassiveMythicMobSkillHandler.java | 13 +++-- .../comp/placeholder/PlaceholderParser.java | 2 +- .../comp/placeholder/RPGPlaceholders.java | 6 ++- .../mmocore/comp/region/RegionCondition.java | 4 +- .../mmocore/comp/region/RegionHandler.java | 2 +- .../mmocore/comp/vault/MoneyTrigger.java | 2 +- .../Indyuce/mmocore/gui/AttributeView.java | 2 +- .../mmocore/gui/ClassConfirmation.java | 6 +-- .../net/Indyuce/mmocore/gui/PlayerStats.java | 10 ++-- .../net/Indyuce/mmocore/gui/QuestViewer.java | 47 ++++++++---------- .../net/Indyuce/mmocore/gui/SkillList.java | 10 +--- .../api/item/InventoryPlaceholderItem.java | 2 +- .../mmocore/gui/api/item/Placeholders.java | 2 +- .../Indyuce/mmocore/gui/eco/DepositMenu.java | 1 - .../Indyuce/mmocore/gui/eco/GoldPouch.java | 2 +- .../gui/social/friend/EditableFriendList.java | 6 +-- .../gui/social/guild/EditableGuildAdmin.java | 4 +- .../gui/social/guild/EditableGuildView.java | 10 ++-- .../gui/social/party/EditablePartyView.java | 4 +- .../Indyuce/mmocore/listener/SpellCast.java | 17 +++---- .../listener/profession/FishingListener.java | 2 +- .../Indyuce/mmocore/manager/ClassManager.java | 2 +- .../mmocore/manager/ConfigManager.java | 39 ++++++++------- .../mmocore/manager/DropTableManager.java | 5 +- .../Indyuce/mmocore/manager/QuestManager.java | 2 +- .../mmocore/manager/WaypointManager.java | 2 +- .../mmocore/manager/data/DataProvider.java | 1 - .../manager/data/GuildDataManager.java | 4 +- .../manager/data/PlayerDataManager.java | 4 +- .../data/mysql/MySQLPlayerDataManager.java | 16 +++--- .../manager/data/yaml/YAMLDataProvider.java | 3 -- .../data/yaml/YAMLPlayerDataManager.java | 4 +- .../manager/profession/AlchemyManager.java | 2 +- .../manager/profession/FishingManager.java | 7 +-- .../manager/profession/ProfessionManager.java | 5 +- .../manager/social/BoosterManager.java | 7 +-- .../mmocore/manager/social/PartyManager.java | 2 +- .../manager/social/RequestManager.java | 8 +-- .../net/Indyuce/mmocore/skill/Ambers.java | 5 +- .../net/Indyuce/mmocore/skill/Backstab.java | 2 +- .../Indyuce/mmocore/skill/Combo_Attack.java | 2 +- .../net/Indyuce/mmocore/skill/Control.java | 2 +- .../mmocore/skill/Empowered_Attack.java | 2 +- .../java/net/Indyuce/mmocore/skill/Evade.java | 4 +- .../Indyuce/mmocore/skill/Fire_Berserker.java | 3 +- .../net/Indyuce/mmocore/skill/Fire_Rage.java | 10 ++-- .../Indyuce/mmocore/skill/Furtive_Strike.java | 2 +- .../Indyuce/mmocore/skill/Human_Shield.java | 2 +- .../Indyuce/mmocore/skill/Neptune_Gift.java | 3 +- .../net/Indyuce/mmocore/skill/Power_Mark.java | 4 +- .../Indyuce/mmocore/skill/Sneaky_Picky.java | 2 +- .../net/Indyuce/mmocore/skill/Telekinesy.java | 2 +- .../net/Indyuce/mmocore/skill/Weaken.java | 2 +- src/main/resources/plugin.yml | 2 +- 133 files changed, 366 insertions(+), 422 deletions(-) diff --git a/lib/MMOLib.jar b/lib/MMOLib.jar index 0bdd3f2a50883b9f955c99ca967d0a4bc673bdbf..525fddcbcb399ef66de0018c5d205f40b134443c 100644 GIT binary patch delta 170773 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ξ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Ν{0T$&z)+n&*i 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 delta 140627 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.0.0 net.Indyuce MMOCore - 1.4.12 + 1.5 MMOCore Offer your players a brand new RPG experience. @@ -99,9 +99,9 @@ ${basedir}/lib/MMOItems.jar - net.Indyuce + net.mmogroup MMOLib - 1.3 + 1.5 system ${basedir}/lib/MMOLib.jar @@ -110,7 +110,7 @@ org.spigotmc spigot-api - 1.12-R1-1.16-R2 + amalgam system ${basedir}/lib/spigot.jar diff --git a/src/main/java/net/Indyuce/mmocore/MMOCore.java b/src/main/java/net/Indyuce/mmocore/MMOCore.java index ed1f2436..92210761 100644 --- a/src/main/java/net/Indyuce/mmocore/MMOCore.java +++ b/src/main/java/net/Indyuce/mmocore/MMOCore.java @@ -372,7 +372,6 @@ public class MMOCore extends JavaPlugin { for (Guild guild : dataProvider.getGuildManager().getAll()) dataProvider.getGuildManager().save(guild); - dataProvider.close(); mineManager.resetRemainingBlocks(); diff --git a/src/main/java/net/Indyuce/mmocore/api/PlayerActionBar.java b/src/main/java/net/Indyuce/mmocore/api/PlayerActionBar.java index 136b8490..8b3a5e96 100644 --- a/src/main/java/net/Indyuce/mmocore/api/PlayerActionBar.java +++ b/src/main/java/net/Indyuce/mmocore/api/PlayerActionBar.java @@ -38,7 +38,7 @@ public class PlayerActionBar extends BukkitRunnable { for (PlayerData data : PlayerData.getAll()) if (data.isOnline() && !data.getPlayer().isDead() && !data.isCasting() && data.canSeeActionBar()) { data.getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(MMOCore.plugin.placeholderParser.parse(data.getPlayer(), - MMOLib.plugin.parseColors(new String(data.getProfess().hasActionBar() ? data.getProfess().getActionBar() : config.format) + MMOLib.plugin.parseColors((data.getProfess().hasActionBar() ? data.getProfess().getActionBar() : config.format) .replace("{health}", digit.format(data.getPlayer().getHealth())) .replace("{max_health}", "" + StatType.MAX_HEALTH.format(data.getPlayer().getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue())) .replace("{mana_icon}", data.getProfess().getManaDisplay().getIcon()) @@ -56,7 +56,7 @@ public class PlayerActionBar extends BukkitRunnable { } } - private class ActionBarConfig { + private static class ActionBarConfig { private final boolean enabled; private final int ticks, timeout; private final String digit, format; diff --git a/src/main/java/net/Indyuce/mmocore/api/Waypoint.java b/src/main/java/net/Indyuce/mmocore/api/Waypoint.java index a0d7f53e..a7a9a4aa 100644 --- a/src/main/java/net/Indyuce/mmocore/api/Waypoint.java +++ b/src/main/java/net/Indyuce/mmocore/api/Waypoint.java @@ -28,7 +28,7 @@ public class Waypoint { stellium = section.getDouble("stellium"); radiusSquared = Math.pow(section.getDouble("radius"), 2); def = section.getBoolean("default"); - sneak = section.contains("sneak") ? section.getBoolean("sneak") : true; + sneak = !section.contains("sneak") || section.getBoolean("sneak"); dynamic = section.getBoolean("dynamic"); } @@ -75,7 +75,7 @@ public class Waypoint { } private Location readLocation(String string) { - String[] split = string.split("\\ "); + String[] split = string.split(" "); World world = Bukkit.getWorld(split[0]); Validate.notNull(world, "Could not find world " + world); diff --git a/src/main/java/net/Indyuce/mmocore/api/block/BlockInfo.java b/src/main/java/net/Indyuce/mmocore/api/block/BlockInfo.java index c450376f..b15531ea 100644 --- a/src/main/java/net/Indyuce/mmocore/api/block/BlockInfo.java +++ b/src/main/java/net/Indyuce/mmocore/api/block/BlockInfo.java @@ -55,7 +55,7 @@ public class BlockInfo { } Optional opt = triggers.stream().filter(trigger -> (trigger instanceof ExperienceTrigger)).findFirst(); - experience = opt.isPresent() ? (ExperienceTrigger) opt.get() : null; + experience = (ExperienceTrigger) opt.orElse(null); } public boolean hasVanillaDrops() { @@ -110,7 +110,7 @@ public class BlockInfo { return triggers; } - public class RegeneratingBlock { + public static class RegeneratingBlock { private final BlockData data; private final Location loc; private final BlockInfo regenerating; diff --git a/src/main/java/net/Indyuce/mmocore/api/block/BlockType.java b/src/main/java/net/Indyuce/mmocore/api/block/BlockType.java index 30ce4b7a..265ec318 100644 --- a/src/main/java/net/Indyuce/mmocore/api/block/BlockType.java +++ b/src/main/java/net/Indyuce/mmocore/api/block/BlockType.java @@ -6,18 +6,18 @@ import org.bukkit.block.Block; import net.Indyuce.mmocore.api.block.BlockInfo.RegeneratingBlock; public interface BlockType { - public void place(Location loc, RegeneratingBlock regenerating); + void place(Location loc, RegeneratingBlock regenerating); /** * Generates a key used to store the BlockInfo instance in the manager map, * the key depends on the block type to make sure there is no interference */ - public String generateKey(); + String generateKey(); /** * GenerateKey() determines if the block is handled by that block type, * breakRestrictions(Block) applies some extra break restrictions; returns * TRUE if the block can be broken */ - public boolean breakRestrictions(Block block); + boolean breakRestrictions(Block block); } diff --git a/src/main/java/net/Indyuce/mmocore/api/droptable/condition/BiomeCondition.java b/src/main/java/net/Indyuce/mmocore/api/droptable/condition/BiomeCondition.java index cbc08ef4..90cc7a05 100644 --- a/src/main/java/net/Indyuce/mmocore/api/droptable/condition/BiomeCondition.java +++ b/src/main/java/net/Indyuce/mmocore/api/droptable/condition/BiomeCondition.java @@ -14,7 +14,7 @@ public class BiomeCondition extends Condition { super(config); config.validate("name"); - names = Arrays.asList(config.getString("name").toUpperCase().split("\\,")); + names = Arrays.asList(config.getString("name").toUpperCase().split(",")); } @Override diff --git a/src/main/java/net/Indyuce/mmocore/api/droptable/condition/WorldCondition.java b/src/main/java/net/Indyuce/mmocore/api/droptable/condition/WorldCondition.java index 0d99eb76..c2c1e30e 100644 --- a/src/main/java/net/Indyuce/mmocore/api/droptable/condition/WorldCondition.java +++ b/src/main/java/net/Indyuce/mmocore/api/droptable/condition/WorldCondition.java @@ -12,7 +12,7 @@ public class WorldCondition extends Condition { super(config); config.validate("name"); - names = Arrays.asList(config.getString("name").split("\\,")); + names = Arrays.asList(config.getString("name").split(",")); } @Override diff --git a/src/main/java/net/Indyuce/mmocore/api/droptable/dropitem/MMDropTableDropItem.java b/src/main/java/net/Indyuce/mmocore/api/droptable/dropitem/MMDropTableDropItem.java index 08c95270..fa9e7000 100644 --- a/src/main/java/net/Indyuce/mmocore/api/droptable/dropitem/MMDropTableDropItem.java +++ b/src/main/java/net/Indyuce/mmocore/api/droptable/dropitem/MMDropTableDropItem.java @@ -24,7 +24,7 @@ public class MMDropTableDropItem extends DropItem { String id = config.getString("id"); try { - dropTable = MythicMobs.inst().getDropManager().getDropTable(id).get(); + dropTable = MythicMobs.inst().getDropManager().getDropTable(id).orElse(null); } catch (NoSuchElementException exception) { throw new IllegalArgumentException("Could not find MM drop table with ID '" + id + "'"); } diff --git a/src/main/java/net/Indyuce/mmocore/api/droptable/dropitem/fishing/FishingDropItem.java b/src/main/java/net/Indyuce/mmocore/api/droptable/dropitem/fishing/FishingDropItem.java index d62bcaf2..f952c73e 100644 --- a/src/main/java/net/Indyuce/mmocore/api/droptable/dropitem/fishing/FishingDropItem.java +++ b/src/main/java/net/Indyuce/mmocore/api/droptable/dropitem/fishing/FishingDropItem.java @@ -59,6 +59,6 @@ public class FishingDropItem { public ItemStack collect(LootBuilder builder) { dropItem.collect(builder); - return builder.getLoot().stream().findAny().get(); + return builder.getLoot().stream().findAny().orElse(null); } } diff --git a/src/main/java/net/Indyuce/mmocore/api/eco/Withdraw.java b/src/main/java/net/Indyuce/mmocore/api/eco/Withdraw.java index ec7784ca..31e491eb 100644 --- a/src/main/java/net/Indyuce/mmocore/api/eco/Withdraw.java +++ b/src/main/java/net/Indyuce/mmocore/api/eco/Withdraw.java @@ -40,7 +40,7 @@ public class Withdraw implements Listener { withdrawing.add(player.getUniqueId()); MMOCore.plugin.configManager.getSimpleMessage("withdrawing").send(player); Bukkit.getPluginManager().registerEvents(this, MMOCore.plugin); - Bukkit.getScheduler().runTaskLater(MMOCore.plugin, () -> close(), 20 * 20); + Bukkit.getScheduler().runTaskLater(MMOCore.plugin, this::close, 20 * 20); } public void close() { diff --git a/src/main/java/net/Indyuce/mmocore/api/event/PlayerChangeClassEvent.java b/src/main/java/net/Indyuce/mmocore/api/event/PlayerChangeClassEvent.java index 7b2b5eea..6df6f66c 100644 --- a/src/main/java/net/Indyuce/mmocore/api/event/PlayerChangeClassEvent.java +++ b/src/main/java/net/Indyuce/mmocore/api/event/PlayerChangeClassEvent.java @@ -24,7 +24,7 @@ public class PlayerChangeClassEvent extends PlayerDataEvent implements Cancellab } public boolean isSubclass() { - return getData().getProfess().getSubclasses().stream().filter(sub -> sub.getProfess().equals(newClass)).count() > 0; + return getData().getProfess().getSubclasses().stream().anyMatch(sub -> sub.getProfess().equals(newClass)); } @Override diff --git a/src/main/java/net/Indyuce/mmocore/api/experience/EXPSource.java b/src/main/java/net/Indyuce/mmocore/api/experience/EXPSource.java index df28b5f7..2c606d83 100644 --- a/src/main/java/net/Indyuce/mmocore/api/experience/EXPSource.java +++ b/src/main/java/net/Indyuce/mmocore/api/experience/EXPSource.java @@ -6,5 +6,5 @@ public enum EXPSource { VANILLA, QUEST, FISHING, - OTHER; + OTHER } diff --git a/src/main/java/net/Indyuce/mmocore/api/experience/PlayerProfessions.java b/src/main/java/net/Indyuce/mmocore/api/experience/PlayerProfessions.java index 64d18bac..4266a42f 100644 --- a/src/main/java/net/Indyuce/mmocore/api/experience/PlayerProfessions.java +++ b/src/main/java/net/Indyuce/mmocore/api/experience/PlayerProfessions.java @@ -22,6 +22,7 @@ import net.Indyuce.mmocore.api.event.PlayerLevelUpEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.util.math.particle.SmallParticleEffect; +@SuppressWarnings("ALL") public class PlayerProfessions { private final Map exp = new HashMap<>(); private final Map level = new HashMap<>(); @@ -177,12 +178,12 @@ public class PlayerProfessions { playerData.getStats().updateStats(); } - String bar = "" + ChatColor.BOLD; + StringBuilder bar = new StringBuilder("" + ChatColor.BOLD); int chars = (int) ((double) exp / needed * 20); for (int j = 0; j < 20; j++) - bar += (j == chars ? "" + ChatColor.WHITE + ChatColor.BOLD : "") + "|"; + bar.append(j == chars ? "" + ChatColor.WHITE + ChatColor.BOLD : "").append("|"); if(playerData.isOnline()) - MMOCore.plugin.configManager.getSimpleMessage("exp-notification", "profession", profession.getName(), "progress", bar, "ratio", + MMOCore.plugin.configManager.getSimpleMessage("exp-notification", "profession", profession.getName(), "progress", bar.toString(), "ratio", MMOCore.plugin.configManager.decimal.format((double) exp / needed * 100)).send(playerData.getPlayer()); } } diff --git a/src/main/java/net/Indyuce/mmocore/api/experience/source/BrewPotionExperienceSource.java b/src/main/java/net/Indyuce/mmocore/api/experience/source/BrewPotionExperienceSource.java index b6c95afa..b5ae1ca1 100644 --- a/src/main/java/net/Indyuce/mmocore/api/experience/source/BrewPotionExperienceSource.java +++ b/src/main/java/net/Indyuce/mmocore/api/experience/source/BrewPotionExperienceSource.java @@ -30,14 +30,14 @@ public class BrewPotionExperienceSource extends ExperienceSource { super(profession); if (config.contains("effect")) - for (String key : config.getString("effect").split("\\,")) + for (String key : config.getString("effect").split(",")) types.add(PotionType.valueOf(key.toUpperCase().replace("-", "_"))); } @Override public boolean matches(PlayerData player, PotionMeta meta) { return hasRightClass(player) - && (types.isEmpty() || new ArrayList<>(types).stream().filter(type -> meta.getBasePotionData().getType() == type).count() > 0); + && (types.isEmpty() || new ArrayList<>(types).stream().anyMatch(type -> meta.getBasePotionData().getType() == type)); } @Override @@ -46,7 +46,7 @@ public class BrewPotionExperienceSource extends ExperienceSource { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void a(BrewEvent event) { - Optional playerOpt = getNearbyPlayer(event.getBlock().getLocation(), 10); + Optional playerOpt = getNearbyPlayer(event.getBlock().getLocation()); if (!playerOpt.isPresent()) return; @@ -76,9 +76,8 @@ public class BrewPotionExperienceSource extends ExperienceSource { return null; } - private Optional getNearbyPlayer(Location loc, double d) { - double d2 = d * d; - return loc.getWorld().getPlayers().stream().filter(player -> player.getLocation().distanceSquared(loc) < d2).findAny(); + private Optional getNearbyPlayer(Location loc) { + return loc.getWorld().getPlayers().stream().filter(player -> player.getLocation().distanceSquared(loc) < 100).findAny(); } public class PotionUpgrade { diff --git a/src/main/java/net/Indyuce/mmocore/api/experience/source/EnchantItemExperienceSource.java b/src/main/java/net/Indyuce/mmocore/api/experience/source/EnchantItemExperienceSource.java index a2ea6081..beabc9a8 100644 --- a/src/main/java/net/Indyuce/mmocore/api/experience/source/EnchantItemExperienceSource.java +++ b/src/main/java/net/Indyuce/mmocore/api/experience/source/EnchantItemExperienceSource.java @@ -2,7 +2,6 @@ package net.Indyuce.mmocore.api.experience.source; import java.util.ArrayList; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -27,7 +26,7 @@ public class EnchantItemExperienceSource extends ExperienceSource { super(profession); if (config.contains("enchant")) - for (String key : config.getString("enchant").split("\\,")) + for (String key : config.getString("enchant").split(",")) enchants.add(MMOLib.plugin.getVersion().getWrapper().getEnchantmentFromString(key.toLowerCase().replace("-", "_"))); } @@ -48,9 +47,7 @@ public class EnchantItemExperienceSource extends ExperienceSource { Map ench = new HashMap<>(event.getEnchantsToAdd()); if (!source.enchants.isEmpty()) - for (Iterator iterator = ench.keySet().iterator(); iterator.hasNext();) - if (!source.enchants.contains(iterator.next())) - iterator.remove(); + ench.keySet().removeIf(enchantment -> !source.enchants.contains(enchantment)); if (ench.isEmpty()) continue; diff --git a/src/main/java/net/Indyuce/mmocore/api/experience/source/KillMobExperienceSource.java b/src/main/java/net/Indyuce/mmocore/api/experience/source/KillMobExperienceSource.java index 8db14e77..b37bdec6 100644 --- a/src/main/java/net/Indyuce/mmocore/api/experience/source/KillMobExperienceSource.java +++ b/src/main/java/net/Indyuce/mmocore/api/experience/source/KillMobExperienceSource.java @@ -30,17 +30,14 @@ public class KillMobExperienceSource extends SpecificExperienceSource { return new ExperienceManager() { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void a(EntityKillEntityEvent event) { - Bukkit.getScheduler().runTaskLater(MMOCore.plugin, new Runnable() { - @Override - public void run() { - if (event.getTarget().isDead() && event.getEntity() instanceof Player && !event.getEntity().hasMetadata("NPC") - && !event.getTarget().hasMetadata("spawner_spawned")) { - PlayerData data = PlayerData.get((Player) event.getEntity()); + Bukkit.getScheduler().runTaskLater(MMOCore.plugin, () -> { + if (event.getTarget().isDead() && event.getEntity() instanceof Player && !event.getEntity().hasMetadata("NPC") + && !event.getTarget().hasMetadata("spawner_spawned")) { + PlayerData data = PlayerData.get((Player) event.getEntity()); - for (KillMobExperienceSource source : getSources()) - if (source.matches(data, event.getTarget())) - source.giveExperience(data, 1, event.getTarget().getLocation()); - } + for (KillMobExperienceSource source : getSources()) + if (source.matches(data, event.getTarget())) + source.giveExperience(data, 1, event.getTarget().getLocation()); } }, 2); } diff --git a/src/main/java/net/Indyuce/mmocore/api/experience/source/SmeltItemExperienceSource.java b/src/main/java/net/Indyuce/mmocore/api/experience/source/SmeltItemExperienceSource.java index d570c10c..8bce6caf 100644 --- a/src/main/java/net/Indyuce/mmocore/api/experience/source/SmeltItemExperienceSource.java +++ b/src/main/java/net/Indyuce/mmocore/api/experience/source/SmeltItemExperienceSource.java @@ -32,7 +32,7 @@ public class SmeltItemExperienceSource extends SpecificExperienceSource player = getNearestPlayer(event.getBlock().getLocation(), 10); + Optional player = getNearestPlayer(event.getBlock().getLocation()); if (!player.isPresent()) return; @@ -48,12 +48,11 @@ public class SmeltItemExperienceSource extends SpecificExperienceSource getNearestPlayer(Location loc, double d) { - final double d2 = d * d; - final Player[] nearby = loc.getWorld().getPlayers().stream().filter(player -> player.getLocation().distanceSquared(loc) < d2) + private Optional getNearestPlayer(Location loc) { + final Player[] nearby = loc.getWorld().getPlayers().stream().filter(player -> player.getLocation().distanceSquared(loc) < 100) .toArray(Player[]::new); Player selected = null; - double lastDist = d2; + double lastDist = 100; for (Player p : nearby) { double currDist = p.getLocation().distance(loc); if (currDist < lastDist) { diff --git a/src/main/java/net/Indyuce/mmocore/api/loot/LootChest.java b/src/main/java/net/Indyuce/mmocore/api/loot/LootChest.java index 7d4aff55..77458d99 100644 --- a/src/main/java/net/Indyuce/mmocore/api/loot/LootChest.java +++ b/src/main/java/net/Indyuce/mmocore/api/loot/LootChest.java @@ -77,7 +77,7 @@ public class LootChest { effectRunnable.cancel(); } - public class ReplacedBlock { + public static class ReplacedBlock { private final Material material; private final BlockData data; private final Location loc; diff --git a/src/main/java/net/Indyuce/mmocore/api/loot/LootChestRegion.java b/src/main/java/net/Indyuce/mmocore/api/loot/LootChestRegion.java index 541169f1..45e0a221 100644 --- a/src/main/java/net/Indyuce/mmocore/api/loot/LootChestRegion.java +++ b/src/main/java/net/Indyuce/mmocore/api/loot/LootChestRegion.java @@ -1,13 +1,8 @@ package net.Indyuce.mmocore.api.loot; -import java.util.ArrayList; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Optional; -import java.util.Random; -import java.util.Set; -import java.util.logging.Level; - +import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.event.LootChestSpawnEvent; +import net.Indyuce.mmocore.api.player.PlayerData; import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -17,9 +12,13 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; -import net.Indyuce.mmocore.MMOCore; -import net.Indyuce.mmocore.api.event.LootChestSpawnEvent; -import net.Indyuce.mmocore.api.player.PlayerData; +import java.util.ArrayList; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Optional; +import java.util.Random; +import java.util.Set; +import java.util.logging.Level; public class LootChestRegion { private final String id; @@ -120,7 +119,7 @@ public class LootChestRegion { s += tier.chance; } - return tiers.stream().findAny().get(); + return tiers.stream().findAny().orElse(null); } public Location getRandomLocation(Location center) { @@ -168,7 +167,7 @@ public class LootChestRegion { return !loc.getBlock().getType().isSolid() && loc.clone().add(0, -1, 0).getBlock().getType().isSolid(); } - public class LootChestRunnable extends BukkitRunnable { + public static class LootChestRunnable extends BukkitRunnable { private final LootChestRegion region; public LootChestRunnable(LootChestRegion region) { @@ -179,9 +178,8 @@ public class LootChestRegion { @Override public void run() { - Optional found = region.getBounds().getPlayers().filter(data -> data.canSpawnLootChest()).findAny(); - if (found.isPresent()) - region.spawnChest(found.get()); + Optional found = region.getBounds().getPlayers().filter(PlayerData::canSpawnLootChest).findAny(); + found.ifPresent(region::spawnChest); } } } diff --git a/src/main/java/net/Indyuce/mmocore/api/loot/RegionBounds.java b/src/main/java/net/Indyuce/mmocore/api/loot/RegionBounds.java index 8603ec5d..3a5cf3f1 100644 --- a/src/main/java/net/Indyuce/mmocore/api/loot/RegionBounds.java +++ b/src/main/java/net/Indyuce/mmocore/api/loot/RegionBounds.java @@ -40,7 +40,7 @@ public class RegionBounds { } public Stream getPlayers() { - return world.getPlayers().stream().filter(player -> isInRegion(player)).map(player -> PlayerData.get(player)); + return world.getPlayers().stream().filter(this::isInRegion).map(PlayerData::get); } public boolean isInRegion(Player player) { diff --git a/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java b/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java index 2bf111e6..0645eec8 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java @@ -405,7 +405,10 @@ public class PlayerData extends OfflinePlayerData { if(!isOnline()) return; new BukkitRunnable() { - int x = getPlayer().getLocation().getBlockX(), y = getPlayer().getLocation().getBlockY(), z = getPlayer().getLocation().getBlockZ(), t; + final int x = getPlayer().getLocation().getBlockX(); + final int y = getPlayer().getLocation().getBlockY(); + final int z = getPlayer().getLocation().getBlockZ(); + int t; public void run() { if(!isOnline()) return; @@ -772,7 +775,7 @@ public class PlayerData extends OfflinePlayerData { @Override public boolean equals(Object obj) { - return obj != null && obj instanceof PlayerData && ((PlayerData) obj).getUniqueId().equals(getUniqueId()); + return obj instanceof PlayerData && ((PlayerData) obj).getUniqueId().equals(getUniqueId()); } public static PlayerData get(OfflinePlayer player) { diff --git a/src/main/java/net/Indyuce/mmocore/api/player/attribute/PlayerAttributes.java b/src/main/java/net/Indyuce/mmocore/api/player/attribute/PlayerAttributes.java index bb2fc929..aa1c92ef 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/attribute/PlayerAttributes.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/attribute/PlayerAttributes.java @@ -113,7 +113,7 @@ public class PlayerAttributes { private final Map map = new HashMap<>(); public AttributeInstance(PlayerAttribute attribute) { - id = new String(attribute.getId()); + id = attribute.getId(); } public int getBase() { diff --git a/src/main/java/net/Indyuce/mmocore/api/player/profess/ClassOption.java b/src/main/java/net/Indyuce/mmocore/api/player/profess/ClassOption.java index 407879b8..3d950b9f 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/profess/ClassOption.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/profess/ClassOption.java @@ -22,11 +22,11 @@ public enum ClassOption { private final boolean def; - private ClassOption() { + ClassOption() { this(false); } - private ClassOption(boolean def) { + ClassOption(boolean def) { this.def = def; } diff --git a/src/main/java/net/Indyuce/mmocore/api/player/profess/PlayerClass.java b/src/main/java/net/Indyuce/mmocore/api/player/profess/PlayerClass.java index 0f1b1e7d..b0c09940 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/profess/PlayerClass.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/profess/PlayerClass.java @@ -321,7 +321,7 @@ public class PlayerClass extends PostLoadObject { @Override public boolean equals(Object obj) { - return obj != null && obj instanceof PlayerClass && ((PlayerClass) obj).id.equals(id); + return obj instanceof PlayerClass && ((PlayerClass) obj).id.equals(id); } public String getActionBar() { diff --git a/src/main/java/net/Indyuce/mmocore/api/player/profess/SavedClassInformation.java b/src/main/java/net/Indyuce/mmocore/api/player/profess/SavedClassInformation.java index cae2bd7b..3da7801d 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/profess/SavedClassInformation.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/profess/SavedClassInformation.java @@ -164,7 +164,7 @@ public class SavedClassInformation { player.setSkillPoints(skillPoints); player.setAttributePoints(attributePoints); player.setAttributeReallocationPoints(attributeReallocationPoints); - skills.forEach((id, level) -> player.setSkillLevel(id, level)); + skills.forEach(player::setSkillLevel); attributes.forEach((id, pts) -> player.getAttributes().setBaseAttribute(id, pts)); /* diff --git a/src/main/java/net/Indyuce/mmocore/api/player/profess/event/EventTriggerHandler.java b/src/main/java/net/Indyuce/mmocore/api/player/profess/event/EventTriggerHandler.java index bc36320d..dca36f22 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/profess/event/EventTriggerHandler.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/profess/event/EventTriggerHandler.java @@ -3,5 +3,5 @@ package net.Indyuce.mmocore.api.player.profess.event; import org.bukkit.event.Listener; public interface EventTriggerHandler extends Listener { - public boolean handles(String event); + boolean handles(String event); } diff --git a/src/main/java/net/Indyuce/mmocore/api/player/profess/resource/ManaDisplayOptions.java b/src/main/java/net/Indyuce/mmocore/api/player/profess/resource/ManaDisplayOptions.java index 63d8a994..678ee549 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/profess/resource/ManaDisplayOptions.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/profess/resource/ManaDisplayOptions.java @@ -61,12 +61,12 @@ public class ManaDisplayOptions { } public String generateBar(double mana, double max) { - String format = ""; + StringBuilder format = new StringBuilder(); double ratio = 20 * mana / max; for (double j = 1; j < 20; j++) - format += "" + (ratio >= j ? full : ratio >= j - .5 ? half : empty) + barCharacter; + format.append(ratio >= j ? full : ratio >= j - .5 ? half : empty).append(barCharacter); - return format; + return format.toString(); } } diff --git a/src/main/java/net/Indyuce/mmocore/api/player/profess/resource/PlayerResource.java b/src/main/java/net/Indyuce/mmocore/api/player/profess/resource/PlayerResource.java index a66ec7e0..b29f4689 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/profess/resource/PlayerResource.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/profess/resource/PlayerResource.java @@ -12,21 +12,20 @@ import net.Indyuce.mmocore.api.player.stats.StatType; public enum PlayerResource { HEALTH(StatType.HEALTH_REGENERATION, ClassOption.OFF_COMBAT_HEALTH_REGEN, (data) -> data.getPlayer().getHealth(), - (data) -> data.getPlayer().getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue(), (data, d) -> data.heal(d)), - MANA(StatType.MANA_REGENERATION, ClassOption.OFF_COMBAT_MANA_REGEN, (data) -> data.getMana(), - (data) -> data.getStats().getStat(StatType.MAX_MANA), (data, d) -> data.giveMana(d)), - STAMINA(StatType.STAMINA_REGENERATION, ClassOption.OFF_COMBAT_STAMINA_REGEN, (data) -> data.getStamina(), - (data) -> data.getStats().getStat(StatType.MAX_STAMINA), (data, d) -> data.giveStamina(d)), - STELLIUM(StatType.STELLIUM_REGENERATION, ClassOption.OFF_COMBAT_STELLIUM_REGEN, (data) -> data.getStellium(), - (data) -> data.getStats().getStat(StatType.MAX_STELLIUM), (data, d) -> data.giveStellium(d)); + (data) -> data.getPlayer().getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue(), PlayerData::heal), + MANA(StatType.MANA_REGENERATION, ClassOption.OFF_COMBAT_MANA_REGEN, PlayerData::getMana, + (data) -> data.getStats().getStat(StatType.MAX_MANA), PlayerData::giveMana), + STAMINA(StatType.STAMINA_REGENERATION, ClassOption.OFF_COMBAT_STAMINA_REGEN, PlayerData::getStamina, + (data) -> data.getStats().getStat(StatType.MAX_STAMINA), PlayerData::giveStamina), + STELLIUM(StatType.STELLIUM_REGENERATION, ClassOption.OFF_COMBAT_STELLIUM_REGEN, PlayerData::getStellium, + (data) -> data.getStats().getStat(StatType.MAX_STELLIUM), PlayerData::giveStellium); private final StatType regenStat; private final ClassOption offCombatRegen; private final Function current, max; private final BiConsumer regen; - private PlayerResource(StatType regenStat, ClassOption offCombatRegen, Function current, Function max, - BiConsumer regen) { + PlayerResource(StatType regenStat, ClassOption offCombatRegen, Function current, Function max, BiConsumer regen) { this.regenStat = regenStat; this.offCombatRegen = offCombatRegen; this.current = current; diff --git a/src/main/java/net/Indyuce/mmocore/api/player/profess/resource/ResourceHandler.java b/src/main/java/net/Indyuce/mmocore/api/player/profess/resource/ResourceHandler.java index bfa228f4..0dd2ccf0 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/profess/resource/ResourceHandler.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/profess/resource/ResourceHandler.java @@ -89,7 +89,7 @@ public class ResourceHandler { private final BiFunction calculation; - private HandlerType(BiFunction calculation) { + HandlerType(BiFunction calculation) { this.calculation = calculation; } diff --git a/src/main/java/net/Indyuce/mmocore/api/player/social/Party.java b/src/main/java/net/Indyuce/mmocore/api/player/social/Party.java index d6e82ffd..046fe4da 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/social/Party.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/social/Party.java @@ -115,7 +115,7 @@ public class Party { * this class makes controling entries and departures and APPLYING PARTY * STAT ATTRIBUTES much easier */ - public class PartyMembers { + public static class PartyMembers { private final List members = new ArrayList<>(); public PlayerData get(int count) { @@ -129,13 +129,13 @@ public class Party { public void add(PlayerData player) { members.add(player); - members.forEach(member -> applyAttributes(member)); + members.forEach(this::applyAttributes); } public void remove(PlayerData player) { members.remove(player); - members.forEach(member -> applyAttributes(member)); + members.forEach(this::applyAttributes); clearAttributes(player); } diff --git a/src/main/java/net/Indyuce/mmocore/api/player/social/guilds/Guild.java b/src/main/java/net/Indyuce/mmocore/api/player/social/guilds/Guild.java index d580baee..da145dad 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/social/guilds/Guild.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/social/guilds/Guild.java @@ -21,7 +21,9 @@ import net.Indyuce.mmocore.manager.InventoryManager; public class Guild { private final GuildMembers members = new GuildMembers(); private final Map invites = new HashMap<>(); - private String guildId, guildName, guildTag; + private final String guildId; + private final String guildName; + private final String guildTag; /* * owner changes when the old owner leaves guild @@ -122,7 +124,7 @@ public class Guild { MMOCore.plugin.requestManager.registerRequest(request); } - public class GuildMembers { + public static class GuildMembers { private final List members = new ArrayList<>(); public UUID get(int count) { diff --git a/src/main/java/net/Indyuce/mmocore/api/player/stats/PlayerStats.java b/src/main/java/net/Indyuce/mmocore/api/player/stats/PlayerStats.java index 9df1df72..c3bda9b8 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/stats/PlayerStats.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/stats/PlayerStats.java @@ -12,7 +12,7 @@ public class PlayerStats { /** * Utilclass to easily manipulate the MMOLib stat map * - * @param data + * @param data Playerdata */ public PlayerStats(PlayerData data) { this.data = data; diff --git a/src/main/java/net/Indyuce/mmocore/api/player/stats/StatType.java b/src/main/java/net/Indyuce/mmocore/api/player/stats/StatType.java index 9fa73f83..f5cec667 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/stats/StatType.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/stats/StatType.java @@ -87,11 +87,12 @@ public enum StatType { private LinearValue defaultInfo; private DecimalFormat format; - private StatType() { + StatType() { // completely custom stat. } - private StatType(String profession) { + @SuppressWarnings("SameParameterValue") + StatType(String profession) { this.profession = profession; } diff --git a/src/main/java/net/Indyuce/mmocore/api/quest/PlayerQuests.java b/src/main/java/net/Indyuce/mmocore/api/quest/PlayerQuests.java index d50f4b06..7806d4ff 100644 --- a/src/main/java/net/Indyuce/mmocore/api/quest/PlayerQuests.java +++ b/src/main/java/net/Indyuce/mmocore/api/quest/PlayerQuests.java @@ -1,5 +1,17 @@ package net.Indyuce.mmocore.api.quest; +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.player.PlayerData; +import net.mmogroup.mmolib.MMOLib; +import org.bukkit.NamespacedKey; +import org.bukkit.boss.BarColor; +import org.bukkit.boss.BarStyle; +import org.bukkit.boss.BossBar; +import org.bukkit.configuration.ConfigurationSection; + import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -7,21 +19,6 @@ import java.util.Map.Entry; import java.util.Set; import java.util.logging.Level; -import org.bukkit.NamespacedKey; -import org.bukkit.boss.BarColor; -import org.bukkit.boss.BarFlag; -import org.bukkit.boss.BarStyle; -import org.bukkit.boss.BossBar; -import org.bukkit.configuration.ConfigurationSection; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; - -import net.Indyuce.mmocore.MMOCore; -import net.Indyuce.mmocore.api.player.PlayerData; -import net.mmogroup.mmolib.MMOLib; - public class PlayerQuests { private final PlayerData playerData; private final BossBar bossbar; @@ -32,7 +29,9 @@ public class PlayerQuests { public PlayerQuests(PlayerData playerData) { this.playerData = playerData; - bossbar = MMOLib.plugin.getVersion().getWrapper().createBossBar(new NamespacedKey(MMOCore.plugin, "quest_bar_" + playerData.getUniqueId().toString()), "", BarColor.PURPLE, BarStyle.SEGMENTED_20, new BarFlag[0]); + bossbar = MMOLib.plugin.getVersion().getWrapper().createBossBar( + new NamespacedKey(MMOCore.plugin, "quest_bar_" + playerData.getUniqueId().toString()), + "", BarColor.PURPLE, BarStyle.SEGMENTED_20); if(playerData.isOnline()) bossbar.addPlayer(playerData.getPlayer()); } diff --git a/src/main/java/net/Indyuce/mmocore/api/quest/Quest.java b/src/main/java/net/Indyuce/mmocore/api/quest/Quest.java index 59415aaa..ef5db42c 100644 --- a/src/main/java/net/Indyuce/mmocore/api/quest/Quest.java +++ b/src/main/java/net/Indyuce/mmocore/api/quest/Quest.java @@ -117,7 +117,7 @@ public class Quest extends PostLoadObject { } public int getLevelRestriction(Profession profession) { - return profession == null ? mainLevelRestriction : levelRestrictions.containsKey(profession) ? levelRestrictions.get(profession) : 0; + return profession == null ? mainLevelRestriction : levelRestrictions.getOrDefault(profession, 0); } public QuestProgress generateNewProgress(PlayerData player) { @@ -130,6 +130,6 @@ public class Quest extends PostLoadObject { @Override public boolean equals(Object obj) { - return obj != null && obj instanceof Quest && ((Quest) obj).id.equals(id); + return obj instanceof Quest && ((Quest) obj).id.equals(id); } } diff --git a/src/main/java/net/Indyuce/mmocore/api/quest/trigger/ManaTrigger.java b/src/main/java/net/Indyuce/mmocore/api/quest/trigger/ManaTrigger.java index 8628bdd6..0b795ebc 100644 --- a/src/main/java/net/Indyuce/mmocore/api/quest/trigger/ManaTrigger.java +++ b/src/main/java/net/Indyuce/mmocore/api/quest/trigger/ManaTrigger.java @@ -41,6 +41,6 @@ public class ManaTrigger extends Trigger { public enum Operation { GIVE, SET, - TAKE; + TAKE } } diff --git a/src/main/java/net/Indyuce/mmocore/api/quest/trigger/StaminaTrigger.java b/src/main/java/net/Indyuce/mmocore/api/quest/trigger/StaminaTrigger.java index 848c67ca..60ad7f96 100644 --- a/src/main/java/net/Indyuce/mmocore/api/quest/trigger/StaminaTrigger.java +++ b/src/main/java/net/Indyuce/mmocore/api/quest/trigger/StaminaTrigger.java @@ -41,6 +41,6 @@ public class StaminaTrigger extends Trigger { public enum Operation { GIVE, SET, - TAKE; + TAKE } } diff --git a/src/main/java/net/Indyuce/mmocore/api/skill/PlayerSkillData.java b/src/main/java/net/Indyuce/mmocore/api/skill/PlayerSkillData.java index e3fcef6d..6e6afce4 100644 --- a/src/main/java/net/Indyuce/mmocore/api/skill/PlayerSkillData.java +++ b/src/main/java/net/Indyuce/mmocore/api/skill/PlayerSkillData.java @@ -1,7 +1,6 @@ package net.Indyuce.mmocore.api.skill; import java.util.HashMap; -import java.util.Iterator; import java.util.Map; import net.Indyuce.mmocore.api.player.PlayerData; @@ -126,12 +125,10 @@ public class PlayerSkillData { * skill was cast */ public void refresh() { - for (Iterator iterator = cache.values().iterator(); iterator.hasNext();) - if (iterator.next().isTimedOut()) - iterator.remove(); + cache.values().removeIf(CachedModifier::isTimedOut); } - public class CachedModifier { + public static class CachedModifier { private final long date = System.currentTimeMillis(); private final double value; diff --git a/src/main/java/net/Indyuce/mmocore/api/skill/Skill.java b/src/main/java/net/Indyuce/mmocore/api/skill/Skill.java index 3063d582..377e60c2 100644 --- a/src/main/java/net/Indyuce/mmocore/api/skill/Skill.java +++ b/src/main/java/net/Indyuce/mmocore/api/skill/Skill.java @@ -211,7 +211,7 @@ public abstract class Skill { private String applyPlaceholders(Map placeholders, String str) { while (str.contains("{") && str.substring(str.indexOf("{")).contains("}")) { String holder = str.substring(str.indexOf("{") + 1, str.indexOf("}")); - str = str.replace("{" + holder + "}", placeholders.containsKey(holder) ? placeholders.get(holder) : "PHE"); + str = str.replace("{" + holder + "}", placeholders.getOrDefault(holder, "PHE")); } return str; } diff --git a/src/main/java/net/Indyuce/mmocore/api/skill/SkillResult.java b/src/main/java/net/Indyuce/mmocore/api/skill/SkillResult.java index 4b6a9ba3..8ff64af1 100644 --- a/src/main/java/net/Indyuce/mmocore/api/skill/SkillResult.java +++ b/src/main/java/net/Indyuce/mmocore/api/skill/SkillResult.java @@ -90,6 +90,6 @@ public class SkillResult { LOCKED, // no reason specified - OTHER; + OTHER } } diff --git a/src/main/java/net/Indyuce/mmocore/api/skill/result/TargetSkillResult.java b/src/main/java/net/Indyuce/mmocore/api/skill/result/TargetSkillResult.java index a76591d2..f2927fd3 100644 --- a/src/main/java/net/Indyuce/mmocore/api/skill/result/TargetSkillResult.java +++ b/src/main/java/net/Indyuce/mmocore/api/skill/result/TargetSkillResult.java @@ -21,7 +21,7 @@ public class TargetSkillResult extends SkillResult { if (!result.hasHit()) abort(); else - target = (LivingEntity) result.getHit(); + target = result.getHit(); } } diff --git a/src/main/java/net/Indyuce/mmocore/api/util/MMOCoreUtils.java b/src/main/java/net/Indyuce/mmocore/api/util/MMOCoreUtils.java index 89b7c77c..99bcfea0 100644 --- a/src/main/java/net/Indyuce/mmocore/api/util/MMOCoreUtils.java +++ b/src/main/java/net/Indyuce/mmocore/api/util/MMOCoreUtils.java @@ -3,6 +3,7 @@ package net.Indyuce.mmocore.api.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.bukkit.Bukkit; @@ -41,10 +42,7 @@ public class MMOCoreUtils { if (isLastSpace && ch >= 'a' && ch <= 'z') { builder.setCharAt(item, (char) (ch + ('A' - 'a'))); isLastSpace = false; - } else if (ch != ' ') - isLastSpace = false; - else - isLastSpace = true; + } else isLastSpace = ch == ' '; } return builder.toString(); } @@ -54,7 +52,7 @@ public class MMOCoreUtils { } public static ItemStack readIcon(String string) throws IllegalArgumentException { - String[] split = string.split("\\:"); + String[] split = string.split(":"); Material material = Material.valueOf(split[0].toUpperCase().replace("-", "_").replace(" ", "_")); return split.length > 1 ? MMOLib.plugin.getVersion().getWrapper().textureItem(material, Integer.parseInt(split[1])) : new ItemStack(material); } @@ -72,8 +70,8 @@ public class MMOCoreUtils { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); BukkitObjectOutputStream dataOutput = new BukkitObjectOutputStream(outputStream); dataOutput.writeInt(items.length); - for (int i = 0; i < items.length; i++) - dataOutput.writeObject(items[i]); + for (ItemStack item : items) + dataOutput.writeObject(item); dataOutput.close(); return Base64Coder.encodeLines(outputStream.toByteArray()); } catch (Exception e) { @@ -104,7 +102,7 @@ public class MMOCoreUtils { if (input > 3999) return ">3999"; - String result = ""; + StringBuilder result = new StringBuilder(); for (int j = 0; j < romanChars.length; j++) { int i = romanChars.length - j - 1; @@ -112,12 +110,12 @@ public class MMOCoreUtils { String c = romanChars[i]; while (input >= q) { - result += c; + result.append(c); input -= q; } } - return result; + return result.toString(); } /* @@ -142,8 +140,7 @@ public class MMOCoreUtils { for (int x = -1; x < 2; x++) for (int z = -1; z < 2; z++) - for (Entity entity : loc.getWorld().getChunkAt(cx + x, cz + z).getEntities()) - entities.add(entity); + entities.addAll(Arrays.asList(loc.getWorld().getChunkAt(cx + x, cz + z).getEntities())); return entities; } @@ -159,8 +156,7 @@ public class MMOCoreUtils { // party check if (target instanceof Player) { PlayerData targetData = PlayerData.get((Player) target); - if (targetData.hasParty() && targetData.getParty().getMembers().has(player)) - return false; + return !targetData.hasParty() || !targetData.getParty().getMembers().has(player); } return true; diff --git a/src/main/java/net/Indyuce/mmocore/api/util/debug/ActionBarRunnable.java b/src/main/java/net/Indyuce/mmocore/api/util/debug/ActionBarRunnable.java index 3a81df8b..452dd438 100644 --- a/src/main/java/net/Indyuce/mmocore/api/util/debug/ActionBarRunnable.java +++ b/src/main/java/net/Indyuce/mmocore/api/util/debug/ActionBarRunnable.java @@ -18,7 +18,7 @@ public class ActionBarRunnable extends BukkitRunnable { @Override public void run() { - Bukkit.getOnlinePlayers().forEach(player -> sendActionBar(player)); + Bukkit.getOnlinePlayers().forEach(this::sendActionBar); } private void sendActionBar(Player player) { diff --git a/src/main/java/net/Indyuce/mmocore/api/util/item/ConfigItem.java b/src/main/java/net/Indyuce/mmocore/api/util/item/ConfigItem.java index 682b2fef..d1f9f6cf 100644 --- a/src/main/java/net/Indyuce/mmocore/api/util/item/ConfigItem.java +++ b/src/main/java/net/Indyuce/mmocore/api/util/item/ConfigItem.java @@ -63,6 +63,7 @@ public class ConfigItem { damage = cache.damage; texture = cache.texture; modeldata = cache.modeldata; + unbreakable = cache.unbreakable; } public ItemStack getItem(int amount) { diff --git a/src/main/java/net/Indyuce/mmocore/api/util/math/format/DelayFormat.java b/src/main/java/net/Indyuce/mmocore/api/util/math/format/DelayFormat.java index 7635d749..86ffe97b 100644 --- a/src/main/java/net/Indyuce/mmocore/api/util/math/format/DelayFormat.java +++ b/src/main/java/net/Indyuce/mmocore/api/util/math/format/DelayFormat.java @@ -1,9 +1,9 @@ package net.Indyuce.mmocore.api.util.math.format; public class DelayFormat { - private int display = charArray.length; + private int display; - private static final long[] millisArray = { 31557081600l, 2629756800l, 86400000l, 3600000l, 60000l, 1000l }; + private static final long[] millisArray = {31557081600L, 2629756800L, 86400000L, 3600000L, 60000L, 1000L}; private static final String[] charArray = { "y", "M", "d", "h", "m", "s" }; public DelayFormat() { @@ -15,15 +15,15 @@ public class DelayFormat { } public String format(long ms) { - String format = ""; + StringBuilder format = new StringBuilder(); for (int j = 0; j < charArray.length && display > 0; j++) if (ms > millisArray[j]) { - format += (ms / millisArray[j]) + charArray[j] + " "; + format.append(ms / millisArray[j]).append(charArray[j]).append(" "); ms = ms % millisArray[j]; display--; } - return format.equals("") ? "Now!" : format.substring(0, format.length() - 1); + return format.toString().equals("") ? "Now!" : format.substring(0, format.length() - 1); } } diff --git a/src/main/java/net/Indyuce/mmocore/api/util/math/formula/RandomAmount.java b/src/main/java/net/Indyuce/mmocore/api/util/math/formula/RandomAmount.java index 87975926..ad27ced5 100644 --- a/src/main/java/net/Indyuce/mmocore/api/util/math/formula/RandomAmount.java +++ b/src/main/java/net/Indyuce/mmocore/api/util/math/formula/RandomAmount.java @@ -13,7 +13,7 @@ public class RandomAmount { } public RandomAmount(String value) { - String[] split = value.split("\\-"); + String[] split = value.split("-"); min = Double.parseDouble(split[0]); max = split.length > 1 ? Double.parseDouble(split[1]) : 0; } diff --git a/src/main/java/net/Indyuce/mmocore/api/util/math/particle/ChestParticleEffect.java b/src/main/java/net/Indyuce/mmocore/api/util/math/particle/ChestParticleEffect.java index eece7a02..33bf1c01 100644 --- a/src/main/java/net/Indyuce/mmocore/api/util/math/particle/ChestParticleEffect.java +++ b/src/main/java/net/Indyuce/mmocore/api/util/math/particle/ChestParticleEffect.java @@ -49,9 +49,9 @@ public enum ChestParticleEffect { }.runTaskTimer(MMOCore.plugin, 0, 1); }); - private BiConsumer func; + private final BiConsumer func; - private ChestParticleEffect(BiConsumer func) { + ChestParticleEffect(BiConsumer func) { this.func = func; } diff --git a/src/main/java/net/Indyuce/mmocore/api/util/math/particle/ParabolicProjectile.java b/src/main/java/net/Indyuce/mmocore/api/util/math/particle/ParabolicProjectile.java index 169d4f0b..c1596a89 100644 --- a/src/main/java/net/Indyuce/mmocore/api/util/math/particle/ParabolicProjectile.java +++ b/src/main/java/net/Indyuce/mmocore/api/util/math/particle/ParabolicProjectile.java @@ -18,7 +18,7 @@ public class ParabolicProjectile extends BukkitRunnable { private final int speed; // calculation - private Location loc; + private final Location loc; private int j; // private static final Random random = new Random(); diff --git a/src/main/java/net/Indyuce/mmocore/api/util/math/particle/PotionParticles.java b/src/main/java/net/Indyuce/mmocore/api/util/math/particle/PotionParticles.java index ba51c846..bb879389 100644 --- a/src/main/java/net/Indyuce/mmocore/api/util/math/particle/PotionParticles.java +++ b/src/main/java/net/Indyuce/mmocore/api/util/math/particle/PotionParticles.java @@ -10,7 +10,7 @@ import net.Indyuce.mmocore.MMOCore; public class PotionParticles extends BukkitRunnable { private double r, g, b; - private ThrownPotion potion; + private final ThrownPotion potion; private boolean valid = true; public PotionParticles(ThrownPotion potion) { diff --git a/src/main/java/net/Indyuce/mmocore/command/ClassCommand.java b/src/main/java/net/Indyuce/mmocore/command/ClassCommand.java index 43bdd134..2691ad07 100644 --- a/src/main/java/net/Indyuce/mmocore/command/ClassCommand.java +++ b/src/main/java/net/Indyuce/mmocore/command/ClassCommand.java @@ -34,7 +34,7 @@ public class ClassCommand extends BukkitCommand { MMOCommandEvent event = new MMOCommandEvent(data, "class"); Bukkit.getServer().getPluginManager().callEvent(event); if(event.isCancelled()) return true; - if (data.getProfess().getSubclasses().stream().filter(sub -> sub.getLevel() <= data.getLevel()).count() > 0) + if (data.getProfess().getSubclasses().stream().anyMatch(sub -> sub.getLevel() <= data.getLevel())) InventoryManager.SUBCLASS_SELECT.newInventory(data).open(); else InventoryManager.CLASS_SELECT.newInventory(data).open(); diff --git a/src/main/java/net/Indyuce/mmocore/command/FriendsCommand.java b/src/main/java/net/Indyuce/mmocore/command/FriendsCommand.java index bb57a151..7c72c85b 100644 --- a/src/main/java/net/Indyuce/mmocore/command/FriendsCommand.java +++ b/src/main/java/net/Indyuce/mmocore/command/FriendsCommand.java @@ -46,7 +46,7 @@ public class FriendsCommand extends BukkitCommand { } Request request = MMOCore.plugin.requestManager.getRequest(uuid); - if (request == null || !(request instanceof FriendRequest)) + if (!(request instanceof FriendRequest)) return true; if (request.isTimedOut()) { @@ -60,9 +60,9 @@ public class FriendsCommand extends BukkitCommand { } if (args[0].equalsIgnoreCase("accept")) - ((FriendRequest) request).accept(); + request.accept(); if (args[0].equalsIgnoreCase("deny")) - ((FriendRequest) request).deny(); + request.deny(); return true; } diff --git a/src/main/java/net/Indyuce/mmocore/command/GuildCommand.java b/src/main/java/net/Indyuce/mmocore/command/GuildCommand.java index bdf6784d..696d3f51 100644 --- a/src/main/java/net/Indyuce/mmocore/command/GuildCommand.java +++ b/src/main/java/net/Indyuce/mmocore/command/GuildCommand.java @@ -47,7 +47,7 @@ public class GuildCommand extends BukkitCommand { } Request request = MMOCore.plugin.requestManager.getRequest(uuid); - if (request == null || !(request instanceof GuildInvite)) + if (!(request instanceof GuildInvite)) return true; if (request.isTimedOut()) { @@ -61,9 +61,9 @@ public class GuildCommand extends BukkitCommand { } if (args[0].equalsIgnoreCase("accept")) - ((GuildInvite) request).accept(); + request.accept(); if (args[0].equalsIgnoreCase("deny")) - ((GuildInvite) request).deny(); + request.deny(); return true; } diff --git a/src/main/java/net/Indyuce/mmocore/command/PartyCommand.java b/src/main/java/net/Indyuce/mmocore/command/PartyCommand.java index 8cf39f66..dcd5eef0 100644 --- a/src/main/java/net/Indyuce/mmocore/command/PartyCommand.java +++ b/src/main/java/net/Indyuce/mmocore/command/PartyCommand.java @@ -47,7 +47,7 @@ public class PartyCommand extends BukkitCommand { } Request request = MMOCore.plugin.requestManager.getRequest(uuid); - if (request == null || !(request instanceof PartyInvite)) + if (!(request instanceof PartyInvite)) return true; if (request.isTimedOut()) { @@ -61,9 +61,9 @@ public class PartyCommand extends BukkitCommand { } if (args[0].equalsIgnoreCase("accept")) - ((PartyInvite) request).accept(); + request.accept(); if (args[0].equalsIgnoreCase("deny")) - ((PartyInvite) request).deny(); + request.deny(); return true; } diff --git a/src/main/java/net/Indyuce/mmocore/command/WithdrawCommand.java b/src/main/java/net/Indyuce/mmocore/command/WithdrawCommand.java index 271074db..4b5c03e2 100644 --- a/src/main/java/net/Indyuce/mmocore/command/WithdrawCommand.java +++ b/src/main/java/net/Indyuce/mmocore/command/WithdrawCommand.java @@ -34,7 +34,7 @@ public class WithdrawCommand extends BukkitCommand { return true; } - int amount = 0; + int amount; try { amount = Integer.parseInt(amountArgument); Validate.isTrue(amount >= 0); diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/ReloadCommandTreeNode.java b/src/main/java/net/Indyuce/mmocore/command/rpg/ReloadCommandTreeNode.java index 6a00fc05..ef6e47e7 100644 --- a/src/main/java/net/Indyuce/mmocore/command/rpg/ReloadCommandTreeNode.java +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/ReloadCommandTreeNode.java @@ -21,7 +21,7 @@ public class ReloadCommandTreeNode extends CommandTreeNode { MMOCore.plugin.reloadConfig(); MMOCore.plugin.reloadPlugin(); - PlayerData.getAll().forEach(data -> data.update()); + PlayerData.getAll().forEach(PlayerData::update); ms = System.currentTimeMillis() - ms; sender.sendMessage(ChatColor.YELLOW + MMOCore.plugin.getName() + " " + MMOCore.plugin.getDescription().getVersion() + " successfully reloaded."); diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/AdminCommandTreeNode.java b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/AdminCommandTreeNode.java index fa58c407..2b157422 100644 --- a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/AdminCommandTreeNode.java +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/AdminCommandTreeNode.java @@ -1,5 +1,6 @@ package net.Indyuce.mmocore.command.rpg.admin; +import net.Indyuce.mmocore.api.player.PlayerData; import org.bukkit.command.CommandSender; import net.mmogroup.mmolib.command.api.CommandTreeNode; @@ -19,15 +20,15 @@ public class AdminCommandTreeNode extends CommandTreeNode { addChild(new LevelCommandTreeNode(this)); addChild(new AttributeCommandTreeNode(this)); - addChild(new PointsCommandTreeNode("skill", this, (data, points) -> data.setSkillPoints(points), (data, points) -> data.giveSkillPoints(points), (data) -> data.getSkillPoints())); - addChild(new PointsCommandTreeNode("class", this, (data, points) -> data.setClassPoints(points), (data, points) -> data.giveClassPoints(points), (data) -> data.getClassPoints())); - addChild(new PointsCommandTreeNode("attribute", this, (data, points) -> data.setAttributePoints(points), (data, points) -> data.giveAttributePoints(points), (data) -> data.getAttributePoints())); - addChild(new PointsCommandTreeNode("attr-realloc", this, (data, points) -> data.setAttributeReallocationPoints(points), (data, points) -> data.giveAttributeReallocationPoints(points), (data) -> data.getAttributeReallocationPoints())); + addChild(new PointsCommandTreeNode("skill", this, PlayerData::setSkillPoints, PlayerData::giveSkillPoints, PlayerData::getSkillPoints)); + addChild(new PointsCommandTreeNode("class", this, PlayerData::setClassPoints, PlayerData::giveClassPoints, PlayerData::getClassPoints)); + addChild(new PointsCommandTreeNode("attribute", this, PlayerData::setAttributePoints, PlayerData::giveAttributePoints, PlayerData::getAttributePoints)); + addChild(new PointsCommandTreeNode("attr-realloc", this, PlayerData::setAttributeReallocationPoints, PlayerData::giveAttributeReallocationPoints, PlayerData::getAttributeReallocationPoints)); - addChild(new ResourceCommandTreeNode("health", this, (data, value) -> data.getPlayer().setHealth(value), (data, value) -> data.heal(value), (data, value) -> data.heal(-value), (data) -> data.getPlayer().getHealth())); - addChild(new ResourceCommandTreeNode("mana", this, (data, value) -> data.setMana(value), (data, value) -> data.giveMana(value), (data, value) -> data.giveMana(-value), (data) -> data.getMana())); - addChild(new ResourceCommandTreeNode("stamina", this, (data, value) -> data.setStamina(value), (data, value) -> data.giveStamina(value), (data, value) -> data.giveStamina(-value), (data) -> data.getStamina())); - addChild(new ResourceCommandTreeNode("stellium", this, (data, value) -> data.setStellium(value), (data, value) -> data.giveStellium(value), (data, value) -> data.giveStellium(-value), (data) -> data.getStellium())); + addChild(new ResourceCommandTreeNode("health", this, (data, value) -> data.getPlayer().setHealth(value), PlayerData::heal, (data, value) -> data.heal(-value), (data) -> data.getPlayer().getHealth())); + addChild(new ResourceCommandTreeNode("mana", this, PlayerData::setMana, PlayerData::giveMana, (data, value) -> data.giveMana(-value), PlayerData::getMana)); + addChild(new ResourceCommandTreeNode("stamina", this, PlayerData::setStamina, PlayerData::giveStamina, (data, value) -> data.giveStamina(-value), PlayerData::getStamina)); + addChild(new ResourceCommandTreeNode("stellium", this, PlayerData::setStellium, PlayerData::giveStellium, (data, value) -> data.giveStellium(-value), PlayerData::getStellium)); } @Override diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/AttributeCommandTreeNode.java b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/AttributeCommandTreeNode.java index fcdfbb92..fcbbd477 100644 --- a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/AttributeCommandTreeNode.java +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/AttributeCommandTreeNode.java @@ -52,7 +52,7 @@ public class AttributeCommandTreeNode extends CommandTreeNode { } PlayerAttribute attribute = MMOCore.plugin.attributeManager.get(format); - int amount = 0; + int amount; try { amount = Integer.parseInt(args[5]); } catch (Exception e) { diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ExperienceCommandTreeNode.java b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ExperienceCommandTreeNode.java index e325e031..3e5eaf7f 100644 --- a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ExperienceCommandTreeNode.java +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ExperienceCommandTreeNode.java @@ -20,15 +20,11 @@ public class ExperienceCommandTreeNode extends CommandTreeNode { public ExperienceCommandTreeNode(CommandTreeNode parent) { super(parent, "exp"); - addChild(new ActionCommandTreeNode(this, "set", (data, value) -> data.setExperience(value), - (professions, profession, value) -> professions.setExperience(profession, value))); - addChild(new ActionCommandTreeNode(this, "give", - (data, value) -> data.giveExperience(value, data.getPlayer().getLocation(), EXPSource.COMMAND), - (professions, profession, value) -> professions.giveExperience(profession, value, - professions.getPlayerData().getPlayer().getLocation(), EXPSource.COMMAND))); + addChild(new ActionCommandTreeNode(this, "set", PlayerData::setExperience, PlayerProfessions::setExperience)); + addChild(new ActionCommandTreeNode(this, "give", (data, value) -> data.giveExperience(value, data.getPlayer().getLocation(), EXPSource.COMMAND), (professions, profession, value) -> professions.giveExperience(profession, value, professions.getPlayerData().getPlayer().getLocation(), EXPSource.COMMAND))); } - public class ActionCommandTreeNode extends CommandTreeNode { + public static class ActionCommandTreeNode extends CommandTreeNode { private final BiConsumer main; private final TriConsumer profession; @@ -55,7 +51,7 @@ public class ExperienceCommandTreeNode extends CommandTreeNode { return CommandResult.FAILURE; } - int amount = 0; + int amount; try { amount = Integer.parseInt(args[5]); } catch (NumberFormatException exception) { diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/HideActionBarCommandTreeNode.java b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/HideActionBarCommandTreeNode.java index 929a8a1d..c1a3587d 100644 --- a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/HideActionBarCommandTreeNode.java +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/HideActionBarCommandTreeNode.java @@ -28,7 +28,7 @@ public class HideActionBarCommandTreeNode extends CommandTreeNode { return CommandResult.FAILURE; } - int amount = 0; + int amount; try { amount = Integer.parseInt(args[3]); } catch (Exception e) { diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/LevelCommandTreeNode.java b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/LevelCommandTreeNode.java index 07dd39aa..9bf890c3 100644 --- a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/LevelCommandTreeNode.java +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/LevelCommandTreeNode.java @@ -20,15 +20,12 @@ public class LevelCommandTreeNode extends CommandTreeNode { public LevelCommandTreeNode(CommandTreeNode parent) { super(parent, "level"); - addChild(new ActionCommandTreeNode(this, "set", (data, value) -> data.setLevel(value), - (professions, profession, value) -> professions.setLevel(profession, value))); - addChild(new ActionCommandTreeNode(this, "give", (data, value) -> data.giveLevels(value, EXPSource.COMMAND), - (professions, profession, value) -> professions.giveLevels(profession, value, EXPSource.COMMAND))); - addChild(new ActionCommandTreeNode(this, "take", (data, value) -> data.takeLevels(value), - (professions, profession, value) -> professions.takeLevels(profession, value))); + addChild(new ActionCommandTreeNode(this, "set", PlayerData::setLevel, PlayerProfessions::setLevel)); + addChild(new ActionCommandTreeNode(this, "give", (data, value) -> data.giveLevels(value, EXPSource.COMMAND), (professions, profession, value) -> professions.giveLevels(profession, value, EXPSource.COMMAND))); + addChild(new ActionCommandTreeNode(this, "take", PlayerData::takeLevels, PlayerProfessions::takeLevels)); } - public class ActionCommandTreeNode extends CommandTreeNode { + public static class ActionCommandTreeNode extends CommandTreeNode { private final BiConsumer main; private final TriConsumer profession; @@ -55,7 +52,7 @@ public class LevelCommandTreeNode extends CommandTreeNode { return CommandResult.FAILURE; } - int amount = 0; + int amount; try { amount = Integer.parseInt(args[5]); } catch (NumberFormatException exception) { diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/PointsCommandTreeNode.java b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/PointsCommandTreeNode.java index f23e3e17..45dc2822 100644 --- a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/PointsCommandTreeNode.java +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/PointsCommandTreeNode.java @@ -50,7 +50,7 @@ public class PointsCommandTreeNode extends CommandTreeNode { return CommandResult.FAILURE; } - int amount = 0; + int amount; try { amount = Integer.parseInt(args[4]); } catch (Exception e) { diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ResetCommandTreeNode.java b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ResetCommandTreeNode.java index 05a55872..9a8f2054 100644 --- a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ResetCommandTreeNode.java +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ResetCommandTreeNode.java @@ -28,7 +28,7 @@ public class ResetCommandTreeNode extends CommandTreeNode { return CommandResult.THROW_USAGE; } - public class ResetAllCommandTreeNode extends CommandTreeNode { + public static class ResetAllCommandTreeNode extends CommandTreeNode { public ResetAllCommandTreeNode(CommandTreeNode parent) { super(parent, "all"); @@ -53,7 +53,7 @@ public class ResetCommandTreeNode extends CommandTreeNode { data.getCollectionSkills().setExperience(profession, 0); data.getCollectionSkills().setLevel(profession, 0); } - MMOCore.plugin.classManager.getAll().forEach(profess -> data.unloadClassInfo(profess)); + MMOCore.plugin.classManager.getAll().forEach(data::unloadClassInfo); data.setClassPoints(0); data.setSkillPoints(0); @@ -71,7 +71,7 @@ public class ResetCommandTreeNode extends CommandTreeNode { } } - public class ResetWaypointsCommandTreeNode extends CommandTreeNode { + public static class ResetWaypointsCommandTreeNode extends CommandTreeNode { public ResetWaypointsCommandTreeNode(CommandTreeNode parent) { super(parent, "waypoints"); @@ -95,7 +95,7 @@ public class ResetCommandTreeNode extends CommandTreeNode { } } - public class ResetQuestsCommandTreeNode extends CommandTreeNode { + public static class ResetQuestsCommandTreeNode extends CommandTreeNode { public ResetQuestsCommandTreeNode(CommandTreeNode parent) { super(parent, "quests"); @@ -120,7 +120,7 @@ public class ResetCommandTreeNode extends CommandTreeNode { } } - public class ResetSkillsCommandTreeNode extends CommandTreeNode { + public static class ResetSkillsCommandTreeNode extends CommandTreeNode { public ResetSkillsCommandTreeNode(CommandTreeNode parent) { super(parent, "skills"); @@ -190,7 +190,7 @@ public class ResetCommandTreeNode extends CommandTreeNode { } } - public class ResetLevelsCommandTreeNode extends CommandTreeNode { + public static class ResetLevelsCommandTreeNode extends CommandTreeNode { public ResetLevelsCommandTreeNode(CommandTreeNode parent) { super(parent, "levels"); diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ResourceCommandTreeNode.java b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ResourceCommandTreeNode.java index 050eb2e9..1795a069 100644 --- a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ResourceCommandTreeNode.java +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ResourceCommandTreeNode.java @@ -51,7 +51,7 @@ public class ResourceCommandTreeNode extends CommandTreeNode { return CommandResult.FAILURE; } - double amount = 0; + double amount; try { amount = Double.parseDouble(args[4]); } catch (Exception e) { diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/debug/StatValueCommandTreeNode.java b/src/main/java/net/Indyuce/mmocore/command/rpg/debug/StatValueCommandTreeNode.java index 4fb69407..b6f31d47 100644 --- a/src/main/java/net/Indyuce/mmocore/command/rpg/debug/StatValueCommandTreeNode.java +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/debug/StatValueCommandTreeNode.java @@ -17,9 +17,7 @@ public class StatValueCommandTreeNode extends CommandTreeNode { for (StatType stat : StatType.values()) list.add(stat.name()); })); - addParameter(new Parameter("(formatted)", (explorer, list) -> { - list.add("true"); - })); + addParameter(new Parameter("(formatted)", (explorer, list) -> list.add("true"))); } @Override diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/quest/StartCommandTreeNode.java b/src/main/java/net/Indyuce/mmocore/command/rpg/quest/StartCommandTreeNode.java index 538f01ab..5721d172 100644 --- a/src/main/java/net/Indyuce/mmocore/command/rpg/quest/StartCommandTreeNode.java +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/quest/StartCommandTreeNode.java @@ -32,7 +32,7 @@ public class StartCommandTreeNode extends CommandTreeNode { return CommandResult.FAILURE; } - Quest quest = null; + Quest quest; try { quest = MMOCore.plugin.questManager.get(args[3].replace("_", "-").toLowerCase()); } catch (Exception exception) { diff --git a/src/main/java/net/Indyuce/mmocore/comp/citizens/CitizenInteractEvent.java b/src/main/java/net/Indyuce/mmocore/comp/citizens/CitizenInteractEvent.java index 8a6715bc..306be8ef 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/citizens/CitizenInteractEvent.java +++ b/src/main/java/net/Indyuce/mmocore/comp/citizens/CitizenInteractEvent.java @@ -9,7 +9,7 @@ import net.citizensnpcs.api.npc.NPC; public class CitizenInteractEvent extends PlayerEvent { private static final HandlerList handlers = new HandlerList(); - private NPC npc; + private final NPC npc; public CitizenInteractEvent(Player who, NPC npc) { super(who); diff --git a/src/main/java/net/Indyuce/mmocore/comp/citizens/GetItemObjective.java b/src/main/java/net/Indyuce/mmocore/comp/citizens/GetItemObjective.java index a4b5492c..8805ee91 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/citizens/GetItemObjective.java +++ b/src/main/java/net/Indyuce/mmocore/comp/citizens/GetItemObjective.java @@ -13,8 +13,9 @@ import net.Indyuce.mmocore.api.quest.objective.Objective; import net.mmogroup.mmolib.api.MMOLineConfig; public class GetItemObjective extends Objective { - private Material material; - private int required, npcId; + private final Material material; + private final int required; + private final int npcId; public GetItemObjective(ConfigurationSection section, MMOLineConfig config) { super(section); diff --git a/src/main/java/net/Indyuce/mmocore/comp/citizens/TalktoCitizenObjective.java b/src/main/java/net/Indyuce/mmocore/comp/citizens/TalktoCitizenObjective.java index 1b49caf9..e4894c62 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/citizens/TalktoCitizenObjective.java +++ b/src/main/java/net/Indyuce/mmocore/comp/citizens/TalktoCitizenObjective.java @@ -10,7 +10,7 @@ import net.Indyuce.mmocore.api.quest.objective.Objective; import net.mmogroup.mmolib.api.MMOLineConfig; public class TalktoCitizenObjective extends Objective { - private int id; + private final int id; public TalktoCitizenObjective(ConfigurationSection section, MMOLineConfig config) { super(section); diff --git a/src/main/java/net/Indyuce/mmocore/comp/flags/FlagPlugin.java b/src/main/java/net/Indyuce/mmocore/comp/flags/FlagPlugin.java index 8778189f..4c986c5f 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/flags/FlagPlugin.java +++ b/src/main/java/net/Indyuce/mmocore/comp/flags/FlagPlugin.java @@ -6,11 +6,11 @@ import org.bukkit.entity.Player; public interface FlagPlugin { // public boolean isPvpAllowed(Location loc); - public boolean isFlagAllowed(Player player, CustomFlag flag); + boolean isFlagAllowed(Player player, CustomFlag flag); - public boolean isFlagAllowed(Location loc, CustomFlag flag); + boolean isFlagAllowed(Location loc, CustomFlag flag); - public enum CustomFlag { + enum CustomFlag { SKILLS; public String getPath() { diff --git a/src/main/java/net/Indyuce/mmocore/comp/holograms/CMIPlugin.java b/src/main/java/net/Indyuce/mmocore/comp/holograms/CMIPlugin.java index 809dc426..bcf9578b 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/holograms/CMIPlugin.java +++ b/src/main/java/net/Indyuce/mmocore/comp/holograms/CMIPlugin.java @@ -1,22 +1,20 @@ package net.Indyuce.mmocore.comp.holograms; -import java.util.Arrays; -import java.util.UUID; - +import com.Zrips.CMI.CMI; +import com.Zrips.CMI.Modules.Holograms.CMIHologram; +import net.Indyuce.mmocore.MMOCore; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; -import com.Zrips.CMI.CMI; -import com.Zrips.CMI.Modules.Holograms.CMIHologram; - -import net.Indyuce.mmocore.MMOCore; +import java.util.Collections; +import java.util.UUID; public class CMIPlugin extends HologramSupport { @Override public void displayIndicator(Location loc, String format, Player player) { final CMIHologram hologram = new CMIHologram("MMOItems_" + UUID.randomUUID().toString(), loc); - hologram.setLines(Arrays.asList(format)); + hologram.setLines(Collections.singletonList(format)); if (player != null) hologram.hide(player.getUniqueId()); CMI.getInstance().getHologramManager().addHologram(hologram); diff --git a/src/main/java/net/Indyuce/mmocore/comp/holograms/HologramsPlugin.java b/src/main/java/net/Indyuce/mmocore/comp/holograms/HologramsPlugin.java index 56bdc74d..98e2451d 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/holograms/HologramsPlugin.java +++ b/src/main/java/net/Indyuce/mmocore/comp/holograms/HologramsPlugin.java @@ -15,7 +15,7 @@ import com.sainttx.holograms.api.line.TextLine; import net.Indyuce.mmocore.MMOCore; public class HologramsPlugin extends HologramSupport { - private HologramManager hologramManager = JavaPlugin.getPlugin(HologramPlugin.class).getHologramManager(); + private final HologramManager hologramManager = JavaPlugin.getPlugin(HologramPlugin.class).getHologramManager(); @Override public void displayIndicator(Location loc, String message, Player player) { diff --git a/src/main/java/net/Indyuce/mmocore/comp/holograms/HolographicDisplaysPlugin.java b/src/main/java/net/Indyuce/mmocore/comp/holograms/HolographicDisplaysPlugin.java index e70db4f5..d3f7cb74 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/holograms/HolographicDisplaysPlugin.java +++ b/src/main/java/net/Indyuce/mmocore/comp/holograms/HolographicDisplaysPlugin.java @@ -16,6 +16,6 @@ public class HolographicDisplaysPlugin extends HologramSupport { hologram.appendTextLine(format); if (player != null) hologram.getVisibilityManager().hideTo(player); - Bukkit.getScheduler().scheduleSyncDelayedTask(MMOCore.plugin, () -> hologram.delete(), 20); + Bukkit.getScheduler().scheduleSyncDelayedTask(MMOCore.plugin, hologram::delete, 20); } } diff --git a/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/CurrencyItemDrop.java b/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/CurrencyItemDrop.java index 7a8f4b6e..5d849a31 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/CurrencyItemDrop.java +++ b/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/CurrencyItemDrop.java @@ -12,8 +12,9 @@ import io.lumine.xikage.mythicmobs.io.MythicLineConfig; import net.Indyuce.mmocore.api.util.item.CurrencyItem; public class CurrencyItemDrop extends Drop implements IMultiDrop { - private String key; - private int minw, maxw; + private final String key; + private final int minw; + private final int maxw; private static final Random random = new Random(); diff --git a/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/GoldPouchDrop.java b/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/GoldPouchDrop.java index 8d6eeecd..e4194a58 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/GoldPouchDrop.java +++ b/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/GoldPouchDrop.java @@ -19,7 +19,8 @@ import net.mmogroup.mmolib.api.item.ItemTag; import net.mmogroup.mmolib.api.item.NBTItem; public class GoldPouchDrop extends Drop implements IMultiDrop { - private int min, max; + private final int min; + private final int max; private static final Random random = new Random(); @@ -58,8 +59,8 @@ public class GoldPouchDrop extends Drop implements IMultiDrop { private int getAvailableSlot(ItemStack[] content) { int slot; - while (content[slot = random.nextInt(content.length)] != null && content[slot].getType() != Material.AIR) - continue; + while (content[slot = random.nextInt(content.length)] != null) + if(content[slot].getType() == Material.AIR) break; return slot; } } diff --git a/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/KillMythicFactionExperienceSource.java b/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/KillMythicFactionExperienceSource.java index d68afcca..aee174bb 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/KillMythicFactionExperienceSource.java +++ b/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/KillMythicFactionExperienceSource.java @@ -27,18 +27,15 @@ public class KillMythicFactionExperienceSource extends SpecificExperienceSource< return new ExperienceManager() { @EventHandler public void a(MythicMobDeathEvent event) { - Bukkit.getScheduler().runTaskLater(MMOCore.plugin, new Runnable() { - @Override - public void run() { - if (!event.getEntity().isDead()) return; - if (!event.getMob().hasFaction()) return; - if (!(event.getKiller() instanceof Player) || event.getKiller().hasMetadata("NPC")) return; + Bukkit.getScheduler().runTaskLater(MMOCore.plugin, () -> { + if (!event.getEntity().isDead()) return; + if (!event.getMob().hasFaction()) return; + if (!(event.getKiller() instanceof Player) || event.getKiller().hasMetadata("NPC")) return; - PlayerData data = PlayerData.get((Player) event.getKiller()); - for (KillMythicFactionExperienceSource source : getSources()) - if (source.matches(data, event.getMob().getFaction())) - source.giveExperience(data, 1, event.getEntity().getLocation()); - } + PlayerData data = PlayerData.get((Player) event.getKiller()); + for (KillMythicFactionExperienceSource source : getSources()) + if (source.matches(data, event.getMob().getFaction())) + source.giveExperience(data, 1, event.getEntity().getLocation()); }, 2); } }; diff --git a/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/KillMythicMobExperienceSource.java b/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/KillMythicMobExperienceSource.java index 67b40591..90298eaa 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/KillMythicMobExperienceSource.java +++ b/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/load/KillMythicMobExperienceSource.java @@ -27,17 +27,14 @@ public class KillMythicMobExperienceSource extends SpecificExperienceSource() { @EventHandler public void a(MythicMobDeathEvent event) { - Bukkit.getScheduler().runTaskLater(MMOCore.plugin, new Runnable() { - @Override - public void run() { - if (!event.getEntity().isDead()) return; - if (!(event.getKiller() instanceof Player) || event.getKiller().hasMetadata("NPC")) return; + Bukkit.getScheduler().runTaskLater(MMOCore.plugin, () -> { + if (!event.getEntity().isDead()) return; + if (!(event.getKiller() instanceof Player) || event.getKiller().hasMetadata("NPC")) return; - PlayerData data = PlayerData.get((Player) event.getKiller()); - for (KillMythicMobExperienceSource source : getSources()) - if (source.matches(data, event.getMobType().getInternalName())) - source.giveExperience(data, 1, event.getEntity().getLocation()); - } + PlayerData data = PlayerData.get((Player) event.getKiller()); + for (KillMythicMobExperienceSource source : getSources()) + if (source.matches(data, event.getMobType().getInternalName())) + source.giveExperience(data, 1, event.getEntity().getLocation()); }, 2); } }; diff --git a/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/skill/MythicMobSkill.java b/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/skill/MythicMobSkill.java index 7d1989cd..d0501e9f 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/skill/MythicMobSkill.java +++ b/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/skill/MythicMobSkill.java @@ -4,17 +4,16 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.logging.Level; +import net.mmogroup.mmolib.api.util.EnumUtils; import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Entity; -import com.google.common.base.Enums; -import com.google.common.base.Optional; - import io.lumine.xikage.mythicmobs.MythicMobs; import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.player.PlayerData; @@ -38,7 +37,7 @@ public class MythicMobSkill extends Skill { String mmId = config.getString("mythicmobs-skill-id"); Validate.notNull(mmId, "Could not find MM skill ID"); - java.util.Optional opt = MythicMobs.inst().getSkillManager().getSkill(mmId); + Optional opt = MythicMobs.inst().getSkillManager().getSkill(mmId); Validate.isTrue(opt.isPresent(), "Could not find MM skill " + mmId); skill = opt.get(); @@ -57,7 +56,7 @@ public class MythicMobSkill extends Skill { if (config.isConfigurationSection("disable-anti-cheat")) for (String key : config.getKeys(false)) { - Optional cheatType = Enums.getIfPresent(CheatType.class, key.toUpperCase()); + Optional cheatType = EnumUtils.getIfPresent(CheatType.class, key.toUpperCase()); if (cheatType.isPresent() && config.isInt("disable-anti-cheat." + key)) antiCheat.put(cheatType.get(), config.getInt("disable-anti-cheat." + key)); else @@ -65,7 +64,7 @@ public class MythicMobSkill extends Skill { } if (config.isString("passive-type")) { - Optional passiveType = Enums.getIfPresent(PassiveSkillType.class, config.getString("passive-type").toUpperCase()); + Optional passiveType = EnumUtils.getIfPresent(PassiveSkillType.class, config.getString("passive-type").toUpperCase()); Validate.isTrue(passiveType.isPresent(), "Invalid passive skill type"); setPassive(); Bukkit.getPluginManager().registerEvents(passiveType.get().getHandler(this), MMOCore.plugin); diff --git a/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/skill/PassiveMythicMobSkillHandler.java b/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/skill/PassiveMythicMobSkillHandler.java index 49b2c5cc..5de8046b 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/skill/PassiveMythicMobSkillHandler.java +++ b/src/main/java/net/Indyuce/mmocore/comp/mythicmobs/skill/PassiveMythicMobSkillHandler.java @@ -1,14 +1,13 @@ package net.Indyuce.mmocore.comp.mythicmobs.skill; -import java.util.Arrays; - -import org.bukkit.entity.Entity; -import org.bukkit.event.Listener; - import io.lumine.xikage.mythicmobs.MythicMobs; import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.skill.SkillResult; +import org.bukkit.entity.Entity; +import org.bukkit.event.Listener; + +import java.util.Collections; public abstract class PassiveMythicMobSkillHandler implements Listener { protected final MythicMobSkill skill; @@ -35,7 +34,7 @@ public abstract class PassiveMythicMobSkillHandler implements Listener { data.getSkillData().cacheModifiers(skill.getInternalName(), cast); if (MMOCore.plugin.hasAntiCheat()) MMOCore.plugin.antiCheatSupport.disableAntiCheat(data.getPlayer(), skill.getAntiCheat()); - MythicMobs.inst().getAPIHelper().castSkill(data.getPlayer(), skill.getInternalName(), target, data.getPlayer().getEyeLocation(), - Arrays.asList(data.getPlayer()), null, 1); + MythicMobs.inst().getAPIHelper().castSkill(data.getPlayer(), skill.getInternalName(), target, + data.getPlayer().getEyeLocation(), Collections.singletonList(data.getPlayer()), null, 1); } } diff --git a/src/main/java/net/Indyuce/mmocore/comp/placeholder/PlaceholderParser.java b/src/main/java/net/Indyuce/mmocore/comp/placeholder/PlaceholderParser.java index 41f26ab7..0daa343e 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/placeholder/PlaceholderParser.java +++ b/src/main/java/net/Indyuce/mmocore/comp/placeholder/PlaceholderParser.java @@ -3,5 +3,5 @@ package net.Indyuce.mmocore.comp.placeholder; import org.bukkit.OfflinePlayer; public interface PlaceholderParser { - public String parse(OfflinePlayer player, String string); + String parse(OfflinePlayer player, String string); } diff --git a/src/main/java/net/Indyuce/mmocore/comp/placeholder/RPGPlaceholders.java b/src/main/java/net/Indyuce/mmocore/comp/placeholder/RPGPlaceholders.java index ae89df4f..8fd0ba7d 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/placeholder/RPGPlaceholders.java +++ b/src/main/java/net/Indyuce/mmocore/comp/placeholder/RPGPlaceholders.java @@ -43,6 +43,8 @@ public class RPGPlaceholders extends PlaceholderExpansion { @Override public String onRequest(@Nullable OfflinePlayer player, @NotNull String identifier) { + final String subIdent = identifier.substring(10).toLowerCase().replace("_", "-"); + if(identifier.equals("mana_icon")) return PlayerData.get(player).getProfess().getManaDisplay().getIcon(); if(identifier.equals("mana_name")) @@ -127,7 +129,7 @@ public class RPGPlaceholders extends PlaceholderExpansion { else if (identifier.startsWith("attribute_")) return String.valueOf(PlayerData.get(player).getAttributes() - .getAttribute(MMOCore.plugin.attributeManager.get(identifier.substring(10).toLowerCase().replace("_", "-")))); + .getAttribute(MMOCore.plugin.attributeManager.get(subIdent))); else if (identifier.equals("mana")) return MMOCore.plugin.configManager.decimal.format(PlayerData.get(player).getMana()); @@ -144,7 +146,7 @@ public class RPGPlaceholders extends PlaceholderExpansion { } else if (identifier.startsWith("exp_boost_")) { - String format = identifier.substring(10).toLowerCase().replace("_", "-").replace(" ", "-"); + String format = subIdent.replace(" ", "-"); Profession profession = format.equals("main") ? null : MMOCore.plugin.professionManager.get(format); return MMOCore.plugin.configManager.decimal.format((MMOCore.plugin.boosterManager.getMultiplier(profession) - 1) * 100); } diff --git a/src/main/java/net/Indyuce/mmocore/comp/region/RegionCondition.java b/src/main/java/net/Indyuce/mmocore/comp/region/RegionCondition.java index 6caf7476..8c1c7c4d 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/region/RegionCondition.java +++ b/src/main/java/net/Indyuce/mmocore/comp/region/RegionCondition.java @@ -14,11 +14,11 @@ public class RegionCondition extends Condition { super(config); config.validate("name"); - names = Arrays.asList(config.getString("name").split("\\,")); + names = Arrays.asList(config.getString("name").split(",")); } @Override public boolean isMet(ConditionInstance entity) { - return entity.getRegionStream().filter(str -> names.contains(str)).count() > 0; + return entity.getRegionStream().anyMatch(names::contains); } } diff --git a/src/main/java/net/Indyuce/mmocore/comp/region/RegionHandler.java b/src/main/java/net/Indyuce/mmocore/comp/region/RegionHandler.java index 7e21cb20..6e47b449 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/region/RegionHandler.java +++ b/src/main/java/net/Indyuce/mmocore/comp/region/RegionHandler.java @@ -5,5 +5,5 @@ import java.util.List; import org.bukkit.Location; public interface RegionHandler { - public List getRegions(Location loc); + List getRegions(Location loc); } diff --git a/src/main/java/net/Indyuce/mmocore/comp/vault/MoneyTrigger.java b/src/main/java/net/Indyuce/mmocore/comp/vault/MoneyTrigger.java index a8c0f872..39c44680 100644 --- a/src/main/java/net/Indyuce/mmocore/comp/vault/MoneyTrigger.java +++ b/src/main/java/net/Indyuce/mmocore/comp/vault/MoneyTrigger.java @@ -42,6 +42,6 @@ public class MoneyTrigger extends Trigger { public enum Operation { GIVE, SET, - TAKE; + TAKE } } diff --git a/src/main/java/net/Indyuce/mmocore/gui/AttributeView.java b/src/main/java/net/Indyuce/mmocore/gui/AttributeView.java index bdb82aca..d0d2dc7a 100644 --- a/src/main/java/net/Indyuce/mmocore/gui/AttributeView.java +++ b/src/main/java/net/Indyuce/mmocore/gui/AttributeView.java @@ -43,7 +43,7 @@ public class AttributeView extends EditableInventory { return new SkillViewerInventory(data, this); } - public class AttributeItem extends InventoryPlaceholderItem { + public static class AttributeItem extends InventoryPlaceholderItem { private final PlayerAttribute attribute; public AttributeItem(String function, ConfigurationSection config) { diff --git a/src/main/java/net/Indyuce/mmocore/gui/ClassConfirmation.java b/src/main/java/net/Indyuce/mmocore/gui/ClassConfirmation.java index ce335373..c27dbfb4 100644 --- a/src/main/java/net/Indyuce/mmocore/gui/ClassConfirmation.java +++ b/src/main/java/net/Indyuce/mmocore/gui/ClassConfirmation.java @@ -50,13 +50,13 @@ public class ClassConfirmation extends EditableInventory { int nextLevelExp = inv.getPlayerData().getLevelUpExperience(); double ratio = (double) info.getExperience() / (double) nextLevelExp; - String bar = "" + ChatColor.BOLD; + StringBuilder bar = new StringBuilder("" + ChatColor.BOLD); int chars = (int) (ratio * 20); for (int j = 0; j < 20; j++) - bar += (j == chars ? "" + ChatColor.WHITE + ChatColor.BOLD : "") + "|"; + bar.append(j == chars ? "" + ChatColor.WHITE + ChatColor.BOLD : "").append("|"); holders.register("percent", decimal.format(ratio * 100)); - holders.register("progress", bar); + holders.register("progress", bar.toString()); holders.register("class", profess.getName()); holders.register("unlocked_skills", info.getSkillKeys().size()); holders.register("class_skills", profess.getSkills().size()); diff --git a/src/main/java/net/Indyuce/mmocore/gui/PlayerStats.java b/src/main/java/net/Indyuce/mmocore/gui/PlayerStats.java index a4268336..b6c6adfa 100644 --- a/src/main/java/net/Indyuce/mmocore/gui/PlayerStats.java +++ b/src/main/java/net/Indyuce/mmocore/gui/PlayerStats.java @@ -236,7 +236,7 @@ public class PlayerStats extends EditableInventory { return item; } - public class PartyMoraleItem extends InventoryPlaceholderItem { + public static class PartyMoraleItem extends InventoryPlaceholderItem { public PartyMoraleItem(ConfigurationSection config) { super(config); } @@ -260,7 +260,7 @@ public class PlayerStats extends EditableInventory { } - public class PlayerProfileItem extends InventoryPlaceholderItem { + public static class PlayerProfileItem extends InventoryPlaceholderItem { public PlayerProfileItem(ConfigurationSection config) { super(config); } @@ -284,10 +284,10 @@ public class PlayerStats extends EditableInventory { int nextLevelExp = inv.getPlayerData().getLevelUpExperience(); double ratio = (double) data.getExperience() / (double) nextLevelExp; - String bar = "" + ChatColor.BOLD; + StringBuilder bar = new StringBuilder("" + ChatColor.BOLD); int chars = (int) (ratio * 20); for (int j = 0; j < 20; j++) - bar += (j == chars ? "" + ChatColor.WHITE + ChatColor.BOLD : "") + "|"; + bar.append(j == chars ? "" + ChatColor.WHITE + ChatColor.BOLD : "").append("|"); holders.register("percent", decimal.format(ratio * 100)); holders.register("exp", "" + data.getExperience()); @@ -295,7 +295,7 @@ public class PlayerStats extends EditableInventory { holders.register("class_points", "" + data.getClassPoints()); holders.register("skill_points", "" + data.getSkillPoints()); holders.register("attribute_points", "" + data.getAttributePoints()); - holders.register("progress", bar); + holders.register("progress", bar.toString()); holders.register("next_level", "" + nextLevelExp); if(data.isOnline()) holders.register("player", "" + data.getPlayer().getName()); diff --git a/src/main/java/net/Indyuce/mmocore/gui/QuestViewer.java b/src/main/java/net/Indyuce/mmocore/gui/QuestViewer.java index 5eb9342b..e2b25f62 100644 --- a/src/main/java/net/Indyuce/mmocore/gui/QuestViewer.java +++ b/src/main/java/net/Indyuce/mmocore/gui/QuestViewer.java @@ -1,21 +1,5 @@ package net.Indyuce.mmocore.gui; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.stream.Collectors; - -import org.apache.commons.lang.Validate; -import org.bukkit.ChatColor; -import org.bukkit.Sound; -import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.event.inventory.InventoryAction; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.ItemFlag; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.experience.Profession; import net.Indyuce.mmocore.api.player.PlayerData; @@ -29,6 +13,20 @@ import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem; import net.Indyuce.mmocore.gui.api.item.Placeholders; import net.mmogroup.mmolib.api.item.ItemTag; import net.mmogroup.mmolib.api.item.NBTItem; +import org.apache.commons.lang.Validate; +import org.bukkit.ChatColor; +import org.bukkit.Sound; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.event.inventory.InventoryAction; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; public class QuestViewer extends EditableInventory { public QuestViewer() { @@ -127,18 +125,13 @@ public class QuestViewer extends EditableInventory { */ int reqCount = quest.countLevelRestrictions(); boolean started = inv.getPlayerData().getQuestData().hasCurrent(quest), completed = inv.getPlayerData().getQuestData().hasFinished(quest), - cooldown = completed ? inv.getPlayerData().getQuestData().checkCooldownAvailability(quest) : false; + cooldown = completed && inv.getPlayerData().getQuestData().checkCooldownAvailability(quest); - for (Iterator iterator = lore.iterator(); iterator.hasNext();) { - String next = iterator.next(); - - if ((next.startsWith("{level_req}") && reqCount < 1) || (next.startsWith("{started}") && !started) - || (next.startsWith("{!started}") && started) || (next.startsWith("{completed}") && !completed) - || (next.startsWith("{completed_cannot_redo}") && !(completed && !quest.isRedoable())) - || (next.startsWith("{completed_can_redo}") && !(cooldown && quest.isRedoable())) - || (next.startsWith("{completed_delay}") && !(completed && !cooldown))) - iterator.remove(); - } + lore.removeIf(next -> (next.startsWith("{level_req}") && reqCount < 1) || + (next.startsWith("{started}") && !started) || (next.startsWith("{!started}") && started) + || (next.startsWith("{completed}") && !completed) || (next.startsWith("{completed_cannot_redo}") && + !(completed && !quest.isRedoable())) || (next.startsWith("{completed_can_redo}") && !(cooldown && quest.isRedoable())) + || (next.startsWith("{completed_delay}") && !(completed && !cooldown))); /* * replace level requirements diff --git a/src/main/java/net/Indyuce/mmocore/gui/SkillList.java b/src/main/java/net/Indyuce/mmocore/gui/SkillList.java index 3410c314..3e00d48e 100644 --- a/src/main/java/net/Indyuce/mmocore/gui/SkillList.java +++ b/src/main/java/net/Indyuce/mmocore/gui/SkillList.java @@ -1,7 +1,6 @@ package net.Indyuce.mmocore.gui; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; import org.apache.commons.lang.Validate; @@ -238,12 +237,7 @@ public class SkillList extends EditableInventory { boolean unlocked = skill.getUnlockLevel() <= inv.getPlayerData().getLevel(); - for (Iterator iterator = lore.iterator(); iterator.hasNext();) { - String next = iterator.next(); - if ((next.startsWith("{unlocked}") && !unlocked) || (next.startsWith("{locked}") && unlocked) || (next.startsWith("{max_level}") - && (!skill.hasMaxLevel() || skill.getMaxLevel() > inv.getPlayerData().getSkillLevel(skill.getSkill())))) - iterator.remove(); - } + lore.removeIf(next -> (next.startsWith("{unlocked}") && !unlocked) || (next.startsWith("{locked}") && unlocked) || (next.startsWith("{max_level}") && (!skill.hasMaxLevel() || skill.getMaxLevel() > inv.getPlayerData().getSkillLevel(skill.getSkill())))); for (int j = 0; j < lore.size(); j++) lore.set(j, ChatColor.GRAY + holders.apply(inv.getPlayer(), lore.get(j))); @@ -253,7 +247,7 @@ public class SkillList extends EditableInventory { */ ItemStack item = skill.getSkill().getIcon(); ItemMeta meta = item.getItemMeta(); - meta.setDisplayName(holders.apply(inv.getPlayer(), new String(getName()))); + meta.setDisplayName(holders.apply(inv.getPlayer(), getName())); meta.addItemFlags(ItemFlag.values()); meta.setLore(lore); item.setItemMeta(meta); diff --git a/src/main/java/net/Indyuce/mmocore/gui/api/item/InventoryPlaceholderItem.java b/src/main/java/net/Indyuce/mmocore/gui/api/item/InventoryPlaceholderItem.java index fdbe560d..8cbe145b 100644 --- a/src/main/java/net/Indyuce/mmocore/gui/api/item/InventoryPlaceholderItem.java +++ b/src/main/java/net/Indyuce/mmocore/gui/api/item/InventoryPlaceholderItem.java @@ -99,7 +99,7 @@ public abstract class InventoryPlaceholderItem extends InventoryItem { applyTexture(texture, (SkullMeta) meta); if (hasName()) - meta.setDisplayName(placeholders.apply(inv.getPlayer(), new String(getName()))); + meta.setDisplayName(placeholders.apply(inv.getPlayer(), getName())); if (hideFlags()) meta.addItemFlags(ItemFlag.values()); diff --git a/src/main/java/net/Indyuce/mmocore/gui/api/item/Placeholders.java b/src/main/java/net/Indyuce/mmocore/gui/api/item/Placeholders.java index f11e0890..58d22e16 100644 --- a/src/main/java/net/Indyuce/mmocore/gui/api/item/Placeholders.java +++ b/src/main/java/net/Indyuce/mmocore/gui/api/item/Placeholders.java @@ -24,7 +24,7 @@ public class Placeholders { while (str.contains("{") && str.substring(str.indexOf("{")).contains("}")) { String holder = str.substring(str.indexOf("{") + 1, str.indexOf("}")); - str = str.replace("{" + holder + "}", placeholders.containsKey(holder) ? placeholders.get(holder) : "PHE"); + str = str.replace("{" + holder + "}", placeholders.getOrDefault(holder, "PHE")); } return str; } diff --git a/src/main/java/net/Indyuce/mmocore/gui/eco/DepositMenu.java b/src/main/java/net/Indyuce/mmocore/gui/eco/DepositMenu.java index de67b523..ea6a3d7e 100644 --- a/src/main/java/net/Indyuce/mmocore/gui/eco/DepositMenu.java +++ b/src/main/java/net/Indyuce/mmocore/gui/eco/DepositMenu.java @@ -70,7 +70,6 @@ public class DepositMenu extends PluginInventory { int worth = NBTItem.get(event.getCurrentItem()).getInteger("RpgWorth"); if (worth < 1) { event.setCancelled(true); - return; } // in deposit menu diff --git a/src/main/java/net/Indyuce/mmocore/gui/eco/GoldPouch.java b/src/main/java/net/Indyuce/mmocore/gui/eco/GoldPouch.java index b130cd6e..d67d385a 100644 --- a/src/main/java/net/Indyuce/mmocore/gui/eco/GoldPouch.java +++ b/src/main/java/net/Indyuce/mmocore/gui/eco/GoldPouch.java @@ -27,7 +27,7 @@ public class GoldPouch extends PluginInventory { @Override public Inventory getInventory() { - Inventory inv = (Inventory) Bukkit.createInventory(this, 18, ChatColor.UNDERLINE + "Gold Pouch"); + Inventory inv = Bukkit.createInventory(this, 18, ChatColor.UNDERLINE + "Gold Pouch"); inv.setContents(MMOCoreUtils.itemStackArrayFromBase64(nbt.getString("RpgPouchInventory"))); return inv; } diff --git a/src/main/java/net/Indyuce/mmocore/gui/social/friend/EditableFriendList.java b/src/main/java/net/Indyuce/mmocore/gui/social/friend/EditableFriendList.java index 92860271..8a85e7ac 100644 --- a/src/main/java/net/Indyuce/mmocore/gui/social/friend/EditableFriendList.java +++ b/src/main/java/net/Indyuce/mmocore/gui/social/friend/EditableFriendList.java @@ -66,7 +66,7 @@ public class EditableFriendList extends EditableInventory { return new FriendListInventory(data, this); } - public class OfflineFriendItem extends InventoryPlaceholderItem { + public static class OfflineFriendItem extends InventoryPlaceholderItem { public OfflineFriendItem(ConfigurationSection config) { super(config); } @@ -98,7 +98,7 @@ public class EditableFriendList extends EditableInventory { } } - public class OnlineFriendItem extends InventoryPlaceholderItem { + public static class OnlineFriendItem extends InventoryPlaceholderItem { public OnlineFriendItem(ConfigurationSection config) { super(config); } @@ -134,7 +134,7 @@ public class EditableFriendList extends EditableInventory { } } - public class FriendItem extends NoPlaceholderItem { + public static class FriendItem extends NoPlaceholderItem { private final OnlineFriendItem online; private final OfflineFriendItem offline; diff --git a/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildAdmin.java b/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildAdmin.java index e606673a..0e81bf2f 100644 --- a/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildAdmin.java +++ b/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildAdmin.java @@ -38,7 +38,7 @@ public class EditableGuildAdmin extends EditableInventory { return function.equals("member") ? new MemberItem(config) : new NoPlaceholderItem(config); } - public class MemberDisplayItem extends InventoryPlaceholderItem { + public static class MemberDisplayItem extends InventoryPlaceholderItem { public MemberDisplayItem(ConfigurationSection config) { super(config); } @@ -75,7 +75,7 @@ public class EditableGuildAdmin extends EditableInventory { } } - public class MemberItem extends InventoryItem { + public static class MemberItem extends InventoryItem { private final InventoryPlaceholderItem empty; private final MemberDisplayItem member; diff --git a/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildView.java b/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildView.java index 7924fbd9..332cd46c 100644 --- a/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildView.java +++ b/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildView.java @@ -39,7 +39,7 @@ public class EditableGuildView extends EditableInventory { return function.equals("member") ? new MemberItem(config) : (function.equals("next") || function.equals("previous") || function.equals("disband") || function.equals("invite")) ? new ConditionalItem(function, config) : new NoPlaceholderItem(config); } - public class MemberDisplayItem extends InventoryPlaceholderItem { + public static class MemberDisplayItem extends InventoryPlaceholderItem { public MemberDisplayItem(ConfigurationSection config) { super(config); } @@ -123,7 +123,8 @@ public class EditableGuildView extends EditableInventory { GuildViewInventory inv = (GuildViewInventory) invpar; if (function.equals("next")) - if (inv.getPage() == (int) Math.ceil((inv.getPlayerData().getGuild().getMembers().count() + 20) / inv.getByFunction("member").getSlots().size())) + if (inv.getPage() == (inv.getPlayerData().getGuild().getMembers().count() + 20) + / inv.getByFunction("member").getSlots().size()) return null; if (function.equals("previous") && inv.getPage() == 1) return null; @@ -144,7 +145,8 @@ public class EditableGuildView extends EditableInventory { public GuildViewInventory(PlayerData playerData, EditableInventory editable) { super(playerData, editable); - maxpages = (int) Math.ceil((playerData.getGuild().getMembers().count() + 20) / editable.getByFunction("member").getSlots().size()); + maxpages = (playerData.getGuild().getMembers().count() + 20) + / editable.getByFunction("member").getSlots().size(); } @Override @@ -186,7 +188,7 @@ public class EditableGuildView extends EditableInventory { if (!playerData.getGuild().getOwner().equals(playerData.getUniqueId())) return; - /** + /* * if (playerData.getGuild().getMembers().count() >= max) { * MMOCore.plugin.configManager.getSimpleMessage("guild-is-full").send(player); * player.playSound(player.getLocation(), diff --git a/src/main/java/net/Indyuce/mmocore/gui/social/party/EditablePartyView.java b/src/main/java/net/Indyuce/mmocore/gui/social/party/EditablePartyView.java index 4be425e7..c0abb935 100644 --- a/src/main/java/net/Indyuce/mmocore/gui/social/party/EditablePartyView.java +++ b/src/main/java/net/Indyuce/mmocore/gui/social/party/EditablePartyView.java @@ -38,7 +38,7 @@ public class EditablePartyView extends EditableInventory { return function.equals("member") ? new MemberItem(config) : new NoPlaceholderItem(config); } - public class MemberDisplayItem extends InventoryPlaceholderItem { + public static class MemberDisplayItem extends InventoryPlaceholderItem { public MemberDisplayItem(ConfigurationSection config) { super(config); } @@ -77,7 +77,7 @@ public class EditablePartyView extends EditableInventory { } } - public class MemberItem extends InventoryItem { + public static class MemberItem extends InventoryItem { private final InventoryPlaceholderItem empty; private final MemberDisplayItem member; diff --git a/src/main/java/net/Indyuce/mmocore/listener/SpellCast.java b/src/main/java/net/Indyuce/mmocore/listener/SpellCast.java index 36eedb71..e63509bb 100644 --- a/src/main/java/net/Indyuce/mmocore/listener/SpellCast.java +++ b/src/main/java/net/Indyuce/mmocore/listener/SpellCast.java @@ -63,7 +63,7 @@ public class SpellCast implements Listener { runTaskTimer(MMOCore.plugin, 0, 1); } - @EventHandler(ignoreCancelled = false) + @EventHandler() public void onSkillCast(PlayerItemHeldEvent event) { Player player = event.getPlayer(); if(!playerData.isOnline()) return; @@ -108,18 +108,17 @@ public class SpellCast implements Listener { } private String getFormat(PlayerData data) { - String str = ""; - if(!data.isOnline()) return str; + StringBuilder str = new StringBuilder(); + if(!data.isOnline()) return str.toString(); for (int j = 0; j < data.getBoundSkills().size(); j++) { SkillInfo skill = data.getBoundSkill(j); - str += (str.isEmpty() ? "" : split) - + (onCooldown(data, skill) ? onCooldown.replace("{cooldown}", "" + data.getSkillData().getCooldown(skill) / 1000) - : noMana(data, skill) ? noMana : ready) - .replace("{index}", "" + (j + 1 + (data.getPlayer().getInventory().getHeldItemSlot() <= j ? 1 : 0))) - .replace("{skill}", data.getBoundSkill(j).getSkill().getName()); + str.append((str.length() == 0) ? "" : split).append((onCooldown(data, skill) + ? onCooldown .replace("{cooldown}", "" + data.getSkillData().getCooldown(skill) / 1000) + : noMana(data, skill) ? noMana : ready).replace("{index}", "" + (j + 1 + (data.getPlayer().getInventory().getHeldItemSlot() + <= j ? 1 : 0))).replace("{skill}", data.getBoundSkill(j).getSkill().getName())); } - return str; + return str.toString(); } /* diff --git a/src/main/java/net/Indyuce/mmocore/listener/profession/FishingListener.java b/src/main/java/net/Indyuce/mmocore/listener/profession/FishingListener.java index b92e7c15..500c05c4 100644 --- a/src/main/java/net/Indyuce/mmocore/listener/profession/FishingListener.java +++ b/src/main/java/net/Indyuce/mmocore/listener/profession/FishingListener.java @@ -32,7 +32,7 @@ import net.Indyuce.mmocore.manager.profession.FishingManager.FishingDropTable; import net.mmogroup.mmolib.version.VersionSound; public class FishingListener implements Listener { - private Set fishing = new HashSet<>(); + private final Set fishing = new HashSet<>(); private static final Random random = new Random(); diff --git a/src/main/java/net/Indyuce/mmocore/manager/ClassManager.java b/src/main/java/net/Indyuce/mmocore/manager/ClassManager.java index 6adb9a8a..bcf963b8 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/ClassManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/ClassManager.java @@ -112,7 +112,7 @@ public class ClassManager extends MMOManager { @Override public void clear() { map.clear(); - triggerHandlers.forEach(handler -> HandlerList.unregisterAll(handler)); + triggerHandlers.forEach(HandlerList::unregisterAll); /* * do not clear the list of trigger listeners, since it's only setup diff --git a/src/main/java/net/Indyuce/mmocore/manager/ConfigManager.java b/src/main/java/net/Indyuce/mmocore/manager/ConfigManager.java index 4b663ddb..77ab7feb 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/ConfigManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/ConfigManager.java @@ -1,18 +1,5 @@ package net.Indyuce.mmocore.manager; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.text.DecimalFormat; -import java.text.DecimalFormatSymbols; -import java.util.List; -import java.util.logging.Level; - -import org.bukkit.ChatColor; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.util.Consumer; - import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.ConfigFile; import net.Indyuce.mmocore.api.player.PlayerData; @@ -21,7 +8,20 @@ import net.Indyuce.mmocore.api.util.input.ChatInput; import net.Indyuce.mmocore.api.util.input.PlayerInput; import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType; import net.mmogroup.mmolib.MMOLib; +import org.bukkit.ChatColor; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.util.Consumer; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.util.List; +import java.util.logging.Level; + +@SuppressWarnings("ALL") public class ConfigManager { public boolean overrideVanillaExp, hotbarSwap; @@ -99,7 +99,7 @@ public class ConfigManager { hotbarSwap = MMOCore.plugin.getConfig().getBoolean("hotbar-swap"); chatInput = MMOCore.plugin.getConfig().getBoolean("use-chat-input"); partyChatPrefix = MMOCore.plugin.getConfig().getString("party.chat-prefix"); - formatSymbols.setDecimalSeparator(getFirstChar(MMOCore.plugin.getConfig().getString("number-format.decimal-separator"), ',')); + formatSymbols.setDecimalSeparator(getFirstChar(MMOCore.plugin.getConfig().getString("number-format.decimal-separator"))); combatLogTimer = MMOCore.plugin.getConfig().getInt("combat-log.timer") * 1000; lootChestExpireTime = Math.max(MMOCore.plugin.getConfig().getInt("loot-chests.chest-expire-time"), 1) * 1000; lootChestPlayerCooldown = MMOCore.plugin.getConfig().getInt("player-cooldown") * 1000; @@ -123,8 +123,8 @@ public class ConfigManager { return new DecimalFormat(pattern, formatSymbols); } - private char getFirstChar(String str, char defaultChar) { - return str == null || str.isEmpty() ? defaultChar : str.charAt(0); + private char getFirstChar(String str) { + return str == null || str.isEmpty() ? ',' : str.charAt(0); } public PlayerInput newPlayerInput(Player player, InputType type, Consumer output) { @@ -136,11 +136,12 @@ public class ConfigManager { } public void loadDefaultFile(String path, String name) { - File folder = new File(MMOCore.plugin.getDataFolder() + (path.isEmpty() ? "" : "/" + path)); + String newPath = path.isEmpty() ? "" : "/" + path; + File folder = new File(MMOCore.plugin.getDataFolder() + (newPath)); if (!folder.exists()) folder.mkdir(); - File file = new File(MMOCore.plugin.getDataFolder() + (path.isEmpty() ? "" : "/" + path), name); + File file = new File(MMOCore.plugin.getDataFolder() + (newPath), name); if (!file.exists()) try { Files.copy(MMOCore.plugin.getResource("default/" + (path.isEmpty() ? "" : path + "/") + name), file.getAbsoluteFile().toPath()); @@ -160,7 +161,7 @@ public class ConfigManager { return new SimpleMessage(MMOLib.plugin.parseColors(format)); } - public class SimpleMessage { + public static class SimpleMessage { private final String message; private final boolean actionbar; private final boolean hasPlaceholders; diff --git a/src/main/java/net/Indyuce/mmocore/manager/DropTableManager.java b/src/main/java/net/Indyuce/mmocore/manager/DropTableManager.java index 90234eb2..f38fc9d9 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/DropTableManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/DropTableManager.java @@ -7,6 +7,7 @@ import java.util.Map; import java.util.Set; import java.util.logging.Level; +import net.mmogroup.mmolib.api.util.PostLoadObject; import org.bukkit.Bukkit; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; @@ -50,7 +51,7 @@ public class DropTableManager extends MMOManager { if (obj instanceof ConfigurationSection) { DropTable table = new DropTable((ConfigurationSection) obj); - Bukkit.getScheduler().runTask(MMOCore.plugin, () -> table.postLoad()); + Bukkit.getScheduler().runTask(MMOCore.plugin, table::postLoad); return table; } @@ -74,7 +75,7 @@ public class DropTableManager extends MMOManager { MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load drop table file '" + file.getName() + "': " + exception.getMessage()); } - Bukkit.getScheduler().runTask(MMOCore.plugin, () -> map.values().forEach(table -> table.postLoad())); + Bukkit.getScheduler().runTask(MMOCore.plugin, () -> map.values().forEach(PostLoadObject::postLoad)); } @Override diff --git a/src/main/java/net/Indyuce/mmocore/manager/QuestManager.java b/src/main/java/net/Indyuce/mmocore/manager/QuestManager.java index 3bce6953..b0da7768 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/QuestManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/QuestManager.java @@ -18,7 +18,7 @@ public class QuestManager extends MMOManager { public void load(File file) { if (file.isDirectory()) - Arrays.asList(file.listFiles()).stream().sorted().forEach(subfile -> load(subfile)); + Arrays.stream(file.listFiles()).sorted().forEach(this::load); else try { register(new Quest(file.getName().substring(0, file.getName().length() - 4), YamlConfiguration.loadConfiguration(file))); diff --git a/src/main/java/net/Indyuce/mmocore/manager/WaypointManager.java b/src/main/java/net/Indyuce/mmocore/manager/WaypointManager.java index 29ee1bc8..450bea83 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/WaypointManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/WaypointManager.java @@ -12,7 +12,7 @@ import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.Waypoint; public class WaypointManager { - private Map waypoints = new LinkedHashMap<>(); + private final Map waypoints = new LinkedHashMap<>(); public WaypointManager(FileConfiguration config) { for (String key : config.getKeys(false)) diff --git a/src/main/java/net/Indyuce/mmocore/manager/data/DataProvider.java b/src/main/java/net/Indyuce/mmocore/manager/data/DataProvider.java index 7c4926a7..f1afaf38 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/data/DataProvider.java +++ b/src/main/java/net/Indyuce/mmocore/manager/data/DataProvider.java @@ -11,5 +11,4 @@ public interface DataProvider { PlayerDataManager getDataManager(); GuildDataManager getGuildManager(); - void close(); } diff --git a/src/main/java/net/Indyuce/mmocore/manager/data/GuildDataManager.java b/src/main/java/net/Indyuce/mmocore/manager/data/GuildDataManager.java index 6e898fb0..93da635a 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/data/GuildDataManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/data/GuildDataManager.java @@ -79,7 +79,7 @@ public abstract class GuildDataManager { return config == null ? config = new GuildConfiguration() : config; } - public class GuildConfiguration { + public static class GuildConfiguration { private final String prefix; private final boolean uppercaseTags; private final NamingRules tagRules, nameRules; @@ -109,7 +109,7 @@ public abstract class GuildDataManager { return nameRules; } - public class NamingRules { + public static class NamingRules { private final String regex; private final int min, max; diff --git a/src/main/java/net/Indyuce/mmocore/manager/data/PlayerDataManager.java b/src/main/java/net/Indyuce/mmocore/manager/data/PlayerDataManager.java index a75f19bc..13194cad 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/data/PlayerDataManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/data/PlayerDataManager.java @@ -69,7 +69,7 @@ public abstract class PlayerDataManager { } public Collection getLoaded() { - return MMOPlayerData.getLoaded().stream().filter(data -> data.getMMOCore() != null).map(data -> data.getMMOCore()) + return MMOPlayerData.getLoaded().stream().filter(data -> data.getMMOCore() != null).map(MMOPlayerData::getMMOCore) .collect(Collectors.toSet()); } @@ -79,7 +79,7 @@ public abstract class PlayerDataManager { public abstract void remove(PlayerData data); - public class DefaultPlayerData { + public static class DefaultPlayerData { private final int level, classPoints, skillPoints, attributePoints, attrReallocPoints; public DefaultPlayerData(ConfigurationSection config) { diff --git a/src/main/java/net/Indyuce/mmocore/manager/data/mysql/MySQLPlayerDataManager.java b/src/main/java/net/Indyuce/mmocore/manager/data/mysql/MySQLPlayerDataManager.java index 164139b5..68c4767d 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/data/mysql/MySQLPlayerDataManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/data/mysql/MySQLPlayerDataManager.java @@ -2,6 +2,7 @@ package net.Indyuce.mmocore.manager.data.mysql; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Map.Entry; @@ -134,7 +135,7 @@ public class MySQLPlayerDataManager extends PlayerDataManager { sql.updateJSONArray("waypoints", data.getWaypoints()); sql.updateJSONArray("friends", - data.getFriends().stream().map(uuid -> uuid.toString()).collect(Collectors.toList())); + data.getFriends().stream().map(UUID::toString).collect(Collectors.toList())); sql.updateJSONArray("bound_skills", data.getBoundSkills().stream().map(skill -> skill.getSkill().getId()).collect(Collectors.toList())); @@ -178,12 +179,7 @@ public class MySQLPlayerDataManager extends PlayerDataManager { } private Collection getJSONArray(String json) { - Collection collection = new ArrayList(); - - for (String s : MMOLib.plugin.getJson().parse(json, String[].class)) - collection.add(s); - - return collection; + return new ArrayList<>(Arrays.asList(MMOLib.plugin.getJson().parse(json, String[].class))); } public class MySQLOfflinePlayerData extends OfflinePlayerData { @@ -202,7 +198,7 @@ public class MySQLPlayerDataManager extends PlayerDataManager { level = 0; lastLogin = 0; profess = MMOCore.plugin.classManager.getDefaultClass(); - friends = new ArrayList(); + friends = new ArrayList<>(); } else { level = result.getInt("level"); lastLogin = result.getLong("last_login"); @@ -212,7 +208,7 @@ public class MySQLPlayerDataManager extends PlayerDataManager { getJSONArray(result.getString("friends")) .forEach(str -> friends.add(UUID.fromString(str))); else - friends = new ArrayList(); + friends = new ArrayList<>(); } } catch (SQLException e) { e.printStackTrace(); @@ -227,7 +223,7 @@ public class MySQLPlayerDataManager extends PlayerDataManager { public void removeFriend(UUID uuid) { friends.remove(uuid); new MySQLTableEditor(Table.PLAYERDATA, uuid).updateDataAsync("friends", - friends.stream().map(friend -> friend.toString()).collect(Collectors.toList())); + friends.stream().map(UUID::toString).collect(Collectors.toList())); } @Override diff --git a/src/main/java/net/Indyuce/mmocore/manager/data/yaml/YAMLDataProvider.java b/src/main/java/net/Indyuce/mmocore/manager/data/yaml/YAMLDataProvider.java index 4c615c30..bcf89817 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/data/yaml/YAMLDataProvider.java +++ b/src/main/java/net/Indyuce/mmocore/manager/data/yaml/YAMLDataProvider.java @@ -17,7 +17,4 @@ public class YAMLDataProvider implements DataProvider { public GuildDataManager getGuildManager() { return guildManager; } - - @Override - public void close() {} } diff --git a/src/main/java/net/Indyuce/mmocore/manager/data/yaml/YAMLPlayerDataManager.java b/src/main/java/net/Indyuce/mmocore/manager/data/yaml/YAMLPlayerDataManager.java index 0bdb09be..5489fe26 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/data/yaml/YAMLPlayerDataManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/data/yaml/YAMLPlayerDataManager.java @@ -83,12 +83,12 @@ public class YAMLPlayerDataManager extends PlayerDataManager { config.set("experience", data.getExperience()); config.set("class", data.getProfess().getId()); config.set("waypoints", new ArrayList<>(data.getWaypoints())); - config.set("friends", data.getFriends().stream().map(uuid -> uuid.toString()).collect(Collectors.toList())); + config.set("friends", data.getFriends().stream().map(UUID::toString).collect(Collectors.toList())); config.set("last-login", data.getLastLogin()); config.set("guild", data.hasGuild() ? data.getGuild().getId() : null); config.set("skill", null); - data.mapSkillLevels().entrySet().forEach(entry -> config.set("skill." + entry.getKey(), entry.getValue())); + data.mapSkillLevels().forEach((key1, value) -> config.set("skill." + key1, value)); List boundSkills = new ArrayList<>(); data.getBoundSkills().forEach(skill -> boundSkills.add(skill.getSkill().getId())); diff --git a/src/main/java/net/Indyuce/mmocore/manager/profession/AlchemyManager.java b/src/main/java/net/Indyuce/mmocore/manager/profession/AlchemyManager.java index 8eb92e36..3fb90d05 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/profession/AlchemyManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/profession/AlchemyManager.java @@ -11,7 +11,7 @@ public class AlchemyManager extends MMOManager { public double splash, lingering, upgrade, extend; // private Map custom = new HashMap<>(); - private Map base = new HashMap<>(); + private final Map base = new HashMap<>(); // public double getWeight(PotionEffectType type) { // return custom.containsKey(type) ? custom.get(type) : 0; diff --git a/src/main/java/net/Indyuce/mmocore/manager/profession/FishingManager.java b/src/main/java/net/Indyuce/mmocore/manager/profession/FishingManager.java index ef16cfbe..61fb1c4e 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/profession/FishingManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/profession/FishingManager.java @@ -43,16 +43,14 @@ public class FishingManager extends MMOManager { return null; } - public class FishingDropTable { - private final String id; - + public static class FishingDropTable { private final Set conditions = new HashSet<>(); private final List items = new ArrayList<>(); private int maxWeight = 0; public FishingDropTable(ConfigurationSection section) { Validate.notNull(section, "Could not load config"); - this.id = section.getName(); + final String id = section.getName(); if (section.contains("conditions")) { List list = section.getStringList("conditions"); @@ -111,7 +109,6 @@ public class FishingManager extends MMOManager { @Override public void reload() { // TODO Auto-generated method stub - } @Override diff --git a/src/main/java/net/Indyuce/mmocore/manager/profession/ProfessionManager.java b/src/main/java/net/Indyuce/mmocore/manager/profession/ProfessionManager.java index 6b1a32b7..bbb196c1 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/profession/ProfessionManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/profession/ProfessionManager.java @@ -6,6 +6,7 @@ import java.util.HashMap; import java.util.Map; import java.util.logging.Level; +import net.mmogroup.mmolib.api.util.PostLoadObject; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.event.HandlerList; @@ -66,12 +67,12 @@ public class ProfessionManager extends MMOManager { MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load profession " + file.getName() + ": " + exception.getMessage()); } - getAll().forEach(profession -> profession.postLoad()); + getAll().forEach(PostLoadObject::postLoad); } @Override public void clear() { - managers.values().forEach(manager -> HandlerList.unregisterAll(manager)); + managers.values().forEach(HandlerList::unregisterAll); managers.clear(); professions.clear(); } diff --git a/src/main/java/net/Indyuce/mmocore/manager/social/BoosterManager.java b/src/main/java/net/Indyuce/mmocore/manager/social/BoosterManager.java index 2682a31e..d98882a3 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/social/BoosterManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/social/BoosterManager.java @@ -1,7 +1,6 @@ package net.Indyuce.mmocore.manager.social; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; @@ -42,11 +41,7 @@ public class BoosterManager { * Cleans timed out boosters from the MMOCore registry */ public void flush() { - for (Iterator iterator = map.iterator(); iterator.hasNext();) { - Booster next = iterator.next(); - if (next.isTimedOut()) - iterator.remove(); - } + map.removeIf(Booster::isTimedOut); } /** diff --git a/src/main/java/net/Indyuce/mmocore/manager/social/PartyManager.java b/src/main/java/net/Indyuce/mmocore/manager/social/PartyManager.java index ad50aed9..cce819f8 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/social/PartyManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/social/PartyManager.java @@ -35,7 +35,7 @@ public class PartyManager extends MMOManager { public void unregisterParty(Party party) { // IMPORTANT: clears all party stats before unregistering the party - party.getMembers().forEach(member -> party.removeMember(member)); + party.getMembers().forEach(party::removeMember); parties.remove(party); } diff --git a/src/main/java/net/Indyuce/mmocore/manager/social/RequestManager.java b/src/main/java/net/Indyuce/mmocore/manager/social/RequestManager.java index bd4ebd8c..915ba02f 100644 --- a/src/main/java/net/Indyuce/mmocore/manager/social/RequestManager.java +++ b/src/main/java/net/Indyuce/mmocore/manager/social/RequestManager.java @@ -17,7 +17,7 @@ public class RequestManager { * flush friend requests every 5 minutes so there is no memory overleak */ public RequestManager() { - Bukkit.getScheduler().runTaskTimer(MMOCore.plugin, () -> flushRequests(), 60 * 20, 60 * 20 * 5); + Bukkit.getScheduler().runTaskTimer(MMOCore.plugin, this::flushRequests, 60 * 20, 60 * 20 * 5); } public Request getRequest(UUID uuid) { @@ -42,10 +42,6 @@ public class RequestManager { } public void flushRequests() { - for (Iterator iterator = requests.iterator(); iterator.hasNext();) { - Request next = iterator.next(); - if (next.isTimedOut()) - iterator.remove(); - } + requests.removeIf(Request::isTimedOut); } } diff --git a/src/main/java/net/Indyuce/mmocore/skill/Ambers.java b/src/main/java/net/Indyuce/mmocore/skill/Ambers.java index 245eb15b..28531397 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/Ambers.java +++ b/src/main/java/net/Indyuce/mmocore/skill/Ambers.java @@ -48,11 +48,10 @@ public class Ambers extends Skill implements Listener { Location loc = event.getEntity().getLocation(); double a = random.nextDouble() * 2 * Math.PI; - new Amber(data, loc.add(0, event.getEntity().getHeight() / 2, 0), loc.clone().add(4 * Math.cos(a), 0, 4 * Math.sin(a)), - cast.getModifier("percent")); + new Amber(data, loc.add(0, event.getEntity().getHeight() / 2, 0), loc.clone().add(4 * Math.cos(a), 0, 4 * Math.sin(a)), cast.getModifier("percent")); } - public class Amber extends BukkitRunnable { + public static class Amber extends BukkitRunnable { private final Location loc; private final PlayerData data; private final double percent; diff --git a/src/main/java/net/Indyuce/mmocore/skill/Backstab.java b/src/main/java/net/Indyuce/mmocore/skill/Backstab.java index 76c82c15..b36f4398 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/Backstab.java +++ b/src/main/java/net/Indyuce/mmocore/skill/Backstab.java @@ -33,7 +33,7 @@ public class Backstab extends Skill implements Listener { @EventHandler public void a(PlayerAttackEvent event) { PlayerData data = event.getData().getMMOCore(); - LivingEntity target = (LivingEntity) event.getEntity(); + LivingEntity target = event.getEntity(); if (data.isInCombat() || !event.getAttack().hasType(DamageType.WEAPON) || event.getPlayer().getEyeLocation().getDirection().angle(target.getEyeLocation().getDirection()) > Math.PI / 6 || !data.getProfess().hasSkill(this)) diff --git a/src/main/java/net/Indyuce/mmocore/skill/Combo_Attack.java b/src/main/java/net/Indyuce/mmocore/skill/Combo_Attack.java index 25dc5255..74788540 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/Combo_Attack.java +++ b/src/main/java/net/Indyuce/mmocore/skill/Combo_Attack.java @@ -37,7 +37,7 @@ public class Combo_Attack extends Skill { new BukkitRunnable() { final int count = (int) cast.getModifier("count"); final double damage = cast.getModifier("damage") / count; - LivingEntity target = cast.getTarget(); + final LivingEntity target = cast.getTarget(); int c; diff --git a/src/main/java/net/Indyuce/mmocore/skill/Control.java b/src/main/java/net/Indyuce/mmocore/skill/Control.java index 1a7e9841..c32b0356 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/Control.java +++ b/src/main/java/net/Indyuce/mmocore/skill/Control.java @@ -47,7 +47,7 @@ public class Control extends Skill { return cast; } - public class TelekinesyRunnable extends BukkitRunnable implements Listener { + public static class TelekinesyRunnable extends BukkitRunnable implements Listener { private final LivingEntity entity; private final PlayerData data; diff --git a/src/main/java/net/Indyuce/mmocore/skill/Empowered_Attack.java b/src/main/java/net/Indyuce/mmocore/skill/Empowered_Attack.java index 7114fa42..8c2a4b41 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/Empowered_Attack.java +++ b/src/main/java/net/Indyuce/mmocore/skill/Empowered_Attack.java @@ -74,7 +74,7 @@ public class Empowered_Attack extends Skill { new SmallParticleEffect(player.getPlayer(), Particle.FIREWORKS_SPARK); Bukkit.getPluginManager().registerEvents(this, MMOCore.plugin); - Bukkit.getScheduler().scheduleSyncDelayedTask(MMOCore.plugin, () -> close(), 80); + Bukkit.getScheduler().scheduleSyncDelayedTask(MMOCore.plugin, this::close, 80); } private void close() { diff --git a/src/main/java/net/Indyuce/mmocore/skill/Evade.java b/src/main/java/net/Indyuce/mmocore/skill/Evade.java index c8266802..0e9711c5 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/Evade.java +++ b/src/main/java/net/Indyuce/mmocore/skill/Evade.java @@ -44,7 +44,7 @@ public class Evade extends Skill { return cast; } - private class EvadeSkill extends BukkitRunnable implements Listener { + private static class EvadeSkill extends BukkitRunnable implements Listener { private final PlayerData data; public EvadeSkill(PlayerData data, double duration) { @@ -52,7 +52,7 @@ public class Evade extends Skill { Bukkit.getPluginManager().registerEvents(this, MMOCore.plugin); runTaskTimer(MMOCore.plugin, 0, 1); - Bukkit.getScheduler().runTaskLater(MMOCore.plugin, () -> close(), (long) (duration * 20)); + Bukkit.getScheduler().runTaskLater(MMOCore.plugin, this::close, (long) (duration * 20)); } private void close() { diff --git a/src/main/java/net/Indyuce/mmocore/skill/Fire_Berserker.java b/src/main/java/net/Indyuce/mmocore/skill/Fire_Berserker.java index ed3b5df0..38deda10 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/Fire_Berserker.java +++ b/src/main/java/net/Indyuce/mmocore/skill/Fire_Berserker.java @@ -33,8 +33,7 @@ public class Fire_Berserker extends Skill implements Listener { PlayerData data = event.getData().getMMOCore(); if (event.getPlayer().getFireTicks() > 0) { Optional skill = data.getProfess().findSkill(this); - if (skill.isPresent()) - event.getAttack().multiplyDamage(1 + skill.get().getModifier("extra", data.getSkillLevel(this)) / 100); + skill.ifPresent(skillInfo -> event.getAttack().multiplyDamage(1 + skillInfo.getModifier("extra", data.getSkillLevel(this)) / 100)); } } } diff --git a/src/main/java/net/Indyuce/mmocore/skill/Fire_Rage.java b/src/main/java/net/Indyuce/mmocore/skill/Fire_Rage.java index b5cb1485..ce138489 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/Fire_Rage.java +++ b/src/main/java/net/Indyuce/mmocore/skill/Fire_Rage.java @@ -52,7 +52,7 @@ public class Fire_Rage extends Skill { return cast; } - public class Rage extends BukkitRunnable implements Listener { + public static class Rage extends BukkitRunnable implements Listener { private final PlayerData data; private final int count, ignite; private final double damage; @@ -73,7 +73,7 @@ public class Fire_Rage extends Skill { c = count = (int) cast.getModifier("count"); Bukkit.getPluginManager().registerEvents(this, MMOCore.plugin); - Bukkit.getScheduler().runTaskLater(MMOCore.plugin, () -> close(), (long) (cast.getModifier("duration") * 20)); + Bukkit.getScheduler().runTaskLater(MMOCore.plugin, this::close, (long) (cast.getModifier("duration") * 20)); runTaskTimer(MMOCore.plugin, 0, 1); if(data.isOnline()) { @@ -121,8 +121,8 @@ public class Fire_Rage extends Skill { data.getPlayer().getWorld().playSound(data.getPlayer().getLocation(), VersionSound.ENTITY_FIREWORK_ROCKET_BLAST.toSound(), 1, last ? 0 : 1); new BukkitRunnable() { int j = 0; - Vector vec = data.getPlayer().getEyeLocation().getDirection(); - Location loc = data.getPlayer().getLocation().add(0, 1.3, 0); + final Vector vec = data.getPlayer().getEyeLocation().getDirection(); + final Location loc = data.getPlayer().getLocation().add(0, 1.3, 0); public void run() { if (j++ > 40) @@ -140,7 +140,7 @@ public class Fire_Rage extends Skill { loc.getWorld().spawnParticle(Particle.LAVA, loc, 8); loc.getWorld().spawnParticle(Particle.FLAME, loc, 32, 0, 0, 0, .1); loc.getWorld().playSound(loc, Sound.ENTITY_BLAZE_HURT, 2, 1); - target.setFireTicks((int) (target.getFireTicks() + ignite)); + target.setFireTicks(target.getFireTicks() + ignite); MMOLib.plugin.getDamage().damage(data.getPlayer(), (LivingEntity) target, new AttackResult(damage, DamageType.SKILL, DamageType.PROJECTILE, DamageType.MAGIC)); cancel(); } diff --git a/src/main/java/net/Indyuce/mmocore/skill/Furtive_Strike.java b/src/main/java/net/Indyuce/mmocore/skill/Furtive_Strike.java index b76fe517..705fa31e 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/Furtive_Strike.java +++ b/src/main/java/net/Indyuce/mmocore/skill/Furtive_Strike.java @@ -42,7 +42,7 @@ public class Furtive_Strike extends Skill { double damage = cast.getModifier("damage"); double radius = cast.getModifier("radius"); - if (target.getNearbyEntities(radius, radius, radius).stream().filter(entity -> !entity.equals(data.getPlayer())).count() == 0) { + if (target.getNearbyEntities(radius, radius, radius).stream().allMatch(entity -> entity.equals(data.getPlayer()))) { new SmallParticleEffect(target, Particle.SPELL_WITCH); damage *= 1 + cast.getModifier("extra") / 100; } diff --git a/src/main/java/net/Indyuce/mmocore/skill/Human_Shield.java b/src/main/java/net/Indyuce/mmocore/skill/Human_Shield.java index 8b3353f2..9b867e89 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/Human_Shield.java +++ b/src/main/java/net/Indyuce/mmocore/skill/Human_Shield.java @@ -49,7 +49,7 @@ public class Human_Shield extends Skill { return cast; } - public class HumanShield extends BukkitRunnable implements Listener { + public static class HumanShield extends BukkitRunnable implements Listener { private final PlayerData data; private final Player target; private final double r, rd, d, l; diff --git a/src/main/java/net/Indyuce/mmocore/skill/Neptune_Gift.java b/src/main/java/net/Indyuce/mmocore/skill/Neptune_Gift.java index 39df0cb5..a3686385 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/Neptune_Gift.java +++ b/src/main/java/net/Indyuce/mmocore/skill/Neptune_Gift.java @@ -33,8 +33,7 @@ public class Neptune_Gift extends Skill implements Listener { PlayerData data = event.getData(); if (event.getPlayer().getLocation().getBlock().getType() == Material.WATER) { Optional skill = data.getProfess().findSkill(this); - if (skill.isPresent()) - event.setAmount(event.getAmount() * (1 + skill.get().getModifier("extra", data.getSkillLevel(this)) / 100)); + skill.ifPresent(skillInfo -> event.setAmount(event.getAmount() * (1 + skillInfo.getModifier("extra", data.getSkillLevel(this)) / 100))); } } } diff --git a/src/main/java/net/Indyuce/mmocore/skill/Power_Mark.java b/src/main/java/net/Indyuce/mmocore/skill/Power_Mark.java index 64c73f5e..83bc75a7 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/Power_Mark.java +++ b/src/main/java/net/Indyuce/mmocore/skill/Power_Mark.java @@ -61,7 +61,9 @@ public class Power_Mark extends Skill implements Listener { private final PlayerData data; private final Location loc; - private double duration, ratio, stun; + private final double duration; + private final double ratio; + private double stun; private double accumulate; private int j; diff --git a/src/main/java/net/Indyuce/mmocore/skill/Sneaky_Picky.java b/src/main/java/net/Indyuce/mmocore/skill/Sneaky_Picky.java index db6be9fd..91b31c69 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/Sneaky_Picky.java +++ b/src/main/java/net/Indyuce/mmocore/skill/Sneaky_Picky.java @@ -43,7 +43,7 @@ public class Sneaky_Picky extends Skill implements Listener { data.cast(cast.getInfo()); event.getAttack().multiplyDamage(1 + cast.getModifier("extra") / 100); - LivingEntity target = (LivingEntity) event.getEntity(); + LivingEntity target = event.getEntity(); target.getWorld().spawnParticle(Particle.SMOKE_NORMAL, target.getLocation().add(0, target.getHeight() / 2, 0), 64, 0, 0, 0, .05); target.getWorld().playSound(target.getLocation(), Sound.ENTITY_ZOMBIE_ATTACK_IRON_DOOR, 1, 2); } diff --git a/src/main/java/net/Indyuce/mmocore/skill/Telekinesy.java b/src/main/java/net/Indyuce/mmocore/skill/Telekinesy.java index 209dac5a..b95914be 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/Telekinesy.java +++ b/src/main/java/net/Indyuce/mmocore/skill/Telekinesy.java @@ -44,7 +44,7 @@ public class Telekinesy extends Skill { return cast; } - public class TelekinesyRunnable extends BukkitRunnable implements Listener { + public static class TelekinesyRunnable extends BukkitRunnable implements Listener { private final Entity entity; private final PlayerData data; diff --git a/src/main/java/net/Indyuce/mmocore/skill/Weaken.java b/src/main/java/net/Indyuce/mmocore/skill/Weaken.java index 80b4247a..b96aa671 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/Weaken.java +++ b/src/main/java/net/Indyuce/mmocore/skill/Weaken.java @@ -52,7 +52,7 @@ public class Weaken extends Skill { return new Vector(Math.cos(a), .8, Math.sin(a)).normalize().multiply(.4); } - public class Weakened implements Listener { + public static class Weakened implements Listener { private final Entity entity; private final double c; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 23f356e6..f9a2404a 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,4 +1,4 @@ -name: ${project.name} +name: MMOCore version: ${project.version} main: net.Indyuce.mmocore.MMOCore author: Indyuce