فهرست منبع

remove unimplemented features, fix tests again, and optimize imports

nossr50 1 سال پیش
والد
کامیت
bf901a0a34
38فایلهای تغییر یافته به همراه73 افزوده شده و 231 حذف شده
  1. 0 2
      src/main/java/com/gmail/nossr50/api/PartyAPI.java
  2. 0 1
      src/main/java/com/gmail/nossr50/commands/chat/PartyChatCommand.java
  3. 0 1
      src/main/java/com/gmail/nossr50/commands/party/PartyAcceptCommand.java
  4. 0 1
      src/main/java/com/gmail/nossr50/commands/party/PartyChangeOwnerCommand.java
  5. 0 1
      src/main/java/com/gmail/nossr50/commands/party/PartyCreateCommand.java
  6. 0 1
      src/main/java/com/gmail/nossr50/commands/party/PartyDisbandCommand.java
  7. 0 1
      src/main/java/com/gmail/nossr50/commands/party/PartyInfoCommand.java
  8. 0 1
      src/main/java/com/gmail/nossr50/commands/party/PartyInviteCommand.java
  9. 0 1
      src/main/java/com/gmail/nossr50/commands/party/PartyJoinCommand.java
  10. 0 1
      src/main/java/com/gmail/nossr50/commands/party/PartyKickCommand.java
  11. 0 1
      src/main/java/com/gmail/nossr50/commands/party/PartyQuitCommand.java
  12. 0 1
      src/main/java/com/gmail/nossr50/commands/party/PartyRenameCommand.java
  13. 0 1
      src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceAcceptCommand.java
  14. 0 1
      src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceCommand.java
  15. 0 1
      src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceDisbandCommand.java
  16. 0 1
      src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceInviteCommand.java
  17. 0 1
      src/main/java/com/gmail/nossr50/commands/party/teleport/PtpCommand.java
  18. 0 1
      src/main/java/com/gmail/nossr50/datatypes/party/Party.java
  19. 0 69
      src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java
  20. 0 3
      src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java
  21. 0 2
      src/main/java/com/gmail/nossr50/datatypes/skills/SuperAbilityType.java
  22. 0 16
      src/main/java/com/gmail/nossr50/listeners/PlayerListener.java
  23. 55 3
      src/main/java/com/gmail/nossr50/party/PartyManager.java
  24. 0 1
      src/main/java/com/gmail/nossr50/runnables/SaveTimerTask.java
  25. 0 1
      src/main/java/com/gmail/nossr50/runnables/items/TeleportationWarmup.java
  26. 0 1
      src/main/java/com/gmail/nossr50/runnables/party/PartyAutoKickTask.java
  27. 0 1
      src/main/java/com/gmail/nossr50/runnables/skills/RuptureTask.java
  28. 0 13
      src/main/java/com/gmail/nossr50/skills/AlternateFiringSuperSkill.java
  29. 0 1
      src/main/java/com/gmail/nossr50/skills/crossbows/Crossbows.java
  30. 1 40
      src/main/java/com/gmail/nossr50/skills/crossbows/CrossbowsManager.java
  31. 0 11
      src/main/java/com/gmail/nossr50/util/Permissions.java
  32. 0 12
      src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java
  33. 1 7
      src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java
  34. 2 2
      src/main/resources/advanced.yml
  35. 12 6
      src/main/resources/locale/locale_en_US.properties
  36. 0 6
      src/main/resources/plugin.yml
  37. 0 15
      src/main/resources/skillranks.yml
  38. 2 2
      src/test/java/com/gmail/nossr50/party/PartyManagerTest.java

+ 0 - 2
src/main/java/com/gmail/nossr50/api/PartyAPI.java

@@ -5,10 +5,8 @@ import com.gmail.nossr50.datatypes.party.Party;
 import com.gmail.nossr50.datatypes.party.PartyLeader;
 import com.gmail.nossr50.datatypes.party.PartyLeader;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.player.NotificationManager;
 import com.gmail.nossr50.util.player.NotificationManager;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
-import jdk.jfr.Experimental;
 import org.bukkit.OfflinePlayer;
 import org.bukkit.OfflinePlayer;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Player;
 import org.jetbrains.annotations.Nullable;
 import org.jetbrains.annotations.Nullable;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/chat/PartyChatCommand.java

@@ -11,7 +11,6 @@ import com.gmail.nossr50.datatypes.chat.ChatChannel;
 import com.gmail.nossr50.datatypes.party.Party;
 import com.gmail.nossr50.datatypes.party.Party;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.text.StringUtils;
 import com.gmail.nossr50.util.text.StringUtils;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Player;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/party/PartyAcceptCommand.java

@@ -3,7 +3,6 @@ package com.gmail.nossr50.commands.party;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.command.Command;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandExecutor;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/party/PartyChangeOwnerCommand.java

@@ -3,7 +3,6 @@ package com.gmail.nossr50.commands.party;
 import com.gmail.nossr50.datatypes.party.Party;
 import com.gmail.nossr50.datatypes.party.Party;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.commands.CommandUtils;
 import com.gmail.nossr50.util.commands.CommandUtils;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.OfflinePlayer;
 import org.bukkit.OfflinePlayer;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/party/PartyCreateCommand.java

@@ -3,7 +3,6 @@ package com.gmail.nossr50.commands.party;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.command.Command;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandExecutor;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/party/PartyDisbandCommand.java

@@ -5,7 +5,6 @@ import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
 import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.command.Command;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandExecutor;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/party/PartyInfoCommand.java

@@ -6,7 +6,6 @@ import com.gmail.nossr50.datatypes.party.ShareMode;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.ChatColor;
 import org.bukkit.ChatColor;
 import org.bukkit.command.Command;
 import org.bukkit.command.Command;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/party/PartyInviteCommand.java

@@ -4,7 +4,6 @@ import com.gmail.nossr50.datatypes.party.Party;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.commands.CommandUtils;
 import com.gmail.nossr50.util.commands.CommandUtils;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.command.Command;
 import org.bukkit.command.Command;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/party/PartyJoinCommand.java

@@ -4,7 +4,6 @@ import com.gmail.nossr50.datatypes.party.Party;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.commands.CommandUtils;
 import com.gmail.nossr50.util.commands.CommandUtils;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.command.Command;
 import org.bukkit.command.Command;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/party/PartyKickCommand.java

@@ -4,7 +4,6 @@ import com.gmail.nossr50.datatypes.party.Party;
 import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
 import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.commands.CommandUtils;
 import com.gmail.nossr50.util.commands.CommandUtils;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.OfflinePlayer;
 import org.bukkit.OfflinePlayer;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/party/PartyQuitCommand.java

@@ -5,7 +5,6 @@ import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
 import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.command.Command;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandExecutor;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/party/PartyRenameCommand.java

@@ -5,7 +5,6 @@ import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
 import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.command.Command;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandExecutor;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceAcceptCommand.java

@@ -3,7 +3,6 @@ package com.gmail.nossr50.commands.party.alliance;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.command.Command;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandExecutor;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceCommand.java

@@ -5,7 +5,6 @@ import com.gmail.nossr50.datatypes.party.PartyFeature;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.commands.CommandUtils;
 import com.gmail.nossr50.util.commands.CommandUtils;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableList;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceDisbandCommand.java

@@ -4,7 +4,6 @@ import com.gmail.nossr50.datatypes.party.Party;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.command.Command;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandExecutor;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceInviteCommand.java

@@ -4,7 +4,6 @@ import com.gmail.nossr50.datatypes.party.Party;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.commands.CommandUtils;
 import com.gmail.nossr50.util.commands.CommandUtils;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.command.Command;
 import org.bukkit.command.Command;

+ 0 - 1
src/main/java/com/gmail/nossr50/commands/party/teleport/PtpCommand.java

@@ -7,7 +7,6 @@ import com.gmail.nossr50.datatypes.party.PartyTeleportRecord;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.runnables.items.TeleportationWarmup;
 import com.gmail.nossr50.runnables.items.TeleportationWarmup;
 import com.gmail.nossr50.util.EventUtils;
 import com.gmail.nossr50.util.EventUtils;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Misc;

+ 0 - 1
src/main/java/com/gmail/nossr50/datatypes/party/Party.java

@@ -6,7 +6,6 @@ import com.gmail.nossr50.datatypes.experience.FormulaType;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.EventUtils;
 import com.gmail.nossr50.util.EventUtils;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.sounds.SoundManager;
 import com.gmail.nossr50.util.sounds.SoundManager;

+ 0 - 69
src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java

@@ -20,12 +20,9 @@ import com.gmail.nossr50.datatypes.skills.ToolType;
 import com.gmail.nossr50.events.experience.McMMOPlayerPreXpGainEvent;
 import com.gmail.nossr50.events.experience.McMMOPlayerPreXpGainEvent;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.party.ShareHandler;
 import com.gmail.nossr50.party.ShareHandler;
-import com.gmail.nossr50.runnables.skills.AbilityCooldownTask;
 import com.gmail.nossr50.runnables.skills.AbilityDisableTask;
 import com.gmail.nossr50.runnables.skills.AbilityDisableTask;
 import com.gmail.nossr50.runnables.skills.ToolLowerTask;
 import com.gmail.nossr50.runnables.skills.ToolLowerTask;
-import com.gmail.nossr50.skills.AlternateFiringSuperSkill;
 import com.gmail.nossr50.skills.SkillManager;
 import com.gmail.nossr50.skills.SkillManager;
 import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
 import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
 import com.gmail.nossr50.skills.alchemy.AlchemyManager;
 import com.gmail.nossr50.skills.alchemy.AlchemyManager;
@@ -964,72 +961,6 @@ public class McMMOPlayer implements Identified {
         mcMMO.p.getFoliaLib().getImpl().runAtEntityLater(player, new AbilityDisableTask(this, superAbilityType), (long) ticks * Misc.TICK_CONVERSION_FACTOR);
         mcMMO.p.getFoliaLib().getImpl().runAtEntityLater(player, new AbilityDisableTask(this, superAbilityType), (long) ticks * Misc.TICK_CONVERSION_FACTOR);
     }
     }
 
 
-    public void checkCrossbowAbilityActivation() {
-        PrimarySkillType primarySkillType = PrimarySkillType.CROSSBOWS;
-        ToolType tool = ToolType.CROSSBOW;
-        SuperAbilityType superAbilityType = SuperAbilityType.SUPER_SHOTGUN;
-        SubSkillType subSkillType = SubSkillType.CROSSBOWS_SUPER_SHOTGUN;
-        AlternateFiringSuperSkill skillManager = getCrossbowsManager();
-
-        // Check permission
-        if (!superAbilityType.getPermissions(player)) {
-            return;
-        }
-
-        //TODO: This is hacky and temporary solution until skills are move to the new system
-        //Potential problems with this include skills with two super abilities (ie mining)
-        if(!RankUtils.hasUnlockedSubskill(player, subSkillType))
-        {
-            int diff = RankUtils.getSuperAbilityUnlockRequirement(superAbilityType) - getSkillLevel(primarySkillType);
-
-            //Inform the player they are not yet skilled enough
-            NotificationManager.sendPlayerInformation(player,
-                    NotificationType.ABILITY_COOLDOWN,
-                    "Skills.AbilityGateRequirementFail",
-                    String.valueOf(diff),
-                    mcMMO.p.getSkillTools().getLocalizedSkillName(primarySkillType));
-            return;
-        }
-
-        // Call the event
-        if (EventUtils.callPlayerAbilityActivateEvent(player, primarySkillType).isCancelled()) {
-            return;
-        }
-
-        // Check if we can fire the ability
-        if (!skillManager.isReadyToFire()) {
-            return;
-        }
-
-        if (useChatNotifications()) {
-            NotificationManager.sendPlayerInformation(player, NotificationType.SUPER_ABILITY, superAbilityType.getAbilityOn());
-        }
-
-        if (mcMMO.p.getAdvancedConfig().sendAbilityNotificationToOtherPlayers()) {
-            SkillUtils.sendSkillMessage(player, NotificationType.SUPER_ABILITY_ALERT_OTHERS, superAbilityType.getAbilityPlayer());
-        }
-
-        //Sounds
-        SoundManager.worldSendSound(player.getWorld(), player.getLocation(), SoundType.ABILITY_ACTIVATED_GENERIC);
-
-        // TODO: Fire the ability
-        profile.setAbilityDATS(superAbilityType, System.currentTimeMillis());
-        setToolPreparationMode(tool, false);
-        skillManager.resetCharge();
-        skillManager.fireSuper();
-
-        if(!mcMMO.isServerShutdownExecuted()) {
-            mcMMO.p.getFoliaLib().getImpl().runAtEntityLater(
-                    player,
-                    new AbilityCooldownTask(this, superAbilityType),
-                    (long) PerksUtils.handleCooldownPerks(player, superAbilityType.getCooldown()) * Misc.TICK_CONVERSION_FACTOR);
-        }
-    }
-
-    public void chargeCrossbowSuper() {
-        getCrossbowsManager().chargeSuper();
-    }
-
     public void processAbilityActivation(@NotNull PrimarySkillType primarySkillType) {
     public void processAbilityActivation(@NotNull PrimarySkillType primarySkillType) {
         if (!mcMMO.p.getSkillTools().doesPlayerHaveSkillPermission(getPlayer(), primarySkillType)) {
         if (!mcMMO.p.getSkillTools().doesPlayerHaveSkillPermission(getPlayer(), primarySkillType)) {
             return;
             return;

+ 0 - 3
src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java

@@ -22,7 +22,6 @@ public enum SubSkillType {
     ARCHERY_DAZE,
     ARCHERY_DAZE,
     ARCHERY_SKILL_SHOT(20),
     ARCHERY_SKILL_SHOT(20),
     ARCHERY_ARCHERY_LIMIT_BREAK(10),
     ARCHERY_ARCHERY_LIMIT_BREAK(10),
-    ARCHERY_EXPLOSIVE_SHOT(1),
 
 
     /* Axes */
     /* Axes */
     AXES_ARMOR_IMPACT(20),
     AXES_ARMOR_IMPACT(20),
@@ -33,7 +32,6 @@ public enum SubSkillType {
     AXES_SKULL_SPLITTER(1),
     AXES_SKULL_SPLITTER(1),
 
 
     /* CROSSBOWS */
     /* CROSSBOWS */
-    CROSSBOWS_SUPER_SHOTGUN(1),
     CROSSBOWS_CROSSBOWS_LIMIT_BREAK(10),
     CROSSBOWS_CROSSBOWS_LIMIT_BREAK(10),
     CROSSBOWS_TRICK_SHOT(3),
     CROSSBOWS_TRICK_SHOT(3),
     CROSSBOWS_POWERED_SHOT(20),
     CROSSBOWS_POWERED_SHOT(20),
@@ -101,7 +99,6 @@ public enum SubSkillType {
     TAMING_THICK_FUR(1),
     TAMING_THICK_FUR(1),
 
 
     /* Tridents */
     /* Tridents */
-    TRIDENTS_SUPER(1),
     TRIDENTS_IMPALE(10),
     TRIDENTS_IMPALE(10),
     TRIDENTS_TRIDENTS_LIMIT_BREAK(10),
     TRIDENTS_TRIDENTS_LIMIT_BREAK(10),
 
 

+ 0 - 2
src/main/java/com/gmail/nossr50/datatypes/skills/SuperAbilityType.java

@@ -112,8 +112,6 @@ public enum SuperAbilityType {
         TREE_FELLER.subSkillTypeDefinition          = SubSkillType.WOODCUTTING_TREE_FELLER;
         TREE_FELLER.subSkillTypeDefinition          = SubSkillType.WOODCUTTING_TREE_FELLER;
         SERRATED_STRIKES.subSkillTypeDefinition     = SubSkillType.SWORDS_SERRATED_STRIKES;
         SERRATED_STRIKES.subSkillTypeDefinition     = SubSkillType.SWORDS_SERRATED_STRIKES;
         BLAST_MINING.subSkillTypeDefinition         = SubSkillType.MINING_BLAST_MINING;
         BLAST_MINING.subSkillTypeDefinition         = SubSkillType.MINING_BLAST_MINING;
-        TRIDENTS_SUPER_ABILITY.subSkillTypeDefinition = SubSkillType.TRIDENTS_SUPER;
-        SUPER_SHOTGUN.subSkillTypeDefinition = SubSkillType.CROSSBOWS_SUPER_SHOTGUN;
     }
     }
 
 
     private final String abilityOn;
     private final String abilityOn;

+ 0 - 16
src/main/java/com/gmail/nossr50/listeners/PlayerListener.java

@@ -24,7 +24,6 @@ import com.gmail.nossr50.skills.taming.TamingManager;
 import com.gmail.nossr50.util.*;
 import com.gmail.nossr50.util.*;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
 import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
-import com.gmail.nossr50.util.skills.CombatUtils;
 import com.gmail.nossr50.util.skills.RankUtils;
 import com.gmail.nossr50.util.skills.RankUtils;
 import com.gmail.nossr50.util.skills.SkillUtils;
 import com.gmail.nossr50.util.skills.SkillUtils;
 import com.gmail.nossr50.util.sounds.SoundManager;
 import com.gmail.nossr50.util.sounds.SoundManager;
@@ -828,11 +827,6 @@ public class PlayerListener implements Listener {
                             mcMMOPlayer.processAbilityActivation(PrimarySkillType.HERBALISM);
                             mcMMOPlayer.processAbilityActivation(PrimarySkillType.HERBALISM);
                         }
                         }
 
 
-                        // Projectile Skills
-                        if (ItemUtils.isCrossbow(heldItem) || ItemUtils.isBow(heldItem)) {
-                            CombatUtils.processProjectileSkillSuperAbilityActivation(mcMMOPlayer, heldItem);
-                        }
-
                         mcMMOPlayer.processAbilityActivation(PrimarySkillType.AXES);
                         mcMMOPlayer.processAbilityActivation(PrimarySkillType.AXES);
                         mcMMOPlayer.processAbilityActivation(PrimarySkillType.EXCAVATION);
                         mcMMOPlayer.processAbilityActivation(PrimarySkillType.EXCAVATION);
                         mcMMOPlayer.processAbilityActivation(PrimarySkillType.MINING);
                         mcMMOPlayer.processAbilityActivation(PrimarySkillType.MINING);
@@ -904,11 +898,6 @@ public class PlayerListener implements Listener {
                     mcMMOPlayer.processAbilityActivation(PrimarySkillType.SWORDS);
                     mcMMOPlayer.processAbilityActivation(PrimarySkillType.SWORDS);
                     mcMMOPlayer.processAbilityActivation(PrimarySkillType.UNARMED);
                     mcMMOPlayer.processAbilityActivation(PrimarySkillType.UNARMED);
                     mcMMOPlayer.processAbilityActivation(PrimarySkillType.WOODCUTTING);
                     mcMMOPlayer.processAbilityActivation(PrimarySkillType.WOODCUTTING);
-
-                    // Projectile Skills
-                    if (ItemUtils.isCrossbow(heldItem) || ItemUtils.isBow(heldItem)) {
-                        CombatUtils.processProjectileSkillSuperAbilityActivation(mcMMOPlayer, heldItem);
-                    }
                 }
                 }
 
 
                 /* ITEM CHECKS */
                 /* ITEM CHECKS */
@@ -929,11 +918,6 @@ public class PlayerListener implements Listener {
                     break;
                     break;
                 }
                 }
 
 
-                // Check charge up supers (crossbows, etc...)
-                if (ItemUtils.isCrossbow(heldItem)) {
-                    mcMMOPlayer.chargeCrossbowSuper();
-                }
-
                 /* CALL OF THE WILD CHECKS */
                 /* CALL OF THE WILD CHECKS */
                 Material type = heldItem.getType();
                 Material type = heldItem.getType();
                 TamingManager tamingManager = mcMMOPlayer.getTamingManager();
                 TamingManager tamingManager = mcMMOPlayer.getTamingManager();

+ 55 - 3
src/main/java/com/gmail/nossr50/party/PartyManager.java

@@ -55,12 +55,22 @@ public final class PartyManager {
      * @return true if party is full and cannot be joined
      * @return true if party is full and cannot be joined
      */
      */
     public boolean isPartyFull(@NotNull Player player, @NotNull Party targetParty) {
     public boolean isPartyFull(@NotNull Player player, @NotNull Party targetParty) {
+        requireNonNull(player, "player cannot be null!");
+        requireNonNull(targetParty, "targetParty cannot be null!");
         return !Permissions.partySizeBypass(player) && pluginRef.getGeneralConfig().getPartyMaxSize() >= 1 && targetParty.getOnlineMembers().size() >= pluginRef.getGeneralConfig().getPartyMaxSize();
         return !Permissions.partySizeBypass(player) && pluginRef.getGeneralConfig().getPartyMaxSize() >= 1 && targetParty.getOnlineMembers().size() >= pluginRef.getGeneralConfig().getPartyMaxSize();
     }
     }
 
 
     public boolean areAllies(@NotNull Player firstPlayer, @NotNull Player secondPlayer) {
     public boolean areAllies(@NotNull Player firstPlayer, @NotNull Player secondPlayer) {
-        //Profile is not loaded
-        if (UserManager.getPlayer(firstPlayer) == null || UserManager.getPlayer(secondPlayer) == null) {
+        requireNonNull(firstPlayer, "firstPlayer cannot be null!");
+        requireNonNull(secondPlayer, "secondPlayer cannot be null!");
+
+        //Profile not loaded
+        if (UserManager.getPlayer(firstPlayer) == null) {
+            return false;
+        }
+
+        //Profile not loaded
+        if (UserManager.getPlayer(secondPlayer) == null) {
             return false;
             return false;
         }
         }
 
 
@@ -100,6 +110,7 @@ public final class PartyManager {
     }
     }
 
 
     public @NotNull List<Player> getNearVisibleMembers(@NotNull McMMOPlayer mmoPlayer) {
     public @NotNull List<Player> getNearVisibleMembers(@NotNull McMMOPlayer mmoPlayer) {
+        requireNonNull(mmoPlayer, "mmoPlayer cannot be null!");
         List<Player> nearMembers = new ArrayList<>();
         List<Player> nearMembers = new ArrayList<>();
         Party party = mmoPlayer.getParty();
         Party party = mmoPlayer.getParty();
 
 
@@ -126,6 +137,7 @@ public final class PartyManager {
      * @return all the players in the player's party
      * @return all the players in the player's party
      */
      */
     public @NotNull LinkedHashMap<UUID, String> getAllMembers(@NotNull Player player) {
     public @NotNull LinkedHashMap<UUID, String> getAllMembers(@NotNull Player player) {
+        requireNonNull(player, "player cannot be null!");
         Party party = getParty(player);
         Party party = getParty(player);
 
 
         return party == null ? new LinkedHashMap<>() : party.getMembers();
         return party == null ? new LinkedHashMap<>() : party.getMembers();
@@ -138,6 +150,7 @@ public final class PartyManager {
      * @return all online players in this party
      * @return all online players in this party
      */
      */
     public @NotNull List<Player> getOnlineMembers(@NotNull String partyName) {
     public @NotNull List<Player> getOnlineMembers(@NotNull String partyName) {
+        requireNonNull(partyName, "partyName cannot be null!");
         return getOnlineMembers(getParty(partyName));
         return getOnlineMembers(getParty(partyName));
     }
     }
 
 
@@ -148,6 +161,7 @@ public final class PartyManager {
      * @return all online players in this party
      * @return all online players in this party
      */
      */
     public @NotNull List<Player> getOnlineMembers(@NotNull Player player) {
     public @NotNull List<Player> getOnlineMembers(@NotNull Player player) {
+        requireNonNull(player, "player cannot be null!");
         return getOnlineMembers(getParty(player));
         return getOnlineMembers(getParty(player));
     }
     }
 
 
@@ -162,6 +176,7 @@ public final class PartyManager {
      * @return the existing party, null otherwise
      * @return the existing party, null otherwise
      */
      */
     public @Nullable Party getParty(@NotNull String partyName) {
     public @Nullable Party getParty(@NotNull String partyName) {
+        requireNonNull(partyName, "partyName cannot be null!");
         for (Party party : parties) {
         for (Party party : parties) {
             if (party.getName().equalsIgnoreCase(partyName)) {
             if (party.getName().equalsIgnoreCase(partyName)) {
                 return party;
                 return party;
@@ -179,6 +194,7 @@ public final class PartyManager {
      */
      */
     @Deprecated
     @Deprecated
     public @Nullable Party getPlayerParty(@NotNull String playerName) {
     public @Nullable Party getPlayerParty(@NotNull String playerName) {
+        requireNonNull(playerName, "playerName cannot be null!");
         for (Party party : parties) {
         for (Party party : parties) {
             if (party.getMembers().containsValue(playerName)) {
             if (party.getMembers().containsValue(playerName)) {
                 return party;
                 return party;
@@ -195,6 +211,8 @@ public final class PartyManager {
      * @return the existing party, null otherwise
      * @return the existing party, null otherwise
      */
      */
     public @Nullable Party getPlayerParty(@NotNull String playerName, @NotNull UUID uuid) {
     public @Nullable Party getPlayerParty(@NotNull String playerName, @NotNull UUID uuid) {
+        requireNonNull(playerName, "playerName cannot be null!");
+        requireNonNull(uuid, "uuid cannot be null!");
         for (Party party : parties) {
         for (Party party : parties) {
             LinkedHashMap<UUID, String> members = party.getMembers();
             LinkedHashMap<UUID, String> members = party.getMembers();
             if (members.containsKey(uuid) || members.containsValue(playerName)) {
             if (members.containsKey(uuid) || members.containsValue(playerName)) {
@@ -218,7 +236,8 @@ public final class PartyManager {
      * @return the existing party, null otherwise
      * @return the existing party, null otherwise
      */
      */
     public @Nullable Party getParty(@NotNull Player player) {
     public @Nullable Party getParty(@NotNull Player player) {
-        //Profile is not loaded
+        requireNonNull(player, "player cannot be null!");
+        //Profile not loaded
         if (UserManager.getPlayer(player) == null) {
         if (UserManager.getPlayer(player) == null) {
             return null;
             return null;
         }
         }
@@ -246,6 +265,9 @@ public final class PartyManager {
      * @param party  The party
      * @param party  The party
      */
      */
     public void removeFromParty(@NotNull OfflinePlayer player, @NotNull Party party) {
     public void removeFromParty(@NotNull OfflinePlayer player, @NotNull Party party) {
+        requireNonNull(player, "player cannot be null!");
+        requireNonNull(party, "party cannot be null!");
+
         LinkedHashMap<UUID, String> members = party.getMembers();
         LinkedHashMap<UUID, String> members = party.getMembers();
         String playerName = player.getName();
         String playerName = player.getName();
 
 
@@ -273,6 +295,7 @@ public final class PartyManager {
      * @param mcMMOPlayer The player to remove
      * @param mcMMOPlayer The player to remove
      */
      */
     public void removeFromParty(@NotNull McMMOPlayer mcMMOPlayer) {
     public void removeFromParty(@NotNull McMMOPlayer mcMMOPlayer) {
+        requireNonNull(mcMMOPlayer, "mcMMOPlayer cannot be null!");
         if (mcMMOPlayer.getParty() == null) {
         if (mcMMOPlayer.getParty() == null) {
             return;
             return;
         }
         }
@@ -288,6 +311,7 @@ public final class PartyManager {
      * @deprecated Use {@link #disbandParty(McMMOPlayer, Party)}
      * @deprecated Use {@link #disbandParty(McMMOPlayer, Party)}
      */
      */
     public void disbandParty(@NotNull Party party) {
     public void disbandParty(@NotNull Party party) {
+        requireNonNull(party, "party cannot be null!");
         disbandParty(null, party);
         disbandParty(null, party);
     }
     }
 
 
@@ -298,6 +322,7 @@ public final class PartyManager {
      * @param party The party to remove
      * @param party The party to remove
      */
      */
     public void disbandParty(@Nullable McMMOPlayer mcMMOPlayer, @NotNull Party party) {
     public void disbandParty(@Nullable McMMOPlayer mcMMOPlayer, @NotNull Party party) {
+        requireNonNull(party, "party cannot be null!");
         //TODO: Potential issues with unloaded profile?
         //TODO: Potential issues with unloaded profile?
         for (final Player member : party.getOnlineMembers()) {
         for (final Player member : party.getOnlineMembers()) {
             //Profile not loaded
             //Profile not loaded
@@ -379,6 +404,7 @@ public final class PartyManager {
      * @param mcMMOPlayer The player to add to the party
      * @param mcMMOPlayer The player to add to the party
      */
      */
     public void joinInvitedParty(@NotNull McMMOPlayer mcMMOPlayer) {
     public void joinInvitedParty(@NotNull McMMOPlayer mcMMOPlayer) {
+        requireNonNull(mcMMOPlayer, "mcMMOPlayer cannot be null!");
         Party invite = mcMMOPlayer.getPartyInvite();
         Party invite = mcMMOPlayer.getPartyInvite();
 
 
         // Check if the party still exists, it might have been disbanded
         // Check if the party still exists, it might have been disbanded
@@ -406,6 +432,7 @@ public final class PartyManager {
      * @param mcMMOPlayer The player who accepts the alliance invite
      * @param mcMMOPlayer The player who accepts the alliance invite
      */
      */
     public void acceptAllianceInvite(@NotNull McMMOPlayer mcMMOPlayer) {
     public void acceptAllianceInvite(@NotNull McMMOPlayer mcMMOPlayer) {
+        requireNonNull(mcMMOPlayer, "mcMMOPlayer cannot be null!");
         Party invite = mcMMOPlayer.getPartyAllianceInvite();
         Party invite = mcMMOPlayer.getPartyAllianceInvite();
         Player player = mcMMOPlayer.getPlayer();
         Player player = mcMMOPlayer.getPlayer();
 
 
@@ -426,6 +453,9 @@ public final class PartyManager {
     }
     }
 
 
     public void createAlliance(@NotNull Party firstParty, @NotNull Party secondParty) {
     public void createAlliance(@NotNull Party firstParty, @NotNull Party secondParty) {
+        requireNonNull(firstParty, "firstParty cannot be null!");
+        requireNonNull(secondParty, "secondParty cannot be null!");
+
         firstParty.setAlly(secondParty);
         firstParty.setAlly(secondParty);
         secondParty.setAlly(firstParty);
         secondParty.setAlly(firstParty);
 
 
@@ -439,6 +469,10 @@ public final class PartyManager {
     }
     }
 
 
     public boolean disbandAlliance(@NotNull Player player, @NotNull Party firstParty, @NotNull Party secondParty) {
     public boolean disbandAlliance(@NotNull Player player, @NotNull Party firstParty, @NotNull Party secondParty) {
+        requireNonNull(player, "player cannot be null!");
+        requireNonNull(firstParty, "firstParty cannot be null!");
+        requireNonNull(secondParty, "secondParty cannot be null!");
+
         if (!handlePartyChangeAllianceEvent(player, firstParty.getName(), secondParty.getName(), McMMOPartyAllianceChangeEvent.EventReason.DISBAND_ALLIANCE)) {
         if (!handlePartyChangeAllianceEvent(player, firstParty.getName(), secondParty.getName(), McMMOPartyAllianceChangeEvent.EventReason.DISBAND_ALLIANCE)) {
             return false;
             return false;
         }
         }
@@ -448,6 +482,8 @@ public final class PartyManager {
     }
     }
 
 
     private void disbandAlliance(@NotNull Party firstParty, @NotNull Party secondParty) {
     private void disbandAlliance(@NotNull Party firstParty, @NotNull Party secondParty) {
+        requireNonNull(firstParty, "firstParty cannot be null!");
+        requireNonNull(secondParty, "secondParty cannot be null!");
         firstParty.setAlly(null);
         firstParty.setAlly(null);
         secondParty.setAlly(null);
         secondParty.setAlly(null);
 
 
@@ -467,6 +503,9 @@ public final class PartyManager {
      * @param party       The party
      * @param party       The party
      */
      */
     public void addToParty(@NotNull McMMOPlayer mcMMOPlayer, @NotNull Party party) {
     public void addToParty(@NotNull McMMOPlayer mcMMOPlayer, @NotNull Party party) {
+        requireNonNull(mcMMOPlayer, "mcMMOPlayer cannot be null!");
+        requireNonNull(party, "party cannot be null!");
+
         Player player = mcMMOPlayer.getPlayer();
         Player player = mcMMOPlayer.getPlayer();
         String playerName = player.getName();
         String playerName = player.getName();
 
 
@@ -483,6 +522,7 @@ public final class PartyManager {
      * @return the leader of the party
      * @return the leader of the party
      */
      */
     public @Nullable String getPartyLeaderName(@NotNull String partyName) {
     public @Nullable String getPartyLeaderName(@NotNull String partyName) {
+        requireNonNull(partyName, "partyName cannot be null!");
         Party party = getParty(partyName);
         Party party = getParty(partyName);
 
 
         return party == null ? null : party.getLeader().getPlayerName();
         return party == null ? null : party.getLeader().getPlayerName();
@@ -495,6 +535,8 @@ public final class PartyManager {
      * @param party The party
      * @param party The party
      */
      */
     public void setPartyLeader(@NotNull UUID uuid, @NotNull Party party) {
     public void setPartyLeader(@NotNull UUID uuid, @NotNull Party party) {
+        requireNonNull(uuid, "uuid cannot be null!");
+        requireNonNull(party, "party cannot be null!");
         OfflinePlayer player = pluginRef.getServer().getOfflinePlayer(uuid);
         OfflinePlayer player = pluginRef.getServer().getOfflinePlayer(uuid);
         UUID leaderUniqueId = party.getLeader().getUniqueId();
         UUID leaderUniqueId = party.getLeader().getUniqueId();
 
 
@@ -519,6 +561,7 @@ public final class PartyManager {
      * @return true if the player can invite
      * @return true if the player can invite
      */
      */
     public boolean canInvite(@NotNull McMMOPlayer mcMMOPlayer) {
     public boolean canInvite(@NotNull McMMOPlayer mcMMOPlayer) {
+        requireNonNull(mcMMOPlayer, "mcMMOPlayer cannot be null!");
         Party party = mcMMOPlayer.getParty();
         Party party = mcMMOPlayer.getParty();
 
 
         return !party.isLocked() || party.getLeader().getUniqueId().equals(mcMMOPlayer.getPlayer().getUniqueId());
         return !party.isLocked() || party.getLeader().getUniqueId().equals(mcMMOPlayer.getPlayer().getUniqueId());
@@ -532,6 +575,9 @@ public final class PartyManager {
      * @return true if a party with that name exists, false otherwise
      * @return true if a party with that name exists, false otherwise
      */
      */
     public boolean checkPartyExistence(@NotNull Player player, @NotNull String partyName) {
     public boolean checkPartyExistence(@NotNull Player player, @NotNull String partyName) {
+        requireNonNull(player, "player cannot be null!");
+        requireNonNull(partyName, "partyName cannot be null!");
+
         if (getParty(partyName) == null) {
         if (getParty(partyName) == null) {
             return false;
             return false;
         }
         }
@@ -548,6 +594,9 @@ public final class PartyManager {
      * @return true if the party was joined successfully, false otherwise
      * @return true if the party was joined successfully, false otherwise
      */
      */
     public boolean changeOrJoinParty(@NotNull McMMOPlayer mmoPlayer, @NotNull String newPartyName) {
     public boolean changeOrJoinParty(@NotNull McMMOPlayer mmoPlayer, @NotNull String newPartyName) {
+        requireNonNull(mmoPlayer, "mmoPlayer cannot be null!");
+        requireNonNull(newPartyName, "newPartyName cannot be null!");
+
         final Player player = mmoPlayer.getPlayer();
         final Player player = mmoPlayer.getPlayer();
 
 
         if (mmoPlayer.inParty()) {
         if (mmoPlayer.inParty()) {
@@ -571,6 +620,9 @@ public final class PartyManager {
      * @return true if they are in the same party, false otherwise
      * @return true if they are in the same party, false otherwise
      */
      */
     public boolean inSameParty(@NotNull Player firstPlayer, @NotNull Player secondPlayer) {
     public boolean inSameParty(@NotNull Player firstPlayer, @NotNull Player secondPlayer) {
+        requireNonNull(firstPlayer, "firstPlayer cannot be null!");
+        requireNonNull(secondPlayer, "secondPlayer cannot be null!");
+
         //Profile not loaded
         //Profile not loaded
         if (UserManager.getPlayer(firstPlayer) == null) {
         if (UserManager.getPlayer(firstPlayer) == null) {
             return false;
             return false;

+ 0 - 1
src/main/java/com/gmail/nossr50/runnables/SaveTimerTask.java

@@ -2,7 +2,6 @@ package com.gmail.nossr50.runnables;
 
 
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.runnables.player.PlayerProfileSaveTask;
 import com.gmail.nossr50.runnables.player.PlayerProfileSaveTask;
 import com.gmail.nossr50.util.CancellableRunnable;
 import com.gmail.nossr50.util.CancellableRunnable;
 import com.gmail.nossr50.util.LogUtils;
 import com.gmail.nossr50.util.LogUtils;

+ 0 - 1
src/main/java/com/gmail/nossr50/runnables/items/TeleportationWarmup.java

@@ -3,7 +3,6 @@ package com.gmail.nossr50.runnables.items;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.CancellableRunnable;
 import com.gmail.nossr50.util.CancellableRunnable;
 import com.gmail.nossr50.util.EventUtils;
 import com.gmail.nossr50.util.EventUtils;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Misc;

+ 0 - 1
src/main/java/com/gmail/nossr50/runnables/party/PartyAutoKickTask.java

@@ -2,7 +2,6 @@ package com.gmail.nossr50.runnables.party;
 
 
 import com.gmail.nossr50.datatypes.party.Party;
 import com.gmail.nossr50.datatypes.party.Party;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.util.CancellableRunnable;
 import com.gmail.nossr50.util.CancellableRunnable;
 import org.bukkit.OfflinePlayer;
 import org.bukkit.OfflinePlayer;
 
 

+ 0 - 1
src/main/java/com/gmail/nossr50/runnables/skills/RuptureTask.java

@@ -1,6 +1,5 @@
 package com.gmail.nossr50.runnables.skills;
 package com.gmail.nossr50.runnables.skills;
 
 
-import com.gmail.nossr50.datatypes.MobHealthbarType;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.events.skills.rupture.McMMOEntityDamageByRuptureEvent;
 import com.gmail.nossr50.events.skills.rupture.McMMOEntityDamageByRuptureEvent;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;

+ 0 - 13
src/main/java/com/gmail/nossr50/skills/AlternateFiringSuperSkill.java

@@ -1,13 +0,0 @@
-package com.gmail.nossr50.skills;
-
-public interface AlternateFiringSuperSkill {
-    int chargeSuper();
-
-    void fireSuper();
-
-    void resetCharge();
-
-    boolean isReadyToFire();
-
-    long lastChargeTime();
-}

+ 0 - 1
src/main/java/com/gmail/nossr50/skills/crossbows/Crossbows.java

@@ -1,7 +1,6 @@
 package com.gmail.nossr50.skills.crossbows;
 package com.gmail.nossr50.skills.crossbows;
 
 
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
-import com.gmail.nossr50.util.MetadataConstants;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.entity.Arrow;
 import org.bukkit.entity.Arrow;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Player;

+ 1 - 40
src/main/java/com/gmail/nossr50/skills/crossbows/CrossbowsManager.java

@@ -4,7 +4,6 @@ import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 import com.gmail.nossr50.datatypes.skills.SubSkillType;
 import com.gmail.nossr50.datatypes.skills.SubSkillType;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.skills.AlternateFiringSuperSkill;
 import com.gmail.nossr50.skills.SkillManager;
 import com.gmail.nossr50.skills.SkillManager;
 import com.gmail.nossr50.util.MetadataConstants;
 import com.gmail.nossr50.util.MetadataConstants;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Permissions;
@@ -23,15 +22,11 @@ import org.jetbrains.annotations.NotNull;
 
 
 import static com.gmail.nossr50.util.skills.CombatUtils.delayArrowMetaCleanup;
 import static com.gmail.nossr50.util.skills.CombatUtils.delayArrowMetaCleanup;
 
 
-public class CrossbowsManager extends SkillManager implements AlternateFiringSuperSkill {
+public class CrossbowsManager extends SkillManager {
     public CrossbowsManager(McMMOPlayer mmoPlayer) {
     public CrossbowsManager(McMMOPlayer mmoPlayer) {
         super(mmoPlayer, PrimarySkillType.CROSSBOWS);
         super(mmoPlayer, PrimarySkillType.CROSSBOWS);
     }
     }
 
 
-    private long lastChargeTime = 0;
-
-    private int crossbowSuperWindupState = 0;
-
     public void handleRicochet(@NotNull Plugin pluginRef, @NotNull Arrow arrow, @NotNull Vector hitBlockNormal) {
     public void handleRicochet(@NotNull Plugin pluginRef, @NotNull Arrow arrow, @NotNull Vector hitBlockNormal) {
         if(!arrow.isShotFromCrossbow())
         if(!arrow.isShotFromCrossbow())
             return;
             return;
@@ -110,38 +105,4 @@ public class CrossbowsManager extends SkillManager implements AlternateFiringSup
             return oldDamage;
             return oldDamage;
         }
         }
     }
     }
-
-    @Override
-    public int chargeSuper() {
-        if (lastChargeTime < System.currentTimeMillis() - 2000) {
-            crossbowSuperWindupState = 0;
-        }
-
-        if (crossbowSuperWindupState < 3) {
-            crossbowSuperWindupState++;
-        }
-
-        lastChargeTime = System.currentTimeMillis();
-        return crossbowSuperWindupState;
-    }
-
-    @Override
-    public void fireSuper() {
-        // TODO: Impl
-    }
-
-    @Override
-    public void resetCharge() {
-        crossbowSuperWindupState = 0;
-    }
-
-    @Override
-    public boolean isReadyToFire() {
-        return crossbowSuperWindupState == 3;
-    }
-
-    @Override
-    public long lastChargeTime() {
-        return lastChargeTime;
-    }
 }
 }

+ 0 - 11
src/main/java/com/gmail/nossr50/util/Permissions.java

@@ -167,18 +167,11 @@ public final class Permissions {
      */
      */
 
 
     public static boolean skillEnabled(Permissible permissible, PrimarySkillType skill) {
     public static boolean skillEnabled(Permissible permissible, PrimarySkillType skill) {
-        // hack to disable tridents for now
-        if (skill == PrimarySkillType.TRIDENTS)
-            return false;
-
         return permissible.hasPermission("mcmmo.skills." + skill.toString().toLowerCase(Locale.ENGLISH));
         return permissible.hasPermission("mcmmo.skills." + skill.toString().toLowerCase(Locale.ENGLISH));
     }
     }
 
 
     public static boolean vanillaXpBoost(Permissible permissible, PrimarySkillType skill) { return permissible.hasPermission("mcmmo.ability." + skill.toString().toLowerCase(Locale.ENGLISH) + ".vanillaxpboost"); }
     public static boolean vanillaXpBoost(Permissible permissible, PrimarySkillType skill) { return permissible.hasPermission("mcmmo.ability." + skill.toString().toLowerCase(Locale.ENGLISH) + ".vanillaxpboost"); }
     public static boolean isSubSkillEnabled(Permissible permissible, SubSkillType subSkillType) {
     public static boolean isSubSkillEnabled(Permissible permissible, SubSkillType subSkillType) {
-        // hack to disable supers that aren't coded yet
-        if(subSkillType == SubSkillType.TRIDENTS_SUPER)
-            return false;
         return permissible.hasPermission(subSkillType.getPermissionNodeAddress());
         return permissible.hasPermission(subSkillType.getPermissionNodeAddress());
     }
     }
 
 
@@ -293,10 +286,6 @@ public final class Permissions {
      * @return true if the player has permission and has the skill unlocked
      * @return true if the player has permission and has the skill unlocked
      */
      */
     public static boolean canUseSubSkill(@NotNull Player player, @NotNull SubSkillType subSkillType) {
     public static boolean canUseSubSkill(@NotNull Player player, @NotNull SubSkillType subSkillType) {
-        // Hack to disable tridents for now
-        if (subSkillType.getParentSkill() == PrimarySkillType.TRIDENTS)
-            return false;
-
         return isSubSkillEnabled(player, subSkillType) && RankUtils.hasUnlockedSubskill(player, subSkillType);
         return isSubSkillEnabled(player, subSkillType) && RankUtils.hasUnlockedSubskill(player, subSkillType);
     }
     }
 }
 }

+ 0 - 12
src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java

@@ -10,7 +10,6 @@ import com.gmail.nossr50.datatypes.skills.SubSkillType;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.metadata.MobMetaFlagType;
 import com.gmail.nossr50.metadata.MobMetaFlagType;
 import com.gmail.nossr50.metadata.MobMetadataService;
 import com.gmail.nossr50.metadata.MobMetadataService;
-import com.gmail.nossr50.party.PartyManager;
 import com.gmail.nossr50.runnables.skills.AwardCombatXpTask;
 import com.gmail.nossr50.runnables.skills.AwardCombatXpTask;
 import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
 import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
 import com.gmail.nossr50.skills.archery.ArcheryManager;
 import com.gmail.nossr50.skills.archery.ArcheryManager;
@@ -46,17 +45,6 @@ public final class CombatUtils {
         return mcMMO.getMetadataService().getMobMetadataService();
         return mcMMO.getMetadataService().getMobMetadataService();
     }
     }
 
 
-    // TODO: Unit tests
-    public static void processProjectileSkillSuperAbilityActivation(McMMOPlayer mmoPlayer, ItemStack heldItem) {
-        // TODO: Support archery super as well
-        if (heldItem != null && mmoPlayer != null) {
-            if (ItemUtils.isCrossbow(heldItem)) {
-                mmoPlayer.checkCrossbowAbilityActivation();
-            }
-        }
-    }
-
-    //Likely.. because who knows what plugins are throwing around
     public static boolean isDamageLikelyFromNormalCombat(@NotNull DamageCause damageCause) {
     public static boolean isDamageLikelyFromNormalCombat(@NotNull DamageCause damageCause) {
         return switch (damageCause) {
         return switch (damageCause) {
             case ENTITY_ATTACK, ENTITY_SWEEP_ATTACK, PROJECTILE -> true;
             case ENTITY_ATTACK, ENTITY_SWEEP_ATTACK, PROJECTILE -> true;

+ 1 - 7
src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java

@@ -362,13 +362,7 @@ public final class SkillUtils {
      * @param subSkillType target subskill
      * @param subSkillType target subskill
      * @return true if the player has permission and has the skill unlocked
      * @return true if the player has permission and has the skill unlocked
      */
      */
-    public static boolean canUseSubskill(Player player, SubSkillType subSkillType)
-    {
-        requireNonNull(subSkillType, "subSkillType cannot be null");
-        // hack to disable supers that aren't coded yet
-        if(subSkillType == SubSkillType.TRIDENTS_SUPER || subSkillType == SubSkillType.CROSSBOWS_SUPER_SHOTGUN)
-            return false;
-
+    public static boolean canUseSubskill(Player player, @NotNull SubSkillType subSkillType) {
         return Permissions.isSubSkillEnabled(player, subSkillType) && RankUtils.hasUnlockedSubskill(player, subSkillType);
         return Permissions.isSubSkillEnabled(player, subSkillType) && RankUtils.hasUnlockedSubskill(player, subSkillType);
     }
     }
 }
 }

+ 2 - 2
src/main/resources/advanced.yml

@@ -5,7 +5,7 @@
 #  For advanced users only! There is no need to change anything here.
 #  For advanced users only! There is no need to change anything here.
 #
 #
 #  You can customize almost every aspect of every skill here.
 #  You can customize almost every aspect of every skill here.
-#  Its mainly here if you've customized the experience formula.
+#  It's mainly here if you've customized the experience formula.
 #  Configure at what level you get better with certain abilities.
 #  Configure at what level you get better with certain abilities.
 #
 #
 #####
 #####
@@ -20,7 +20,7 @@ Feedback:
     PlayerTips: true
     PlayerTips: true
     SkillCommand:
     SkillCommand:
         BlankLinesAboveHeader: true
         BlankLinesAboveHeader: true
-    # If sendtitles is true messages will be sent using the title api (BIG TEXT ON SCREEN)
+    # If sendtitles is true, messages will be sent using the title api (BIG TEXT ON SCREEN)
     Events:
     Events:
         XP:
         XP:
             SendTitles: true
             SendTitles: true

+ 12 - 6
src/main/resources/locale/locale_en_US.properties

@@ -432,9 +432,6 @@ Crossbows.Skills.SSG.Other.On=&a{0}&2 used &Super Shotgun!
 Crossbows.SubSkill.PoweredShot.Name=Powered Shot
 Crossbows.SubSkill.PoweredShot.Name=Powered Shot
 Crossbows.SubSkill.PoweredShot.Description=Increases damage done with crossbows
 Crossbows.SubSkill.PoweredShot.Description=Increases damage done with crossbows
 Crossbows.SubSkill.PoweredShot.Stat=Powered Shot Bonus Damage
 Crossbows.SubSkill.PoweredShot.Stat=Powered Shot Bonus Damage
-Crossbows.SubSkill.SuperShotgun.Name=Super Shotgun
-Crossbows.SubSkill.SuperShotgun.Description=Shoot dozens of arrows at once
-Crossbows.SubSkill.SuperShotgun.Stat=Per Projectile damage &a{0}
 Crossbows.SubSkill.CrossbowsLimitBreak.Name=Crossbows Limit Break
 Crossbows.SubSkill.CrossbowsLimitBreak.Name=Crossbows Limit Break
 Crossbows.SubSkill.CrossbowsLimitBreak.Description=Breaking your limits. Increased damage against tough opponents. Intended for PVP, up to server settings for whether it will boost damage in PVE.
 Crossbows.SubSkill.CrossbowsLimitBreak.Description=Breaking your limits. Increased damage against tough opponents. Intended for PVP, up to server settings for whether it will boost damage in PVE.
 Crossbows.SubSkill.CrossbowsLimitBreak.Stat=Limit Break Max DMG
 Crossbows.SubSkill.CrossbowsLimitBreak.Stat=Limit Break Max DMG
@@ -451,9 +448,6 @@ Tridents.Ability.Lower=&7You lower your trident.
 Tridents.Ability.Ready=&3You &6ready&3 your Trident.
 Tridents.Ability.Ready=&3You &6ready&3 your Trident.
 Tridents.Skills.TA.Refresh=&aYour &eSuper &aability is refreshed!
 Tridents.Skills.TA.Refresh=&aYour &eSuper &aability is refreshed!
 Tridents.Skills.TA.Other.On=&a{0}&2 used Trident &Super!
 Tridents.Skills.TA.Other.On=&a{0}&2 used Trident &Super!
-Tridents.SubSkill.SuperAbility.Name=Tridents Super Ability
-Tridents.SubSkill.SuperAbility.Description=N/A
-Tridents.SubSkill.SuperAbility.Stat=N/A
 Tridents.SubSkill.Impale.Name=Impale
 Tridents.SubSkill.Impale.Name=Impale
 Tridents.SubSkill.Impale.Description=Increases damage done with tridents
 Tridents.SubSkill.Impale.Description=Increases damage done with tridents
 Tridents.SubSkill.Impale.Stat=Impale Bonus Damage
 Tridents.SubSkill.Impale.Stat=Impale Bonus Damage
@@ -462,6 +456,18 @@ Tridents.SubSkill.TridentsLimitBreak.Description=Breaking your limits. Increased
 Tridents.SubSkill.TridentsLimitBreak.Stat=Limit Break Max DMG
 Tridents.SubSkill.TridentsLimitBreak.Stat=Limit Break Max DMG
 Tridents.Listener=Tridents:
 Tridents.Listener=Tridents:
 
 
+#MACES
+Maces.SkillName=MACES
+Maces.Ability.Lower=&7You lower your mace.
+Maces.Ability.Ready=&3You &6ready&3 your Mace.
+Maces.Skills.MaceSmash.Refresh=&aYour &eGiga Smash &aability is refreshed!
+Maces.Skills.MaceSmash.Other.On=&a{0}&2 used &cGiga Smash!
+Maces.SubSkill.GigaSmash.Name=Giga Smash
+Maces.SubSkill.MacesLimitBreak.Name=Maces Limit Break
+Maces.SubSkill.MacesLimitBreak.Description=Breaking your limits. Increased damage against tough opponents. Intended for PVP, up to server settings for whether it will boost damage in PVE.
+Maces.SubSkill.MacesLimitBreak.Stat=Limit Break Max DMG
+Maces.Listener=Maces:
+
 #SWORDS
 #SWORDS
 Swords.Ability.Lower=&7You lower your sword.
 Swords.Ability.Lower=&7You lower your sword.
 Swords.Ability.Ready=&3You &6ready&3 your Sword.
 Swords.Ability.Ready=&3You &6ready&3 your Sword.

+ 0 - 6
src/main/resources/plugin.yml

@@ -338,12 +338,9 @@ permissions:
     mcmmo.ability.crossbows.all:
     mcmmo.ability.crossbows.all:
             description: Allows access to all Crossbows abilities
             description: Allows access to all Crossbows abilities
             children:
             children:
-                mcmmo.ability.crossbows.supershotgun: true
                 mcmmo.ability.crossbows.trickshot: true
                 mcmmo.ability.crossbows.trickshot: true
                 mcmmo.ability.crossbows.poweredshot: true
                 mcmmo.ability.crossbows.poweredshot: true
                 mcmmo.ability.crossbows.crossbowslimitbreak: true
                 mcmmo.ability.crossbows.crossbowslimitbreak: true
-    mcmmo.ability.crossbows.supershotgun:
-            description: Allows access to the Super Shotgun super ability
     mcmmo.ability.crossbows.crossbowslimitbreak:
     mcmmo.ability.crossbows.crossbowslimitbreak:
             description: Adds damage to crossbows
             description: Adds damage to crossbows
     mcmmo.ability.crossbows.trickshot:
     mcmmo.ability.crossbows.trickshot:
@@ -722,11 +719,8 @@ permissions:
     mcmmo.ability.tridents.all:
     mcmmo.ability.tridents.all:
         description: Allows access to all Trident abilities
         description: Allows access to all Trident abilities
         children:
         children:
-            mcmmo.ability.tridents.superability: true
             mcmmo.ability.tridents.impale: true
             mcmmo.ability.tridents.impale: true
             mcmmo.ability.tridents.tridentslimitbreak: true
             mcmmo.ability.tridents.tridentslimitbreak: true
-    mcmmo.ability.tridents.superability:
-        description: Allows access to tridents super ability
     mcmmo.ability.tridents.impale:
     mcmmo.ability.tridents.impale:
         description: Allows access to tridents Impale ability
         description: Allows access to tridents Impale ability
     mcmmo.ability.tridents.tridentslimitbreak:
     mcmmo.ability.tridents.tridentslimitbreak:

+ 0 - 15
src/main/resources/skillranks.yml

@@ -31,11 +31,6 @@ Alchemy:
             Rank_7: 900
             Rank_7: 900
             Rank_8: 1000
             Rank_8: 1000
 Archery:
 Archery:
-    ExplosiveShot:
-        Standard:
-            Rank_1: 5
-        RetroMode:
-            Rank_1: 50
     ArcheryLimitBreak:
     ArcheryLimitBreak:
         Standard:
         Standard:
             Rank_1: 10
             Rank_1: 10
@@ -282,11 +277,6 @@ Crossbows:
             Rank_8: 800
             Rank_8: 800
             Rank_9: 900
             Rank_9: 900
             Rank_10: 1000
             Rank_10: 1000
-    SuperShotgun:
-        Standard:
-            Rank_1: 5
-        RetroMode:
-            Rank_1: 50
 Tridents:
 Tridents:
     TridentsLimitBreak:
     TridentsLimitBreak:
         Standard:
         Standard:
@@ -311,11 +301,6 @@ Tridents:
             Rank_8: 800
             Rank_8: 800
             Rank_9: 900
             Rank_9: 900
             Rank_10: 1000
             Rank_10: 1000
-    TridentsSuperAbility:
-        Standard:
-            Rank_1: 5
-        RetroMode:
-            Rank_1: 50
     Impale:
     Impale:
         Standard:
         Standard:
             Rank_1: 5
             Rank_1: 5

+ 2 - 2
src/test/java/com/gmail/nossr50/party/PartyManagerTest.java

@@ -78,7 +78,7 @@ class PartyManagerTest extends MMOTestEnvironment {
         when(player.getUniqueId()).thenReturn(new UUID(0, 0));
         when(player.getUniqueId()).thenReturn(new UUID(0, 0));
 
 
         // When & Then
         // When & Then
-        assertThrows(IllegalArgumentException.class,
+        assertThrows(NullPointerException.class,
                 () -> partyManager.createParty(mmoPlayer, null, partyPassword));
                 () -> partyManager.createParty(mmoPlayer, null, partyPassword));
     }
     }
 
 
@@ -90,7 +90,7 @@ class PartyManagerTest extends MMOTestEnvironment {
         String partyPassword = "somePassword";
         String partyPassword = "somePassword";
 
 
         // When & Then
         // When & Then
-        assertThrows(IllegalArgumentException.class,
+        assertThrows(NullPointerException.class,
                 () -> partyManager.createParty(null, partyName, partyPassword));
                 () -> partyManager.createParty(null, partyName, partyPassword));
     }
     }