mirror of
https://github.com/WiIIiam278/HuskSync.git
synced 2025-12-30 03:59:12 +00:00
Refactor name to be HuskSync
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
package me.william278.crossserversync;
|
||||
package me.william278.husksync;
|
||||
|
||||
import me.william278.crossserversync.bukkit.config.ConfigLoader;
|
||||
import me.william278.crossserversync.bukkit.data.BukkitDataCache;
|
||||
import me.william278.crossserversync.bukkit.listener.BukkitRedisListener;
|
||||
import me.william278.crossserversync.bukkit.listener.EventListener;
|
||||
import me.william278.husksync.bukkit.config.ConfigLoader;
|
||||
import me.william278.husksync.bukkit.data.BukkitDataCache;
|
||||
import me.william278.husksync.bukkit.listener.BukkitRedisListener;
|
||||
import me.william278.husksync.bukkit.listener.EventListener;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public final class CrossServerSyncBukkit extends JavaPlugin {
|
||||
public final class HuskSyncBukkit extends JavaPlugin {
|
||||
|
||||
private static CrossServerSyncBukkit instance;
|
||||
public static CrossServerSyncBukkit getInstance() {
|
||||
private static HuskSyncBukkit instance;
|
||||
public static HuskSyncBukkit getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
@@ -41,12 +41,12 @@ public final class CrossServerSyncBukkit extends JavaPlugin {
|
||||
new BukkitRedisListener();
|
||||
|
||||
// Log to console
|
||||
getLogger().info("Enabled CrossServerSync (" + getServer().getName() + ") v" + getDescription().getVersion());
|
||||
getLogger().info("Enabled HuskSync (" + getServer().getName() + ") v" + getDescription().getVersion());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
// Plugin shutdown logic
|
||||
getLogger().info("Disabled CrossServerSync (" + getServer().getName() + ") v" + getDescription().getVersion());
|
||||
getLogger().info("Disabled HuskSync (" + getServer().getName() + ") v" + getDescription().getVersion());
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package me.william278.crossserversync.bukkit;
|
||||
package me.william278.husksync.bukkit;
|
||||
|
||||
import me.william278.crossserversync.redis.RedisMessage;
|
||||
import me.william278.husksync.redis.RedisMessage;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.advancement.Advancement;
|
||||
import org.bukkit.advancement.AdvancementProgress;
|
||||
@@ -175,7 +175,7 @@ public final class DataSerializer {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return (PlayerLocation) RedisMessage.deserialize(serializedLocationData);
|
||||
return (PlayerLocation) me.william278.husksync.redis.RedisMessage.deserialize(serializedLocationData);
|
||||
} catch (ClassNotFoundException e) {
|
||||
throw new IOException("Unable to decode class type.", e);
|
||||
}
|
||||
@@ -183,7 +183,7 @@ public final class DataSerializer {
|
||||
|
||||
public static String getSerializedLocation(Player player) throws IOException {
|
||||
final Location playerLocation = player.getLocation();
|
||||
return RedisMessage.serialize(new PlayerLocation(playerLocation.getX(), playerLocation.getY(), playerLocation.getZ(),
|
||||
return me.william278.husksync.redis.RedisMessage.serialize(new PlayerLocation(playerLocation.getX(), playerLocation.getY(), playerLocation.getZ(),
|
||||
playerLocation.getYaw(), playerLocation.getPitch(), player.getWorld().getName(), player.getWorld().getEnvironment()));
|
||||
}
|
||||
|
||||
@@ -197,7 +197,7 @@ public final class DataSerializer {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
try {
|
||||
return (ArrayList<AdvancementRecord>) RedisMessage.deserialize(serializedAdvancementData);
|
||||
return (ArrayList<AdvancementRecord>) me.william278.husksync.redis.RedisMessage.deserialize(serializedAdvancementData);
|
||||
} catch (ClassNotFoundException e) {
|
||||
throw new IOException("Unable to decode class type.", e);
|
||||
}
|
||||
@@ -214,7 +214,7 @@ public final class DataSerializer {
|
||||
advancementData.add(new AdvancementRecord(advancementKey.getNamespace() + ":" + advancementKey.getKey(), awardedCriteria));
|
||||
}
|
||||
|
||||
return RedisMessage.serialize(advancementData);
|
||||
return me.william278.husksync.redis.RedisMessage.serialize(advancementData);
|
||||
}
|
||||
|
||||
public record AdvancementRecord(String advancementKey,
|
||||
@@ -226,7 +226,7 @@ public final class DataSerializer {
|
||||
return new StatisticData(new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>());
|
||||
}
|
||||
try {
|
||||
return (StatisticData) RedisMessage.deserialize(serializedStatisticData);
|
||||
return (StatisticData) me.william278.husksync.redis.RedisMessage.deserialize(serializedStatisticData);
|
||||
} catch (ClassNotFoundException e) {
|
||||
throw new IOException("Unable to decode class type.", e);
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
package me.william278.crossserversync.bukkit;
|
||||
package me.william278.husksync.bukkit;
|
||||
|
||||
import de.themoep.minedown.MineDown;
|
||||
import me.william278.crossserversync.CrossServerSyncBukkit;
|
||||
import me.william278.crossserversync.MessageStrings;
|
||||
import me.william278.crossserversync.PlayerData;
|
||||
import me.william278.crossserversync.Settings;
|
||||
import me.william278.husksync.HuskSyncBukkit;
|
||||
import me.william278.husksync.MessageStrings;
|
||||
import me.william278.husksync.PlayerData;
|
||||
import me.william278.husksync.Settings;
|
||||
import net.md_5.bungee.api.ChatMessageType;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.advancement.Advancement;
|
||||
@@ -23,7 +23,7 @@ import java.util.logging.Level;
|
||||
|
||||
public class PlayerSetter {
|
||||
|
||||
private static final CrossServerSyncBukkit plugin = CrossServerSyncBukkit.getInstance();
|
||||
private static final HuskSyncBukkit plugin = HuskSyncBukkit.getInstance();
|
||||
|
||||
/**
|
||||
* Set a player from their PlayerData, based on settings
|
||||
@@ -1,6 +1,6 @@
|
||||
package me.william278.crossserversync.bukkit.config;
|
||||
package me.william278.husksync.bukkit.config;
|
||||
|
||||
import me.william278.crossserversync.Settings;
|
||||
import me.william278.husksync.Settings;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
|
||||
public class ConfigLoader {
|
||||
@@ -1,34 +1,19 @@
|
||||
package me.william278.crossserversync.bukkit.data;
|
||||
package me.william278.husksync.bukkit.data;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.UUID;
|
||||
|
||||
public class BukkitDataCache {
|
||||
|
||||
/**
|
||||
* Map of Player UUIDs to last-updated PlayerData version UUIDs
|
||||
*/
|
||||
private static HashMap<UUID, UUID> bukkitDataCache;
|
||||
|
||||
/**
|
||||
* Map of Player UUIDs to request on join
|
||||
*/
|
||||
private static HashSet<UUID> requestOnJoin;
|
||||
|
||||
public BukkitDataCache() {
|
||||
bukkitDataCache = new HashMap<>();
|
||||
requestOnJoin = new HashSet<>();
|
||||
}
|
||||
|
||||
public UUID getVersionUUID(UUID playerUUID) {
|
||||
return bukkitDataCache.get(playerUUID);
|
||||
}
|
||||
|
||||
public void setVersionUUID(UUID playerUUID, UUID dataVersionUUID) {
|
||||
bukkitDataCache.put(playerUUID, dataVersionUUID);
|
||||
}
|
||||
|
||||
public boolean isPlayerRequestingOnJoin(UUID uuid) {
|
||||
return requestOnJoin.contains(uuid);
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
package me.william278.crossserversync.bukkit.listener;
|
||||
package me.william278.husksync.bukkit.listener;
|
||||
|
||||
import de.themoep.minedown.MineDown;
|
||||
import me.william278.crossserversync.MessageStrings;
|
||||
import me.william278.crossserversync.PlayerData;
|
||||
import me.william278.crossserversync.Settings;
|
||||
import me.william278.crossserversync.CrossServerSyncBukkit;
|
||||
import me.william278.crossserversync.bukkit.PlayerSetter;
|
||||
import me.william278.crossserversync.redis.RedisListener;
|
||||
import me.william278.crossserversync.redis.RedisMessage;
|
||||
import me.william278.husksync.PlayerData;
|
||||
import me.william278.husksync.HuskSyncBukkit;
|
||||
import me.william278.husksync.bukkit.PlayerSetter;
|
||||
import me.william278.husksync.redis.RedisListener;
|
||||
import me.william278.husksync.MessageStrings;
|
||||
import me.william278.husksync.Settings;
|
||||
import me.william278.husksync.redis.RedisMessage;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@@ -17,7 +17,7 @@ import java.util.logging.Level;
|
||||
|
||||
public class BukkitRedisListener extends RedisListener {
|
||||
|
||||
private static final CrossServerSyncBukkit plugin = CrossServerSyncBukkit.getInstance();
|
||||
private static final HuskSyncBukkit plugin = HuskSyncBukkit.getInstance();
|
||||
|
||||
// Initialize the listener on the bukkit server
|
||||
public BukkitRedisListener() {
|
||||
@@ -25,12 +25,12 @@ public class BukkitRedisListener extends RedisListener {
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle an incoming {@link RedisMessage}
|
||||
* Handle an incoming {@link me.william278.husksync.redis.RedisMessage}
|
||||
*
|
||||
* @param message The {@link RedisMessage} to handle
|
||||
* @param message The {@link me.william278.husksync.redis.RedisMessage} to handle
|
||||
*/
|
||||
@Override
|
||||
public void handleMessage(RedisMessage message) {
|
||||
public void handleMessage(me.william278.husksync.redis.RedisMessage message) {
|
||||
// Ignore messages for proxy servers
|
||||
if (!message.getMessageTarget().targetServerType().equals(Settings.ServerType.BUKKIT)) {
|
||||
return;
|
||||
@@ -39,11 +39,11 @@ public class BukkitRedisListener extends RedisListener {
|
||||
|
||||
// Handle the message for the player
|
||||
if (message.getMessageTarget().targetPlayerUUID() == null) {
|
||||
if (message.getMessageType() == RedisMessage.MessageType.REQUEST_DATA_ON_JOIN) {
|
||||
if (message.getMessageType() == me.william278.husksync.redis.RedisMessage.MessageType.REQUEST_DATA_ON_JOIN) {
|
||||
UUID playerUUID = UUID.fromString(message.getMessageDataElements()[1]);
|
||||
switch (RedisMessage.RequestOnJoinUpdateType.valueOf(message.getMessageDataElements()[0])) {
|
||||
case ADD_REQUESTER -> CrossServerSyncBukkit.bukkitCache.setRequestOnJoin(playerUUID);
|
||||
case REMOVE_REQUESTER -> CrossServerSyncBukkit.bukkitCache.removeRequestOnJoin(playerUUID);
|
||||
switch (me.william278.husksync.redis.RedisMessage.RequestOnJoinUpdateType.valueOf(message.getMessageDataElements()[0])) {
|
||||
case ADD_REQUESTER -> HuskSyncBukkit.bukkitCache.setRequestOnJoin(playerUUID);
|
||||
case REMOVE_REQUESTER -> HuskSyncBukkit.bukkitCache.removeRequestOnJoin(playerUUID);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -55,9 +55,6 @@ public class BukkitRedisListener extends RedisListener {
|
||||
// Deserialize the received PlayerData
|
||||
PlayerData data = (PlayerData) RedisMessage.deserialize(message.getMessageData());
|
||||
|
||||
// Update last loaded data UUID
|
||||
CrossServerSyncBukkit.bukkitCache.setVersionUUID(player.getUniqueId(), data.getDataVersionUUID());
|
||||
|
||||
// Set the player's data
|
||||
PlayerSetter.setPlayerFrom(player, data);
|
||||
} catch (IOException | ClassNotFoundException e) {
|
||||
@@ -1,10 +1,10 @@
|
||||
package me.william278.crossserversync.bukkit.listener;
|
||||
package me.william278.husksync.bukkit.listener;
|
||||
|
||||
import me.william278.crossserversync.CrossServerSyncBukkit;
|
||||
import me.william278.crossserversync.PlayerData;
|
||||
import me.william278.crossserversync.Settings;
|
||||
import me.william278.crossserversync.bukkit.DataSerializer;
|
||||
import me.william278.crossserversync.redis.RedisMessage;
|
||||
import me.william278.husksync.HuskSyncBukkit;
|
||||
import me.william278.husksync.PlayerData;
|
||||
import me.william278.husksync.Settings;
|
||||
import me.william278.husksync.bukkit.DataSerializer;
|
||||
import me.william278.husksync.redis.RedisMessage;
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@@ -18,7 +18,7 @@ import java.util.logging.Level;
|
||||
|
||||
public class EventListener implements Listener {
|
||||
|
||||
private static final CrossServerSyncBukkit plugin = CrossServerSyncBukkit.getInstance();
|
||||
private static final HuskSyncBukkit plugin = HuskSyncBukkit.getInstance();
|
||||
|
||||
/**
|
||||
* Returns the new serialized PlayerData for a player.
|
||||
@@ -28,7 +28,7 @@ public class EventListener implements Listener {
|
||||
* @throws IOException If the serialization fails
|
||||
*/
|
||||
private static String getNewSerializedPlayerData(Player player) throws IOException {
|
||||
return RedisMessage.serialize(new PlayerData(player.getUniqueId(),
|
||||
return me.william278.husksync.redis.RedisMessage.serialize(new PlayerData(player.getUniqueId(),
|
||||
DataSerializer.getSerializedInventoryContents(player),
|
||||
DataSerializer.getSerializedEnderChestContents(player),
|
||||
player.getHealth(),
|
||||
@@ -53,15 +53,11 @@ public class EventListener implements Listener {
|
||||
// When a player leaves a Bukkit server
|
||||
final Player player = event.getPlayer();
|
||||
|
||||
// Send a redis message with the player's last updated PlayerData version UUID and their new PlayerData
|
||||
try {
|
||||
// Get the player's last updated PlayerData version UUID
|
||||
//final UUID lastUpdatedDataVersion = CrossServerSyncBukkit.bukkitCache.getVersionUUID(player.getUniqueId());
|
||||
//if (lastUpdatedDataVersion == null) return; // Return if the player has not been properly updated.
|
||||
|
||||
// Send a redis message with the player's last updated PlayerData version UUID and their new PlayerData
|
||||
final String serializedPlayerData = getNewSerializedPlayerData(player);
|
||||
new RedisMessage(RedisMessage.MessageType.PLAYER_DATA_UPDATE,
|
||||
new RedisMessage.MessageTarget(Settings.ServerType.BUNGEECORD, null),
|
||||
new me.william278.husksync.redis.RedisMessage(me.william278.husksync.redis.RedisMessage.MessageType.PLAYER_DATA_UPDATE,
|
||||
new me.william278.husksync.redis.RedisMessage.MessageTarget(Settings.ServerType.BUNGEECORD, null),
|
||||
serializedPlayerData).send();
|
||||
} catch (IOException e) {
|
||||
plugin.getLogger().log(Level.SEVERE, "Failed to send a PlayerData update to the proxy", e);
|
||||
@@ -70,9 +66,6 @@ public class EventListener implements Listener {
|
||||
// Clear player inventory and ender chest
|
||||
player.getInventory().clear();
|
||||
player.getEnderChest().clear();
|
||||
|
||||
// Set data version ID to null
|
||||
CrossServerSyncBukkit.bukkitCache.setVersionUUID(player.getUniqueId(), null);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@@ -84,10 +77,10 @@ public class EventListener implements Listener {
|
||||
player.getInventory().clear();
|
||||
player.getEnderChest().clear();
|
||||
|
||||
if (CrossServerSyncBukkit.bukkitCache.isPlayerRequestingOnJoin(player.getUniqueId())) {
|
||||
if (HuskSyncBukkit.bukkitCache.isPlayerRequestingOnJoin(player.getUniqueId())) {
|
||||
try {
|
||||
// Send a redis message requesting the player data
|
||||
new RedisMessage(RedisMessage.MessageType.PLAYER_DATA_REQUEST,
|
||||
new me.william278.husksync.redis.RedisMessage(me.william278.husksync.redis.RedisMessage.MessageType.PLAYER_DATA_REQUEST,
|
||||
new RedisMessage.MessageTarget(Settings.ServerType.BUNGEECORD, null),
|
||||
player.getUniqueId().toString()).send();
|
||||
} catch (IOException e) {
|
||||
Reference in New Issue
Block a user