refactor/feat: remove bungeecord, uncluttered code
This commit is contained in:
parent
a4999a28a1
commit
31f5c4d88e
69 changed files with 260 additions and 556 deletions
|
@ -160,18 +160,6 @@
|
|||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.cache2k</groupId>
|
||||
<artifactId>cache2k-api</artifactId>
|
||||
<version>2.6.1.Final</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.cache2k</groupId>
|
||||
<artifactId>cache2k-core</artifactId>
|
||||
<version>2.6.1.Final</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<properties>
|
||||
<cache2k-version>2.6.1.Final</cache2k-version>
|
||||
|
|
11
core/pom.xml
11
core/pom.xml
|
@ -115,17 +115,6 @@
|
|||
<artifactId>jackson-dataformat-yaml</artifactId>
|
||||
<version>2.14.0-rc1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.cache2k</groupId>
|
||||
<artifactId>cache2k-api</artifactId>
|
||||
<version>${cache2k-version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.cache2k</groupId>
|
||||
<artifactId>cache2k-core</artifactId>
|
||||
<version>${cache2k-version}</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
|
|
@ -1,80 +0,0 @@
|
|||
package net.artelnatif.nicko;
|
||||
|
||||
import net.artelnatif.nicko.config.Configuration;
|
||||
import net.artelnatif.nicko.config.ConfigurationManager;
|
||||
import net.artelnatif.nicko.mojang.MojangAPI;
|
||||
import net.artelnatif.nicko.storage.PlayerDataStore;
|
||||
import net.md_5.bungee.api.plugin.Plugin;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class Nicko {
|
||||
public static final String CHANNEL = "nicko:";
|
||||
public static final String MESSAGE_UPDATE = CHANNEL + "update";
|
||||
public static final String MESSAGE_FETCH = CHANNEL + "fetch";
|
||||
|
||||
private ConfigurationManager configManager;
|
||||
private Logger logger;
|
||||
private File dataFolder;
|
||||
private MojangAPI mojangAPI;
|
||||
private Configuration config;
|
||||
|
||||
private PlayerDataStore dataStore;
|
||||
|
||||
public void initBungeecord(Plugin bungee) {
|
||||
logger = bungee.getLogger();
|
||||
dataFolder = bungee.getDataFolder();
|
||||
initNicko();
|
||||
}
|
||||
|
||||
public void initBukkit(JavaPlugin bukkit) {
|
||||
logger = bukkit.getLogger();
|
||||
dataFolder = bukkit.getDataFolder();
|
||||
initNicko();
|
||||
}
|
||||
|
||||
private void initNicko() {
|
||||
configManager = new ConfigurationManager(this);
|
||||
configManager.saveDefaultConfig();
|
||||
|
||||
mojangAPI = new MojangAPI(this);
|
||||
dataStore = new PlayerDataStore(this);
|
||||
}
|
||||
|
||||
public Logger getLogger() {
|
||||
return logger;
|
||||
}
|
||||
|
||||
public PlayerDataStore getDataStore() {
|
||||
return dataStore;
|
||||
}
|
||||
|
||||
public File getDataFolder() {
|
||||
return dataFolder;
|
||||
}
|
||||
|
||||
public MojangAPI getMojangAPI() {
|
||||
return mojangAPI;
|
||||
}
|
||||
|
||||
public ConfigurationManager getConfigManager() {
|
||||
return configManager;
|
||||
}
|
||||
|
||||
public Configuration getConfig() {
|
||||
try {
|
||||
if (config == null) { return config = configManager.load(); }
|
||||
return config;
|
||||
} catch (IOException e) {
|
||||
logger.severe("Failed to load configuration file: " + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public void setConfig(Configuration config) {
|
||||
this.config = config;
|
||||
}
|
||||
}
|
|
@ -1,19 +1,21 @@
|
|||
package net.artelnatif.nicko.bukkit;
|
||||
package net.artelnatif.nicko;
|
||||
|
||||
import de.studiocode.invui.gui.structure.Structure;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.SimpleItem;
|
||||
import net.artelnatif.nicko.Nicko;
|
||||
import net.artelnatif.nicko.bukkit.command.NickoCommand;
|
||||
import net.artelnatif.nicko.bukkit.event.PlayerJoinListener;
|
||||
import net.artelnatif.nicko.bukkit.event.PlayerQuitListener;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.main.ExitGUI;
|
||||
import net.artelnatif.nicko.bukkit.i18n.Locale;
|
||||
import net.artelnatif.nicko.bukkit.i18n.LocaleFileManager;
|
||||
import net.artelnatif.nicko.bukkit.placeholder.PlaceHolderHook;
|
||||
import net.artelnatif.nicko.command.NickoCommand;
|
||||
import net.artelnatif.nicko.config.ConfigurationManager;
|
||||
import net.artelnatif.nicko.event.PlayerJoinListener;
|
||||
import net.artelnatif.nicko.event.PlayerQuitListener;
|
||||
import net.artelnatif.nicko.gui.items.main.ExitGUI;
|
||||
import net.artelnatif.nicko.i18n.Locale;
|
||||
import net.artelnatif.nicko.i18n.LocaleFileManager;
|
||||
import net.artelnatif.nicko.mojang.MojangAPI;
|
||||
import net.artelnatif.nicko.placeholder.PlaceHolderHook;
|
||||
import net.artelnatif.nicko.config.Configuration;
|
||||
import net.artelnatif.nicko.impl.Internals;
|
||||
import net.artelnatif.nicko.impl.InternalsProvider;
|
||||
import net.artelnatif.nicko.storage.PlayerDataStore;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.PluginCommand;
|
||||
|
@ -22,11 +24,18 @@ import org.bukkit.plugin.java.JavaPlugin;
|
|||
import org.bukkit.plugin.java.JavaPluginLoader;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class NickoBukkit extends JavaPlugin {
|
||||
private static NickoBukkit plugin;
|
||||
|
||||
private final Nicko nicko = new Nicko();
|
||||
private ConfigurationManager configManager;
|
||||
private Logger logger;
|
||||
private File dataFolder;
|
||||
private MojangAPI mojangAPI;
|
||||
private Configuration configuration;
|
||||
private PlayerDataStore dataStore;
|
||||
private final boolean unitTesting;
|
||||
|
||||
private LocaleFileManager localeFileManager;
|
||||
|
@ -36,22 +45,26 @@ public class NickoBukkit extends JavaPlugin {
|
|||
/**
|
||||
* Used by MockBukkit
|
||||
*/
|
||||
protected NickoBukkit(JavaPluginLoader loader, PluginDescriptionFile description, File dataFolder, File file, Configuration config) {
|
||||
protected NickoBukkit(JavaPluginLoader loader, PluginDescriptionFile description, File dataFolder, File file, Configuration configuration) {
|
||||
super(loader, description, dataFolder, file);
|
||||
unitTesting = true;
|
||||
nicko.setConfig(config);
|
||||
this.configuration = configuration;
|
||||
getLogger().info("Unit Testing Mode enabled.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
plugin = this;
|
||||
nicko.initBukkit(this);
|
||||
configManager = new ConfigurationManager(getDataFolder());
|
||||
configManager.saveDefaultConfig();
|
||||
|
||||
if (!nicko.getDataStore().getStorage().isError()) {
|
||||
mojangAPI = new MojangAPI();
|
||||
dataStore = new PlayerDataStore(mojangAPI, configuration);
|
||||
|
||||
if (!getDataStore().getStorage().isError()) {
|
||||
getLogger().info("Loading persistence...");
|
||||
if (!nicko.getDataStore().getStorage().getProvider().init()) {
|
||||
nicko.getDataStore().getStorage().setError(true);
|
||||
if (!getDataStore().getStorage().getProvider().init()) {
|
||||
getDataStore().getStorage().setError(true);
|
||||
getLogger().severe("Failed to open persistence, data will NOT be saved!");
|
||||
}
|
||||
}
|
||||
|
@ -60,13 +73,13 @@ public class NickoBukkit extends JavaPlugin {
|
|||
getLogger().info("Loading internals...");
|
||||
if (getInternals() == null) {
|
||||
getLogger().severe("Nicko could not find a valid implementation for this server version. Is your server supported?");
|
||||
nicko.getDataStore().getStorage().setError(true);
|
||||
getDataStore().getStorage().setError(true);
|
||||
getServer().getPluginManager().disablePlugin(this);
|
||||
}
|
||||
|
||||
|
||||
localeFileManager = new LocaleFileManager();
|
||||
if (nicko.getConfig().isCustomLocale()) {
|
||||
if (getNickoConfig().isCustomLocale()) {
|
||||
if (localeFileManager.dumpFromLocale(Locale.ENGLISH)) {
|
||||
getLogger().info("Successfully loaded custom language file.");
|
||||
} else {
|
||||
|
@ -88,42 +101,21 @@ public class NickoBukkit extends JavaPlugin {
|
|||
getServer().getPluginManager().registerEvents(new PlayerJoinListener(), this);
|
||||
getServer().getPluginManager().registerEvents(new PlayerQuitListener(), this);
|
||||
|
||||
final BungeeCordSupport support = new BungeeCordSupport(this);
|
||||
support.warnNickoNotHookedToBungeeCord();
|
||||
if (nicko.getConfig().isBungeecord()) {
|
||||
if (support.stopIfBungeeCordIsNotEnabled()) {
|
||||
getLogger().info("Enabling BungeeCord support...");
|
||||
//TODO: Enable BungeeCord
|
||||
}
|
||||
}
|
||||
|
||||
getLogger().info("Nicko (Bukkit) has been enabled.");
|
||||
}
|
||||
}
|
||||
|
||||
public void onUnitTestingStartup() {
|
||||
if (!nicko.getDataStore().getStorage().getProvider().init()) {
|
||||
nicko.getDataStore().getStorage().setError(true);
|
||||
getLogger().severe("Failed to open persistence, data will NOT be saved!");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
if (!nicko.getDataStore().getStorage().isError()) {
|
||||
if (!getDataStore().getStorage().isError()) {
|
||||
getLogger().info("Closing persistence...");
|
||||
nicko.getDataStore().removeAllNames();
|
||||
Bukkit.getOnlinePlayers().forEach(player -> nicko.getDataStore().saveData(player));
|
||||
if (!nicko.getDataStore().getStorage().getProvider().close()) {
|
||||
getDataStore().removeAllNames();
|
||||
Bukkit.getOnlinePlayers().forEach(player -> getDataStore().saveData(player));
|
||||
if (!getDataStore().getStorage().getProvider().close()) {
|
||||
getLogger().severe("Failed to close persistence!");
|
||||
}
|
||||
}
|
||||
|
||||
if (nicko.getConfig().isBungeecord()) {
|
||||
getServer().getMessenger().unregisterIncomingPluginChannel(this);
|
||||
getServer().getMessenger().unregisterOutgoingPluginChannel(this);
|
||||
}
|
||||
|
||||
getLogger().info("Nicko (Bukkit) has been disabled.");
|
||||
}
|
||||
|
||||
|
@ -131,8 +123,22 @@ public class NickoBukkit extends JavaPlugin {
|
|||
return plugin;
|
||||
}
|
||||
|
||||
public Nicko getNicko() {
|
||||
return nicko;
|
||||
public Configuration getNickoConfig() {
|
||||
try {
|
||||
if (configuration == null) { return configuration = configManager.load(); }
|
||||
return configuration;
|
||||
} catch (IOException e) {
|
||||
logger.severe("Failed to load configuration file: " + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public PlayerDataStore getDataStore() {
|
||||
return dataStore;
|
||||
}
|
||||
|
||||
public MojangAPI getMojangAPI() {
|
||||
return mojangAPI;
|
||||
}
|
||||
|
||||
public LocaleFileManager getLocaleFileManager() {
|
|
@ -1,10 +1,10 @@
|
|||
package net.artelnatif.nicko.bukkit.anvil;
|
||||
package net.artelnatif.nicko.anvil;
|
||||
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.bukkit.appearance.AppearanceManager;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.appearance.AppearanceManager;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.bukkit.i18n.I18N;
|
||||
import net.artelnatif.nicko.bukkit.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.i18n.I18N;
|
||||
import net.artelnatif.nicko.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.mojang.MojangUtils;
|
||||
import net.wesjd.anvilgui.AnvilGUI;
|
||||
import org.bukkit.Material;
|
|
@ -1,6 +1,6 @@
|
|||
package net.artelnatif.nicko.bukkit.appearance;
|
||||
package net.artelnatif.nicko.appearance;
|
||||
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.artelnatif.nicko.storage.PlayerDataStore;
|
||||
|
@ -13,7 +13,7 @@ public class AppearanceManager {
|
|||
private final NickoProfile profile;
|
||||
private final Player player;
|
||||
private final NickoBukkit instance = NickoBukkit.getInstance();
|
||||
private final PlayerDataStore dataStore = instance.getNicko().getDataStore();
|
||||
private final PlayerDataStore dataStore = instance.getDataStore();
|
||||
|
||||
private AppearanceManager(UUID uuid) {
|
||||
this.player = Bukkit.getPlayer(uuid);
|
|
@ -1,37 +0,0 @@
|
|||
package net.artelnatif.nicko.bukkit;
|
||||
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
|
||||
public class BungeeCordSupport {
|
||||
private final NickoBukkit instance;
|
||||
|
||||
public BungeeCordSupport(NickoBukkit instance) {
|
||||
this.instance = instance;
|
||||
}
|
||||
|
||||
public void warnNickoNotHookedToBungeeCord() {
|
||||
final Server server = instance.getServer();
|
||||
final YamlConfiguration config = server.spigot().getConfig();
|
||||
if (config.getConfigurationSection("settings").getBoolean("bungeecord") && !instance.getNicko().getConfig().isBungeecord()) {
|
||||
instance.getLogger().warning("Hummm. Your server is hooked to BungeeCord, but it seems");
|
||||
instance.getLogger().warning("that BungeeCord support is not enabled inside Nicko.");
|
||||
instance.getLogger().warning("If this is intentional, you can safely ignore this message.");
|
||||
instance.getLogger().warning("Otherwise, you can enable BungeeCord support inside Nicko's configuration file.");
|
||||
}
|
||||
}
|
||||
|
||||
public boolean stopIfBungeeCordIsNotEnabled() {
|
||||
final Server server = instance.getServer();
|
||||
final YamlConfiguration config = server.spigot().getConfig();
|
||||
if (!config.getConfigurationSection("settings").getBoolean("bungeecord") && instance.getNicko().getConfig().isBungeecord()) {
|
||||
instance.getLogger().severe("Hummm. You have enabled BungeeCord support inside Nicko,");
|
||||
instance.getLogger().severe("but it seems that your server is not hooked to your BungeeCord instance.");
|
||||
instance.getLogger().severe("Please enable BungeeCord support inside your spigot.yml as well.");
|
||||
instance.getLogger().severe("The plugin will not continue.");
|
||||
instance.getServer().getPluginManager().disablePlugin(instance);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
package net.artelnatif.nicko.bungee;
|
||||
|
||||
import net.artelnatif.nicko.Nicko;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.md_5.bungee.api.plugin.Plugin;
|
||||
import org.cache2k.Cache;
|
||||
import org.cache2k.Cache2kBuilder;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class NickoBungee extends Plugin {
|
||||
private final Cache<UUID, NickoProfile> profileCache = Cache2kBuilder.of(UUID.class, NickoProfile.class).build();
|
||||
private final Nicko nicko = new Nicko();
|
||||
|
||||
private static NickoBungee plugin;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
plugin = this;
|
||||
nicko.initBungeecord(this);
|
||||
|
||||
getLogger().info("Loading persistence...");
|
||||
if (!nicko.getDataStore().getStorage().isError()) {
|
||||
if (!nicko.getDataStore().getStorage().getProvider().init()) {
|
||||
getLogger().severe("Failed to load persistence!");
|
||||
getLogger().severe("Nicko can't enable BungeeCord support without SQL storage.");
|
||||
getLogger().severe("The plugin will not continue.");
|
||||
nicko.getDataStore().getStorage().setError(true);
|
||||
onDisable();
|
||||
return;
|
||||
}
|
||||
|
||||
getProxy().registerChannel(Nicko.MESSAGE_FETCH);
|
||||
getProxy().registerChannel(Nicko.MESSAGE_UPDATE);
|
||||
getLogger().info("Nicko (Bungee) has been enabled.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
if (!nicko.getDataStore().getStorage().isError()) {
|
||||
getProxy().unregisterChannel(Nicko.MESSAGE_FETCH);
|
||||
getProxy().unregisterChannel(Nicko.MESSAGE_UPDATE);
|
||||
getLogger().info("Nicko (Bungee) has been disabled.");
|
||||
}
|
||||
}
|
||||
|
||||
public Cache<UUID, NickoProfile> getProfileCache() { return profileCache; }
|
||||
|
||||
public Nicko getNicko() {
|
||||
return nicko;
|
||||
}
|
||||
|
||||
public static NickoBungee getInstance() {
|
||||
return plugin;
|
||||
}
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
package net.artelnatif.nicko.bungee;
|
||||
|
||||
import com.google.common.io.ByteArrayDataOutput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class PluginMessageSender {
|
||||
public static void send(final ServerInfo info, final String channel, final ArrayList<String> payload) {
|
||||
if (info == null) { return; }
|
||||
|
||||
final ByteArrayDataOutput output = ByteStreams.newDataOutput();
|
||||
output.writeInt(payload.size());
|
||||
for (String elt : payload) {
|
||||
output.writeUTF(elt);
|
||||
}
|
||||
info.sendData(channel, output.toByteArray(), true);
|
||||
}
|
||||
|
||||
public static void sendObject(final ServerInfo info, final String channel, final Object payload) {
|
||||
if (info == null) { return; }
|
||||
|
||||
try {
|
||||
final ByteArrayDataOutput output = ByteStreams.newDataOutput();
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
ObjectOutputStream os = new ObjectOutputStream(out);
|
||||
os.writeObject(payload);
|
||||
info.sendData(channel, output.toByteArray(), true);
|
||||
} catch (IOException exception) {
|
||||
System.out.println("massive f");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
package net.artelnatif.nicko.bungee.in;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
import net.artelnatif.nicko.Nicko;
|
||||
import net.artelnatif.nicko.bungee.NickoBungee;
|
||||
import net.artelnatif.nicko.bungee.PluginMessageSender;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
import net.md_5.bungee.api.event.PluginMessageEvent;
|
||||
import net.md_5.bungee.api.plugin.Listener;
|
||||
import net.md_5.bungee.event.EventHandler;
|
||||
import org.cache2k.Cache;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.util.UUID;
|
||||
|
||||
public class MessageHandler implements Listener {
|
||||
@EventHandler
|
||||
public void onMessage(PluginMessageEvent event) {
|
||||
final Cache<UUID, NickoProfile> cache = NickoBungee.getInstance().getProfileCache();
|
||||
if (event.getTag().equalsIgnoreCase(Nicko.MESSAGE_UPDATE)) {
|
||||
try {
|
||||
final ByteArrayInputStream inputStream = new ByteArrayInputStream(event.getData());
|
||||
final ObjectInputStream objectStream = new ObjectInputStream(inputStream);
|
||||
|
||||
final String uuid = objectStream.readUTF();
|
||||
final NickoProfile profile = (NickoProfile) objectStream.readObject();
|
||||
cache.put(UUID.fromString(uuid), profile);
|
||||
} catch (IOException | ClassNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
} else if (event.getTag().equalsIgnoreCase(Nicko.MESSAGE_FETCH)) {
|
||||
final ByteArrayDataInput input = ByteStreams.newDataInput(event.getData());
|
||||
final String stringUuid = input.readUTF();
|
||||
final UUID uuid = UUID.fromString(stringUuid);
|
||||
final ServerInfo info = NickoBungee.getInstance().getProxy().getPlayer(uuid).getServer().getInfo();
|
||||
final NickoProfile profile = cache.peekAndRemove(uuid);
|
||||
PluginMessageSender.sendObject(info, Nicko.MESSAGE_FETCH, profile);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,9 +1,9 @@
|
|||
package net.artelnatif.nicko.bukkit.command;
|
||||
package net.artelnatif.nicko.command;
|
||||
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.bukkit.command.sub.NickoCheckSubCmd;
|
||||
import net.artelnatif.nicko.bukkit.command.sub.NickoDebugSubCmd;
|
||||
import net.artelnatif.nicko.bukkit.gui.MainGUI;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.command.sub.NickoCheckSubCmd;
|
||||
import net.artelnatif.nicko.command.sub.NickoDebugSubCmd;
|
||||
import net.artelnatif.nicko.gui.MainGUI;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
|
@ -1,9 +1,9 @@
|
|||
package net.artelnatif.nicko.bukkit.command.sub;
|
||||
package net.artelnatif.nicko.command.sub;
|
||||
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.bukkit.appearance.AppearanceManager;
|
||||
import net.artelnatif.nicko.bukkit.i18n.I18N;
|
||||
import net.artelnatif.nicko.bukkit.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.appearance.AppearanceManager;
|
||||
import net.artelnatif.nicko.i18n.I18N;
|
||||
import net.artelnatif.nicko.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.mojang.MojangUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -28,7 +28,7 @@ public class NickoCheckSubCmd {
|
|||
}
|
||||
|
||||
final StringJoiner builder = new StringJoiner("\n");
|
||||
builder.add("§c" + NickoBukkit.getInstance().getNicko().getConfig().getPrefix() + "§6Check for: §f§o" + targetName);
|
||||
builder.add("§c" + NickoBukkit.getInstance().getNickoConfig().getPrefix() + "§6Check for: §f§o" + targetName);
|
||||
if (!appearanceManager.hasData()) {
|
||||
builder.add("§cThis player has not data.");
|
||||
} else {
|
|
@ -1,7 +1,7 @@
|
|||
package net.artelnatif.nicko.bukkit.command.sub;
|
||||
package net.artelnatif.nicko.command.sub;
|
||||
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.bukkit.appearance.AppearanceManager;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.appearance.AppearanceManager;
|
||||
import net.artelnatif.nicko.mojang.MojangUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Sound;
|
||||
|
@ -10,7 +10,7 @@ import org.bukkit.entity.Player;
|
|||
|
||||
public class NickoDebugSubCmd {
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
final String prefix = NickoBukkit.getInstance().getNicko().getConfig().getPrefix();
|
||||
final String prefix = NickoBukkit.getInstance().getNickoConfig().getPrefix();
|
||||
|
||||
Player target;
|
||||
String name, skin;
|
|
@ -6,21 +6,19 @@ public class Configuration {
|
|||
private final String password;
|
||||
private final String prefix;
|
||||
private final Boolean local;
|
||||
private final Boolean bungeecord;
|
||||
private final Boolean customLocale;
|
||||
|
||||
public Configuration(String address, String username, String password, String prefix, Boolean local, Boolean bungeecord, Boolean customLocale) {
|
||||
public Configuration(String address, String username, String password, String prefix, Boolean local, Boolean customLocale) {
|
||||
this.address = address;
|
||||
this.username = username;
|
||||
this.password = password;
|
||||
this.prefix = prefix;
|
||||
this.local = local;
|
||||
this.bungeecord = bungeecord;
|
||||
this.customLocale = customLocale;
|
||||
}
|
||||
|
||||
public Configuration() {
|
||||
this("", "", "", "", false, false, false);
|
||||
this("", "", "", "", false, false);
|
||||
}
|
||||
|
||||
public String getAddress() {
|
||||
|
@ -43,10 +41,6 @@ public class Configuration {
|
|||
return local;
|
||||
}
|
||||
|
||||
public Boolean isBungeecord() {
|
||||
return bungeecord;
|
||||
}
|
||||
|
||||
public Boolean isCustomLocale() {
|
||||
return customLocale;
|
||||
}
|
||||
|
|
|
@ -2,21 +2,18 @@ package net.artelnatif.nicko.config;
|
|||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
|
||||
import net.artelnatif.nicko.Nicko;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class ConfigurationManager {
|
||||
private final Nicko nicko;
|
||||
private final Logger logger = Logger.getLogger("ConfigurationManager");
|
||||
private final ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
|
||||
private final File directory;
|
||||
private final File file;
|
||||
|
||||
public ConfigurationManager(Nicko nicko) {
|
||||
this.nicko = nicko;
|
||||
this.directory = nicko.getDataFolder();
|
||||
public ConfigurationManager(File directory) {
|
||||
this.file = new File(directory, "config.yml");
|
||||
}
|
||||
|
||||
|
@ -32,7 +29,7 @@ public class ConfigurationManager {
|
|||
try {
|
||||
final InputStream input = getClass().getResourceAsStream("/config.yml");
|
||||
if (input != null) {
|
||||
nicko.getLogger().info("Saved default configuration as config.yml");
|
||||
logger.info("Saved default configuration as config.yml");
|
||||
Files.createDirectories(file.getParentFile().toPath());
|
||||
Files.createFile(file.toPath());
|
||||
Files.copy(input, file.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package net.artelnatif.nicko.disguise;
|
||||
|
||||
import net.artelnatif.nicko.bukkit.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.i18n.I18NDict;
|
||||
|
||||
public class ActionResult<R> {
|
||||
private final I18NDict errorMessage;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package net.artelnatif.nicko.disguise;
|
||||
|
||||
import net.artelnatif.nicko.bukkit.i18n.Locale;
|
||||
import net.artelnatif.nicko.i18n.Locale;
|
||||
|
||||
public class NickoProfile implements Cloneable {
|
||||
public static final NickoProfile EMPTY_PROFILE = new NickoProfile(null, null, Locale.ENGLISH, true);
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
package net.artelnatif.nicko.bukkit.event;
|
||||
package net.artelnatif.nicko.event;
|
||||
|
||||
import net.artelnatif.nicko.Nicko;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.bukkit.appearance.AppearanceManager;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.appearance.AppearanceManager;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.bukkit.i18n.I18N;
|
||||
import net.artelnatif.nicko.bukkit.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.artelnatif.nicko.i18n.I18N;
|
||||
import net.artelnatif.nicko.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.storage.PlayerDataStore;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -18,16 +17,12 @@ public class PlayerJoinListener implements Listener {
|
|||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
final Nicko nicko = NickoBukkit.getInstance().getNicko();
|
||||
final PlayerDataStore dataStore = nicko.getDataStore();
|
||||
final PlayerDataStore dataStore = NickoBukkit.getInstance().getDataStore();
|
||||
dataStore.storeName(player);
|
||||
|
||||
if (nicko.getConfig().isBungeecord()) {
|
||||
|
||||
}
|
||||
// TODO: 2/20/23 BungeeCord transfer
|
||||
|
||||
dataStore.performProfileUpdate(player.getUniqueId(), NickoProfile.EMPTY_PROFILE);
|
||||
|
||||
Bukkit.getScheduler().runTaskLater(NickoBukkit.getInstance(), () -> {
|
||||
final AppearanceManager appearanceManager = AppearanceManager.get(player);
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package net.artelnatif.nicko.bukkit.event;
|
||||
package net.artelnatif.nicko.event;
|
||||
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
@ -11,7 +11,7 @@ public class PlayerQuitListener implements Listener {
|
|||
@EventHandler
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
final ActionResult<Void> result = NickoBukkit.getInstance().getNicko().getDataStore().saveData(player);
|
||||
final ActionResult<Void> result = NickoBukkit.getInstance().getDataStore().saveData(player);
|
||||
if (result.isError()) {
|
||||
NickoBukkit.getInstance().getLogger().warning("Failed to save data for " + player.getName());
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
package net.artelnatif.nicko.bukkit.gui;
|
||||
package net.artelnatif.nicko.gui;
|
||||
|
||||
import de.studiocode.invui.gui.GUI;
|
||||
import de.studiocode.invui.gui.builder.GUIBuilder;
|
||||
import de.studiocode.invui.gui.builder.guitype.GUIType;
|
||||
import de.studiocode.invui.window.impl.single.SimpleWindow;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.common.GoBack;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.admin.ManageCache;
|
||||
import net.artelnatif.nicko.gui.items.common.GoBack;
|
||||
import net.artelnatif.nicko.gui.items.admin.ManageCache;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class AdminGUI {
|
|
@ -1,13 +1,13 @@
|
|||
package net.artelnatif.nicko.bukkit.gui;
|
||||
package net.artelnatif.nicko.gui;
|
||||
|
||||
import de.studiocode.invui.gui.GUI;
|
||||
import de.studiocode.invui.gui.builder.GUIBuilder;
|
||||
import de.studiocode.invui.gui.builder.guitype.GUIType;
|
||||
import de.studiocode.invui.window.impl.single.SimpleWindow;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.common.GoBack;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.skin.ChangeSkin;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.skin.ChangeName;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.skin.ChangeNameAndSkin;
|
||||
import net.artelnatif.nicko.gui.items.common.GoBack;
|
||||
import net.artelnatif.nicko.gui.items.skin.ChangeSkin;
|
||||
import net.artelnatif.nicko.gui.items.skin.ChangeName;
|
||||
import net.artelnatif.nicko.gui.items.skin.ChangeNameAndSkin;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class AppearanceManagerGUI {
|
|
@ -1,13 +1,13 @@
|
|||
package net.artelnatif.nicko.bukkit.gui;
|
||||
package net.artelnatif.nicko.gui;
|
||||
|
||||
import de.studiocode.invui.gui.GUI;
|
||||
import de.studiocode.invui.gui.builder.GUIBuilder;
|
||||
import de.studiocode.invui.gui.builder.guitype.GUIType;
|
||||
import de.studiocode.invui.window.impl.single.SimpleWindow;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.main.AdminSubGUI;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.main.AppearanceManagerSubGUI;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.main.ResetAppearance;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.main.SettingsSubGUI;
|
||||
import net.artelnatif.nicko.gui.items.main.AdminSubGUI;
|
||||
import net.artelnatif.nicko.gui.items.main.AppearanceManagerSubGUI;
|
||||
import net.artelnatif.nicko.gui.items.main.ResetAppearance;
|
||||
import net.artelnatif.nicko.gui.items.main.SettingsSubGUI;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class MainGUI {
|
|
@ -1,15 +1,13 @@
|
|||
package net.artelnatif.nicko.bukkit.gui;
|
||||
package net.artelnatif.nicko.gui;
|
||||
|
||||
import de.studiocode.invui.gui.GUI;
|
||||
import de.studiocode.invui.gui.builder.GUIBuilder;
|
||||
import de.studiocode.invui.gui.builder.guitype.GUIType;
|
||||
import de.studiocode.invui.window.impl.single.SimpleWindow;
|
||||
import net.artelnatif.nicko.Nicko;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.settings.LanguageCycling;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.common.GoBack;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.settings.BungeeCordCycling;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.settings.OptionUnavailable;
|
||||
import net.artelnatif.nicko.gui.items.common.GoBack;
|
||||
import net.artelnatif.nicko.gui.items.settings.BungeeCordCycling;
|
||||
import net.artelnatif.nicko.gui.items.settings.LanguageCycling;
|
||||
import net.artelnatif.nicko.gui.items.settings.OptionUnavailable;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class SettingsGUI {
|
||||
|
@ -23,10 +21,8 @@ public class SettingsGUI {
|
|||
"B # # # # # # # #"
|
||||
};
|
||||
|
||||
final Nicko nicko = NickoBukkit.getInstance().getNicko();
|
||||
if (!nicko.getConfig().isBungeecord()) {
|
||||
dynamicStructure[1] = dynamicStructure[1].replace("T", "U");
|
||||
}
|
||||
// TODO: 3/6/23 Replace when Redis is not enabled
|
||||
dynamicStructure[1] = dynamicStructure[1].replace("T", "U");
|
||||
|
||||
this.gui = new GUIBuilder<>(GUIType.NORMAL)
|
||||
.setStructure(dynamicStructure)
|
|
@ -1,14 +1,14 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.admin;
|
||||
package net.artelnatif.nicko.gui.admin;
|
||||
|
||||
import de.studiocode.invui.gui.GUI;
|
||||
import de.studiocode.invui.gui.builder.GUIBuilder;
|
||||
import de.studiocode.invui.gui.builder.guitype.GUIType;
|
||||
import de.studiocode.invui.window.impl.single.SimpleWindow;
|
||||
import net.artelnatif.nicko.bukkit.gui.AdminGUI;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.admin.cache.CacheDetailed;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.admin.cache.CacheInvalidate;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.admin.cache.CacheOverview;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.common.GoBack;
|
||||
import net.artelnatif.nicko.gui.AdminGUI;
|
||||
import net.artelnatif.nicko.gui.items.admin.cache.CacheDetailed;
|
||||
import net.artelnatif.nicko.gui.items.admin.cache.CacheInvalidate;
|
||||
import net.artelnatif.nicko.gui.items.admin.cache.CacheOverview;
|
||||
import net.artelnatif.nicko.gui.items.common.GoBack;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class CacheManagementGUI {
|
|
@ -1,4 +1,4 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.admin.cache;
|
||||
package net.artelnatif.nicko.gui.admin.cache;
|
||||
|
||||
import de.studiocode.invui.gui.GUI;
|
||||
import de.studiocode.invui.gui.builder.GUIBuilder;
|
||||
|
@ -6,12 +6,12 @@ import de.studiocode.invui.gui.builder.guitype.GUIType;
|
|||
import de.studiocode.invui.gui.structure.Markers;
|
||||
import de.studiocode.invui.item.Item;
|
||||
import de.studiocode.invui.window.impl.single.SimpleWindow;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.admin.cache.SkinPlaceholder;
|
||||
import net.artelnatif.nicko.bukkit.gui.admin.CacheManagementGUI;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.common.GoBack;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.common.ScrollDown;
|
||||
import net.artelnatif.nicko.bukkit.gui.items.common.ScrollUp;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.gui.items.admin.cache.SkinPlaceholder;
|
||||
import net.artelnatif.nicko.gui.admin.CacheManagementGUI;
|
||||
import net.artelnatif.nicko.gui.items.common.GoBack;
|
||||
import net.artelnatif.nicko.gui.items.common.ScrollDown;
|
||||
import net.artelnatif.nicko.gui.items.common.ScrollUp;
|
||||
import net.artelnatif.nicko.mojang.MojangSkin;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
|
@ -26,7 +26,7 @@ public class CacheDetailledGUI {
|
|||
private final GUI gui;
|
||||
|
||||
public CacheDetailledGUI(Player player) {
|
||||
final ConcurrentMap<String, Optional<MojangSkin>> skins = NickoBukkit.getInstance().getNicko().getMojangAPI().getCache().asMap();
|
||||
final ConcurrentMap<String, Optional<MojangSkin>> skins = NickoBukkit.getInstance().getMojangAPI().getCache().asMap();
|
||||
final List<String> loadedSkins = skins.entrySet().stream()
|
||||
.filter(entry -> entry.getValue().isPresent())
|
||||
.map(Map.Entry::getKey)
|
|
@ -1,9 +1,9 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.admin;
|
||||
package net.artelnatif.nicko.gui.items.admin;
|
||||
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.builder.SkullBuilder;
|
||||
import de.studiocode.invui.item.impl.AsyncItem;
|
||||
import net.artelnatif.nicko.bukkit.gui.admin.CacheManagementGUI;
|
||||
import net.artelnatif.nicko.gui.admin.CacheManagementGUI;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
|
@ -1,9 +1,9 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.admin.cache;
|
||||
package net.artelnatif.nicko.gui.items.admin.cache;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
import net.artelnatif.nicko.bukkit.gui.admin.cache.CacheDetailledGUI;
|
||||
import net.artelnatif.nicko.gui.admin.cache.CacheDetailledGUI;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
|
@ -1,11 +1,11 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.admin.cache;
|
||||
package net.artelnatif.nicko.gui.items.admin.cache;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.bukkit.i18n.I18N;
|
||||
import net.artelnatif.nicko.bukkit.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.i18n.I18N;
|
||||
import net.artelnatif.nicko.i18n.I18NDict;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
|
@ -31,7 +31,7 @@ public class CacheInvalidate extends BaseItem {
|
|||
if (clickType.isLeftClick() || clickType.isRightClick()) {
|
||||
event.getView().close();
|
||||
player.sendMessage(I18N.translate(player, I18NDict.Event.Admin.CACHE_CLEAN));
|
||||
NickoBukkit.getInstance().getNicko().getMojangAPI().getCache().invalidateAll();
|
||||
NickoBukkit.getInstance().getMojangAPI().getCache().invalidateAll();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.admin.cache;
|
||||
package net.artelnatif.nicko.gui.items.admin.cache;
|
||||
|
||||
import com.google.common.cache.CacheStats;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.mojang.MojangSkin;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -19,7 +19,7 @@ public class CacheOverview extends BaseItem {
|
|||
@Override
|
||||
public ItemProvider getItemProvider() {
|
||||
final ItemBuilder builder = new ItemBuilder(Material.OAK_SIGN);
|
||||
final LoadingCache<String, Optional<MojangSkin>> cache = NickoBukkit.getInstance().getNicko().getMojangAPI().getCache();
|
||||
final LoadingCache<String, Optional<MojangSkin>> cache = NickoBukkit.getInstance().getMojangAPI().getCache();
|
||||
final CacheStats stats = cache.stats();
|
||||
builder.setDisplayName("§6Skin cache §foverview:");
|
||||
builder.addLoreLines(
|
|
@ -1,4 +1,4 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.admin.cache;
|
||||
package net.artelnatif.nicko.gui.items.admin.cache;
|
||||
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.builder.SkullBuilder;
|
|
@ -1,4 +1,4 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.common;
|
||||
package net.artelnatif.nicko.gui.items.common;
|
||||
|
||||
import de.studiocode.invui.gui.GUI;
|
||||
import de.studiocode.invui.item.ItemProvider;
|
|
@ -1,4 +1,4 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.common;
|
||||
package net.artelnatif.nicko.gui.items.common;
|
||||
|
||||
import de.studiocode.invui.gui.impl.ScrollGUI;
|
||||
import de.studiocode.invui.item.ItemProvider;
|
|
@ -1,4 +1,4 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.common;
|
||||
package net.artelnatif.nicko.gui.items.common;
|
||||
|
||||
import de.studiocode.invui.gui.impl.ScrollGUI;
|
||||
import de.studiocode.invui.item.ItemProvider;
|
|
@ -1,9 +1,9 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.main;
|
||||
package net.artelnatif.nicko.gui.items.main;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
import net.artelnatif.nicko.bukkit.gui.AdminGUI;
|
||||
import net.artelnatif.nicko.gui.AdminGUI;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.entity.Player;
|
|
@ -1,9 +1,9 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.main;
|
||||
package net.artelnatif.nicko.gui.items.main;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
import net.artelnatif.nicko.bukkit.gui.AppearanceManagerGUI;
|
||||
import net.artelnatif.nicko.gui.AppearanceManagerGUI;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
|
@ -1,4 +1,4 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.main;
|
||||
package net.artelnatif.nicko.gui.items.main;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
|
@ -1,11 +1,11 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.main;
|
||||
package net.artelnatif.nicko.gui.items.main;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
import net.artelnatif.nicko.bukkit.appearance.AppearanceManager;
|
||||
import net.artelnatif.nicko.bukkit.i18n.I18N;
|
||||
import net.artelnatif.nicko.bukkit.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.appearance.AppearanceManager;
|
||||
import net.artelnatif.nicko.i18n.I18N;
|
||||
import net.artelnatif.nicko.i18n.I18NDict;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
|
@ -1,9 +1,9 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.main;
|
||||
package net.artelnatif.nicko.gui.items.main;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
import net.artelnatif.nicko.bukkit.gui.SettingsGUI;
|
||||
import net.artelnatif.nicko.gui.SettingsGUI;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
|
@ -1,11 +1,11 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.settings;
|
||||
package net.artelnatif.nicko.gui.items.settings;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
import de.studiocode.invui.item.impl.CycleItem;
|
||||
import de.studiocode.invui.item.impl.SimpleItem;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
|
@ -20,7 +20,7 @@ public class BungeeCordCycling {
|
|||
};
|
||||
|
||||
public BaseItem get(Player player) {
|
||||
Optional<NickoProfile> profile = NickoBukkit.getInstance().getNicko().getDataStore().getData(player.getUniqueId());
|
||||
Optional<NickoProfile> profile = NickoBukkit.getInstance().getDataStore().getData(player.getUniqueId());
|
||||
if (profile.isPresent()) {
|
||||
final NickoProfile nickoProfile = profile.get();
|
||||
int startingState = nickoProfile.isBungeecordTransfer() ? 0 : 1;
|
|
@ -1,13 +1,13 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.settings;
|
||||
package net.artelnatif.nicko.gui.items.settings;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
import de.studiocode.invui.item.impl.CycleItem;
|
||||
import de.studiocode.invui.item.impl.SimpleItem;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.artelnatif.nicko.bukkit.i18n.Locale;
|
||||
import net.artelnatif.nicko.i18n.Locale;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -19,7 +19,7 @@ public class LanguageCycling {
|
|||
|
||||
public BaseItem get(Player player) {
|
||||
final NickoBukkit instance = NickoBukkit.getInstance();
|
||||
Optional<NickoProfile> profile = instance.getNicko().getDataStore().getData(player.getUniqueId());
|
||||
Optional<NickoProfile> profile = instance.getDataStore().getData(player.getUniqueId());
|
||||
if (profile.isPresent()) {
|
||||
final NickoProfile nickoProfile = profile.get();
|
||||
int localeOrdinal = nickoProfile.getLocale().ordinal();
|
||||
|
@ -52,7 +52,7 @@ public class LanguageCycling {
|
|||
|
||||
final ArrayList<Locale> localesToGenerate = new ArrayList<>();
|
||||
Collections.addAll(localesToGenerate, Locale.values());
|
||||
if (!instance.getNicko().getConfig().isCustomLocale()) {
|
||||
if (!instance.getNickoConfig().isCustomLocale()) {
|
||||
localesToGenerate.remove(Locale.CUSTOM);
|
||||
}
|
||||
localesToGenerate.forEach(locale -> items.add(generateItem(locale, localesToGenerate)));
|
|
@ -1,4 +1,4 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.settings;
|
||||
package net.artelnatif.nicko.gui.items.settings;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
|
@ -1,9 +1,9 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.skin;
|
||||
package net.artelnatif.nicko.gui.items.skin;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
import net.artelnatif.nicko.bukkit.anvil.AnvilManager;
|
||||
import net.artelnatif.nicko.anvil.AnvilManager;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
|
@ -1,9 +1,9 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.skin;
|
||||
package net.artelnatif.nicko.gui.items.skin;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
import net.artelnatif.nicko.bukkit.anvil.AnvilManager;
|
||||
import net.artelnatif.nicko.anvil.AnvilManager;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
|
@ -1,9 +1,9 @@
|
|||
package net.artelnatif.nicko.bukkit.gui.items.skin;
|
||||
package net.artelnatif.nicko.gui.items.skin;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
import net.artelnatif.nicko.bukkit.anvil.AnvilManager;
|
||||
import net.artelnatif.nicko.anvil.AnvilManager;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
|
@ -1,7 +1,7 @@
|
|||
package net.artelnatif.nicko.bukkit.i18n;
|
||||
package net.artelnatif.nicko.i18n;
|
||||
|
||||
import com.github.jsixface.YamlConfig;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
|
@ -15,7 +15,7 @@ public class I18N {
|
|||
private static Locale getLocale(Player player) {
|
||||
final NickoBukkit instance = NickoBukkit.getInstance();
|
||||
try {
|
||||
final Optional<NickoProfile> profile = instance.getNicko().getDataStore().getData(player.getUniqueId());
|
||||
final Optional<NickoProfile> profile = instance.getDataStore().getData(player.getUniqueId());
|
||||
return !profile.isPresent() ? Locale.FALLBACK_LOCALE : profile.get().getLocale();
|
||||
} catch (IllegalArgumentException exception) {
|
||||
instance.getLogger().severe("Invalid locale provided by " + player.getName() + ", defaulting to " + Locale.FALLBACK_LOCALE.getCode() + ".");
|
||||
|
@ -29,9 +29,9 @@ public class I18N {
|
|||
|
||||
try {
|
||||
formatter.applyPattern(translation);
|
||||
return instance.getNicko().getConfig().getPrefix() + formatter.format(arguments);
|
||||
return instance.getNickoConfig().getPrefix() + formatter.format(arguments);
|
||||
} catch (Exception e) {
|
||||
return instance.getNicko().getConfig().getPrefix() + key.key();
|
||||
return instance.getNickoConfig().getPrefix() + key.key();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package net.artelnatif.nicko.bukkit.i18n;
|
||||
package net.artelnatif.nicko.i18n;
|
||||
|
||||
public class I18NDict {
|
||||
private final String key;
|
|
@ -1,4 +1,4 @@
|
|||
package net.artelnatif.nicko.bukkit.i18n;
|
||||
package net.artelnatif.nicko.i18n;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package net.artelnatif.nicko.bukkit.i18n;
|
||||
package net.artelnatif.nicko.i18n;
|
||||
|
||||
import com.github.jsixface.YamlConfig;
|
||||
import de.studiocode.invui.util.IOUtils;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
|
||||
import java.io.*;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package net.artelnatif.nicko.impl;
|
||||
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.bukkit.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.mojang.MojangAPI;
|
||||
import net.artelnatif.nicko.mojang.MojangSkin;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -22,7 +22,7 @@ public interface Internals {
|
|||
default ActionResult<MojangSkin> fetchSkinTextures(NickoProfile profile, boolean reset) {
|
||||
Optional<MojangSkin> skin;
|
||||
try {
|
||||
final MojangAPI mojang = NickoBukkit.getInstance().getNicko().getMojangAPI();
|
||||
final MojangAPI mojang = NickoBukkit.getInstance().getMojangAPI();
|
||||
final Optional<String> uuid = mojang.getUUID(profile.getSkin());
|
||||
if (uuid.isPresent()) {
|
||||
skin = (reset ? mojang.getSkinWithoutCaching(uuid.get()) : mojang.getSkin(uuid.get()));
|
||||
|
|
|
@ -7,7 +7,6 @@ import com.google.gson.JsonElement;
|
|||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.google.gson.JsonParser;
|
||||
import net.artelnatif.nicko.Nicko;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
|
@ -18,11 +17,14 @@ import java.net.URL;
|
|||
import java.util.Optional;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class MojangAPI {
|
||||
public static final String URL_NAME = "https://api.mojang.com/users/profiles/minecraft/{name}";
|
||||
public static final String URL_SKIN = "https://sessionserver.mojang.com/session/minecraft/profile/{uuid}?unsigned=false";
|
||||
|
||||
private final Logger logger = Logger.getLogger("MojangAPI");
|
||||
|
||||
private final CacheLoader<String, Optional<MojangSkin>> loader = new CacheLoader<String, Optional<MojangSkin>>() {
|
||||
@Nonnull
|
||||
public Optional<MojangSkin> load(@Nonnull String uuid) throws Exception {
|
||||
|
@ -36,12 +38,6 @@ public class MojangAPI {
|
|||
.expireAfterWrite(24, TimeUnit.HOURS)
|
||||
.build(loader);
|
||||
|
||||
private final Nicko nicko;
|
||||
|
||||
public MojangAPI(Nicko nicko) {
|
||||
this.nicko = nicko;
|
||||
}
|
||||
|
||||
public Optional<MojangSkin> getSkin(String uuid) throws IOException, ExecutionException {
|
||||
return cache.get(uuid);
|
||||
}
|
||||
|
@ -78,10 +74,10 @@ public class MojangAPI {
|
|||
|
||||
switch (con.getResponseCode()) {
|
||||
case 400:
|
||||
nicko.getLogger().warning("Failed to parse request: Invalid Name");
|
||||
logger.warning("Failed to parse request: Invalid Name");
|
||||
return getErrorObject();
|
||||
case 429:
|
||||
nicko.getLogger().warning("Failed to parse request: The connection is throttled.");
|
||||
logger.warning("Failed to parse request: The connection is throttled.");
|
||||
return getErrorObject();
|
||||
case 200:
|
||||
final BufferedReader input = new BufferedReader(new InputStreamReader(con.getInputStream()));
|
||||
|
@ -95,11 +91,11 @@ public class MojangAPI {
|
|||
final JsonElement jsonElt = JsonParser.parseString(builder.toString());
|
||||
return jsonElt.getAsJsonObject();
|
||||
} catch (JsonParseException | IllegalStateException exception) {
|
||||
nicko.getLogger().warning("Failed to parse request (" + parametrizedUrl + ")!");
|
||||
logger.warning("Failed to parse request (" + parametrizedUrl + ")!");
|
||||
return getErrorObject();
|
||||
}
|
||||
default:
|
||||
nicko.getLogger().warning("Unhandled response code from Mojang: " + con.getResponseCode());
|
||||
logger.warning("Unhandled response code from Mojang: " + con.getResponseCode());
|
||||
return getErrorObject();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package net.artelnatif.nicko.bukkit.placeholder;
|
||||
package net.artelnatif.nicko.placeholder;
|
||||
|
||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
@ -48,7 +48,7 @@ public class NickoExpansion extends PlaceholderExpansion {
|
|||
locale = "N/A";
|
||||
bungeecord = true;
|
||||
|
||||
final Optional<NickoProfile> optionalProfile = instance.getNicko().getDataStore().getData(player.getUniqueId());
|
||||
final Optional<NickoProfile> optionalProfile = instance.getDataStore().getData(player.getUniqueId());
|
||||
if (optionalProfile.isPresent()) {
|
||||
final NickoProfile profile = optionalProfile.get();
|
||||
if (!profile.isEmpty()) {
|
|
@ -1,6 +1,6 @@
|
|||
package net.artelnatif.nicko.bukkit.placeholder;
|
||||
package net.artelnatif.nicko.placeholder;
|
||||
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
public class PlaceHolderHook {
|
|
@ -1,9 +1,10 @@
|
|||
package net.artelnatif.nicko.storage;
|
||||
|
||||
import net.artelnatif.nicko.Nicko;
|
||||
import net.artelnatif.nicko.bukkit.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.config.Configuration;
|
||||
import net.artelnatif.nicko.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.artelnatif.nicko.mojang.MojangAPI;
|
||||
import net.artelnatif.nicko.mojang.MojangUtils;
|
||||
import net.artelnatif.nicko.storage.json.JSONStorage;
|
||||
import net.artelnatif.nicko.storage.sql.SQLStorage;
|
||||
|
@ -16,13 +17,13 @@ import java.util.UUID;
|
|||
|
||||
public class PlayerDataStore {
|
||||
private final Storage storage;
|
||||
private final Nicko nicko;
|
||||
private final MojangAPI mojangAPI;
|
||||
private final HashMap<UUID, NickoProfile> profiles = new HashMap<>();
|
||||
private final HashMap<UUID, String> names = new HashMap<>();
|
||||
|
||||
public PlayerDataStore(Nicko nicko) {
|
||||
this.nicko = nicko;
|
||||
this.storage = nicko.getConfig().isLocal() && !nicko.getConfig().isBungeecord() ? new JSONStorage(nicko) : new SQLStorage(nicko);
|
||||
public PlayerDataStore(MojangAPI mojangAPI, Configuration configuration) {
|
||||
this.mojangAPI = mojangAPI;
|
||||
this.storage = configuration.isLocal() ? new JSONStorage() : new SQLStorage(configuration);
|
||||
}
|
||||
|
||||
public void storeName(Player player) {
|
||||
|
@ -76,7 +77,7 @@ public class PlayerDataStore {
|
|||
}
|
||||
|
||||
try {
|
||||
final Optional<String> uuidTrimmed = nicko.getMojangAPI().getUUID(name);
|
||||
final Optional<String> uuidTrimmed = mojangAPI.getUUID(name);
|
||||
if (uuidTrimmed.isPresent()) {
|
||||
final UUID uuid = MojangUtils.fromTrimmed(uuidTrimmed.get());
|
||||
return getData(uuid);
|
||||
|
|
|
@ -2,27 +2,25 @@ package net.artelnatif.nicko.storage.json;
|
|||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import net.artelnatif.nicko.Nicko;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.artelnatif.nicko.bukkit.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.storage.Storage;
|
||||
import net.artelnatif.nicko.storage.StorageProvider;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class JSONStorage extends Storage {
|
||||
private final Nicko nicko;
|
||||
private final Logger logger = Logger.getLogger("JSONStorage");
|
||||
private final Gson gson = new GsonBuilder().serializeNulls().setPrettyPrinting().create();
|
||||
private final File directory = new File(NickoBukkit.getInstance().getDataFolder() + "/players/");
|
||||
|
||||
private JSONStorageProvider provider;
|
||||
|
||||
public JSONStorage(Nicko nicko) { this.nicko = nicko; }
|
||||
|
||||
@Override
|
||||
public StorageProvider getProvider() {
|
||||
if (provider == null) {
|
||||
|
@ -43,12 +41,12 @@ public class JSONStorage extends Storage {
|
|||
writer.write(profileToJson);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
nicko.getLogger().warning("Could not write to file.");
|
||||
logger.warning("Could not write to file.");
|
||||
return new ActionResult<>(I18NDict.Error.JSON_ERROR);
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
nicko.getLogger().warning("Could not create file.");
|
||||
logger.warning("Could not create file.");
|
||||
return new ActionResult<>(I18NDict.Error.JSON_ERROR);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,31 +1,36 @@
|
|||
package net.artelnatif.nicko.storage.sql;
|
||||
|
||||
import net.artelnatif.nicko.Nicko;
|
||||
import net.artelnatif.nicko.bukkit.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.bukkit.i18n.Locale;
|
||||
import net.artelnatif.nicko.config.Configuration;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.artelnatif.nicko.i18n.I18NDict;
|
||||
import net.artelnatif.nicko.i18n.Locale;
|
||||
import net.artelnatif.nicko.storage.Storage;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.sql.*;
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class SQLStorage extends Storage {
|
||||
private final Nicko nicko;
|
||||
private final Logger logger = Logger.getLogger("SQLStorage");
|
||||
private final Configuration configuration;
|
||||
|
||||
private SQLStorageProvider provider;
|
||||
|
||||
public SQLStorage(Nicko nicko) {
|
||||
this.nicko = nicko;
|
||||
public SQLStorage(Configuration configuration) {
|
||||
this.configuration = configuration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLStorageProvider getProvider() {
|
||||
if (provider == null) {
|
||||
provider = new SQLStorageProvider(nicko);
|
||||
provider = new SQLStorageProvider(configuration);
|
||||
}
|
||||
return provider;
|
||||
}
|
||||
|
@ -41,7 +46,7 @@ public class SQLStorage extends Storage {
|
|||
statement.executeUpdate();
|
||||
return new ActionResult<>();
|
||||
} catch (SQLException e) {
|
||||
nicko.getLogger().warning("Couldn't send SQL Request: " + e.getMessage());
|
||||
logger.warning("Couldn't send SQL Request: " + e.getMessage());
|
||||
return new ActionResult<>(I18NDict.Error.SQL_ERROR);
|
||||
}
|
||||
}
|
||||
|
@ -60,7 +65,7 @@ public class SQLStorage extends Storage {
|
|||
final ResultSet resultSet = statement.executeQuery();
|
||||
return resultSet.next();
|
||||
} catch (SQLException e) {
|
||||
nicko.getLogger().warning("Couldn't check if data is present: " + e.getMessage());
|
||||
logger.warning("Couldn't check if data is present: " + e.getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -91,7 +96,7 @@ public class SQLStorage extends Storage {
|
|||
final NickoProfile profile = new NickoProfile(name, skin, Locale.fromCode(locale), bungeecord);
|
||||
return Optional.of(profile);
|
||||
} catch (SQLException e) {
|
||||
nicko.getLogger().warning("Couldn't fetch profile: " + e.getMessage());
|
||||
logger.warning("Couldn't fetch profile: " + e.getMessage());
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package net.artelnatif.nicko.storage.sql;
|
||||
|
||||
import net.artelnatif.nicko.Nicko;
|
||||
import net.artelnatif.nicko.config.Configuration;
|
||||
import net.artelnatif.nicko.storage.StorageProvider;
|
||||
import org.mariadb.jdbc.MariaDbDataSource;
|
||||
|
@ -8,25 +7,27 @@ import org.mariadb.jdbc.MariaDbDataSource;
|
|||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.SQLException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class SQLStorageProvider implements StorageProvider {
|
||||
private final Nicko nicko;
|
||||
private final Logger logger = Logger.getLogger("SQLStorageProvider");
|
||||
private final Configuration configuration;
|
||||
|
||||
private Connection connection;
|
||||
|
||||
private final String schemaName = "nicko";
|
||||
|
||||
public SQLStorageProvider(Nicko nicko) {
|
||||
this.nicko = nicko;
|
||||
public SQLStorageProvider(Configuration configuration) {
|
||||
this.configuration = configuration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean init() {
|
||||
try {
|
||||
final Configuration config = nicko.getConfig();
|
||||
final MariaDbDataSource dataSource = new MariaDbDataSource();
|
||||
dataSource.setUrl("jdbc:mariadb://" + config.getAddress());
|
||||
dataSource.setUser(config.getUsername());
|
||||
dataSource.setPassword(config.getPassword());
|
||||
dataSource.setUrl("jdbc:mariadb://" + configuration.getAddress());
|
||||
dataSource.setUser(configuration.getUsername());
|
||||
dataSource.setPassword(configuration.getPassword());
|
||||
connection = dataSource.getConnection();
|
||||
final boolean initialized = connection != null && !connection.isClosed();
|
||||
|
||||
|
@ -36,7 +37,7 @@ public class SQLStorageProvider implements StorageProvider {
|
|||
createTable();
|
||||
return true;
|
||||
} catch (SQLException e) {
|
||||
nicko.getLogger().severe("Couldn't establish a connection to the MySQL database: " + e.getMessage());
|
||||
logger.severe("Couldn't establish a connection to the MySQL database: " + e.getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
name: ${project.parent.name}
|
||||
main: net.artelnatif.nicko.bungee.NickoBungee
|
||||
version: ${project.version}
|
||||
author: Aro
|
|
@ -1,5 +1,5 @@
|
|||
name: Nicko
|
||||
main: net.artelnatif.nicko.bukkit.NickoBukkit
|
||||
main: net.artelnatif.nicko.NickoBukkit
|
||||
version: 1.0-SNAPSHOT
|
||||
author: Aro
|
||||
api-version: 1.19
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package net.artelnatif.nicko.test;
|
||||
|
||||
import be.seeseemelk.mockbukkit.MockBukkit;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.config.Configuration;
|
||||
import org.junit.jupiter.api.*;
|
||||
|
||||
|
@ -16,7 +16,6 @@ public class NickoPluginTest {
|
|||
"",
|
||||
"",
|
||||
true,
|
||||
false,
|
||||
false);
|
||||
MockBukkit.mock();
|
||||
plugin = MockBukkit.load(NickoBukkit.class, config);
|
||||
|
@ -25,8 +24,8 @@ public class NickoPluginTest {
|
|||
@Test
|
||||
@DisplayName("Plugin Initialization")
|
||||
public void testPluginInitialization() {
|
||||
Assertions.assertNotNull(plugin.getNicko().getDataStore().getStorage().getProvider());
|
||||
Assertions.assertNotNull(plugin.getNicko().getConfig());
|
||||
Assertions.assertNotNull(plugin.getDataStore().getStorage().getProvider());
|
||||
Assertions.assertNotNull(plugin.getConfig());
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
|
|
|
@ -3,7 +3,7 @@ package net.artelnatif.nicko.test.storage;
|
|||
import be.seeseemelk.mockbukkit.MockBukkit;
|
||||
import be.seeseemelk.mockbukkit.ServerMock;
|
||||
import be.seeseemelk.mockbukkit.entity.PlayerMock;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.config.Configuration;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
|
@ -24,7 +24,6 @@ public class BrokenSQLTest {
|
|||
"INVALID_PASSWORD",
|
||||
"",
|
||||
false,
|
||||
false,
|
||||
false);
|
||||
server = MockBukkit.mock();
|
||||
plugin = MockBukkit.load(NickoBukkit.class, config);
|
||||
|
@ -34,22 +33,22 @@ public class BrokenSQLTest {
|
|||
@Test
|
||||
@DisplayName("Fail to create Tables")
|
||||
public void createSQLTables() {
|
||||
Assertions.assertTrue(plugin.getNicko().getDataStore().getStorage().isError());
|
||||
Assertions.assertTrue(plugin.getDataStore().getStorage().isError());
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("Fail to Store Player Via SQL")
|
||||
public void storePlayer() {
|
||||
final Optional<NickoProfile> optionalProfile = plugin.getNicko().getDataStore().getData(player.getUniqueId());
|
||||
final Optional<NickoProfile> optionalProfile = plugin.getDataStore().getData(player.getUniqueId());
|
||||
Assertions.assertFalse(optionalProfile.isPresent());
|
||||
ActionResult<Void> result = plugin.getNicko().getDataStore().saveData(player);
|
||||
ActionResult<Void> result = plugin.getDataStore().saveData(player);
|
||||
Assertions.assertTrue(result.isError());
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("Fail to Retrieve Player Via SQL")
|
||||
public void retrievePlayer() {
|
||||
final Optional<NickoProfile> storeAction = plugin.getNicko().getDataStore().getData(player.getUniqueId());
|
||||
final Optional<NickoProfile> storeAction = plugin.getDataStore().getData(player.getUniqueId());
|
||||
Assertions.assertFalse(storeAction.isPresent());
|
||||
}
|
||||
|
||||
|
|
|
@ -3,8 +3,8 @@ package net.artelnatif.nicko.test.storage;
|
|||
import be.seeseemelk.mockbukkit.MockBukkit;
|
||||
import be.seeseemelk.mockbukkit.ServerMock;
|
||||
import be.seeseemelk.mockbukkit.entity.PlayerMock;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.bukkit.i18n.Locale;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.i18n.Locale;
|
||||
import net.artelnatif.nicko.config.Configuration;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
|
@ -26,7 +26,6 @@ public class SQLStorageTest {
|
|||
"12345",
|
||||
"",
|
||||
false,
|
||||
false,
|
||||
false);
|
||||
server = MockBukkit.mock();
|
||||
plugin = MockBukkit.load(NickoBukkit.class, config);
|
||||
|
@ -37,14 +36,14 @@ public class SQLStorageTest {
|
|||
@DisplayName("Create SQL Tables")
|
||||
@Order(1)
|
||||
public void createSQLTables() {
|
||||
Assertions.assertFalse(plugin.getNicko().getDataStore().getStorage().isError());
|
||||
Assertions.assertFalse(plugin.getDataStore().getStorage().isError());
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("Store Player Via SQL")
|
||||
@Order(2)
|
||||
public void storePlayer() {
|
||||
final Optional<NickoProfile> optionalProfile = plugin.getNicko().getDataStore().getData(player.getUniqueId());
|
||||
final Optional<NickoProfile> optionalProfile = plugin.getDataStore().getData(player.getUniqueId());
|
||||
Assertions.assertTrue(optionalProfile.isPresent());
|
||||
}
|
||||
|
||||
|
@ -52,7 +51,7 @@ public class SQLStorageTest {
|
|||
@DisplayName("Retrieve Player Via SQL")
|
||||
@Order(3)
|
||||
public void retrievePlayer() {
|
||||
final Optional<NickoProfile> storeAction = plugin.getNicko().getDataStore().getData(player.getUniqueId());
|
||||
final Optional<NickoProfile> storeAction = plugin.getDataStore().getData(player.getUniqueId());
|
||||
Assertions.assertTrue(storeAction.isPresent());
|
||||
}
|
||||
|
||||
|
@ -60,7 +59,7 @@ public class SQLStorageTest {
|
|||
@DisplayName("Update Player Via SQL")
|
||||
@Order(4)
|
||||
public void updatePlayer() {
|
||||
final Optional<NickoProfile> optionalProfile = plugin.getNicko().getDataStore().getData(player.getUniqueId());
|
||||
final Optional<NickoProfile> optionalProfile = plugin.getDataStore().getData(player.getUniqueId());
|
||||
Assertions.assertTrue(optionalProfile.isPresent());
|
||||
|
||||
final NickoProfile profile = optionalProfile.get();
|
||||
|
@ -74,10 +73,10 @@ public class SQLStorageTest {
|
|||
profile.setLocale(Locale.FRENCH);
|
||||
profile.setBungeecordTransfer(false);
|
||||
|
||||
final ActionResult<Void> result = plugin.getNicko().getDataStore().saveData(player);
|
||||
final ActionResult<Void> result = plugin.getDataStore().saveData(player);
|
||||
Assertions.assertFalse(result.isError());
|
||||
|
||||
final Optional<NickoProfile> optionalUpdatedProfile = plugin.getNicko().getDataStore().getData(player.getUniqueId());
|
||||
final Optional<NickoProfile> optionalUpdatedProfile = plugin.getDataStore().getData(player.getUniqueId());
|
||||
Assertions.assertTrue(optionalUpdatedProfile.isPresent());
|
||||
final NickoProfile updatedProfile = optionalProfile.get();
|
||||
Assertions.assertEquals(updatedProfile.getName(), "Notch");
|
||||
|
@ -90,7 +89,7 @@ public class SQLStorageTest {
|
|||
@DisplayName("Remove Player Disguise Via SQL")
|
||||
@Order(5)
|
||||
public void removePlayerDisguise() {
|
||||
final Optional<NickoProfile> optionalProfile = plugin.getNicko().getDataStore().getData(player.getUniqueId());
|
||||
final Optional<NickoProfile> optionalProfile = plugin.getDataStore().getData(player.getUniqueId());
|
||||
Assertions.assertTrue(optionalProfile.isPresent());
|
||||
|
||||
final NickoProfile profile = optionalProfile.get();
|
||||
|
@ -98,10 +97,10 @@ public class SQLStorageTest {
|
|||
profile.setName(null);
|
||||
profile.setSkin(null);
|
||||
|
||||
final ActionResult<Void> result = plugin.getNicko().getDataStore().saveData(player);
|
||||
final ActionResult<Void> result = plugin.getDataStore().saveData(player);
|
||||
Assertions.assertFalse(result.isError());
|
||||
|
||||
final Optional<NickoProfile> optionalUpdatedProfile = plugin.getNicko().getDataStore().getData(player.getUniqueId());
|
||||
final Optional<NickoProfile> optionalUpdatedProfile = plugin.getDataStore().getData(player.getUniqueId());
|
||||
Assertions.assertTrue(optionalUpdatedProfile.isPresent());
|
||||
final NickoProfile updatedProfile = optionalProfile.get();
|
||||
Assertions.assertNull(updatedProfile.getName());
|
||||
|
|
|
@ -4,7 +4,7 @@ import com.google.common.collect.Lists;
|
|||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.authlib.properties.Property;
|
||||
import com.mojang.authlib.properties.PropertyMap;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.artelnatif.nicko.mojang.MojangSkin;
|
||||
|
|
|
@ -4,7 +4,7 @@ import com.google.common.collect.Lists;
|
|||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.authlib.properties.Property;
|
||||
import com.mojang.authlib.properties.PropertyMap;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.artelnatif.nicko.mojang.MojangSkin;
|
||||
|
|
|
@ -4,7 +4,7 @@ import com.google.common.collect.Lists;
|
|||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.authlib.properties.Property;
|
||||
import com.mojang.authlib.properties.PropertyMap;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.artelnatif.nicko.mojang.MojangSkin;
|
||||
|
|
|
@ -4,7 +4,7 @@ import com.google.common.collect.Lists;
|
|||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.authlib.properties.Property;
|
||||
import com.mojang.authlib.properties.PropertyMap;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.artelnatif.nicko.mojang.MojangSkin;
|
||||
|
|
|
@ -4,7 +4,7 @@ import com.google.common.collect.Lists;
|
|||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.authlib.properties.Property;
|
||||
import com.mojang.authlib.properties.PropertyMap;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.artelnatif.nicko.mojang.MojangSkin;
|
||||
|
|
|
@ -4,7 +4,7 @@ import com.google.common.collect.Lists;
|
|||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.authlib.properties.Property;
|
||||
import com.mojang.authlib.properties.PropertyMap;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.artelnatif.nicko.mojang.MojangSkin;
|
||||
|
|
|
@ -4,7 +4,7 @@ import com.google.common.collect.Lists;
|
|||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.authlib.properties.Property;
|
||||
import com.mojang.authlib.properties.PropertyMap;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.artelnatif.nicko.mojang.MojangSkin;
|
||||
|
|
|
@ -3,7 +3,7 @@ package net.artelnatif.nicko.impl;
|
|||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.authlib.properties.Property;
|
||||
import com.mojang.authlib.properties.PropertyMap;
|
||||
import net.artelnatif.nicko.bukkit.NickoBukkit;
|
||||
import net.artelnatif.nicko.NickoBukkit;
|
||||
import net.artelnatif.nicko.disguise.ActionResult;
|
||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||
import net.artelnatif.nicko.mojang.MojangSkin;
|
||||
|
|
Loading…
Reference in a new issue