mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-08-03 04:55:28 +02:00
WIP of reworking classes involved in querying data, also some work done to the party code rewrite
This commit is contained in:
@@ -51,7 +51,7 @@ public final class ChimaeraWing {
|
||||
return;
|
||||
}
|
||||
|
||||
mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||
mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
//Not loaded
|
||||
if(mmoPlayer == null)
|
||||
|
@@ -73,7 +73,7 @@ public class EventUtils {
|
||||
*/
|
||||
public static McMMOPlayer getMcMMOPlayer(Entity entity)
|
||||
{
|
||||
return mcMMO.getUserManager().getPlayer((Player)entity);
|
||||
return mcMMO.getUserManager().queryMcMMOPlayer((Player)entity);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -121,7 +121,7 @@ public class EventUtils {
|
||||
return true;
|
||||
}
|
||||
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
if(mmoPlayer == null)
|
||||
{
|
||||
@@ -199,7 +199,7 @@ public class EventUtils {
|
||||
boolean isCancelled = event.isCancelled();
|
||||
|
||||
if (isCancelled) {
|
||||
PlayerProfile profile = mcMMO.getUserManager().getPlayer(player);
|
||||
PlayerProfile profile = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
profile.getExperienceManager().setSkillLevel(skill, profile.getSkillLevel(skill) - (isLevelUp ? levelsChanged : -levelsChanged));
|
||||
profile.addXp(skill, xpRemoved);
|
||||
@@ -215,7 +215,7 @@ public class EventUtils {
|
||||
boolean isCancelled = event.isCancelled();
|
||||
|
||||
if (isCancelled) {
|
||||
PlayerProfile profile = mcMMO.getUserManager().getPlayer(player);
|
||||
PlayerProfile profile = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
profile.modifySkill(skill, profile.getSkillLevel(skill) - (isLevelUp ? levelsChanged : -levelsChanged));
|
||||
profile.addXp(skill, xpRemoved);
|
||||
@@ -250,7 +250,7 @@ public class EventUtils {
|
||||
}
|
||||
|
||||
public static void handlePartyTeleportEvent(Player teleportingPlayer, Player targetPlayer) {
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(teleportingPlayer);
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(teleportingPlayer);
|
||||
|
||||
if(mmoPlayer == null)
|
||||
return;
|
||||
@@ -305,15 +305,15 @@ public class EventUtils {
|
||||
boolean isCancelled = event.isCancelled();
|
||||
|
||||
if (!isCancelled) {
|
||||
mcMMO.getUserManager().getPlayer(player).addXp(skill, event.getRawXpGained());
|
||||
mcMMO.getUserManager().getPlayer(player).registerXpGain(skill, event.getRawXpGained());
|
||||
mcMMO.getUserManager().queryMcMMOPlayer(player).addXp(skill, event.getRawXpGained());
|
||||
mcMMO.getUserManager().queryMcMMOPlayer(player).registerXpGain(skill, event.getRawXpGained());
|
||||
}
|
||||
|
||||
return !isCancelled;
|
||||
}
|
||||
|
||||
public static boolean handleStatsLossEvent(Player player, HashMap<String, Integer> levelChanged, HashMap<String, Float> experienceChanged) {
|
||||
if(mcMMO.getUserManager().getPlayer(player) == null)
|
||||
if(mcMMO.getUserManager().queryMcMMOPlayer(player) == null)
|
||||
return true;
|
||||
|
||||
McMMOPlayerStatLossEvent event = new McMMOPlayerStatLossEvent(player, levelChanged, experienceChanged);
|
||||
@@ -324,7 +324,7 @@ public class EventUtils {
|
||||
if (!isCancelled) {
|
||||
levelChanged = event.getLevelChanged();
|
||||
experienceChanged = event.getExperienceChanged();
|
||||
PlayerProfile playerProfile = mcMMO.getUserManager().getPlayer(player);
|
||||
PlayerProfile playerProfile = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
for (PrimarySkillType primarySkillType : PrimarySkillType.NON_CHILD_SKILLS) {
|
||||
String skillName = primarySkillType.toString();
|
||||
@@ -363,17 +363,17 @@ public class EventUtils {
|
||||
HashMap<String, Integer> levelChangedVictim = eventVictim.getLevelChanged();
|
||||
HashMap<String, Float> experienceChangedVictim = eventVictim.getExperienceChanged();
|
||||
|
||||
McMMOPlayer killerPlayer = mcMMO.getUserManager().getPlayer(killer);
|
||||
McMMOPlayer killerPlayer = mcMMO.getUserManager().queryMcMMOPlayer(killer);
|
||||
|
||||
//Not loaded
|
||||
if(killerPlayer == null)
|
||||
return true;
|
||||
|
||||
//Not loaded
|
||||
if(mcMMO.getUserManager().getPlayer(victim) == null)
|
||||
if(mcMMO.getUserManager().queryMcMMOPlayer(victim) == null)
|
||||
return true;
|
||||
|
||||
PlayerProfile victimProfile = mcMMO.getUserManager().getPlayer(victim);
|
||||
PlayerProfile victimProfile = mcMMO.getUserManager().queryMcMMOPlayer(victim);
|
||||
|
||||
for (PrimarySkillType primarySkillType : PrimarySkillType.NON_CHILD_SKILLS) {
|
||||
String skillName = primarySkillType.toString();
|
||||
|
@@ -25,10 +25,10 @@ public final class HardcoreManager {
|
||||
double statLossPercentage = Config.getInstance().getHardcoreDeathStatPenaltyPercentage();
|
||||
int levelThreshold = Config.getInstance().getHardcoreDeathStatPenaltyLevelThreshold();
|
||||
|
||||
if(mcMMO.getUserManager().getPlayer(player) == null)
|
||||
if(mcMMO.getUserManager().queryMcMMOPlayer(player) == null)
|
||||
return;
|
||||
|
||||
PlayerProfile playerProfile = mcMMO.getUserManager().getPlayer(player);
|
||||
PlayerProfile playerProfile = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
int totalLevelsLost = 0;
|
||||
|
||||
HashMap<String, Integer> levelChanged = new HashMap<>();
|
||||
@@ -76,11 +76,11 @@ public final class HardcoreManager {
|
||||
double vampirismStatLeechPercentage = Config.getInstance().getHardcoreVampirismStatLeechPercentage();
|
||||
int levelThreshold = Config.getInstance().getHardcoreVampirismLevelThreshold();
|
||||
|
||||
if(mcMMO.getUserManager().getPlayer(killer) == null || mcMMO.getUserManager().getPlayer(victim) == null)
|
||||
if(mcMMO.getUserManager().queryMcMMOPlayer(killer) == null || mcMMO.getUserManager().queryMcMMOPlayer(victim) == null)
|
||||
return;
|
||||
|
||||
PlayerProfile killerProfile = mcMMO.getUserManager().getPlayer(killer);
|
||||
PlayerProfile victimProfile = mcMMO.getUserManager().getPlayer(victim);
|
||||
PlayerProfile killerProfile = mcMMO.getUserManager().queryMcMMOPlayer(killer);
|
||||
PlayerProfile victimProfile = mcMMO.getUserManager().queryMcMMOPlayer(victim);
|
||||
int totalLevelsStolen = 0;
|
||||
|
||||
HashMap<String, Integer> levelChanged = new HashMap<>();
|
||||
|
@@ -367,7 +367,7 @@ public final class HolidayManager {
|
||||
if(!Config.getInstance().isAprilFoolsAllowed())
|
||||
return;
|
||||
|
||||
final McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||
final McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
if (mmoPlayer == null) return;
|
||||
|
||||
int levelTotal = Misc.getRandom().nextInt(1 + mmoPlayer.getSkillLevel(PrimarySkillType.MINING)) + 1;
|
||||
|
@@ -8,7 +8,7 @@ import com.gmail.nossr50.commands.chat.AdminChatCommand;
|
||||
import com.gmail.nossr50.commands.chat.McChatSpy;
|
||||
import com.gmail.nossr50.commands.chat.PartyChatCommand;
|
||||
import com.gmail.nossr50.commands.database.McpurgeCommand;
|
||||
import com.gmail.nossr50.commands.database.McremoveCommand;
|
||||
import com.gmail.nossr50.commands.database.DatabaseRemovePlayerCommand;
|
||||
import com.gmail.nossr50.commands.database.MmoshowdbCommand;
|
||||
import com.gmail.nossr50.commands.experience.AddlevelsCommand;
|
||||
import com.gmail.nossr50.commands.experience.AddxpCommand;
|
||||
@@ -298,7 +298,7 @@ public final class CommandRegistrationManager {
|
||||
command.setPermission("mcmmo.commands.mcremove");
|
||||
command.setPermissionMessage(permissionsMessage);
|
||||
command.setUsage(LocaleLoader.getString("Commands.Usage.1", "mcremove", "<" + LocaleLoader.getString("Commands.Usage.Player") + ">"));
|
||||
command.setExecutor(new McremoveCommand());
|
||||
command.setExecutor(new DatabaseRemovePlayerCommand());
|
||||
}
|
||||
|
||||
private static void registerMmoshowdbCommand() {
|
||||
|
@@ -87,7 +87,7 @@ public final class CommandUtils {
|
||||
|
||||
PlayerProfile profile = new PlayerProfile(playerName, false);
|
||||
|
||||
if (unloadedProfile(sender, profile)) {
|
||||
if (hasNoProfile(sender, profile)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -95,12 +95,12 @@ public final class CommandUtils {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean unloadedProfile(CommandSender sender, PlayerProfile profile) {
|
||||
public static boolean hasNoProfile(CommandSender sender, PlayerProfile profile) {
|
||||
if (profile.isLoaded()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.Offline"));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -215,10 +215,10 @@ public final class CommandUtils {
|
||||
}
|
||||
|
||||
private static void printGroupedSkillData(Player inspect, CommandSender display, String header, List<PrimarySkillType> skillGroup) {
|
||||
if(mcMMO.getUserManager().getPlayer(inspect) == null)
|
||||
if(mcMMO.getUserManager().queryMcMMOPlayer(inspect) == null)
|
||||
return;
|
||||
|
||||
PlayerProfile profile = mcMMO.getUserManager().getPlayer(inspect);
|
||||
PlayerProfile profile = mcMMO.getUserManager().queryMcMMOPlayer(inspect);
|
||||
|
||||
List<String> displayData = new ArrayList<>();
|
||||
displayData.add(header);
|
||||
|
@@ -35,7 +35,7 @@ public class NotificationManager {
|
||||
*/
|
||||
public static void sendPlayerInformation(Player player, NotificationType notificationType, String key)
|
||||
{
|
||||
if(mcMMO.getUserManager().getPlayer(player) == null || !mcMMO.getUserManager().getPlayer(player).hasSkillChatNotifications())
|
||||
if(mcMMO.getUserManager().queryMcMMOPlayer(player) == null || !mcMMO.getUserManager().queryMcMMOPlayer(player).hasSkillChatNotifications())
|
||||
return;
|
||||
|
||||
McMMOMessageType destination = AdvancedConfig.getInstance().doesNotificationUseActionBar(notificationType) ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
|
||||
@@ -49,10 +49,10 @@ public class NotificationManager {
|
||||
|
||||
public static boolean doesPlayerUseNotifications(Player player)
|
||||
{
|
||||
if(mcMMO.getUserManager().getPlayer(player) == null)
|
||||
if(mcMMO.getUserManager().queryMcMMOPlayer(player) == null)
|
||||
return false;
|
||||
else
|
||||
return mcMMO.getUserManager().getPlayer(player).hasSkillChatNotifications();
|
||||
return mcMMO.getUserManager().queryMcMMOPlayer(player).hasSkillChatNotifications();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -71,7 +71,7 @@ public class NotificationManager {
|
||||
|
||||
public static void sendPlayerInformationChatOnly(Player player, String key, String... values)
|
||||
{
|
||||
if(mcMMO.getUserManager().getPlayer(player) == null || !mcMMO.getUserManager().getPlayer(player).hasSkillChatNotifications())
|
||||
if(mcMMO.getUserManager().queryMcMMOPlayer(player) == null || !mcMMO.getUserManager().queryMcMMOPlayer(player).hasSkillChatNotifications())
|
||||
return;
|
||||
|
||||
String preColoredString = LocaleLoader.getString(key, (Object[]) values);
|
||||
@@ -80,7 +80,7 @@ public class NotificationManager {
|
||||
|
||||
public static void sendPlayerInformationChatOnlyPrefixed(Player player, String key, String... values)
|
||||
{
|
||||
if(mcMMO.getUserManager().getPlayer(player) == null || !mcMMO.getUserManager().getPlayer(player).hasSkillChatNotifications())
|
||||
if(mcMMO.getUserManager().queryMcMMOPlayer(player) == null || !mcMMO.getUserManager().queryMcMMOPlayer(player).hasSkillChatNotifications())
|
||||
return;
|
||||
|
||||
String preColoredString = LocaleLoader.getString(key, (Object[]) values);
|
||||
@@ -90,7 +90,7 @@ public class NotificationManager {
|
||||
|
||||
public static void sendPlayerInformation(Player player, NotificationType notificationType, String key, String... values)
|
||||
{
|
||||
if(mcMMO.getUserManager().getPlayer(player) == null || !mcMMO.getUserManager().getPlayer(player).hasSkillChatNotifications())
|
||||
if(mcMMO.getUserManager().queryMcMMOPlayer(player) == null || !mcMMO.getUserManager().queryMcMMOPlayer(player).hasSkillChatNotifications())
|
||||
return;
|
||||
|
||||
McMMOMessageType destination = AdvancedConfig.getInstance().doesNotificationUseActionBar(notificationType) ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
|
||||
|
12
src/main/java/com/gmail/nossr50/util/player/PartyUtils.java
Normal file
12
src/main/java/com/gmail/nossr50/util/player/PartyUtils.java
Normal file
@@ -0,0 +1,12 @@
|
||||
package com.gmail.nossr50.util.player;
|
||||
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.party.Party;
|
||||
import com.gmail.nossr50.datatypes.party.PartyFeature;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class PartyUtils {
|
||||
public static boolean isAllowed(@NotNull Party party, @NotNull PartyFeature partyFeature) {
|
||||
return party.getPartyExperienceManager().getLevel() >= Config.getInstance().getPartyFeatureUnlockLevel(partyFeature);
|
||||
}
|
||||
}
|
@@ -9,19 +9,23 @@ import com.gmail.nossr50.runnables.player.PersistentPlayerDataSaveTask;
|
||||
import com.gmail.nossr50.runnables.skills.BleedTimerTask;
|
||||
import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import org.bukkit.Bukkit;
|
||||
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 org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.UUID;
|
||||
|
||||
//TODO: Add per world handling
|
||||
public final class UserManager {
|
||||
|
||||
private final HashSet<McMMOPlayer> playerDataSet; //Used to track players for sync saves on shutdown
|
||||
private final @NotNull HashSet<McMMOPlayer> playerDataSet; //Used to track players for sync saves on shutdown
|
||||
|
||||
public UserManager() {
|
||||
this.playerDataSet = new HashSet<>();
|
||||
@@ -32,13 +36,13 @@ public final class UserManager {
|
||||
*
|
||||
* @param mmoPlayer the player profile to start tracking
|
||||
*/
|
||||
public void track(McMMOPlayer mmoPlayer) {
|
||||
public void track(@NotNull McMMOPlayer mmoPlayer) {
|
||||
mmoPlayer.getPlayer().setMetadata(mcMMO.playerDataKey, new FixedMetadataValue(mcMMO.p, mmoPlayer));
|
||||
|
||||
playerDataSet.add(mmoPlayer); //for sync saves on shutdown
|
||||
}
|
||||
|
||||
public void cleanupPlayer(McMMOPlayer mmoPlayer) {
|
||||
public void cleanupPlayer(@NotNull McMMOPlayer mmoPlayer) {
|
||||
playerDataSet.remove(mmoPlayer);
|
||||
}
|
||||
|
||||
@@ -47,8 +51,8 @@ public final class UserManager {
|
||||
*
|
||||
* @param player The Player object
|
||||
*/
|
||||
public void remove(Player player) {
|
||||
McMMOPlayer mmoPlayer = getPlayer(player);
|
||||
public void remove(@NotNull Player player) {
|
||||
McMMOPlayer mmoPlayer = queryMcMMOPlayer(player);
|
||||
mmoPlayer.cleanup();
|
||||
player.removeMetadata(mcMMO.playerDataKey, mcMMO.p);
|
||||
|
||||
@@ -66,12 +70,12 @@ public final class UserManager {
|
||||
playerDataSet.clear(); //Clear sync save tracking
|
||||
}
|
||||
|
||||
public Collection<McMMOPlayer> getPlayers() {
|
||||
public @NotNull Collection<McMMOPlayer> getPlayers() {
|
||||
Collection<McMMOPlayer> playerCollection = new ArrayList<>();
|
||||
|
||||
for (Player player : mcMMO.p.getServer().getOnlinePlayers()) {
|
||||
if (hasPlayerDataKey(player)) {
|
||||
playerCollection.add(getPlayer(player));
|
||||
playerCollection.add(queryMcMMOPlayer(player));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,19 +88,40 @@ public final class UserManager {
|
||||
* @param playerName The name of the player whose McMMOPlayer to retrieve
|
||||
* @return the player's McMMOPlayer object
|
||||
*/
|
||||
public McMMOPlayer getPlayer(String playerName) {
|
||||
public @Nullable McMMOPlayer queryMcMMOPlayer(@NotNull UUID playerUUID) {
|
||||
return retrieveMcMMOPlayer(playerName, false);
|
||||
}
|
||||
|
||||
public McMMOPlayer getOfflinePlayer(OfflinePlayer player) {
|
||||
if (player instanceof Player) {
|
||||
return getPlayer((Player) player);
|
||||
}
|
||||
/**
|
||||
* Attempts to find a player in the database by name alone
|
||||
* @param playerName target player name
|
||||
* @return will return a valid McMMOPlayer if one is found, otherwise returns null
|
||||
*/
|
||||
public @Nullable OfflinePlayer findPlayer(@NotNull String playerName) {
|
||||
|
||||
return retrieveMcMMOPlayer(player.getName(), true);
|
||||
}
|
||||
|
||||
public McMMOPlayer getOfflinePlayer(String playerName) {
|
||||
public @Nullable McMMOPlayer queryMcMMOPlayer(@NotNull OfflinePlayer offlinePlayer) {
|
||||
return queryMcMMOPlayer(offlinePlayer.getUniqueId());
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to grab a player by name alone
|
||||
* @param playerName
|
||||
* @return
|
||||
*/
|
||||
@Deprecated
|
||||
public @Nullable McMMOPlayer queryMcMMOPlayer(@NotNull String playerName) {
|
||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(playerName);
|
||||
|
||||
if(offlinePlayer != null) {
|
||||
return retrieveMcMMOPlayer(offlinePlayer);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public @Nullable McMMOPlayer getOfflinePlayer(String playerName) {
|
||||
return retrieveMcMMOPlayer(playerName, true);
|
||||
}
|
||||
|
||||
@@ -105,7 +130,7 @@ public final class UserManager {
|
||||
* @param player target player
|
||||
* @return McMMOPlayer object for this player, null if Player has not been loaded
|
||||
*/
|
||||
public McMMOPlayer getPlayer(Player player) {
|
||||
public @Nullable McMMOPlayer queryMcMMOPlayer(@NotNull Player player) {
|
||||
//Avoid Array Index out of bounds
|
||||
if(player != null && player.hasMetadata(mcMMO.playerDataKey))
|
||||
return (McMMOPlayer) player.getMetadata(mcMMO.playerDataKey).get(0).value();
|
||||
@@ -113,7 +138,7 @@ public final class UserManager {
|
||||
return null;
|
||||
}
|
||||
|
||||
private McMMOPlayer retrieveMcMMOPlayer(String playerName, boolean offlineValid) {
|
||||
private @Nullable McMMOPlayer retrieveMcMMOPlayer(@NotNull String playerName, boolean offlineValid) {
|
||||
Player player = mcMMO.p.getServer().getPlayerExact(playerName);
|
||||
|
||||
if (player == null) {
|
||||
@@ -124,79 +149,31 @@ public final class UserManager {
|
||||
return null;
|
||||
}
|
||||
|
||||
return getPlayer(player);
|
||||
return queryMcMMOPlayer(player);
|
||||
}
|
||||
|
||||
public boolean hasPlayerDataKey(Entity entity) {
|
||||
return entity != null && entity.hasMetadata(mcMMO.playerDataKey);
|
||||
}
|
||||
|
||||
public MMODataSnapshot createPlayerDataSnapshot(PersistentPlayerData persistentPlayerData) {
|
||||
public @NotNull MMODataSnapshot createPlayerDataSnapshot(@NotNull PersistentPlayerData persistentPlayerData) {
|
||||
return new MMODataSnapshot(persistentPlayerData);
|
||||
}
|
||||
|
||||
public void saveUserImmediately(PersistentPlayerData persistentPlayerData, boolean useSync) {
|
||||
public void saveUserImmediately(@NotNull PersistentPlayerData persistentPlayerData, boolean useSync) {
|
||||
if(useSync)
|
||||
scheduleSyncSave(createPlayerDataSnapshot(persistentPlayerData)); //Execute sync saves immediately
|
||||
else
|
||||
scheduleAsyncSaveDelay(createPlayerDataSnapshot(persistentPlayerData), 0);
|
||||
}
|
||||
|
||||
public void saveUserWithDelay(PersistentPlayerData persistentPlayerData, boolean useSync, int delayTicks) {
|
||||
public void saveUserWithDelay(@NotNull PersistentPlayerData persistentPlayerData, boolean useSync, int delayTicks) {
|
||||
if(useSync)
|
||||
scheduleSyncSaveDelay(createPlayerDataSnapshot(persistentPlayerData), delayTicks); //Execute sync saves immediately
|
||||
else
|
||||
scheduleAsyncSaveDelay(createPlayerDataSnapshot(persistentPlayerData), delayTicks);
|
||||
}
|
||||
|
||||
// public void save(boolean useSync) {
|
||||
// if (!changed || !loaded) {
|
||||
// saveAttempts = 0;
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// // TODO should this part be synchronized?
|
||||
// PlayerProfile profileCopy = new PlayerProfile(playerName, uuid,
|
||||
// experienceManager.copyPrimarySkillLevelsMap(),
|
||||
// experienceManager.copyPrimarySkillExperienceValuesMap(),
|
||||
// ImmutableMap.copyOf(abilityDATS),
|
||||
// mobHealthbarType,
|
||||
// scoreboardTipsShown,
|
||||
// ImmutableMap.copyOf(uniquePlayerData),
|
||||
// ImmutableMap.copyOf(xpBarState));
|
||||
//
|
||||
// changed = !mcMMO.getDatabaseManager().saveUser(profileCopy);
|
||||
//
|
||||
// if (changed) {
|
||||
// mcMMO.p.getLogger().severe("PlayerProfile saving failed for player: " + playerName + " " + uuid);
|
||||
//
|
||||
// if(saveAttempts > 0)
|
||||
// {
|
||||
// mcMMO.p.getLogger().severe("Attempted to save profile for player "+getPlayerName()
|
||||
// + " resulted in failure. "+saveAttempts+" have been made so far.");
|
||||
// }
|
||||
//
|
||||
// if(saveAttempts < 10)
|
||||
// {
|
||||
// saveAttempts++;
|
||||
//
|
||||
// if(useSync)
|
||||
// scheduleSyncSave(); //Execute sync saves immediately
|
||||
// else
|
||||
// scheduleAsyncSaveDelay();
|
||||
//
|
||||
// } else {
|
||||
// mcMMO.p.getLogger().severe("mcMMO has failed to save the profile for "
|
||||
// +getPlayerName()+" numerous times." +
|
||||
// " mcMMO will now stop attempting to save this profile." +
|
||||
// " Check your console for errors and inspect your DB for issues.");
|
||||
// }
|
||||
//
|
||||
// } else {
|
||||
// saveAttempts = 0;
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* Save all users ON THIS THREAD.
|
||||
*/
|
||||
@@ -226,7 +203,7 @@ public final class UserManager {
|
||||
*
|
||||
* @param syncSave if true, data is saved synchronously
|
||||
*/
|
||||
public void logout(McMMOPlayer mmoPlayer, boolean syncSave) {
|
||||
public void logout(@NotNull McMMOPlayer mmoPlayer, boolean syncSave) {
|
||||
BleedTimerTask.bleedOut(mmoPlayer.getPlayer());
|
||||
|
||||
//TODO: There is a possibility that async saves don't execute in time if the server is told to shutdown
|
||||
@@ -247,19 +224,19 @@ public final class UserManager {
|
||||
}
|
||||
|
||||
|
||||
public void scheduleAsyncSave(MMODataSnapshot mmoDataSnapshot) {
|
||||
public void scheduleAsyncSave(@NotNull MMODataSnapshot mmoDataSnapshot) {
|
||||
new PersistentPlayerDataSaveTask(mmoDataSnapshot).runTaskAsynchronously(mcMMO.p);
|
||||
}
|
||||
|
||||
public void scheduleSyncSave(MMODataSnapshot mmoDataSnapshot) {
|
||||
public void scheduleSyncSave(@NotNull MMODataSnapshot mmoDataSnapshot) {
|
||||
new PersistentPlayerDataSaveTask(mmoDataSnapshot).runTask(mcMMO.p);
|
||||
}
|
||||
|
||||
public void scheduleAsyncSaveDelay(MMODataSnapshot mmoDataSnapshot, int delayTicks) {
|
||||
public void scheduleAsyncSaveDelay(@NotNull MMODataSnapshot mmoDataSnapshot, int delayTicks) {
|
||||
new PersistentPlayerDataSaveTask(mmoDataSnapshot).runTaskLaterAsynchronously(mcMMO.p, delayTicks);
|
||||
}
|
||||
|
||||
public void scheduleSyncSaveDelay(MMODataSnapshot mmoDataSnapshot, int delayTicks) {
|
||||
public void scheduleSyncSaveDelay(@NotNull MMODataSnapshot mmoDataSnapshot, int delayTicks) {
|
||||
new PersistentPlayerDataSaveTask(mmoDataSnapshot).runTaskLater(mcMMO.p, delayTicks);
|
||||
}
|
||||
}
|
||||
|
@@ -205,7 +205,7 @@ public class ScoreboardWrapper {
|
||||
if(mcMMO.getUserManager().getPlayer(playerName) == null)
|
||||
return;
|
||||
|
||||
PlayerProfile profile = mcMMO.getUserManager().getPlayer(player);
|
||||
PlayerProfile profile = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
if (profile.getScoreboardTipsShown() >= Config.getInstance().getTipsAmount()) {
|
||||
return;
|
||||
@@ -433,7 +433,7 @@ public class ScoreboardWrapper {
|
||||
return;
|
||||
}
|
||||
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
if(mmoPlayer == null)
|
||||
return;
|
||||
|
@@ -47,7 +47,7 @@ public final class CombatUtils {
|
||||
return;
|
||||
}
|
||||
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
//Make sure the profiles been loaded
|
||||
if(mmoPlayer == null) {
|
||||
@@ -95,7 +95,7 @@ public final class CombatUtils {
|
||||
return;
|
||||
}
|
||||
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
//Make sure the profiles been loaded
|
||||
if(mmoPlayer == null) {
|
||||
@@ -144,7 +144,7 @@ public final class CombatUtils {
|
||||
double finalDamage = initialDamage;
|
||||
Map<DamageModifier, Double> modifiers = getModifiers(event);
|
||||
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
//Make sure the profiles been loaded
|
||||
if(mmoPlayer == null) {
|
||||
@@ -193,7 +193,7 @@ public final class CombatUtils {
|
||||
double initialDamage = event.getDamage();
|
||||
double finalDamage = initialDamage;
|
||||
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
//Make sure the profiles been loaded
|
||||
if(mmoPlayer == null) {
|
||||
@@ -233,7 +233,7 @@ public final class CombatUtils {
|
||||
double finalDamage = initialDamage;
|
||||
|
||||
if(master != null && master.isOnline() && master.isValid()) {
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(master);
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(master);
|
||||
|
||||
//Make sure the profiles been loaded
|
||||
if(mmoPlayer == null) {
|
||||
@@ -265,7 +265,7 @@ public final class CombatUtils {
|
||||
private static void processArcheryCombat(LivingEntity target, Player player, EntityDamageByEntityEvent event, Projectile arrow) {
|
||||
double initialDamage = event.getDamage();
|
||||
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
//Make sure the profiles been loaded
|
||||
if(mmoPlayer == null) {
|
||||
@@ -307,7 +307,7 @@ public final class CombatUtils {
|
||||
private static void processCrossbowCombat(LivingEntity target, Player player, EntityDamageByEntityEvent event, Projectile arrow) {
|
||||
double initialDamage = event.getDamage();
|
||||
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
//Make sure the profiles been loaded
|
||||
if(mmoPlayer == null) {
|
||||
@@ -319,7 +319,7 @@ public final class CombatUtils {
|
||||
double finalDamage = event.getDamage();
|
||||
|
||||
if (target instanceof Player && PrimarySkillType.UNARMED.getPVPEnabled()) {
|
||||
UnarmedManager unarmedManager = mcMMO.getUserManager().getPlayer((Player) target).getUnarmedManager();
|
||||
UnarmedManager unarmedManager = mcMMO.getUserManager().queryMcMMOPlayer((Player) target).getUnarmedManager();
|
||||
|
||||
if (unarmedManager.canDeflect()) {
|
||||
event.setCancelled(unarmedManager.deflectCheck());
|
||||
@@ -359,7 +359,7 @@ public final class CombatUtils {
|
||||
return;
|
||||
}
|
||||
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
AcrobaticsManager acrobaticsManager = mmoPlayer.getAcrobaticsManager();
|
||||
|
||||
if (acrobaticsManager.canDodge(target)) {
|
||||
@@ -390,7 +390,7 @@ public final class CombatUtils {
|
||||
|
||||
if (target instanceof Tameable) {
|
||||
if (heldItem.getType() == Material.BONE) {
|
||||
TamingManager tamingManager = mcMMO.getUserManager().getPlayer(player).getTamingManager();
|
||||
TamingManager tamingManager = mcMMO.getUserManager().queryMcMMOPlayer(player).getTamingManager();
|
||||
|
||||
if (tamingManager.canUseBeastLore()) {
|
||||
tamingManager.beastLore(target);
|
||||
@@ -483,7 +483,7 @@ public final class CombatUtils {
|
||||
|
||||
|
||||
if (target.getType() != EntityType.CREEPER && !Misc.isNPCEntityExcludingVillagers(player) && PrimarySkillType.TAMING.getPermissions(player)) {
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
if(mmoPlayer == null) {
|
||||
return;
|
||||
@@ -752,7 +752,7 @@ public final class CombatUtils {
|
||||
NotificationManager.sendPlayerInformation((Player)entity, NotificationType.SUBSKILL_MESSAGE, "Swords.Combat.SS.Struck");
|
||||
}
|
||||
|
||||
mcMMO.getUserManager().getPlayer(attacker).getSwordsManager().ruptureCheck(target);
|
||||
mcMMO.getUserManager().queryMcMMOPlayer(attacker).getSwordsManager().ruptureCheck(target);
|
||||
break;
|
||||
|
||||
case AXES:
|
||||
@@ -875,10 +875,10 @@ public final class CombatUtils {
|
||||
Player defender = (Player) entity;
|
||||
|
||||
//TODO: NPC Interaction?
|
||||
if(mcMMO.getUserManager().getPlayer(defender) == null)
|
||||
if(mcMMO.getUserManager().queryMcMMOPlayer(defender) == null)
|
||||
return true;
|
||||
|
||||
if (!defender.getWorld().getPVP() || defender == player || mcMMO.getUserManager().getPlayer(defender).getGodMode()) {
|
||||
if (!defender.getWorld().getPVP() || defender == player || mcMMO.getUserManager().queryMcMMOPlayer(defender).getGodMode()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@@ -49,7 +49,7 @@ public final class PerksUtils {
|
||||
double modifier = 1.0F;
|
||||
|
||||
if (Permissions.customXpBoost(player, skill)) {
|
||||
if(mcMMO.getUserManager().getPlayer(player) != null && mcMMO.getUserManager().getPlayer(player).isDebugMode()) {
|
||||
if(mcMMO.getUserManager().queryMcMMOPlayer(player) != null && mcMMO.getUserManager().queryMcMMOPlayer(player).isDebugMode()) {
|
||||
player.sendMessage(ChatColor.GOLD + "[DEBUG] " + ChatColor.DARK_GRAY + "XP Perk Multiplier IS CUSTOM! ");
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ public final class PerksUtils {
|
||||
|
||||
float modifiedXP = (float) (xp * modifier);
|
||||
|
||||
if(mcMMO.getUserManager().getPlayer(player) != null && mcMMO.getUserManager().getPlayer(player).isDebugMode()) {
|
||||
if(mcMMO.getUserManager().queryMcMMOPlayer(player) != null && mcMMO.getUserManager().queryMcMMOPlayer(player).isDebugMode()) {
|
||||
player.sendMessage(ChatColor.GOLD + "[DEBUG] " + ChatColor.RESET + "XP Perk Multiplier - " + ChatColor.GOLD + modifier);
|
||||
player.sendMessage(ChatColor.GOLD + "[DEBUG] " + ChatColor.RESET + "Original XP before perk boosts " + ChatColor.RED + (double) xp);
|
||||
player.sendMessage(ChatColor.GOLD + "[DEBUG] " + ChatColor.RESET + "XP AFTER PERKS " + ChatColor.DARK_RED + modifiedXP);
|
||||
|
@@ -181,7 +181,7 @@ public class SkillUtils {
|
||||
}
|
||||
}
|
||||
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
//Not Loaded
|
||||
if(mmoPlayer == null)
|
||||
|
@@ -21,7 +21,7 @@ public class SmeltingTracker {
|
||||
|
||||
private void changeFurnaceOwnership(Furnace furnace, Player player) {
|
||||
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer(player);
|
||||
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryMcMMOPlayer(player);
|
||||
|
||||
/*
|
||||
Debug output
|
||||
@@ -52,7 +52,7 @@ public class SmeltingTracker {
|
||||
OfflinePlayer furnaceOwner = getFurnaceOwner(furnace);
|
||||
|
||||
if(furnaceOwner != null && furnaceOwner.isOnline()) {
|
||||
McMMOPlayer furnaceOwnerProfile = mcMMO.getUserManager().getPlayer(furnaceOwner.getPlayer());
|
||||
McMMOPlayer furnaceOwnerProfile = mcMMO.getUserManager().queryMcMMOPlayer(furnaceOwner.getPlayer());
|
||||
|
||||
if(furnaceOwnerProfile != null) {
|
||||
if(furnaceOwnerProfile.isDebugMode()) {
|
||||
|
Reference in New Issue
Block a user