From 3d6b9ba53994af24b35f6a4b9ebb9060dc61cdeb Mon Sep 17 00:00:00 2001 From: nossr50 Date: Tue, 16 Mar 2021 16:16:00 -0700 Subject: [PATCH] Discard more unfinished API, eliminate more errors --- .../nossr50/commands/McImportCommand.java | 336 ------------------ .../nossr50/commands/McabilityCommand.java | 29 -- .../commands/database/McremoveCommand.java | 54 --- .../nossr50/commands/party/PartyCommand.java | 6 - .../commands/party/PartyJoinCommand.java | 88 ----- .../commands/skills/TridentsCommand.java | 7 +- .../experience/ExperienceContextBuilder.java | 18 - .../datatypes/experience/ExperienceGain.java | 20 -- .../experience/ExperienceGainBuilder.java | 5 - .../experience/ExperienceProcessor.java | 5 - .../experience/ExperienceVector.java | 6 - .../OfflineExperienceProcessor.java | 2 +- .../experience/OnlineExperienceProcessor.java | 6 +- .../experience/PartyExperienceGain.java | 11 - .../context/BlockExperienceContextImpl.java | 24 -- .../context/CombatExperienceContextImpl.java | 30 -- .../context/NullExperienceContext.java | 14 - .../datatypes/player/AbstractMMOPlayer.java | 6 +- .../datatypes/player/CooldownManager.java | 4 +- .../datatypes/player/MMODataBuilder.java | 7 +- ...PlayerData.java => MMOPlayerDataImpl.java} | 26 +- .../nossr50/datatypes/player/McMMOPlayer.java | 2 +- .../datatypes/player/PlayerProfile.java | 2 +- .../nossr50/listeners/PlayerListener.java | 25 +- .../commands/CommandRegistrationManager.java | 1 - .../nossr50/util/player/UserManager.java | 36 ++ 26 files changed, 69 insertions(+), 701 deletions(-) delete mode 100644 src/main/java/com/gmail/nossr50/commands/McImportCommand.java delete mode 100644 src/main/java/com/gmail/nossr50/commands/McabilityCommand.java delete mode 100644 src/main/java/com/gmail/nossr50/commands/database/McremoveCommand.java delete mode 100644 src/main/java/com/gmail/nossr50/commands/party/PartyJoinCommand.java delete mode 100644 src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceContextBuilder.java delete mode 100644 src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceGain.java delete mode 100644 src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceGainBuilder.java delete mode 100644 src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceProcessor.java delete mode 100644 src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceVector.java delete mode 100644 src/main/java/com/gmail/nossr50/datatypes/experience/PartyExperienceGain.java delete mode 100644 src/main/java/com/gmail/nossr50/datatypes/experience/context/BlockExperienceContextImpl.java delete mode 100644 src/main/java/com/gmail/nossr50/datatypes/experience/context/CombatExperienceContextImpl.java delete mode 100644 src/main/java/com/gmail/nossr50/datatypes/experience/context/NullExperienceContext.java rename src/main/java/com/gmail/nossr50/datatypes/player/{PersistentPlayerData.java => MMOPlayerDataImpl.java} (92%) diff --git a/src/main/java/com/gmail/nossr50/commands/McImportCommand.java b/src/main/java/com/gmail/nossr50/commands/McImportCommand.java deleted file mode 100644 index ce43f9675..000000000 --- a/src/main/java/com/gmail/nossr50/commands/McImportCommand.java +++ /dev/null @@ -1,336 +0,0 @@ -package com.gmail.nossr50.commands; - -import com.gmail.nossr50.datatypes.skills.ModConfigType; -import com.gmail.nossr50.mcMMO; -import com.gmail.nossr50.util.Misc; -import org.bukkit.Material; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.jetbrains.annotations.NotNull; - -import java.io.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Locale; - -public class McImportCommand implements CommandExecutor { - int fileAmount; - - @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { - if (args.length == 0) { - importModConfig(); - return true; - } - return false; - } - - public boolean importModConfig() { - String importFilePath = mcMMO.getModDirectory() + File.separator + "import"; - File importFile = new File(importFilePath, "import.log"); - mcMMO.p.getLogger().info("Starting import of mod materials..."); - fileAmount = 0; - - HashMap> materialNames = new HashMap<>(); - - BufferedReader in = null; - - try { - // Open the file - in = new BufferedReader(new FileReader(importFile)); - - String line; - String materialName; - String modName; - - // While not at the end of the file - while ((line = in.readLine()) != null) { - String[] split1 = line.split("material "); - - if (split1.length != 2) { - continue; - } - - String[] split2 = split1[1].split(" with"); - - if (split2.length != 2) { - continue; - } - - materialName = split2[0]; - - // Categorise each material under a mod config type - ModConfigType type = ModConfigType.getModConfigType(materialName); - - if (!materialNames.containsKey(type)) { - materialNames.put(type, new ArrayList<>()); - } - - materialNames.get(type).add(materialName); - } - } - catch (FileNotFoundException e) { - mcMMO.p.getLogger().warning("Could not find " + importFile.getAbsolutePath() + " ! (No such file or directory)"); - mcMMO.p.getLogger().warning("Copy and paste latest.log to " + importFile.getParentFile().getAbsolutePath() + " and rename it to import.log"); - return false; - } - catch (Exception e) { - e.printStackTrace(); - return false; - } - finally { - tryClose(in); - } - - createOutput(materialNames); - - mcMMO.p.getLogger().info("Import finished! Created " + fileAmount + " files!"); - return true; - } - - private void createOutput(HashMap> materialNames) { - for (ModConfigType modConfigType : materialNames.keySet()) { - HashMap> materialNamesType = new HashMap<>(); - - for (String materialName : materialNames.get(modConfigType)) { - String modName = Misc.getModName(materialName); - - if (!materialNamesType.containsKey(modName)) { - materialNamesType.put(modName, new ArrayList<>()); - } - - materialNamesType.get(modName).add(materialName); - } - - createOutput(modConfigType, materialNamesType); - } - - } - - private void tryClose(Closeable c) { - if (c == null) { - return; - } - try { - c.close(); - } - catch (IOException e) { - e.printStackTrace(); - } - } - - private void createOutput(ModConfigType modConfigType, HashMap> materialNames) { - File outputFilePath = new File(mcMMO.getModDirectory() + File.separator + "output"); - if (!outputFilePath.exists() && !outputFilePath.mkdirs()) { - mcMMO.p.getLogger().severe("Could not create output directory! " + outputFilePath.getAbsolutePath()); - } - - FileWriter out = null; - String type = modConfigType.name().toLowerCase(Locale.ENGLISH); - - for (String modName : materialNames.keySet()) { - File outputFile = new File(outputFilePath, modName + "." + type + ".yml"); - mcMMO.p.getLogger().info("Creating " + outputFile.getName()); - try { - if (outputFile.exists() && !outputFile.delete()) { - mcMMO.p.getLogger().severe("Not able to delete old output file! " + outputFile.getAbsolutePath()); - } - - if (!outputFile.createNewFile()) { - mcMMO.p.getLogger().severe("Could not create output file! " + outputFile.getAbsolutePath()); - continue; - } - - StringBuilder writer = new StringBuilder(); - HashMap> configSections = getConfigSections(modConfigType, modName, materialNames); - - if (configSections == null) { - mcMMO.p.getLogger().severe("Something went wrong!! type is " + type); - return; - } - - // Write the file, go through each skill and write all the materials - for (String configSection : configSections.keySet()) { - if (configSection.equals("UNIDENTIFIED")) { - writer.append("# This isn't a valid config section and all materials in this category need to be").append("\r\n"); - writer.append("# copy and pasted to a valid section of this config file.").append("\r\n"); - } - writer.append(configSection).append(":").append("\r\n"); - - for (String line : configSections.get(configSection)) { - writer.append(line).append("\r\n"); - } - - writer.append("\r\n"); - } - - out = new FileWriter(outputFile); - out.write(writer.toString()); - } catch (Exception e) { - e.printStackTrace(); - return; - } finally { - tryClose(out); - fileAmount++; - } - } - } - - private HashMap> getConfigSections(ModConfigType type, String modName, HashMap> materialNames) { - switch (type) { - case BLOCKS: - return getConfigSectionsBlocks(modName, materialNames); - case TOOLS: - return getConfigSectionsTools(modName, materialNames); - case ARMOR: - return getConfigSectionsArmor(modName, materialNames); - case UNKNOWN: - return getConfigSectionsUnknown(modName, materialNames); - } - - return null; - } - - private HashMap> getConfigSectionsBlocks(String modName, HashMap> materialNames) { - HashMap> configSections = new HashMap<>(); - - // Go through all the materials and categorise them under a skill - for (String materialName : materialNames.get(modName)) { - String skillName = "UNIDENTIFIED"; - if (materialName.contains("ORE")) { - skillName = "Mining"; - } - else if (materialName.contains("LOG") || materialName.contains("LEAVES")) { - skillName = "Woodcutting"; - } - else if (materialName.contains("GRASS") || materialName.contains("FLOWER") || materialName.contains("CROP")) { - skillName = "Herbalism"; - } - else if (materialName.contains("DIRT") || materialName.contains("SAND")) { - skillName = "Excavation"; - } - - if (!configSections.containsKey(skillName)) { - configSections.put(skillName, new ArrayList<>()); - } - - ArrayList skillContents = configSections.get(skillName); - skillContents.add(" " + materialName + "|0:"); - skillContents.add(" " + " " + "XP_Gain: 99"); - skillContents.add(" " + " " + "Double_Drops_Enabled: true"); - - if (skillName.equals("Mining")) { - skillContents.add(" " + " " + "Smelting_XP_Gain: 9"); - } - else if (skillName.equals("Woodcutting")) { - skillContents.add(" " + " " + "Is_Log: " + materialName.contains("LOG")); - } - } - - return configSections; - } - - private HashMap> getConfigSectionsTools(String modName, HashMap> materialNames) { - HashMap> configSections = new HashMap<>(); - - // Go through all the materials and categorise them under a tool type - for (String materialName : materialNames.get(modName)) { - String toolType = "UNIDENTIFIED"; - if (materialName.contains("PICKAXE")) { - toolType = "Pickaxes"; - } - else if (materialName.contains("AXE")) { - toolType = "Axes"; - } - else if (materialName.contains("BOW")) { - toolType = "Bows"; - } - else if (materialName.contains("HOE")) { - toolType = "Hoes"; - } - else if (materialName.contains("SHOVEL") || materialName.contains("SPADE")) { - toolType = "Shovels"; - } - else if (materialName.contains("SWORD")) { - toolType = "Swords"; - } - - if (!configSections.containsKey(toolType)) { - configSections.put(toolType, new ArrayList<>()); - } - - ArrayList skillContents = configSections.get(toolType); - skillContents.add(" " + materialName + ":"); - skillContents.add(" " + " " + "XP_Modifier: 1.0"); - skillContents.add(" " + " " + "Tier: 1"); - skillContents.add(" " + " " + "Ability_Enabled: true"); - addRepairableLines(materialName, skillContents); - } - - return configSections; - } - - private HashMap> getConfigSectionsArmor(String modName, HashMap> materialNames) { - HashMap> configSections = new HashMap<>(); - - // Go through all the materials and categorise them under an armor type - for (String materialName : materialNames.get(modName)) { - String toolType = "UNIDENTIFIED"; - if (materialName.contains("BOOT") || materialName.contains("SHOE")) { - toolType = "Boots"; - } - else if (materialName.contains("CHESTPLATE") || materialName.contains("CHEST")) { - toolType = "Chestplates"; - } - else if (materialName.contains("HELM") || materialName.contains("HAT")) { - toolType = "Helmets"; - } - else if (materialName.contains("LEGGINGS") || materialName.contains("LEGS") || materialName.contains("PANTS")) { - toolType = "Leggings"; - } - - if (!configSections.containsKey(toolType)) { - configSections.put(toolType, new ArrayList<>()); - } - - ArrayList skillContents = configSections.get(toolType); - skillContents.add(" " + materialName + ":"); - addRepairableLines(materialName, skillContents); - } - - return configSections; - } - - private void addRepairableLines(String materialName, ArrayList skillContents) { - skillContents.add(" " + " " + "Repairable: true"); - skillContents.add(" " + " " + "Repair_Material: REPAIR_MATERIAL_NAME"); - skillContents.add(" " + " " + "Repair_Material_Data_Value: 0"); - skillContents.add(" " + " " + "Repair_Material_Quantity: 9"); - skillContents.add(" " + " " + "Repair_Material_Pretty_Name: Repair Item Name"); - skillContents.add(" " + " " + "Repair_MinimumLevel: 0"); - skillContents.add(" " + " " + "Repair_XpMultiplier: 1.0"); - - Material material = Material.matchMaterial(materialName); - short durability = (material == null) ? (short) 9999 : material.getMaxDurability(); - skillContents.add(" " + " " + "Durability: " + ((durability > 0) ? durability : (short) 9999)); - } - - private HashMap> getConfigSectionsUnknown(String modName, HashMap> materialNames) { - HashMap> configSections = new HashMap<>(); - - // Go through all the materials and print them - for (String materialName : materialNames.get(modName)) { - String configKey = "UNIDENTIFIED"; - - if (!configSections.containsKey(configKey)) { - configSections.put(configKey, new ArrayList<>()); - } - - ArrayList skillContents = configSections.get(configKey); - skillContents.add(" " + materialName); - } - - return configSections; - } -} diff --git a/src/main/java/com/gmail/nossr50/commands/McabilityCommand.java b/src/main/java/com/gmail/nossr50/commands/McabilityCommand.java deleted file mode 100644 index 0628b9364..000000000 --- a/src/main/java/com/gmail/nossr50/commands/McabilityCommand.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gmail.nossr50.commands; - -import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.locale.LocaleLoader; -import com.gmail.nossr50.util.Permissions; -import org.bukkit.command.CommandSender; - -public class McabilityCommand extends ToggleCommand { - @Override - protected boolean hasOtherPermission(CommandSender sender) { - return Permissions.mcabilityOthers(sender); - } - - @Override - protected boolean hasSelfPermission(CommandSender sender) { - return Permissions.mcability(sender); - } - - @Override - protected void applyCommandAction(McMMOPlayer mcMMOPlayer) { - mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.Ability." + (mcMMOPlayer.getAbilityUse() ? "Off" : "On"))); - mcMMOPlayer.toggleAbilityUse(); - } - - @Override - protected void sendSuccessMessage(CommandSender sender, String playerName) { - sender.sendMessage(LocaleLoader.getString("Commands.Ability.Toggle", playerName)); - } -} diff --git a/src/main/java/com/gmail/nossr50/commands/database/McremoveCommand.java b/src/main/java/com/gmail/nossr50/commands/database/McremoveCommand.java deleted file mode 100644 index 56b817337..000000000 --- a/src/main/java/com/gmail/nossr50/commands/database/McremoveCommand.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.gmail.nossr50.commands.database; - -import com.gmail.nossr50.locale.LocaleLoader; -import com.gmail.nossr50.mcMMO; -import com.gmail.nossr50.util.commands.CommandUtils; -import com.gmail.nossr50.util.player.UserManager; -import com.google.common.collect.ImmutableList; -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.command.TabExecutor; -import org.bukkit.util.StringUtil; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -public class McremoveCommand implements TabExecutor { - @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { - if (args.length == 1) { - String playerName = CommandUtils.getMatchedPlayerName(args[0]); - - if (UserManager.getOfflinePlayer(playerName) == null && CommandUtils.unloadedProfile(sender, mcMMO.getDatabaseManager().loadPlayerProfile(playerName))) { - return true; - } - - UUID uuid = null; - - if (Bukkit.getPlayer(playerName) != null) { - uuid = Bukkit.getPlayer(playerName).getUniqueId(); - } - - if (mcMMO.getDatabaseManager().removeUser(playerName, uuid)) { - sender.sendMessage(LocaleLoader.getString("Commands.mcremove.Success", playerName)); - } else { - sender.sendMessage(playerName + " could not be removed from the database."); // Pretty sure this should NEVER happen. - } - - return true; - } - return false; - } - - @Override - public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) { - if (args.length == 1) { - List playerNames = CommandUtils.getOnlinePlayerNames(sender); - return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<>(playerNames.size())); - } - return ImmutableList.of(); - } -} diff --git a/src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java b/src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java index f3523445c..7a79a0a73 100644 --- a/src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.commands.party; -import com.gmail.nossr50.commands.party.alliance.PartyAllianceCommand; import com.gmail.nossr50.commands.party.teleport.PtpCommand; -import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Permissions; @@ -38,23 +36,19 @@ public class PartyCommand implements TabExecutor { PARTY_SUBCOMMANDS = ImmutableList.copyOf(subcommands); } - private final CommandExecutor partyJoinCommand = new PartyJoinCommand(); private final CommandExecutor partyAcceptCommand = new PartyAcceptCommand(); private final CommandExecutor partyCreateCommand = new PartyCreateCommand(); private final CommandExecutor partyQuitCommand = new PartyQuitCommand(); private final CommandExecutor partyXpShareCommand = new PartyXpShareCommand(); - private final CommandExecutor partyItemShareCommand = new PartyItemShareCommand(); private final CommandExecutor partyInviteCommand = new PartyInviteCommand(); private final CommandExecutor partyKickCommand = new PartyKickCommand(); private final CommandExecutor partyDisbandCommand = new PartyDisbandCommand(); private final CommandExecutor partyChangeOwnerCommand = new PartyChangeOwnerCommand(); - private final CommandExecutor partyLockCommand = new PartyLockCommand(); private final CommandExecutor partyChangePasswordCommand = new PartyChangePasswordCommand(); private final CommandExecutor partyRenameCommand = new PartyRenameCommand(); private final CommandExecutor partyInfoCommand = new PartyInfoCommand(); private final CommandExecutor partyHelpCommand = new PartyHelpCommand(); private final CommandExecutor partyTeleportCommand = new PtpCommand(); - private final CommandExecutor partyAllianceCommand = new PartyAllianceCommand(); @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { diff --git a/src/main/java/com/gmail/nossr50/commands/party/PartyJoinCommand.java b/src/main/java/com/gmail/nossr50/commands/party/PartyJoinCommand.java deleted file mode 100644 index 8971fc0ed..000000000 --- a/src/main/java/com/gmail/nossr50/commands/party/PartyJoinCommand.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.gmail.nossr50.commands.party; - -import com.gmail.nossr50.datatypes.party.Party; -import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.locale.LocaleLoader; -import com.gmail.nossr50.party.PartyManager; -import com.gmail.nossr50.util.commands.CommandUtils; -import com.gmail.nossr50.util.player.UserManager; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class PartyJoinCommand implements CommandExecutor { - @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { - switch (args.length) { - case 2: - case 3: - String targetName = CommandUtils.getMatchedPlayerName(args[1]); - McMMOPlayer mcMMOTarget = UserManager.getPlayer(targetName); - - if (!CommandUtils.checkPlayerExistence(sender, targetName, mcMMOTarget)) { - return true; - } - - Player target = mcMMOTarget.getPlayer(); - - if (!mcMMOTarget.inParty()) { - sender.sendMessage(LocaleLoader.getString("Party.PlayerNotInParty", targetName)); - return true; - } - - Player player = (Player) sender; - - if(UserManager.getPlayer((Player) sender) == null) - { - sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad")); - return true; - } - - McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - Party targetParty = mcMMOTarget.getParty(); - - if (player.equals(target) || (mcMMOPlayer.inParty() && mcMMOPlayer.getParty().equals(targetParty))) { - sender.sendMessage(LocaleLoader.getString("Party.Join.Self")); - return true; - } - - String password = getPassword(args); - - // Make sure party passwords match - if (!PartyManager.checkPartyPassword(player, targetParty, password)) { - return true; - } - - String partyName = targetParty.getName(); - - // Changing parties - if (!PartyManager.changeOrJoinParty(mcMMOPlayer, partyName)) { - return true; - } - - if(PartyManager.isPartyFull(player, targetParty)) - { - player.sendMessage(LocaleLoader.getString("Commands.Party.PartyFull", targetParty.toString())); - return true; - } - - player.sendMessage(LocaleLoader.getString("Commands.Party.Join", partyName)); - PartyManager.addToParty(mcMMOPlayer, targetParty); - return true; - - default: - sender.sendMessage(LocaleLoader.getString("Commands.Usage.3", "party", "join", "<" + LocaleLoader.getString("Commands.Usage.Player") + ">", "[" + LocaleLoader.getString("Commands.Usage.Password") + "]")); - return true; - } - } - - private String getPassword(String[] args) { - if (args.length == 3) { - return args[2]; - } - - return null; - } -} diff --git a/src/main/java/com/gmail/nossr50/commands/skills/TridentsCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/TridentsCommand.java index db9565d0d..973a2e755 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/TridentsCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/TridentsCommand.java @@ -1,8 +1,11 @@ package com.gmail.nossr50.commands.skills; +import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.util.text.TextComponentFactory; import com.neetgames.mcmmo.player.OnlineMMOPlayer; import net.kyori.adventure.text.Component; +import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -29,10 +32,10 @@ public class TridentsCommand extends SkillCommand { } @Override - protected @NotNull List getTextComponents(@NotNull OnlineMMOPlayer mmoPlayer) { + protected @NotNull List getTextComponents(@NotNull Player player) { List textComponents = new ArrayList<>(); - TextComponentFactory.getSubSkillTextComponents(mmoPlayer, textComponents, PrimarySkillType.TRIDENTS); + TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.TRIDENTS); return textComponents; } diff --git a/src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceContextBuilder.java b/src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceContextBuilder.java deleted file mode 100644 index bdd629790..000000000 --- a/src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceContextBuilder.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.gmail.nossr50.datatypes.experience; - -import com.neetgames.mcmmo.experience.context.NullExperienceContext; -import org.jetbrains.annotations.NotNull; - -public class ExperienceContextBuilder { - - private static final @NotNull NullExperienceContext nullExperienceContext = new NullExperienceContext(); - - /** - * Return a null experience context - * @return a null experience context - */ - public static NullExperienceContext nullContext() { - return nullExperienceContext; - } - -} diff --git a/src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceGain.java b/src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceGain.java deleted file mode 100644 index e25f33734..000000000 --- a/src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceGain.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gmail.nossr50.datatypes.experience; - -import org.jetbrains.annotations.NotNull; - -import java.util.UUID; - -public interface ExperienceGain { - /** - * Get the target skill for this XP gain - * We define this by a String to allow for custom skills - * @return The target skill - */ - @NotNull UUID getTargetSkill(); - - /** - * Value of the experience gain, this is the raw value before any mutations are done via modifiers or otherwise - * @return the value of this {@link ExperienceGain} - */ - int getValue(); -} diff --git a/src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceGainBuilder.java b/src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceGainBuilder.java deleted file mode 100644 index 8307c9e85..000000000 --- a/src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceGainBuilder.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.gmail.nossr50.datatypes.experience; - -public class ExperienceGainBuilder { - -} diff --git a/src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceProcessor.java b/src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceProcessor.java deleted file mode 100644 index 80af5b56a..000000000 --- a/src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceProcessor.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.gmail.nossr50.datatypes.experience; - -public class ExperienceProcessor { - -} diff --git a/src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceVector.java b/src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceVector.java deleted file mode 100644 index 3c746a0d5..000000000 --- a/src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceVector.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.gmail.nossr50.datatypes.experience; - -public enum ExperienceVector { - ALL, - TARGETED, -} diff --git a/src/main/java/com/gmail/nossr50/datatypes/experience/OfflineExperienceProcessor.java b/src/main/java/com/gmail/nossr50/datatypes/experience/OfflineExperienceProcessor.java index 9f63feec5..a7d3fc2aa 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/experience/OfflineExperienceProcessor.java +++ b/src/main/java/com/gmail/nossr50/datatypes/experience/OfflineExperienceProcessor.java @@ -2,5 +2,5 @@ package com.gmail.nossr50.datatypes.experience; import com.neetgames.mcmmo.experience.ExperienceHandler; -public class OfflineExperienceProcessor implements ExperienceHandler { +public class OfflineExperienceProcessor { } diff --git a/src/main/java/com/gmail/nossr50/datatypes/experience/OnlineExperienceProcessor.java b/src/main/java/com/gmail/nossr50/datatypes/experience/OnlineExperienceProcessor.java index 733f3d3fa..2dd398cb3 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/experience/OnlineExperienceProcessor.java +++ b/src/main/java/com/gmail/nossr50/datatypes/experience/OnlineExperienceProcessor.java @@ -5,12 +5,9 @@ import com.gmail.nossr50.config.experience.ExperienceConfig; import com.neetgames.mcmmo.party.Party; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Permissions; -import com.neetgames.mcmmo.experience.ExperienceHandler; import com.neetgames.mcmmo.experience.XPGainReason; import com.neetgames.mcmmo.experience.XPGainSource; import com.neetgames.mcmmo.player.MMOPlayer; -import com.neetgames.mcmmo.player.MMOPlayerData; -import com.gmail.nossr50.datatypes.skills.CoreSkills; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.party.ShareHandler; import com.gmail.nossr50.skills.child.FamilyTree; @@ -21,7 +18,6 @@ import com.gmail.nossr50.util.skills.PerksUtils; import com.gmail.nossr50.util.sounds.SoundManager; import com.gmail.nossr50.util.sounds.SoundType; import com.neetgames.mcmmo.exceptions.UnknownSkillException; -import com.neetgames.mcmmo.skill.RootSkill; import org.bukkit.GameMode; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @@ -29,7 +25,7 @@ import org.jetbrains.annotations.NotNull; import java.util.Map; import java.util.Set; -public class OnlineExperienceProcessor implements ExperienceHandler { +public class OnlineExperienceProcessor { private boolean isUsingUnarmed = false; diff --git a/src/main/java/com/gmail/nossr50/datatypes/experience/PartyExperienceGain.java b/src/main/java/com/gmail/nossr50/datatypes/experience/PartyExperienceGain.java deleted file mode 100644 index 28f95b79c..000000000 --- a/src/main/java/com/gmail/nossr50/datatypes/experience/PartyExperienceGain.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.gmail.nossr50.datatypes.experience; - -public interface PartyExperienceGain extends ExperienceGain { - - /** - * The original value of this experience gain - * This is not equivalent to the amount of XP the players in party will get, but it was the value of the XP before it was distributed to party members - * @return the original value of the experience gain - */ - int originalValue(); -} diff --git a/src/main/java/com/gmail/nossr50/datatypes/experience/context/BlockExperienceContextImpl.java b/src/main/java/com/gmail/nossr50/datatypes/experience/context/BlockExperienceContextImpl.java deleted file mode 100644 index 7969956bc..000000000 --- a/src/main/java/com/gmail/nossr50/datatypes/experience/context/BlockExperienceContextImpl.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.gmail.nossr50.datatypes.experience.context; - -import com.neetgames.jmal.Block; -import com.neetgames.mcmmo.experience.context.BlockExperienceContext; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class BlockExperienceContextImpl implements BlockExperienceContext { - @NotNull Block blockExperienceContext; - - public BlockExperienceContextImpl(@NotNull Block block) { - this.blockExperienceContext = block; - } - - @Nullable - @Override - public Object getContext() { - return blockExperienceContext; - } - - public @NotNull Block getBlockExperienceContext() { - return blockExperienceContext; - } -} diff --git a/src/main/java/com/gmail/nossr50/datatypes/experience/context/CombatExperienceContextImpl.java b/src/main/java/com/gmail/nossr50/datatypes/experience/context/CombatExperienceContextImpl.java deleted file mode 100644 index 2c9406b3e..000000000 --- a/src/main/java/com/gmail/nossr50/datatypes/experience/context/CombatExperienceContextImpl.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gmail.nossr50.datatypes.experience.context; - -import com.neetgames.jmal.LivingEntity; -import com.neetgames.mcmmo.experience.context.CombatExperienceContext; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class CombatExperienceContextImpl implements CombatExperienceContext { - - private final @NotNull LivingEntity livingEntity; - - public CombatExperienceContextImpl(@NotNull LivingEntity livingEntity) { - this.livingEntity = livingEntity; - } - - @Nullable - @Override - public Object getContext() { - return livingEntity; - } - - /** - * Get the {@link LivingEntity} involved in this experience context - * - * @return the {@link LivingEntity} involved in this experience context - */ - public @NotNull LivingEntity getLivingEntity() { - return livingEntity; - } -} diff --git a/src/main/java/com/gmail/nossr50/datatypes/experience/context/NullExperienceContext.java b/src/main/java/com/gmail/nossr50/datatypes/experience/context/NullExperienceContext.java deleted file mode 100644 index c0cbcf43d..000000000 --- a/src/main/java/com/gmail/nossr50/datatypes/experience/context/NullExperienceContext.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.gmail.nossr50.datatypes.experience.context; - -import com.neetgames.mcmmo.experience.context.ExperienceContext; -import org.jetbrains.annotations.Nullable; - -/** - * Represents an experience context with an undefined source - */ -public class NullExperienceContext implements ExperienceContext { - @Override - public @Nullable Object getContext() { - return null; - } -} diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/AbstractMMOPlayer.java b/src/main/java/com/gmail/nossr50/datatypes/player/AbstractMMOPlayer.java index 6b0316933..5b2ed3b87 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/AbstractMMOPlayer.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/AbstractMMOPlayer.java @@ -8,8 +8,6 @@ import com.neetgames.mcmmo.player.MMOPlayerData; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import java.util.UUID; - public abstract class AbstractMMOPlayer implements MMOPlayer { /* All of the persistent data for a player that gets saved and loaded from DB */ protected final @NotNull MMOPlayerData mmoPlayerData; //All persistent data is kept here @@ -24,7 +22,7 @@ public abstract class AbstractMMOPlayer implements MMOPlayer { * * @param mmoPlayerData player data */ - public AbstractMMOPlayer(@NotNull Player player, @NotNull MMOPlayerData mmoPlayerData) { + public AbstractMMOPlayer(@NotNull Player player, @NotNull MMOPlayerDataImpl mmoPlayerData) { this.mmoPlayerData = mmoPlayerData; this.experienceHandler = new OnlineExperienceProcessor(mmoPlayerData); this.cooldownManager = new CooldownManager(mmoPlayerData); @@ -35,7 +33,7 @@ public abstract class AbstractMMOPlayer implements MMOPlayer { * * @param mmoPlayerData player data */ - public AbstractMMOPlayer(@NotNull MMOPlayerData mmoPlayerData) { + public AbstractMMOPlayer(@NotNull MMOPlayerDataImpl mmoPlayerData) { this.mmoPlayerData = mmoPlayerData; this.experienceHandler = new OfflineExperienceProcessor(mmoPlayerData); this.cooldownManager = new CooldownManager(mmoPlayerData); diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/CooldownManager.java b/src/main/java/com/gmail/nossr50/datatypes/player/CooldownManager.java index 7b70ca374..a44702287 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/CooldownManager.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/CooldownManager.java @@ -8,9 +8,9 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class CooldownManager { - private final @NotNull PersistentPlayerData playerDataRef; + private final @NotNull MMOPlayerDataImpl playerDataRef; - public CooldownManager(@NotNull PersistentPlayerData playerDataRef) { + public CooldownManager(@NotNull MMOPlayerDataImpl playerDataRef) { this.playerDataRef = playerDataRef; } diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/MMODataBuilder.java b/src/main/java/com/gmail/nossr50/datatypes/player/MMODataBuilder.java index 7c4c16ed6..e3e52fc84 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/MMODataBuilder.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/MMODataBuilder.java @@ -3,7 +3,6 @@ package com.gmail.nossr50.datatypes.player; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.util.experience.MMOExperienceBarManager; -import com.neetgames.mcmmo.MobHealthBarType; import com.neetgames.mcmmo.UniqueDataType; import com.neetgames.mcmmo.player.MMOPlayerData; import com.neetgames.mcmmo.skill.RootSkill; @@ -15,8 +14,6 @@ import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.EnumMap; -import java.util.HashMap; import java.util.Map; import java.util.UUID; @@ -61,7 +58,7 @@ public class MMODataBuilder { /* * New Profile with default values */ - return new PersistentPlayerData(playerUUID, playerName); + return new MMOPlayerDataImpl(playerUUID, playerName); } public @NotNull MMOPlayerData build() throws Exception { @@ -96,7 +93,7 @@ public class MMODataBuilder { validateBarStateMapEntries(barStateMap); - return new PersistentPlayerData(playerUUID, playerName, partyChatSpying, skillLevelValues, skillExperienceValues, abilityDeactivationTimestamps, uniquePlayerData, barStateMap, scoreboardTipsShown, lastLogin, leaderBoardExemption); + return new MMOPlayerDataImpl(playerUUID, playerName, partyChatSpying, skillLevelValues, skillExperienceValues, abilityDeactivationTimestamps, uniquePlayerData, barStateMap, scoreboardTipsShown, lastLogin, leaderBoardExemption); } private void validateBarStateMapEntries(@NotNull Map map) { diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/PersistentPlayerData.java b/src/main/java/com/gmail/nossr50/datatypes/player/MMOPlayerDataImpl.java similarity index 92% rename from src/main/java/com/gmail/nossr50/datatypes/player/PersistentPlayerData.java rename to src/main/java/com/gmail/nossr50/datatypes/player/MMOPlayerDataImpl.java index 24bcad317..dfb465c36 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/PersistentPlayerData.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/MMOPlayerDataImpl.java @@ -25,7 +25,7 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; -public class PersistentPlayerData implements MMOPlayerData { +public class MMOPlayerDataImpl implements MMOPlayerData { private final @NotNull MutableBoolean dirtyFlag; //Dirty values in this class will change this flag as needed @@ -58,7 +58,7 @@ public class PersistentPlayerData implements MMOPlayerData { * @param playerName target player's name * @throws NullArgumentException thrown when never null arguments are null */ - public PersistentPlayerData(@NotNull UUID playerUUID, @NotNull String playerName) throws NullArgumentException { + public MMOPlayerDataImpl(@NotNull UUID playerUUID, @NotNull String playerName) throws NullArgumentException { /* * New Data */ @@ -109,17 +109,17 @@ public class PersistentPlayerData implements MMOPlayerData { * @param lastLogin target player's last login * @param leaderBoardExclusion target player's leaderboard exemption status */ - public PersistentPlayerData(@NotNull UUID playerUUID, - @NotNull String playerName, - boolean partyChatSpying, - @NotNull Map skillLevelValues, - @NotNull Map skillExperienceValues, - @NotNull Map abilityDeactivationTimestamps, - @NotNull Map uniquePlayerData, - @NotNull Map barStateMap, - int scoreboardTipsShown, - long lastLogin, - boolean leaderBoardExclusion) throws Exception { + public MMOPlayerDataImpl(@NotNull UUID playerUUID, + @NotNull String playerName, + boolean partyChatSpying, + @NotNull Map skillLevelValues, + @NotNull Map skillExperienceValues, + @NotNull Map abilityDeactivationTimestamps, + @NotNull Map uniquePlayerData, + @NotNull Map barStateMap, + int scoreboardTipsShown, + long lastLogin, + boolean leaderBoardExclusion) throws Exception { /* * Skills Data diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java b/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java index 0774ce86d..b01150ab4 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java @@ -93,7 +93,7 @@ public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Ident * New * Player */ - super(new PersistentPlayerData(player.getUniqueId(), player.getName())); + super(new MMOPlayerDataImpl(player.getUniqueId(), player.getName())); UUID uuid = player.getUniqueId(); identity = Identity.identity(uuid); diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java b/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java index a1ce83099..75afea112 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java @@ -11,7 +11,7 @@ import java.util.UUID; public class PlayerProfile extends AbstractMMOPlayer { /** - * Initialize an {@link PlayerProfile} for {@link PersistentPlayerData} + * Initialize an {@link PlayerProfile} for {@link MMOPlayerDataImpl} * This will be used for existing data * * @param mmoPlayerData target persistent player data diff --git a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java index 1be281a65..6acd7e039 100644 --- a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java @@ -5,6 +5,7 @@ import com.gmail.nossr50.config.WorldBlacklist; import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.datatypes.chat.ChatChannel; import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.util.player.UserManager; import com.neetgames.mcmmo.player.OnlineMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; @@ -537,36 +538,20 @@ public class PlayerListener implements Listener { public void onPlayerQuit(PlayerQuitEvent event) { Player player = event.getPlayer(); - if (!mcMMO.getUserManager().hasPlayerDataKey(player)) { + if (!UserManager.hasPlayerDataKey(player)) { return; } McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); //Profile not loaded - McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player); - - if(mmoPlayer == null) { + if(mcMMOPlayer == null) { return; } - mcMMO.getUserManager().saveUserImmediately(mmoPlayer, mcMMO.isServerShutdownExecuted()); //Use a sync save if the server is shutting down to avoid race conditions - //TODO: Make sure this cleans up - //TODO: Make sure this cleans up - //TODO: Make sure this cleans up - //TODO: Make sure this cleans up - //TODO: Make sure this cleans up - //TODO: Make sure this cleans up - //TODO: Make sure this cleans up - //TODO: Make sure this cleans up - //TODO: Make sure this cleans up - //TODO: Make sure this cleans up - //TODO: Make sure this cleans up - //TODO: Make sure this cleans up - //TODO: Make sure this cleans up - //TODO: Make sure this cleans up - mmoPlayer.logout(mcMMO.isServerShutdownExecuted()); + //TODO: Actually never sure its possible for this event to fire during server shutdown, should double check that... + UserManager.logout(mcMMOPlayer, mcMMO.isServerShutdownExecuted()); } /** diff --git a/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java b/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java index e049c7198..bd59f409e 100644 --- a/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java +++ b/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java @@ -5,7 +5,6 @@ import com.gmail.nossr50.commands.admin.CompatibilityCommand; import com.gmail.nossr50.commands.admin.McmmoReloadLocaleCommand; import com.gmail.nossr50.commands.admin.PlayerDebugCommand; import com.gmail.nossr50.commands.chat.McChatSpy; -import com.gmail.nossr50.commands.database.DatabaseRemovePlayerCommand; import com.gmail.nossr50.commands.database.McpurgeCommand; import com.gmail.nossr50.commands.database.MmoshowdbCommand; import com.gmail.nossr50.commands.experience.AddlevelsCommand; diff --git a/src/main/java/com/gmail/nossr50/util/player/UserManager.java b/src/main/java/com/gmail/nossr50/util/player/UserManager.java index 4ef9606b6..8de5fcddf 100644 --- a/src/main/java/com/gmail/nossr50/util/player/UserManager.java +++ b/src/main/java/com/gmail/nossr50/util/player/UserManager.java @@ -1,12 +1,16 @@ package com.gmail.nossr50.util.player; +import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.mcMMO; +import com.gmail.nossr50.runnables.skills.BleedTimerTask; +import com.gmail.nossr50.util.scoreboards.ScoreboardManager; import com.google.common.collect.ImmutableList; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.metadata.FixedMetadataValue; +import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.Collection; @@ -102,6 +106,38 @@ public final class UserManager { return playerCollection; } + /** + * This method is called by PlayerQuitEvent to tear down the mcMMOPlayer. + * + * @param syncSave if true, data is saved synchronously + */ + public static void logout(@NotNull McMMOPlayer mmoPlayer, boolean syncSave) { + Player targetPlayer = mmoPlayer.getPlayer(); + BleedTimerTask.bleedOut(targetPlayer); + + //Cleanup + mmoPlayer.resetAbilityMode(); //TODO: T&C Wire this up, see master branch com.gmail.nossr50.datatypes.player.McMMOPlayer#resetAbilityMode for example + mmoPlayer.getTamingManager().cleanupAllSummons(); + + if (syncSave) { + getProfile().save(true); //TODO: T&C Wire this up, see master branch com.gmail.nossr50.datatypes.player.PlayerProfile#save + } else { + getProfile().scheduleAsyncSave(); //TODO: T&C Wire this up, see master branch com.gmail.nossr50.datatypes.player.PlayerProfile#scheduleAsyncSave + } + + UserManager.remove(targetPlayer); + + if(Config.getInstance().getScoreboardsEnabled()) + ScoreboardManager.teardownPlayer(targetPlayer); + + if (inParty()) { //TODO: T&C Wire this up + party.removeOnlineMember(targetPlayer); //TODO: T&C Wire this up + } + + //Remove user from cache + mcMMO.getDatabaseManager().cleanupUser(targetPlayer.getUniqueId()); + } + /** * Get the McMMOPlayer of a player by name. *