mirror of
https://github.com/TotalFreedomMC/TF-Marriage.git
synced 2025-02-05 14:22:45 +00:00
set partner name
This commit is contained in:
parent
44c46f3fdc
commit
bbd17485f4
6 changed files with 63 additions and 10 deletions
|
@ -2,5 +2,5 @@
|
|||
"name": "Marriage v2.0.4",
|
||||
"type": "release",
|
||||
"gameVersion": "1.8.8",
|
||||
"downloadURL": "http://ci.lenis0012.com/job/Marriage/30/artifact/target/Marriage-Spigot-2.0.4.jar"
|
||||
"downloadURL": "http://ci.lenis0012.com/job/Marriage/31/artifact/target/Marriage-Spigot-2.0.4.jar"
|
||||
}
|
|
@ -6,6 +6,8 @@ import org.bukkit.Bukkit;
|
|||
import com.lenis0012.bukkit.marriage2.MPlayer;
|
||||
import com.lenis0012.bukkit.marriage2.Marriage;
|
||||
import com.lenis0012.bukkit.marriage2.config.Message;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
|
||||
public class CommandDivorce extends Command {
|
||||
|
||||
|
@ -26,6 +28,14 @@ public class CommandDivorce extends Command {
|
|||
|
||||
if(!payFee()) return;
|
||||
mPlayer.divorce();
|
||||
|
||||
// Clear metadata
|
||||
player.removeMetadata("marriedTo", marriage.getPlugin());
|
||||
Player target = Bukkit.getPlayer(partner.getUniqueId());
|
||||
if(target != null) {
|
||||
target.removeMetadata("marriedTo", marriage.getPlugin());
|
||||
}
|
||||
|
||||
broadcast(Message.DIVORCED, player.getName(), Bukkit.getOfflinePlayer(partner.getUniqueId()).getName());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import org.bukkit.entity.Player;
|
|||
import com.lenis0012.bukkit.marriage2.MPlayer;
|
||||
import com.lenis0012.bukkit.marriage2.Marriage;
|
||||
import com.lenis0012.bukkit.marriage2.config.Message;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
@ -97,6 +98,8 @@ public class CommandMarry extends Command {
|
|||
}
|
||||
|
||||
marriage.marry(mTarget, mPlayer);
|
||||
player.setMetadata("marriedTo", new FixedMetadataValue(marriage.getPlugin(), target.getName()));
|
||||
target.setMetadata("marriedTo", new FixedMetadataValue(marriage.getPlugin(), player.getName()));
|
||||
broadcast(Message.MARRIED, player.getName(), target.getName());
|
||||
} else if(!mTarget.isMarriageRequested(player.getUniqueId())) {
|
||||
if(!hasFee()) {
|
||||
|
|
|
@ -8,6 +8,8 @@ import java.sql.ResultSet;
|
|||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Supplier;
|
||||
|
@ -29,6 +31,12 @@ import com.lenis0012.bukkit.marriage2.misc.ListQuery;
|
|||
import org.bukkit.entity.Player;
|
||||
|
||||
public class DataManager {
|
||||
private static final ExecutorService executorService = Executors.newCachedThreadPool();
|
||||
|
||||
public static ExecutorService getExecutorService() {
|
||||
return executorService;
|
||||
}
|
||||
|
||||
// Create a data cache to overlap with the pre join event cache
|
||||
private final Cache<UUID, MarriageData> marriageDataCache = CacheBuilder.newBuilder().expireAfterWrite(60L, TimeUnit.SECONDS).build();
|
||||
private final MarriageCore core;
|
||||
|
|
|
@ -5,7 +5,10 @@ import com.google.common.cache.CacheBuilder;
|
|||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import com.lenis0012.bukkit.marriage2.MPlayer;
|
||||
import com.lenis0012.bukkit.marriage2.internal.data.DataManager;
|
||||
import com.lenis0012.bukkit.marriage2.internal.data.MarriagePlayer;
|
||||
import com.lenis0012.bukkit.marriage2.misc.ListQuery;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
@ -16,8 +19,11 @@ import org.bukkit.event.player.PlayerJoinEvent;
|
|||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
import com.lenis0012.bukkit.marriage2.internal.MarriageCore;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.logging.Level;
|
||||
|
||||
|
@ -40,24 +46,50 @@ public class DatabaseListener implements Listener {
|
|||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
final UUID userId = event.getPlayer().getUniqueId();
|
||||
MarriagePlayer player = cache.getIfPresent(userId);
|
||||
if(player != null) {
|
||||
core.setMPlayer(userId, cache.getIfPresent(userId));
|
||||
final Player player = event.getPlayer();
|
||||
final UUID userId = player.getUniqueId();
|
||||
MarriagePlayer mplayer = cache.getIfPresent(userId);
|
||||
if(mplayer != null) {
|
||||
loadPartnerName(mplayer, player);
|
||||
core.setMPlayer(userId, mplayer);
|
||||
return;
|
||||
}
|
||||
|
||||
// Something went wrong (unusually long login?)
|
||||
core.getLogger().log(Level.WARNING, "Player " + event.getPlayer().getName() + " was not in cache");
|
||||
core.getLogger().log(Level.INFO, "If this message shows often, report to dev");
|
||||
player = core.getDataManager().loadPlayer(userId);
|
||||
player.setLastName(event.getPlayer().getName());
|
||||
core.setMPlayer(userId, player);
|
||||
mplayer = core.getDataManager().loadPlayer(userId);
|
||||
mplayer.setLastName(player.getName());
|
||||
loadPartnerName(mplayer, player);
|
||||
core.setMPlayer(userId, mplayer);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
core.unloadPlayer(player.getUniqueId());
|
||||
if(player.hasMetadata("marriedTo")) {
|
||||
player.removeMetadata("marriedTo", core.getPlugin());
|
||||
}
|
||||
}
|
||||
|
||||
private void loadPartnerName(final MPlayer mplayer, final Player player) {
|
||||
if(!mplayer.isMarried()) return;
|
||||
DataManager.getExecutorService().execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
final String partner = ListQuery.getName(core.getDataManager(), player.getUniqueId());
|
||||
if(partner == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Bukkit.getScheduler().runTask(core.getPlugin(), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
player.setMetadata("marriedTo", new FixedMetadataValue(core.getPlugin(), partner));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
|
@ -66,7 +66,7 @@ public class ListQuery {
|
|||
return marriages;
|
||||
}
|
||||
|
||||
private static String getName(DataManager db, UUID userId) {
|
||||
public static String getName(DataManager db, UUID userId) {
|
||||
// local uuid cache
|
||||
OfflinePlayer op = Bukkit.getOfflinePlayer(userId);
|
||||
if(op != null && op.getName() != null) {
|
||||
|
@ -83,7 +83,7 @@ public class ListQuery {
|
|||
return nameFromMojang(userId);
|
||||
}
|
||||
|
||||
private static String nameFromMojang(UUID uuid) {
|
||||
public static String nameFromMojang(UUID uuid) {
|
||||
try {
|
||||
URL url = new URL(" https://api.mojang.com/user/profiles/" + uuid.toString().replace("-", "") + "/names");
|
||||
URLConnection connection = url.openConnection();
|
||||
|
|
Loading…
Reference in a new issue