9
0
mirror of https://github.com/WiIIiam278/HuskSync.git synced 2025-12-23 08:39:19 +00:00

refactor: Migrate from BoostedYaml to Exll's ConfigLib (#233)

* feat: start work on moving to Exll's configlib

* refactor: Fully migrate to Exlll's configlib

* refactor: Optimize imports
This commit is contained in:
William
2024-01-25 15:37:04 +00:00
committed by GitHub
parent a9bd4dd2f0
commit 530b3ef24d
49 changed files with 1652 additions and 1703 deletions

View File

@@ -19,7 +19,14 @@
package net.william278.husksync;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.google.gson.Gson;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import net.kyori.adventure.platform.AudienceProvider;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.william278.desertwell.util.Version;
@@ -64,14 +71,15 @@ import space.arim.morepaperlib.scheduling.AsynchronousScheduler;
import space.arim.morepaperlib.scheduling.GracefulScheduling;
import space.arim.morepaperlib.scheduling.RegionalScheduler;
import java.nio.file.Path;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListSet;
import java.util.logging.Level;
import java.util.stream.Collectors;
public class BukkitHuskSync extends JavaPlugin implements HuskSync, BukkitTask.Supplier, BukkitEventDispatcher,
BukkitMapPersister {
@Getter
@NoArgsConstructor
public class BukkitHuskSync extends JavaPlugin implements HuskSync, BukkitTask.Supplier,
BukkitEventDispatcher, BukkitMapPersister {
/**
* Metrics ID for <a href="https://bstats.org/plugin/bukkit/HuskSync%20-%20Bukkit/13140">HuskSync on Bukkit</a>.
@@ -79,26 +87,31 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync, BukkitTask.S
private static final int METRICS_ID = 13140;
private static final String PLATFORM_TYPE_ID = "bukkit";
private final Map<Identifier, Serializer<? extends Data>> serializers = Maps.newLinkedHashMap();
private final Map<UUID, Map<Identifier, Data>> playerCustomDataStore = Maps.newConcurrentMap();
private final Map<Integer, MapView> mapViews = Maps.newConcurrentMap();
private final List<Migrator> availableMigrators = Lists.newArrayList();
private final Set<UUID> lockedPlayers = Sets.newConcurrentHashSet();
private boolean disabling;
private Gson gson;
private AudienceProvider audiences;
private MorePaperLib paperLib;
private Database database;
private RedisManager redisManager;
private EventListener eventListener;
private DataAdapter dataAdapter;
private Map<Identifier, Serializer<? extends Data>> serializers;
private Map<UUID, Map<Identifier, Data>> playerCustomDataStore;
private Set<UUID> lockedPlayers;
private DataSyncer dataSyncer;
private Settings settings;
private Locales locales;
private Server server;
private List<Migrator> availableMigrators;
private LegacyConverter legacyConverter;
private Map<Integer, MapView> mapViews;
private BukkitAudiences audiences;
private MorePaperLib paperLib;
private AsynchronousScheduler asyncScheduler;
private RegionalScheduler regionalScheduler;
private Gson gson;
private boolean disabling;
@Setter
private Settings settings;
@Setter
private Locales locales;
@Setter
@Getter(AccessLevel.NONE)
private Server serverName;
@Override
public void onEnable() {
@@ -107,18 +120,17 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync, BukkitTask.S
this.gson = createGson();
this.audiences = BukkitAudiences.create(this);
this.paperLib = new MorePaperLib(this);
this.availableMigrators = new ArrayList<>();
this.serializers = new LinkedHashMap<>();
this.lockedPlayers = new ConcurrentSkipListSet<>();
this.playerCustomDataStore = new ConcurrentHashMap<>();
this.mapViews = new ConcurrentHashMap<>();
// Load settings and locales
initialize("plugin config & locale files", (plugin) -> this.loadConfigs());
initialize("plugin config & locale files", (plugin) -> {
loadSettings();
loadLocales();
loadServer();
});
// Prepare data adapter
initialize("data adapter", (plugin) -> {
if (settings.doCompressData()) {
if (settings.getSynchronization().isCompressData()) {
dataAdapter = new SnappyGsonAdapter(this);
} else {
dataAdapter = new GsonAdapter(this);
@@ -150,7 +162,7 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync, BukkitTask.S
});
// Initialize the database
initialize(getSettings().getDatabaseType().getDisplayName() + " database connection", (plugin) -> {
initialize(getSettings().getDatabase().getType().getDisplayName() + " database connection", (plugin) -> {
this.database = new MySqlDatabase(this);
this.database.initialize();
});
@@ -163,7 +175,7 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync, BukkitTask.S
// Prepare data syncer
initialize("data syncer", (plugin) -> {
dataSyncer = getSettings().getSyncMode().create(this);
dataSyncer = getSettings().getSynchronization().getMode().create(this);
dataSyncer.initialize();
});
@@ -175,7 +187,7 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync, BukkitTask.S
// Register plugin hooks
initialize("hooks", (plugin) -> {
if (isDependencyLoaded("Plan") && getSettings().usePlanHook()) {
if (isDependencyLoaded("Plan") && getSettings().isEnablePlanHook()) {
new PlanHook(this).hookIntoPlan();
}
});
@@ -232,30 +244,6 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync, BukkitTask.S
return Optional.of(BukkitUser.adapt(player, this));
}
@Override
@NotNull
public Database getDatabase() {
return database;
}
@Override
@NotNull
public RedisManager getRedisManager() {
return redisManager;
}
@NotNull
@Override
public DataAdapter getDataAdapter() {
return dataAdapter;
}
@NotNull
@Override
public DataSyncer getDataSyncer() {
return dataSyncer;
}
@Override
public void setDataSyncer(@NotNull DataSyncer dataSyncer) {
log(Level.INFO, String.format("Switching data syncer to %s", dataSyncer.getClass().getSimpleName()));
@@ -269,11 +257,6 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync, BukkitTask.S
return serializers;
}
@NotNull
@Override
public List<Migrator> getAvailableMigrators() {
return availableMigrators;
}
@NotNull
@Override
@@ -288,35 +271,8 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync, BukkitTask.S
@Override
@NotNull
public Settings getSettings() {
return settings;
}
@Override
public void setSettings(@NotNull Settings settings) {
this.settings = settings;
}
@NotNull
@Override
public String getServerName() {
return server.getName();
}
@Override
public void setServer(@NotNull Server server) {
this.server = server;
}
@Override
@NotNull
public Locales getLocales() {
return locales;
}
@Override
public void setLocales(@NotNull Locales locales) {
this.locales = locales;
return serverName == null ? "server" : serverName.getName();
}
@Override
@@ -369,28 +325,6 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync, BukkitTask.S
return Optional.of(legacyConverter);
}
@NotNull
@Override
public Set<UUID> getLockedPlayers() {
return lockedPlayers;
}
@NotNull
@Override
public Gson getGson() {
return gson;
}
@Override
public boolean isDisabling() {
return disabling;
}
@NotNull
public Map<Integer, MapView> getMapViews() {
return mapViews;
}
@NotNull
public GracefulScheduling getScheduler() {
return paperLib.scheduling();
@@ -408,16 +342,17 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync, BukkitTask.S
? regionalScheduler = getScheduler().globalRegionalScheduler() : regionalScheduler;
}
@NotNull
public AudienceProvider getAudiences() {
return audiences;
}
@NotNull
public CommandRegistration getCommandRegistrar() {
return paperLib.commandRegistration();
}
@Override
@NotNull
public Path getConfigDirectory() {
return getDataFolder().toPath();
}
@Override
@NotNull
public HuskSync getPlugin() {