Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.javascript.JavascriptPlaceholderRequest;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.player.UuidLookup;
import com.bencodez.advancedcore.api.rewards.DirectlyDefinedReward;
import com.bencodez.advancedcore.api.rewards.Reward;
import com.bencodez.advancedcore.api.rewards.RewardEditData;
Expand Down Expand Up @@ -96,6 +97,7 @@
import com.bencodez.votingplugin.listeners.VotingPluginUpdateEvent;
import com.bencodez.votingplugin.placeholders.MVdWPlaceholders;
import com.bencodez.votingplugin.placeholders.PlaceHolders;
import com.bencodez.votingplugin.placeholders.PlaceholderPlayerPresence;
import com.bencodez.votingplugin.placeholders.VotingPluginExpansion;
import com.bencodez.votingplugin.presets.VoteSitePresetSetupHandler;
import com.bencodez.votingplugin.proxy.control.HostedControlManager;
Expand Down Expand Up @@ -231,6 +233,9 @@ public File getLoadedPluginJarFile() {
@Getter
private PlaceHolders placeholders;

@Getter
private final PlaceholderPlayerPresence placeholderPlayerPresence = new PlaceholderPlayerPresence();

@Getter
private VoteTester voteTester;

Expand Down Expand Up @@ -650,6 +655,7 @@ public void onPostLoad() {
registerCommands();
checkVotifier();
registerEvents();
refreshPlaceholderPlayerPresence();

loadVoteBroadcast();

Expand Down Expand Up @@ -1791,6 +1797,7 @@ public void onFinish() {

@Override
public void onUnLoad() {
placeholderPlayerPresence.clear();
stopBackendHostedControlLifecycle();
stopBackendControlConnectorLifecycle();
if (getBackendProxyHandler() != null) {
Expand Down Expand Up @@ -1929,6 +1936,23 @@ public void reloadAll() {
reloadPlugin(true, true);
}

/** Captures Bukkit presence while the lifecycle caller owns platform access. */
public void refreshPlaceholderPlayerPresence() {
boolean onlineMode = getOptions().isOnlineMode();
placeholderPlayerPresence.replace(Bukkit::getOnlinePlayers,
player -> placeholderStorageUuid(player, onlineMode));
}

static UUID placeholderStorageUuid(Player player, boolean onlineMode) {
if (onlineMode) return player.getUniqueId();
String cachedUuid = UuidLookup.getInstance().getCachedUUID(player.getName());
try {
return UUID.fromString(cachedUuid);
} catch (IllegalArgumentException | NullPointerException ignored) {
return player.getUniqueId();
}
}

/** Reloads configuration applied by Control before its result is acknowledged. */
public void reloadFromControl() {
reloadPlugin(false, false);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
package com.bencodez.votingplugin.listeners;
package com.bencodez.votingplugin.listeners;

import java.util.UUID;

import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
Expand All @@ -8,9 +10,10 @@

import com.bencodez.advancedcore.api.player.UuidLookup;
import com.bencodez.advancedcore.api.user.UserDataFetchMode;
import com.bencodez.advancedcore.listeners.AdvancedCoreLoginEvent;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.user.VotingPluginUser;
import com.bencodez.advancedcore.listeners.AdvancedCoreLoginEvent;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.placeholders.PlaceHolders;
import com.bencodez.votingplugin.user.VotingPluginUser;

public class PlayerJoinEvent implements Listener {

Expand All @@ -26,18 +29,38 @@ public PlayerJoinEvent(VotingPluginMain plugin) {
this.plugin = plugin;
}

private static boolean isBlank(String s) {
return s == null || s.trim().isEmpty() || "null".equalsIgnoreCase(s.trim());
}
/** Capture the entity owner before asynchronous user notifications can need it. */
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerJoin(org.bukkit.event.player.PlayerJoinEvent event) {
if (event == null || event.getPlayer() == null) return;
Player player = event.getPlayer();
plugin.getPlaceholderPlayerPresence().playerOnline(placeholderUuid(player), player);
Comment thread
BenCodez marked this conversation as resolved.
Resolved
}

private UUID placeholderUuid(Player player) {
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(player);
return user == null || user.getJavaUUID() == null ? player.getUniqueId() : user.getJavaUUID();
}

private static boolean isBlank(String s) {
return s == null || s.trim().isEmpty() || "null".equalsIgnoreCase(s.trim());
}

private void clearPlaceholderCachesIfOffline(UUID uuid) {
PlaceHolders placeholders = plugin.getPlaceholders();
if (placeholders != null) {
plugin.getPlaceholderPlayerPresence().runIfOffline(uuid, () -> placeholders.onLogout(uuid));
}
}

/**
* On AdvancedCore login event (post-auth / delayed login).
*
* @param event the event
*/
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerLogin(AdvancedCoreLoginEvent event) {
if (event == null || !plugin.isMySQLOkay() || event.isCancelled() || event.getUser() == null) {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerLogin(AdvancedCoreLoginEvent event) {
if (event == null || !plugin.isMySQLOkay() || event.isCancelled() || event.getUser() == null) {
return;
}

Expand All @@ -57,9 +80,12 @@ public void onPlayerLogin(AdvancedCoreLoginEvent event) {
return;
}

Player player = event.getPlayer();

if (player != null && player.isOp() && plugin.isYmlError()) {
Player player = event.getPlayer();
if (player != null) {
plugin.getPlaceholderPlayerPresence().playerOnline(user.getJavaUUID(), player);
}

if (player != null && player.isOp() && plugin.isYmlError()) {
user.sendMessage("&cVotingPlugin: Detected yml error, please check console for details");
}

Expand Down Expand Up @@ -93,7 +119,11 @@ public void onPlayerQuit(PlayerQuitEvent event) {
final Player player = event.getPlayer();
if (player == null) {
return;
}
}
UUID placeholderUuid = plugin.getPlaceholderPlayerPresence().storageUuid(player);
if (placeholderUuid == null) placeholderUuid = placeholderUuid(player);
boolean retiredPresence = plugin.getPlaceholderPlayerPresence().playerOffline(placeholderUuid, player);
if (retiredPresence) clearPlaceholderCachesIfOffline(placeholderUuid);

if (plugin.getBungeeSettings().isUseBungeecoord()) {
plugin.getBackendProxyHandler().playerOffline(player.getName());
Expand All @@ -117,10 +147,10 @@ public void run() {
return;
}

user.userDataFetechMode(UserDataFetchMode.NO_CACHE);
user.logoutRewards();
plugin.getPlaceholders().onLogout(user);
}
});
user.userDataFetechMode(UserDataFetchMode.NO_CACHE);
user.logoutRewards();
clearPlaceholderCachesIfOffline(user.getJavaUUID());
}
});
}
}
Loading
Loading