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