diff --git a/Core.iml b/Core.iml index 9e1f47a..01c10d7 100644 --- a/Core.iml +++ b/Core.iml @@ -12,23 +12,24 @@ - - + - + + - - + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 3baded1..f5bd412 100644 --- a/pom.xml +++ b/pom.xml @@ -59,14 +59,14 @@ - org.bukkit - craftbukkit + org.spigotmc + spigot-api 1.10-R0.1-SNAPSHOT provided org.bukkit - bukkit + craftbukkit 1.10-R0.1-SNAPSHOT provided @@ -85,17 +85,22 @@ netty-all 4.0.36.Final - - org.spigotmc - spigot-api - 1.10-R0.1-SNAPSHOT - provided - com.google.code.gson gson 2.3.1 + + com.zaxxer + HikariCP + 2.4.5 + compile + + + com.google.guava + guava + 19.0 + \ No newline at end of file diff --git a/src/main/java/eu/univento/cloud/client/CloudManager.java b/src/main/java/eu/univento/cloud/client/CloudManager.java new file mode 100644 index 0000000..60266fa --- /dev/null +++ b/src/main/java/eu/univento/cloud/client/CloudManager.java @@ -0,0 +1,10 @@ +package eu.univento.cloud.client; + +/** + * @author joethei + * @version 0.1 + * created on 08.07.2016 + */ +public class CloudManager { + +} \ No newline at end of file diff --git a/src/main/java/eu/univento/cloud/client/CloudMessenger.java b/src/main/java/eu/univento/cloud/client/CloudMessenger.java index 832c7e3..417e106 100644 --- a/src/main/java/eu/univento/cloud/client/CloudMessenger.java +++ b/src/main/java/eu/univento/cloud/client/CloudMessenger.java @@ -5,6 +5,8 @@ import eu.univento.core.api.player.CustomPlayer; public class CloudMessenger { + + public static void sendModModeMessage(ModModePrefix prefix, String message) { //TODO: add stuff + server } diff --git a/src/main/java/eu/univento/core/Core.java b/src/main/java/eu/univento/core/Core.java index 32edc74..cbe179b 100644 --- a/src/main/java/eu/univento/core/Core.java +++ b/src/main/java/eu/univento/core/Core.java @@ -3,6 +3,7 @@ package eu.univento.core; import eu.univento.core.antihack.AntiHack; import eu.univento.core.api.Blackscreen; import eu.univento.core.api.Config; +import eu.univento.core.api.database.DatabaseManager; import eu.univento.core.api.database.MongoDB; import eu.univento.core.api.database.MySQL; import eu.univento.core.api.events.MoveEventFilter; @@ -45,22 +46,37 @@ public class Core extends JavaPlugin{ /** * mysql stuff */ - private static MySQL sql = new MySQL(getInstance(), Config.readString("MySQL.Host"), Config.readString("MySQL.Port"), Config.readString("MySQL.DB"), Config.readString("MySQL.User"), Config.readString("MySQL.Pass")); + private static MySQL sql = new MySQL(getInstance(), Config.readString("MySQL.Host"), Config.readString("MySQL.Port"), Config.readString("MySQL.DB"), Config.readString("MySQL.User"), Config.readString("MySQL.Pass")); /** * @return sql */ - public static MySQL returnSQL() { + public static MySQL getMySQL() { return sql; } + /* + private static AsyncMySQL asyncMySQL = new AsyncMySQL(getInstance(), Config.readString("MySQL.Host"), Config.readString("MySQL.Port"), Config.readString("MySQL.DB"), Config.readString("MySQL.User"), Config.readString("MySQL.Pass")); + public static AsyncMySQL getAsyncMySQL() { + return asyncMySQL; + } + */ private static MongoDB mongoDB; public static MongoDB getMongoDB() { return mongoDB; } - /** - * logging and stuff - */ + /* + private static AsyncMongoDB asyncMongoDB; + public static AsyncMongoDB getAsyncMongoDB() { + return asyncMongoDB; + } + */ + + private static DatabaseManager databaseManager; + public static DatabaseManager getDatabaseManager() { + return databaseManager; + } + private static Logger log = Bukkit.getLogger(); public static ArrayList getOnlinePlayers() { @@ -101,7 +117,6 @@ public class Core extends JavaPlugin{ if(ServerSettings.isGame()) { new Fix(this, "fix", "fix"); - new Stats(this, "stats", "statistics"); new Nick(this, "nick", "nick"); } AntiHack.registerListeners(); @@ -130,8 +145,9 @@ public class Core extends JavaPlugin{ Bukkit.getMessenger().registerOutgoingPluginChannel(this, "schematica"); Blackscreen.setupUtil(getInstance()); + databaseManager = new DatabaseManager(getInstance()); mongoDB = new MongoDB(Config.readString("MongoDB.Host"), Config.readInt("MongoDB.Port"), Config.readString("MongoDB.User"), Config.readString("MongoDB.Password"), Config.readString("MongoDB.Database")); - + //asyncMongoDB = new AsyncMongoDB(Config.readString("MongoDB.Host"), Config.readInt("MongoDB.Port"), Config.readString("MongoDB.User"), Config.readString("MongoDB.Password"), Config.readString("MongoDB.Database")); log(Level.INFO, "\n" + "\n" + " \n" + @@ -176,6 +192,7 @@ public class Core extends JavaPlugin{ @Override public void onDisable() { mongoDB.getClient().close(); + databaseManager.closeConnections(); Bukkit.getMessenger().unregisterOutgoingPluginChannel(this, "BungeeCord"); Bukkit.getMessenger().unregisterIncomingPluginChannel(this, "BungeeCord"); Bukkit.getMessenger().unregisterOutgoingPluginChannel(this, "LABYMOD"); diff --git a/src/main/java/eu/univento/core/antihack/Hack.java b/src/main/java/eu/univento/core/antihack/Hack.java index 9aac7b0..1a50edf 100644 --- a/src/main/java/eu/univento/core/antihack/Hack.java +++ b/src/main/java/eu/univento/core/antihack/Hack.java @@ -12,7 +12,8 @@ public enum Hack { FASTPLACE(10), KILLAURA(10), FLY(10), - WDL(10); + WDL(10), + NUKER(10); private int id; private Hack(int id) { diff --git a/src/main/java/eu/univento/core/antihack/modules/Nuker.java b/src/main/java/eu/univento/core/antihack/modules/Nuker.java new file mode 100644 index 0000000..9c57c07 --- /dev/null +++ b/src/main/java/eu/univento/core/antihack/modules/Nuker.java @@ -0,0 +1,37 @@ +package eu.univento.core.antihack.modules; + +import eu.univento.cloud.client.CloudMessenger; +import eu.univento.core.antihack.Hack; +import eu.univento.core.api.player.CustomPlayer; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockBreakEvent; + +import java.util.LinkedHashMap; + +/** + * @author joethei + * @version 0.1 + * created on 01.07.2016 + */ +public class Nuker implements Listener { + + private LinkedHashMap last = new LinkedHashMap<>(); + private LinkedHashMap blocks = new LinkedHashMap<>(); + + @EventHandler + public void onBlockBreak(BlockBreakEvent e) { + CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); + if(last.get(p) != null && last.get(p) + 50000L >= System.currentTimeMillis()) { + last.put(p, System.currentTimeMillis()); + blocks.put(p, blocks.get(p) + 1); + if(blocks.get(p) > 80) { + e.setCancelled(true); + CloudMessenger.sendHackMessage(Hack.NUKER, p); + p.warn(Hack.NUKER); + } + }else{ + blocks.put(p, 0); + } + } +} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/database/AsyncMongoDB.java b/src/main/java/eu/univento/core/api/database/AsyncMongoDB.java new file mode 100644 index 0000000..dfca444 --- /dev/null +++ b/src/main/java/eu/univento/core/api/database/AsyncMongoDB.java @@ -0,0 +1,47 @@ +package eu.univento.core.api.database; + + +import com.mongodb.MongoCredential; +import com.mongodb.ServerAddress; +import com.mongodb.async.client.MongoClient; +import com.mongodb.async.client.MongoClientSettings; +import com.mongodb.async.client.MongoClients; +import com.mongodb.async.client.MongoDatabase; +import com.mongodb.connection.ClusterSettings; +import eu.univento.core.api.Config; + +import java.util.ArrayList; +import java.util.List; + +public class AsyncMongoDB { + + private MongoClient client; + private MongoDatabase database; + + public AsyncMongoDB(String host, int port, String username, String password, String database) { + List addressList = new ArrayList<>(); + addressList.add(new ServerAddress(host, port)); + List credentials = new ArrayList<>(); + credentials.add(MongoCredential.createCredential(username, database, password.toCharArray())); + ClusterSettings clusterSettings = ClusterSettings.builder().hosts(addressList).build(); + MongoClientSettings settings = MongoClientSettings.builder().clusterSettings(clusterSettings).credentialList(credentials).build(); + client = MongoClients.create(settings); + } + + public MongoClient getClient() { + if(client == null) + new AsyncMongoDB(Config.readString("MongoDB.Host"), Config.readInt("MongoDB.Port"), Config.readString("MongoDB.User"), Config.readString("MongoDB.Password"), Config.readString("MongoDB.Database")); + return client; + } + + public MongoDatabase getDatabase() { + if(database == null) + database = getClient().getDatabase(Config.readString("MongoDB.Database")); + return database; + } + + public void closeConnection() { + if(client != null) + client.close(); + } +} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/database/AsyncMySQL.java b/src/main/java/eu/univento/core/api/database/AsyncMySQL.java index fbd800d..754a5c4 100644 --- a/src/main/java/eu/univento/core/api/database/AsyncMySQL.java +++ b/src/main/java/eu/univento/core/api/database/AsyncMySQL.java @@ -17,9 +17,9 @@ public class AsyncMySQL { private Plugin plugin; private MySQL sql; - public AsyncMySQL(Plugin owner, String host, int port, String user, String password, String database) { + public AsyncMySQL(Plugin owner, String host, String port, String user, String password, String database) { try { - sql = new MySQL(host, port, user, password, database); + sql = new MySQL(owner, host, port, user, password, database); executor = Executors.newCachedThreadPool(); plugin = owner; } catch (Exception e) { @@ -27,127 +27,30 @@ public class AsyncMySQL { } } - public void update(PreparedStatement statement) { - executor.execute(() -> sql.queryUpdate(statement)); - } - - public void update(String statement) { - executor.execute(() -> sql.queryUpdate(statement)); - } - - public void query(PreparedStatement statement, Consumer consumer) { + public void update(String update) { executor.execute(() -> { - ResultSet result = sql.query(statement); - Bukkit.getScheduler().runTask(plugin, () -> consumer.accept(result)); + try { + sql.query(update); + } catch (SQLException | ClassNotFoundException e) { + e.printStackTrace(); + } }); } - public void query(String statement, Consumer consumer) { + public void query(String query, Consumer consumer) { executor.execute(() -> { - ResultSet result = sql.query(statement); - Bukkit.getScheduler().runTask(plugin, () -> consumer.accept(result)); + ResultSet result = null; + try { + result = sql.query(query); + ResultSet finalResult = result; + Bukkit.getScheduler().runTask(plugin, () -> consumer.accept(finalResult)); + } catch (SQLException | ClassNotFoundException e) { + e.printStackTrace(); + } }); } - public PreparedStatement prepare(String query) { - try { - return sql.getConnection().prepareStatement(query); - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - public MySQL getMySQL() { return sql; } - - public static class MySQL { - - private String host, user, password, database; - private int port; - - private Connection conn; - - public MySQL(String host, int port, String user, String password, String database) throws Exception { - this.host = host; - this.port = port; - this.user = user; - this.password = password; - this.database = database; - - this.openConnection(); - } - - public void queryUpdate(String query) { - checkConnection(); - try (PreparedStatement statement = conn.prepareStatement(query)) { - queryUpdate(statement); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public void queryUpdate(PreparedStatement statement) { - checkConnection(); - try { - statement.executeUpdate(); - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - statement.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - public ResultSet query(String query) { - checkConnection(); - try { - return query(conn.prepareStatement(query)); - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - public ResultSet query(PreparedStatement statement) { - checkConnection(); - try { - return statement.executeQuery(); - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - public Connection getConnection() { - return this.conn; - } - - private void checkConnection() { - try { - if (this.conn == null || !this.conn.isValid(10) || this.conn.isClosed()) openConnection(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public Connection openConnection() throws Exception { - Class.forName("com.mysql.jdbc.Driver"); - return this.conn = DriverManager.getConnection("jdbc:mysql://" + this.host + ":" + this.port + "/" + this.database, this.user, this.password); - } - - public void closeConnection() { - try { - this.conn.close(); - } catch (SQLException e) { - e.printStackTrace(); - } finally { - this.conn = null; - } - } - } } \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/database/Database.java b/src/main/java/eu/univento/core/api/database/Database.java index 1cc711a..185fe33 100644 --- a/src/main/java/eu/univento/core/api/database/Database.java +++ b/src/main/java/eu/univento/core/api/database/Database.java @@ -2,10 +2,7 @@ package eu.univento.core.api.database; import org.bukkit.plugin.Plugin; -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; +import java.sql.*; public abstract class Database { protected Connection connection; @@ -37,29 +34,25 @@ public abstract class Database { return true; } - public ResultSet querySQL(String query) + public ResultSet query(String query) throws SQLException, ClassNotFoundException { if (!checkConnection()) { openConnection(); } - Statement statement = this.connection.createStatement(); + PreparedStatement statement = this.connection.prepareStatement(query); - ResultSet result = statement.executeQuery(query); - - return result; + return statement.executeQuery(); } - public int updateSQL(String query) + public int update(String query) throws SQLException, ClassNotFoundException { if (!checkConnection()) { openConnection(); } - Statement statement = this.connection.createStatement(); + PreparedStatement statement = this.connection.prepareStatement(query); - int result = statement.executeUpdate(query); - - return result; + return statement.executeUpdate(); } } \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/database/DatabaseManager.java b/src/main/java/eu/univento/core/api/database/DatabaseManager.java new file mode 100644 index 0000000..cacf48f --- /dev/null +++ b/src/main/java/eu/univento/core/api/database/DatabaseManager.java @@ -0,0 +1,53 @@ +package eu.univento.core.api.database; + +import eu.univento.core.api.Config; +import org.bukkit.plugin.Plugin; + +import java.sql.SQLException; + +/** + * @author joethei + * @version 0.1 + * created on 03.07.2016 + */ +public class DatabaseManager { + + private static AsyncMongoDB asyncMongoDB; + private static MongoDB mongoDB; + private static AsyncMySQL asyncMySQL; + private static MySQL mysql; + + public DatabaseManager(Plugin plugin) { + asyncMongoDB = new AsyncMongoDB(Config.readString("MongoDB.Host"), Config.readInt("MongoDB.Port"), Config.readString("MongoDB.User"), Config.readString("MongoDB.Password"), Config.readString("MongoDB.Database")); + mongoDB = new MongoDB(Config.readString("MongoDB.Host"), Config.readInt("MongoDB.Port"), Config.readString("MongoDB.User"), Config.readString("MongoDB.Password"), Config.readString("MongoDB.Database")); + mysql = new MySQL(plugin, Config.readString("MySQL.Host"), Config.readString("MySQL.Port"), Config.readString("MySQL.DB"), Config.readString("MySQL.User"), Config.readString("MySQL.Pass")); + asyncMySQL = new AsyncMySQL(plugin, Config.readString("MySQL.Host"), Config.readString("MySQL.Port"), Config.readString("MySQL.DB"), Config.readString("MySQL.User"), Config.readString("MySQL.Pass")); + } + + public void closeConnections() { + asyncMongoDB.closeConnection(); + mongoDB.closeConnection(); + try { + mysql.closeConnection(); + asyncMySQL.getMySQL().closeConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public AsyncMongoDB getAsyncMongoDB() { + return asyncMongoDB; + } + + public MongoDB getMongoDB() { + return mongoDB; + } + + public MySQL getMySQL() { + return mysql; + } + + public AsyncMySQL getAsyncMySQL() { + return asyncMySQL; + } +} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/database/MySQL.java b/src/main/java/eu/univento/core/api/database/MySQL.java index 7f8353d..8243d1f 100644 --- a/src/main/java/eu/univento/core/api/database/MySQL.java +++ b/src/main/java/eu/univento/core/api/database/MySQL.java @@ -6,31 +6,27 @@ import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; -public class MySQL extends Database -{ - private final String user; - private final String database; - private final String password; - private final String port; - private final String hostname; +public class MySQL extends Database { + private final String user; + private final String database; + private final String password; + private final String port; + private final String hostname; - public MySQL(Plugin plugin, String hostname, String port, String database, String username, String password) { - super(plugin); - this.hostname = hostname; - this.port = port; - this.database = database; - this.user = username; - this.password = password; - } - - public Connection openConnection() throws SQLException, ClassNotFoundException { - if (checkConnection()) { - return this.connection; + public MySQL(Plugin plugin, String hostname, String port, String database, String username, String password) { + super(plugin); + this.hostname = hostname; + this.port = port; + this.database = database; + this.user = username; + this.password = password; + } + + public Connection openConnection() throws SQLException, ClassNotFoundException { + if (checkConnection()) + return this.connection; + Class.forName("com.mysql.jdbc.Driver"); + this.connection = DriverManager.getConnection("jdbc:mysql://" + this.hostname + ":" + this.port + "/" + this.database, this.user, this.password); + return this.connection; } - Class.forName("com.mysql.jdbc.Driver"); - this.connection = DriverManager.getConnection("jdbc:mysql://" + - this.hostname + ":" + this.port + "/" + this.database, - this.user, this.password); - return this.connection; - } } \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/effects/Effects.java b/src/main/java/eu/univento/core/api/effects/Effects.java index 1d7605c..5f072bc 100644 --- a/src/main/java/eu/univento/core/api/effects/Effects.java +++ b/src/main/java/eu/univento/core/api/effects/Effects.java @@ -1,7 +1,6 @@ package eu.univento.core.api.effects; -import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.PlayerSettings; +import eu.univento.core.Core; import net.minecraft.server.v1_10_R1.EnumParticle; import net.minecraft.server.v1_10_R1.PacketPlayOutWorldParticles; import org.bukkit.Location; @@ -24,9 +23,7 @@ public class Effects { */ public static void playEffect(Location loc, EnumParticle ep, float f, int count) { PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(ep, true, (float) loc.getX(), (float) loc.getY(), (float) loc.getZ(), f, f, f, 0.0F, count, 0, 0); - for(CustomPlayer p : PlayerSettings.getAllPlayersWithEffectsEnabled()) { - p.getHandle().playerConnection.sendPacket(packet); - } + Core.getOnlinePlayers().stream().filter(p -> p.hasEffects()).forEach(p -> p.getHandle().playerConnection.sendPacket(packet)); } public static void playEffectToPlayer(Player p, Location loc, EnumParticle ep, float f, int count) { diff --git a/src/main/java/eu/univento/core/api/items/ItemBuilder.java b/src/main/java/eu/univento/core/api/items/ItemBuilder.java new file mode 100644 index 0000000..e68767e --- /dev/null +++ b/src/main/java/eu/univento/core/api/items/ItemBuilder.java @@ -0,0 +1,377 @@ +package eu.univento.core.api.items; + +import org.bukkit.Color; +import org.bukkit.Material; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.LeatherArmorMeta; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.material.MaterialData; + +import java.util.*; + +/** + * NOTICE: This utility was developer as part of AeolusLib. While you can use it for your own projects, You are NOT allowed to delete or move this header comment. + * + * Utility: + * Chainable {@link ItemStack}s + * + * Example Usage(s): + * {@code ItemStack itemStack = new ItemBuilder(Material.SKULL_ITEM).amount(1).durability(3).skullOwner("MCAeolus").name(ChatColor.RED+"MCAeolus's Skull").make())} + * {@code ItemStack itemStack = new ItemBuilder().type(Material.BEDROCK).lores(new String[]{"Lore1",ChatColor.RED+"Lore2"}).enchantment(Enchantment.DAMAGE_ALL, 99).make()} + * + * @author MCAeolus, joethei + * @version 1.1 + */ + +public class ItemBuilder { + + private final ItemStack item; + private final ItemMeta itemM; + + /** + * Init item chainable via given Material parameter. + * + * @param itemType + * the {@link Material} to initiate the instance with. + * + * @since 1.0 + */ + public ItemBuilder(final Material itemType){ + item = new ItemStack(itemType); + itemM = item.getItemMeta(); + } + + /** + * Init item chainable via given ItemStack parameter. + * + * @param itemStack + * the {@link ItemStack} to initialize the instance with. + * + * @since 1.0 + */ + public ItemBuilder(final ItemStack itemStack){ + item = itemStack; + itemM = item.getItemMeta(); + } + + /** + * Init the item chainable with no defined Material/ItemStack + * + * @since 1.0 + */ + public ItemBuilder(){ + item = new ItemStack(Material.AIR); + itemM = item.getItemMeta(); + } + + /** + * Changes the Material type of the {@link ItemStack} + * + * @param material + * the new {@link Material} to set for the ItemStack. + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder type(final Material material){ + make().setType(material); + return this; + } + + /** + * Changes the {@link ItemStack}s size. + * + * @param itemAmt + * the new Integer count of the ItemStack. + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder amount(final Integer itemAmt){ + make().setAmount(itemAmt); + return this; + } + + /** + * Changes the {@link ItemStack}s display name. + * + * @param name + * the new String for the ItemStack's display name to be set to. + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder name(final String name){ + meta().setDisplayName(name); + make().setItemMeta(meta()); + return this; + } + + /** + * Adds a line of lore to the {@link ItemStack} + * + * @param lore + * String you want to add to the ItemStack's lore. + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder lore(final String lore){ + List lores = meta().getLore(); + if(lores == null){lores = new ArrayList<>();} + lores.add(lore); + meta().setLore(lores); + make().setItemMeta(meta()); + return this; + } + + /** + * Clears the {@link ItemStack}s lore and replaces it with the defined String array. + * + * @param lores + * String array you want to set the ItemStack's lore to. + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder lores(final String[] lores){ + List loresList = meta().getLore(); + if(loresList == null){loresList = new ArrayList<>();} + else{loresList.clear();} + Collections.addAll(loresList, lores); + meta().setLore(loresList); + return this; + } + + /** + * Changes the durability of the current {@link ItemStack} + * + * @param durability + * the new int amount to set the ItemStack's durability to. + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder durability(final int durability){ + make().setDurability((short) durability); + return this; + } + + /** + * Changes the data value of the {@link ItemStack} + * + * @param data + * the new int data value (parsed as byte) to set the ItemStack's durability to. + * + * @return the current instance for chainable application. + * @since 1.0 + */ + @SuppressWarnings("deprecation") + public ItemBuilder data(final int data){ + make().setData(new MaterialData(make().getType(), (byte)data)); + return this; + } + + /** + * Adds and UnsafeEnchantment to the {@link ItemStack} with a defined level int value. + * + * @param enchantment + * the {@link Enchantment} to add to the ItemStack. + * + * @param level + * the int amount that the Enchantment's level will be set to. + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder enchantment(final Enchantment enchantment, final int level){ + make().addUnsafeEnchantment(enchantment, level); + return this; + } + + /** + * Adds and UnsafeEnchantment to the {@Link} with a level int value of 1. + * + * @param enchantment + * the {@link Enchantment} to add to the ItemStack. + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder enchantment(final Enchantment enchantment){ + make().addUnsafeEnchantment(enchantment, 1); + return this; + } + + /** + * Clears all {@link Enchantment}s from the current {@link ItemStack} then adds the defined array of Enchantments to the ItemStack. + * + * @param enchantments + * the Enchantment array to replace any current enchantments applied on the ItemStack. + * + * @param level + * the int level value for all Enchantments to be set to. + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder enchantments(final Enchantment[] enchantments, final int level){ + make().getEnchantments().clear(); + for(Enchantment enchantment : enchantments){ + make().addUnsafeEnchantment(enchantment, level); + } + return this; + } + + /** + * Clears all {@link Enchantment}s from the current {@link ItemStack} then adds the defined array of Enchantments to the ItemStack with a level int value of 1. + * + * @param enchantments + * the Enchantment array to replace any current enchantments applied on the ItemStack. + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder enchantments(final Enchantment[] enchantments){ + make().getEnchantments().clear(); + for(Enchantment enchantment : enchantments){ + make().addUnsafeEnchantment(enchantment, 1); + } + return this; + } + + /** + * Clears the defined {@link Enchantment} from the {@link ItemStack} + * + * @param enchantment + * the Enchantment to remove from the ItemStack. + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder clearEnchantment(final Enchantment enchantment){ + Map itemEnchantments = make().getEnchantments(); + itemEnchantments.keySet().stream().filter(enchantmentC -> enchantment == enchantmentC).forEach(itemEnchantments::remove); + return this; + } + + /** + * Clears all {@link Enchantment}s from the {@link ItemStack} + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder clearEnchantments(){ + make().getEnchantments().clear(); + return this; + } + + /** + * Clears the defined {@link String} of lore from the {@link ItemStack} + * + * @param lore + * the String to be removed from the ItemStack. + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder clearLore(final String lore){ + if(meta().getLore().contains(lore)){ + meta().getLore().remove(lore); + } + make().setItemMeta(meta()); + return this; + } + + /** + * Clears all lore {@link String}s from the {@link ItemStack} + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder clearLores(){ + meta().getLore().clear(); + make().setItemMeta(meta()); + return this; + } + + /** + * Sets the {@link Color} of any LEATHER_ARMOR {@link Material} types of the {@link ItemStack} + * + * @param color + * the Color to set the LEATHER_ARMOR ItemStack to. + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder color(final Color color){ + if(make().getType() == Material.LEATHER_HELMET + || make().getType() == Material.LEATHER_CHESTPLATE + || make().getType() == Material.LEATHER_LEGGINGS + || make().getType() == Material.LEATHER_BOOTS ){ + LeatherArmorMeta meta = (LeatherArmorMeta) meta(); + meta.setColor(color); + make().setItemMeta(meta); + } + return this; + } + + /** + * Clears the {@link Color} of any LEATHER_ARMOR {@link Material} types of the {@link ItemStack} + * + * @return the current instance for chainable application. + * @since 1.0 + */ + public ItemBuilder clearColor(){ + if(make().getType() == Material.LEATHER_HELMET + || make().getType() == Material.LEATHER_CHESTPLATE + || make().getType() == Material.LEATHER_LEGGINGS + || make().getType() == Material.LEATHER_BOOTS ){ + LeatherArmorMeta meta = (LeatherArmorMeta) meta(); + meta.setColor(null); + make().setItemMeta(meta); + } + return this; + } + + /** + * Sets the skullOwner {@link SkullMeta} of the current SKULL_ITEM {@link Material} type {@link ItemStack} + * + * @param name + * the {@link String} value to set the SkullOwner meta to for the SKULL_ITEM Material type ItemStack. + * + * @return the current instance for chainable application + * @since 1.0 + */ + public ItemBuilder skullOwner(final String name){ + if(make().getType() == Material.SKULL_ITEM && make().getDurability() == (byte) 3){ + SkullMeta skullMeta = (SkullMeta) meta(); + skullMeta.setOwner(name); + make().setItemMeta(meta()); + } + return this; + } + + /** + * Returns the {@link ItemMeta} of the {@link ItemStack} + * + * @return the ItemMeta of the ItemStack. + */ + public ItemMeta meta(){ + return itemM; + } + + /** + * Returns the {@link ItemStack} of the {@link ItemBuilder} instance. + * + * @return the ItemStack of the ItemBuilder instance. + */ + public ItemStack make(){ + item.getItemMeta().addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_DESTROYS, ItemFlag.HIDE_UNBREAKABLE, ItemFlag.HIDE_ENCHANTS); + return item; + } + +} diff --git a/src/main/java/eu/univento/core/api/languages/Language.java b/src/main/java/eu/univento/core/api/languages/Language.java index ba75c0c..089ec03 100644 --- a/src/main/java/eu/univento/core/api/languages/Language.java +++ b/src/main/java/eu/univento/core/api/languages/Language.java @@ -8,11 +8,10 @@ import java.util.ResourceBundle; public class Language { - private Map languages; private ResourceBundle translation; public Language(String language) { - languages = new HashMap<>(); + Map languages = new HashMap<>(); languages.put("DE", Locale.GERMAN); languages.put("EN", Locale.ENGLISH); languages.put("IT", Locale.ITALY); diff --git a/src/main/java/eu/univento/core/api/languages/Language_DE.java b/src/main/java/eu/univento/core/api/languages/Language_DE.java index 0f332d9..5ce8a3b 100644 --- a/src/main/java/eu/univento/core/api/languages/Language_DE.java +++ b/src/main/java/eu/univento/core/api/languages/Language_DE.java @@ -1,7 +1,7 @@ package eu.univento.core.api.languages; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; /** * @author joethei @@ -141,7 +141,7 @@ class Language_DE implements Languages{ } @Override - public String Core_SETRANK_SET(CustomPlayer p, Ranks rank) { + public String Core_SETRANK_SET(CustomPlayer p, Rank rank) { return "§7Du hast dem Spieler " + p.getDisplayName() + " auf §e" + rank.toString() + " §7gesetzt"; } @Override diff --git a/src/main/java/eu/univento/core/api/languages/Language_EN.java b/src/main/java/eu/univento/core/api/languages/Language_EN.java index 27326e8..12e844f 100644 --- a/src/main/java/eu/univento/core/api/languages/Language_EN.java +++ b/src/main/java/eu/univento/core/api/languages/Language_EN.java @@ -1,7 +1,7 @@ package eu.univento.core.api.languages; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; /** * @author joethei @@ -140,7 +140,7 @@ public class Language_EN implements Languages{ } @Override - public String Core_SETRANK_SET(CustomPlayer p, Ranks rank) { + public String Core_SETRANK_SET(CustomPlayer p, Rank rank) { return "§7You gave " + p.getDisplayName() + " the rank §e" + rank.toString(); } diff --git a/src/main/java/eu/univento/core/api/languages/Language_IT.java b/src/main/java/eu/univento/core/api/languages/Language_IT.java index e8b1806..b073dc1 100644 --- a/src/main/java/eu/univento/core/api/languages/Language_IT.java +++ b/src/main/java/eu/univento/core/api/languages/Language_IT.java @@ -1,7 +1,7 @@ package eu.univento.core.api.languages; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; /** * @author joethei @@ -140,7 +140,7 @@ public class Language_IT implements Languages{ } @Override - public String Core_SETRANK_SET(CustomPlayer p, Ranks rank) { + public String Core_SETRANK_SET(CustomPlayer p, Rank rank) { return "§7Hai dato " + p.getDisplayName() + " il gruppo §e" + rank.toString(); } @Override diff --git a/src/main/java/eu/univento/core/api/languages/Languages.java b/src/main/java/eu/univento/core/api/languages/Languages.java index 3146bc5..2507f5c 100644 --- a/src/main/java/eu/univento/core/api/languages/Languages.java +++ b/src/main/java/eu/univento/core/api/languages/Languages.java @@ -1,7 +1,7 @@ package eu.univento.core.api.languages; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; /** * @author joethei @@ -36,7 +36,7 @@ public interface Languages{ String Core_SETRANK_USAGE(); String Core_SETRANK_KICK(); String Core_SETRANK_NO_RANK(); - String Core_SETRANK_SET(CustomPlayer p, Ranks rank); + String Core_SETRANK_SET(CustomPlayer p, Rank rank); String Core_TS_ALLREADY_VERIFIED(); String Core_TS_VERIFIED(); String Core_VANISH_ON(); diff --git a/src/main/java/eu/univento/core/api/languages/Messages.java b/src/main/java/eu/univento/core/api/languages/Messages.java index 78232f3..24ebf99 100644 --- a/src/main/java/eu/univento/core/api/languages/Messages.java +++ b/src/main/java/eu/univento/core/api/languages/Messages.java @@ -1,7 +1,7 @@ package eu.univento.core.api.languages; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; /** @@ -109,7 +109,7 @@ public class Messages { public String Core_SETRANK_NO_RANK() { return lang.Core_SETRANK_NO_RANK(); } - public String Core_SETRANK_SET(CustomPlayer p, Ranks rank) { + public String Core_SETRANK_SET(CustomPlayer p, Rank rank) { return lang.Core_SETRANK_SET(p, rank); } public String Core_TS_ALLREADY_VERIFIED() { diff --git a/src/main/java/eu/univento/core/api/map/Cuboid.java b/src/main/java/eu/univento/core/api/map/Cuboid.java index 5cb454f..908ab67 100644 --- a/src/main/java/eu/univento/core/api/map/Cuboid.java +++ b/src/main/java/eu/univento/core/api/map/Cuboid.java @@ -16,8 +16,8 @@ import java.util.stream.Collectors; public class Cuboid implements Cloneable, ConfigurationSerializable, Iterable { - protected String worldName; - protected final Vector minimumPoint, maximumPoint; + private String worldName; + private final Vector minimumPoint, maximumPoint; public Cuboid(Cuboid cuboid) { this(cuboid.worldName, cuboid.minimumPoint.getX(), cuboid.minimumPoint.getY(), cuboid.minimumPoint.getZ(), cuboid.maximumPoint.getX(), cuboid.maximumPoint.getY(), cuboid.maximumPoint.getZ()); diff --git a/src/main/java/eu/univento/core/api/map/MapVoting.java b/src/main/java/eu/univento/core/api/map/MapVoting.java index a9aa357..c31dbc0 100644 --- a/src/main/java/eu/univento/core/api/map/MapVoting.java +++ b/src/main/java/eu/univento/core/api/map/MapVoting.java @@ -1,7 +1,7 @@ package eu.univento.core.api.map; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -109,7 +109,7 @@ public class MapVoting implements Listener{ } public Inventory getInventory(CustomPlayer p) { - if(p.isAllowed(Ranks.Admin)) { + if(p.isAllowed(Rank.Admin)) { Inventory inv = Bukkit.createInventory(p, 45, invTitle); for(Map map : allMaps) { @@ -164,7 +164,7 @@ public class MapVoting implements Listener{ if(e.getWhoClicked() instanceof Player) { CustomPlayer p = CustomPlayer.getPlayer(e.getWhoClicked().getName()); if(e.getInventory().getName().equals(invTitle)) { - if(p.isAllowed(Ranks.Admin)) { + if(p.isAllowed(Rank.Admin)) { allMaps.stream().filter(map -> e.getCurrentItem().getType() == map.getItem()).forEach(map -> { forcedMap = map; }); diff --git a/src/main/java/eu/univento/core/api/pet/NMSHandler.java b/src/main/java/eu/univento/core/api/pet/NMSHandler.java new file mode 100644 index 0000000..0b2c025 --- /dev/null +++ b/src/main/java/eu/univento/core/api/pet/NMSHandler.java @@ -0,0 +1,43 @@ +package eu.univento.core.api.pet; + +import net.minecraft.server.v1_10_R1.Entity; +import net.minecraft.server.v1_10_R1.World; +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_10_R1.CraftWorld; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; +import org.bukkit.event.entity.CreatureSpawnEvent; + +import java.lang.reflect.InvocationTargetException; + +/** + * @author joethei + * @version 0.1 + * created on 26.06.2016 + */ +public class NMSHandler { + + public static LivingEntity spawn(EntityType type, Location loc) { + World nmsWorld = ((CraftWorld) loc.getWorld()).getHandle(); + PetType petType = PetType.valueOf(type); + if(petType == null) return null; + Entity entity; + try { + entity = (Entity) petType.getCustomClass().getConstructors()[0].newInstance(nmsWorld); + } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { + e.printStackTrace(); + return null; + } + entity.setLocation(loc.getX(), loc.getY(), loc.getZ(), loc.getPitch(), loc.getYaw()); + nmsWorld.addEntity(entity, CreatureSpawnEvent.SpawnReason.CUSTOM); + return (LivingEntity) entity.getBukkitEntity(); + } + + public static void registerEnties() { + PetType.registerEntities(); + } + + public static EntityType[] getRegisteredTypes() { + return PetType.getRegisteredTypes(); + } +} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/pet/NMSHelper.java b/src/main/java/eu/univento/core/api/pet/NMSHelper.java new file mode 100644 index 0000000..fc87ac4 --- /dev/null +++ b/src/main/java/eu/univento/core/api/pet/NMSHelper.java @@ -0,0 +1,41 @@ +package eu.univento.core.api.pet; + +import net.minecraft.server.v1_10_R1.EntityInsentient; +import net.minecraft.server.v1_10_R1.EntityTypes; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author joethei + * @version 0.1 + * created on 26.06.2016 + */ +class NMSHelper { + + static void registerEntity(String name, int id, Class nmsClass, Class customClass) { + try { + final List> dataMaps = new ArrayList<>(); + for (final Field f : EntityTypes.class.getDeclaredFields()) { + if (f.getType().getSimpleName().equals(Map.class.getSimpleName())) { + f.setAccessible(true); + dataMaps.add((Map) f.get(null)); + } + } + if (dataMaps.get(2).containsKey(id)) { + dataMaps.get(0).remove(name); + dataMaps.get(2).remove(id); + } + + final Method method = EntityTypes.class.getDeclaredMethod("a", Class.class, String.class, int.class); + method.setAccessible(true); + method.invoke(null, customClass, name, id); + + } catch (final Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/pet/PetManager.java b/src/main/java/eu/univento/core/api/pet/PetManager.java new file mode 100644 index 0000000..bcb512a --- /dev/null +++ b/src/main/java/eu/univento/core/api/pet/PetManager.java @@ -0,0 +1,13 @@ +package eu.univento.core.api.pet; + +/** + * @author joethei + * @version 0.1 + * created on 26.06.2016 + */ +public class PetManager { + + public static int getUpdateValue() { + return 1; + } +} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/pet/PetType.java b/src/main/java/eu/univento/core/api/pet/PetType.java new file mode 100644 index 0000000..bd3976e --- /dev/null +++ b/src/main/java/eu/univento/core/api/pet/PetType.java @@ -0,0 +1,87 @@ +package eu.univento.core.api.pet; + +import eu.univento.core.api.pet.custom.CustomCreeper; +import eu.univento.core.api.pet.custom.CustomPig; +import net.minecraft.server.v1_10_R1.EntityCreeper; +import net.minecraft.server.v1_10_R1.EntityInsentient; +import net.minecraft.server.v1_10_R1.EntityPig; +import org.bukkit.entity.EntityType; + +import java.util.ArrayList; +import java.util.List; + +/** + * this class overrides all most of the normal minecraft entities + * + * @author joethei + * @version 0.1 + * created on 26.06.2016 + */ +public enum PetType { + CREEPER("Creeper", 50, EntityType.CREEPER, EntityCreeper.class, CustomCreeper.class), + PIG("Pig", 90, EntityType.PIG, EntityPig.class, CustomPig.class); + + private String name; + private int id; + private EntityType type; + private Class nmsClass; + private Class customClass; + + PetType(String name, int id, EntityType type, Class nmsClass, Class customClass) { + this.name = name; + this.id = id; + this.type = type; + this.nmsClass = nmsClass; + this.customClass = customClass; + } + + public String getName() { + return name; + } + + public int getID() { + return id; + } + + public EntityType getType() { + return type; + } + + public Class getNmsClass() { + return nmsClass; + } + + public Class getCustomClass() { + return customClass; + } + + private static EntityType[] registeredTypes; + + static void registerEntities() { + for (PetType pet : values()) { + NMSHelper.registerEntity(pet.getName(), pet.getID(), pet.getNmsClass(), pet.getCustomClass()); + } + } + + static EntityType[] getRegisteredTypes() { + if (registeredTypes == null) { + List list = new ArrayList<>(); + for (final PetType pet : values()) { + list.add(pet.getType()); + } + + registeredTypes = list.toArray(new EntityType[list.size()]); + } + + return registeredTypes; + } + + static PetType valueOf(EntityType type) { + for (final PetType pet : values()) { + if (pet.getType().equals(type)) { + return pet; + } + } + return null; + } +} diff --git a/src/main/java/eu/univento/core/api/pet/custom/CustomCreeper.java b/src/main/java/eu/univento/core/api/pet/custom/CustomCreeper.java new file mode 100644 index 0000000..d0f95c0 --- /dev/null +++ b/src/main/java/eu/univento/core/api/pet/custom/CustomCreeper.java @@ -0,0 +1,68 @@ +package eu.univento.core.api.pet.custom; + +import eu.univento.core.api.pet.PetManager; +import net.minecraft.server.v1_10_R1.*; + +/** + * @author joethei + * @version 0.1 + * created on 26.06.2016 + */ +public class CustomCreeper extends EntityCreeper{ + + private double rideSpeed; + private double sideways; + private double backwards; + private double stepHeight; + private int updateValue = 0; + + public CustomCreeper(World world) { + super(world); + update(); + } + + private void update() { + rideSpeed = 0.2; + sideways = 0.5; + backwards = 0.25; + stepHeight = 1.0; + } + + @Override + public void g(float f, float f1) { + EntityLiving entity = (EntityLiving) bw(); + if(entity == null) { + for(final Entity e : passengers) { + if(e instanceof EntityHuman) { + entity = (EntityLiving) e; + break; + } + } + if(entity == null) { + super.g(f, f1); + return; + } + } + if(PetManager.getUpdateValue() > updateValue) { + updateValue = PetManager.getUpdateValue(); + update(); + } + + this.lastPitch = this.yaw = entity.yaw; + this.pitch = entity.pitch = 0.5F; + this.setYawPitch(this.yaw, this.pitch); + this.aQ = this.aO = this.yaw; + + f = (float) (entity.bf * sideways); + + f1 = entity.bg; + if(f1 <= 0.0F) { + f1 *= backwards; + } + + this.l((float) rideSpeed); + super.g(f, f1); + + P = (float) stepHeight; + } +} diff --git a/src/main/java/eu/univento/core/api/pet/custom/CustomPig.java b/src/main/java/eu/univento/core/api/pet/custom/CustomPig.java new file mode 100644 index 0000000..1531db0 --- /dev/null +++ b/src/main/java/eu/univento/core/api/pet/custom/CustomPig.java @@ -0,0 +1,67 @@ +package eu.univento.core.api.pet.custom; + +import eu.univento.core.api.pet.PetManager; +import net.minecraft.server.v1_10_R1.*; + +/** + * @author joethei + * @version 0.1 + * created on 26.06.2016 + */ +public class CustomPig extends EntityPig{ + private double rideSpeed; + private double sideways; + private double backwards; + private double stepHeight; + private int updateValue = 0; + + public CustomPig(World world) { + super(world); + update(); + } + + private void update() { + rideSpeed = 0.5; + sideways = 0.5; + backwards = 0.25; + stepHeight = 1.0; + } + + @Override + public void g(float f, float f1) { + EntityLiving entity = (EntityLiving) bw(); + if(entity == null) { + for(final Entity e : passengers) { + if(e instanceof EntityHuman) { + entity = (EntityLiving) e; + break; + } + } + if(entity == null) { + super.g(f, f1); + return; + } + } + if(PetManager.getUpdateValue() > updateValue) { + updateValue = PetManager.getUpdateValue(); + update(); + } + + this.lastPitch = this.yaw = entity.yaw; + this.pitch = entity.pitch = 0.5F; + this.setYawPitch(this.yaw, this.pitch); + this.aQ = this.aO = this.yaw; + + f = (float) (entity.bf * sideways); + + f1 = entity.bg; + if(f1 <= 0.0F) { + f1 *= backwards; + } + + this.l((float) rideSpeed); + super.g(f, f1); + + P = (float) stepHeight; + } +} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/player/BanSystem.java b/src/main/java/eu/univento/core/api/player/BanSystem.java deleted file mode 100644 index 5b45284..0000000 --- a/src/main/java/eu/univento/core/api/player/BanSystem.java +++ /dev/null @@ -1,144 +0,0 @@ -package eu.univento.core.api.player; - -import eu.univento.core.Core; -import eu.univento.core.api.database.MySQL; -import eu.univento.core.api.utils.UUIDFetcher; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.UUID; - -/** - * bans and unbans players - * @author joethei - * @version 1.2 - */ -public class BanSystem{ - - /** - * sets player banned - * @param p player - * @param reason reason - * @param who who banned - * @param time duration - * @throws SQLException SQL server not available or throwing error - * @throws ClassNotFoundException class couldn't be found - */ -static void setBanned(CustomPlayer p, String reason, CustomPlayer who, int time)throws SQLException, ClassNotFoundException { - int id = 0; - MySQL sql = Core.returnSQL(); - sql.openConnection(); - - Date date = new Date(); - date.setTime(date.getTime() + (time * 24)); - Timestamp timestamp = new Timestamp(date.getTime()); - - PreparedStatement st = sql.getConnection().prepareStatement("INSERT INTO bans (BID, Reason, until, BannerID) VALUES ('" + id + "', '" + reason + "', '" + 0 + "', '" + timestamp + "');"); - st.execute(); - p.kickPlayer("§cYou have been banned. §6Reason: " + reason + "\nUntil: " + timestamp); - who.sendMessage("§cDu hast den Spieler " + p.getColor() + p.getName() + "§c für " + time + " Tage gebannt wegen " + reason); - sql.closeConnection(); - } - -/** - * unbans a player - * @param p player - * @throws SQLException SQL server not available or throwing error - * @throws ClassNotFoundException class couldn't be found - */ -static void removeAllBans(CustomPlayer p) throws SQLException, ClassNotFoundException{ - int id = 0; - MySQL sql = Core.returnSQL(); - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("DELETE FROM bans WHERE ID ='" + id + "';"); - st.execute(); - sql.closeConnection(); - } - -/** - * checks if player is banned - * @param p player - * @return true /false - * @throws SQLException SQL server not available or throwing error - * @throws ClassNotFoundException class couldn't be found - */ -static boolean isBanned(CustomPlayer p) throws SQLException, ClassNotFoundException { - int id = 0; - MySQL sql = Core.returnSQL(); - PreparedStatement st = sql.getConnection().prepareStatement("SELECT * FROM bans WHERE BID='" + id + "';"); - ResultSet rs = st.executeQuery(); - if(rs.next()) { - Date date = new Date(); - Timestamp time = new Timestamp(date.getTime()); - sql.closeConnection(); - return time.before(getBanTime(p)); - }else { - sql.closeConnection(); - return false; - } - - } - - static Timestamp getBanTime(CustomPlayer p) throws SQLException { - int id = 0; - MySQL sql = Core.returnSQL(); - PreparedStatement st = sql.getConnection().prepareStatement("SELECT * FROM bans WHERE ID='" + id + "';"); - ResultSet rs = st.executeQuery(); - if(rs.next()) { - Timestamp time = rs.getTimestamp("until"); - sql.closeConnection(); - return time; - } - sql.closeConnection(); - return null; - } - -/** - * return reason for ban - * @param p player - * @return String - * @throws SQLException SQL server not available or throwing error - * @throws ClassNotFoundException class couldn't be found - */ -static String getBanReason(CustomPlayer p)throws SQLException, ClassNotFoundException { - int id = 0; - MySQL sql = Core.returnSQL(); - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("SELECT * FROM bans WHERE ID='" + id + "';"); - ResultSet rs = st.executeQuery(); - if(rs.next()) { - String reason = rs.getString("Reason"); - sql.closeConnection(); - return reason; - }else { - sql.closeConnection(); - return null; - } - } - -/** - * gets the name of the player who banned the player - * @param p player - * @return String - * @throws SQLException SQL server not available or throwing error - * @throws ClassNotFoundException class couldn't be found - */ -static String getWhoBanned(CustomPlayer p)throws SQLException, ClassNotFoundException { - int id = 0; - MySQL sql = Core.returnSQL(); - sql.openConnection(); - ResultSet rs = Core.returnSQL().getConnection().createStatement().executeQuery("SELECT * FROM bans WHERE ID='" + id + "';"); - if (!rs.next()) { - sql.closeConnection(); - return null; - } - String whouuid = rs.getString("who"); - sql.closeConnection(); - return UUIDFetcher.getName(UUID.fromString(whouuid)); - } -} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/player/Coins.java b/src/main/java/eu/univento/core/api/player/Coins.java deleted file mode 100644 index 8368808..0000000 --- a/src/main/java/eu/univento/core/api/player/Coins.java +++ /dev/null @@ -1,60 +0,0 @@ -package eu.univento.core.api.player; - -import eu.univento.core.Core; -import eu.univento.core.api.database.MySQL; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; - -/** - * coins management - * @author joethei - * @version 1.0 - */ -public class Coins{ - - /** - * gets coins from player - * @param p CustomPlayer - * @return coins as integer - */ - static int getCoins(CustomPlayer p) { - int id = 0; - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("SELECT Coins FROM users WHERE ID='" + id + "';"); - ResultSet rs = st.executeQuery(); - if(rs.next()) { - int coins = rs.getInt("Coins"); - sql.closeConnection(); - return coins; - } - return 0; - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - return 0; - } - } - - /** - * sets coins of player - * @param p CustomPlayer - * @param coins coins to set - */ - static void setCoins(CustomPlayer p, int coins) { - int id = 0; - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("UPDATE users SET Coins='" + coins + "' WHERE ID='" + id + "';"); - st.execute(); - sql.closeConnection(); - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - } - - } - -} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/player/CustomPlayer.java b/src/main/java/eu/univento/core/api/player/CustomPlayer.java index 1813834..a85bc20 100644 --- a/src/main/java/eu/univento/core/api/player/CustomPlayer.java +++ b/src/main/java/eu/univento/core/api/player/CustomPlayer.java @@ -14,7 +14,6 @@ import eu.univento.core.api.database.MongoDB; import eu.univento.core.api.effects.Effects; import eu.univento.core.api.languages.Language; import eu.univento.core.api.languages.Messages; -import eu.univento.core.api.server.Game; import eu.univento.core.api.server.ServerSettings; import eu.univento.core.api.server.Servers; import eu.univento.core.api.utils.GameProfileBuilder; @@ -136,7 +135,7 @@ public class CustomPlayer extends CraftPlayer { return true; } - public void setRank(Ranks rank) { + public void setRank(Rank rank) { setInDatabase("rank", rank.toString()); } @@ -182,8 +181,8 @@ public class CustomPlayer extends CraftPlayer { setSettings(list); } - public Ranks getRank() { - return Ranks.valueOf(getStringFromDatabase("rank")); + public Rank getRank() { + return Rank.valueOf(getStringFromDatabase("rank")); } public Date getFirstLogin() { @@ -343,8 +342,8 @@ public class CustomPlayer extends CraftPlayer { Servers.connectServer(PLAYER, server); } - public boolean isAllowed(Ranks rank) { - return getRank().value >= rank.value; + public boolean isAllowed(Rank rank) { + return getRank().getValue() >= rank.getValue(); } @@ -378,34 +377,25 @@ public class CustomPlayer extends CraftPlayer { public String getPrefix() { if (customPrefix != null) return customPrefix; - if (isNicked()) return getPrefix(Ranks.Premium); - return getPrefix(getRank()); + if (isNicked()) return Rank.Premium.getPrefix(); + return getRank().getPrefix(); } public String getSuffix() { if (customSuffix != null) return customSuffix; - if (isNicked()) return getSuffix(Ranks.Premium); - return getSuffix(getRank()); - } - - public String getChatColor() { - if(isNicked()) return getChatColor(Ranks.Premium); - return getChatColor(getRank()); + if (isNicked()) return Rank.Premium.getSuffix(); + return getRank().getSuffix(); } public String getColor() { if (customColor != null) return customColor; - if (isNicked()) return getColor(Ranks.Premium); - return getColor(getRank()); + if (isNicked()) return Rank.Premium.getColor(); + return getRank().getColor(); } public Team getTeam() { - if (isNicked()) return getTeam(Ranks.Premium); - return getTeam(getRank()); - } - - public Color getArmorColor() { - return getArmorColor(getRank()); + if (isNicked()) getScoreboard().getTeam(Rank.Premium.getTeam()); + return getScoreboard().getTeam(getRank().getTeam()); } public void setCustomPrefix(String prefix) { @@ -494,12 +484,7 @@ public class CustomPlayer extends CraftPlayer { } public String getMessage(String message) { - Language lang = new Language(getLanguage()); - return lang.getWord(message); - } - - public Statistics getStatistics(Game game) { - return new Statistics(this, game); + return new Language(getLanguage()).getWord(message); } public boolean isNicked() { @@ -643,233 +628,22 @@ public class CustomPlayer extends CraftPlayer { return (Map) getObjectFromDatbase(name); } - private String getPrefix(Ranks r) { - switch (r) { - case Admin: - return "§8[§4Admin§8]§4 "; - case SrDeveloper: - return "§8[§3SrDev§8]§3 "; - case Developer: - return "§8[§3Dev§8]§3 "; - case SrModerator: - return "§8[§cSrMod§8]§c "; - case HeadBuilder: - return "§8[§aHead-Builder§8]§a "; - case Moderator: - return "§8[§cMod§8]§c "; - case Builder: - return "§8[§2Builder§8]§2 "; - case Supporter: - return "§8[§9Supporter§8]§9 "; - case Youtuber: - return "§5"; - case Premium: - return "§6"; - case Player: - return "§e"; - default: - return "§cFehler "; - } - } - - private String getSuffix(Ranks r) { - switch (r) { - case Admin: - return "§8 »§7 "; - case SrDeveloper: - return "§8 »§7 "; - case Developer: - return "§8 »§7 "; - case SrModerator: - return "§8 »§7 "; - case HeadBuilder: - return "§8 »§7 "; - case Moderator: - return "§8 »§7 "; - case Builder: - return "§8 »§7 "; - case Supporter: - return "§8 »§7 "; - case Youtuber: - return "§8 »§7 "; - case Premium: - return "§8 »§7 "; - case Player: - return "§8 »§7 "; - default: - return "§cFehler"; - } - } - - private String getChatColor(Ranks r) { - switch (r) { - case Admin: - return "§4"; - case SrDeveloper: - return "§3"; - case Developer: - return "§3"; - case SrModerator: - return "§c"; - case HeadBuilder: - return "§a"; - case Moderator: - return "§c"; - case Builder: - return "§2"; - case Supporter: - return "§9"; - case Youtuber: - return "§5"; - case Premium: - return "§6"; - case Player: - return "§e"; - default: - return "§cFehler"; - } - } - - private String getColor(Ranks r) { - switch (r) { - case Admin: - return "§4[Admin] "; - case SrDeveloper: - return "§3[SrDev] "; - case Developer: - return "§3[Dev]"; - case SrModerator: - return "§c[SrMod]"; - case HeadBuilder: - return "§a[HeadBuilder] "; - case Moderator: - return "§c[Mod] "; - case Builder: - return "§2[Builder] "; - case Supporter: - return "§9[Supp] "; - case Youtuber: - return "§5"; - case Premium: - return "§6"; - case Player: - return "§e"; - default: - return "§cFehler"; - } - } - - private Color getArmorColor(Ranks r) { - switch (r) { - case Admin: - return Color.MAROON; - case SrDeveloper: - return Color.TEAL; - case Developer: - return Color.TEAL; - case SrModerator: - return Color.RED; - case HeadBuilder: - return Color.LIME; - case Moderator: - return Color.RED; - case Builder: - return Color.GREEN; - case Supporter: - return Color.PURPLE; - default: - return null; - } - } - - public Team getTeam(Ranks r) { - Scoreboard board = getScoreboard(); - switch (r) { - case Admin: - return board.getTeam("a"); - case SrDeveloper: - return board.getTeam("b"); - case Developer: - return board.getTeam("c"); - case SrModerator: - return board.getTeam("d"); - case HeadBuilder: - return board.getTeam("e"); - case Moderator: - return board.getTeam("f"); - case Builder: - return board.getTeam("g"); - case Supporter: - return board.getTeam("h"); - case Youtuber: - return board.getTeam("i"); - case Premium: - return board.getTeam("j"); - case Player: - return board.getTeam("k"); - default: - return board.getTeam("k"); - } - } - public void initScoreboard() { Scoreboard board = getScoreboard(); board.getTeams().forEach(Team::unregister); - Team Admin = board.registerNewTeam("a"); - Team SrDeveloper = board.registerNewTeam("b"); - Team Developer = board.registerNewTeam("c"); - Team SrModerator = board.registerNewTeam("d"); - Team HeadBuilder = board.registerNewTeam("e"); - Team Moderator = board.registerNewTeam("f"); - Team Builder = board.registerNewTeam("g"); - Team Supporter = board.registerNewTeam("h"); - Team Youtuber = board.registerNewTeam("i"); - Team Premium = board.registerNewTeam("j"); - Team Player = board.registerNewTeam("k"); - - Admin.setPrefix(getColor(Ranks.Admin)); - SrDeveloper.setPrefix(getColor(Ranks.SrDeveloper)); - Developer.setPrefix(getColor(Ranks.Developer)); - SrModerator.setPrefix(getColor(Ranks.SrModerator)); - HeadBuilder.setPrefix(getColor(Ranks.HeadBuilder)); - Moderator.setPrefix(getColor(Ranks.Moderator)); - Builder.setPrefix(getColor(Ranks.Builder)); - Supporter.setPrefix(getColor(Ranks.Supporter)); - Youtuber.setPrefix(getColor(Ranks.Youtuber)); - Premium.setPrefix(getColor(Ranks.Premium)); - Player.setPrefix(getColor(Ranks.Player)); - - Admin.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.ALWAYS); - SrDeveloper.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.ALWAYS); - Developer.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.ALWAYS); - SrModerator.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.ALWAYS); - HeadBuilder.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.ALWAYS); - Moderator.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.ALWAYS); - Builder.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.ALWAYS); - Supporter.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.ALWAYS); - Youtuber.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.ALWAYS); - Premium.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.ALWAYS); - Player.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.ALWAYS); - - Admin.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.NEVER); - SrDeveloper.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.NEVER); - Developer.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.NEVER); - SrModerator.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.NEVER); - HeadBuilder.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.NEVER); - Moderator.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.NEVER); - Builder.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.NEVER); - Supporter.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.NEVER); - Youtuber.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.NEVER); - Premium.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.NEVER); - Player.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.NEVER); + for(Rank rank : Rank.values()) { + Team team = board.registerNewTeam(rank.getTeam()); + team.setPrefix(rank.getTab()); + team.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.ALWAYS); + } } public void setLabyModFeatures(HashMap list) { HashMap temp = new HashMap<>(); - for (LabyMod feature : list.keySet()) { + for (LabyMod feature : list.keySet()) temp.put(feature.name(), list.get(feature)); - } + ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); try { ObjectOutputStream out = new ObjectOutputStream(byteOut); @@ -878,7 +652,6 @@ public class CustomPlayer extends CraftPlayer { PacketDataSerializer packetDataSerializer = new PacketDataSerializer(byteBuf); PacketPlayOutCustomPayload packet = new PacketPlayOutCustomPayload("LABYMOD", packetDataSerializer); getHandle().playerConnection.sendPacket(packet); - } catch (IOException e) { e.printStackTrace(); } @@ -914,4 +687,8 @@ public class CustomPlayer extends CraftPlayer { } } + public Player.Spigot spigot() { + return PLAYER.spigot(); + } + } \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/player/Experience.java b/src/main/java/eu/univento/core/api/player/Experience.java deleted file mode 100644 index dc960c9..0000000 --- a/src/main/java/eu/univento/core/api/player/Experience.java +++ /dev/null @@ -1,60 +0,0 @@ -package eu.univento.core.api.player; - -import eu.univento.core.Core; -import eu.univento.core.api.database.MySQL; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; - -/** - * experience management - * @author joethei - * @version 1.0 - */ -public class Experience{ - - /** - * gets experience from player - * @param p CustomPlayer - * @return experience as integer - */ - static int getExperience(CustomPlayer p) { - int id = 0; - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("SELECT Experience FROM users WHERE ID='" + id + "';"); - ResultSet rs = st.executeQuery(); - if(rs.next()) { - int coins = rs.getInt("Experience"); - sql.closeConnection(); - return coins; - } - return 0; - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - return 0; - } - } - - /** - * sets experience of player - * @param p CustomPlayer - * @param experience experience to set - */ - static void setExperience(CustomPlayer p, int experience) { - int id = 0; - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("UPDATE users SET Experience='" + experience + "' WHERE ID='" + id + "';"); - st.execute(); - sql.closeConnection(); - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - } - - } - -} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/player/Friends.java b/src/main/java/eu/univento/core/api/player/Friends.java deleted file mode 100644 index c5c23e4..0000000 --- a/src/main/java/eu/univento/core/api/player/Friends.java +++ /dev/null @@ -1,109 +0,0 @@ -package eu.univento.core.api.player; - -import eu.univento.core.Core; -import eu.univento.core.api.database.MySQL; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -/** - * api for friends - * @author joethei - * @version 1.1 - */ -public class Friends { - - /** - * player object - */ - CustomPlayer player; - - /** - * creates the friends object - * @param player CustomPlayer - */ - public Friends(CustomPlayer player) { - this.player = player; - } - - /** - * gets database IDs of friends - * @return ArrayList - */ - public ArrayList getFriends() { - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - ArrayList list = new ArrayList(); - ResultSet rs = sql.getConnection().createStatement().executeQuery("SELECT * FROM Friends WHERE Player_ID = '" + 0 + "';"); - while(rs.next()) { - list.add(rs.getInt("Friend_ID")); - } - sql.closeConnection(); - return list; - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - return null; - } - } - - /** - * add player to friends - * @param p CustomPlayer - */ - public void addFriend(CustomPlayer p) { - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement ps = sql.getConnection().prepareStatement("INSERT INTO Friends ('Player_ID', 'Friend_ID') VALUES ('" + 0 + "', '" + 0 + "');"); - ps.execute(); - sql.closeConnection(); - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - } - } - - /** - * removes player from friends - * @param p CustomPlayer - */ - public void removeFriend(CustomPlayer p) { - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement ps = sql.getConnection().prepareStatement("DELETE FROM Friends WHERE Player_ID='" + 0 + "' AND Friend_ID='" + 0 + "');"); - ps.execute(); - sql.closeConnection(); - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - } - } - - /** - * checks if player is friend - * @param p CustomPlayer - * @return true/false - */ - public boolean isFriend(CustomPlayer p) { - return getFriends().contains(0); - } - - /** - * counts friends - * @return int - */ - public int countFriends() { - return getFriends().size(); - } - - /** - * checks if player has friends - * @return true/false - */ - public boolean hasFriends() { - return getFriends().size() >= 0; - } - -} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/player/NickName.java b/src/main/java/eu/univento/core/api/player/NickName.java index 94fa65a..67dcd53 100644 --- a/src/main/java/eu/univento/core/api/player/NickName.java +++ b/src/main/java/eu/univento/core/api/player/NickName.java @@ -1,22 +1,6 @@ package eu.univento.core.api.player; -import com.mojang.authlib.GameProfile; -import eu.univento.core.Core; -import eu.univento.core.api.database.MySQL; -import net.minecraft.server.v1_10_R1.Packet; -import net.minecraft.server.v1_10_R1.PacketPlayOutEntityDestroy; -import net.minecraft.server.v1_10_R1.PacketPlayOutNamedEntitySpawn; -import net.minecraft.server.v1_10_R1.PacketPlayOutPlayerInfo; -import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; - -import java.lang.reflect.Field; -import java.sql.ResultSet; -import java.sql.SQLException; import java.util.ArrayList; -import java.util.HashMap; import java.util.Random; /** @@ -25,72 +9,7 @@ import java.util.Random; * @version 1.1 */ public class NickName { - - private static HashMap nicks = new HashMap<>(); - - private static Field nameField = getField(GameProfile.class, "name"); - /** - * - * @param p remove nickname from player - */ - public static void remove(CustomPlayer p) { - if (nicks.containsKey(p)) - nicks.remove(p); - } - - /** - * sets nick boolean - * @param p player - * @param nick boolean - * @throws ClassNotFoundException Class couldn't be found - * @throws SQLException SQL server not available or throwing error - */ - static void setNick(CustomPlayer p, boolean nick) throws SQLException, ClassNotFoundException { - MySQL sql = Core.returnSQL(); - sql.openConnection(); - if (nick) - sql.getConnection().createStatement().executeUpdate("UPDATE PlayerSettings SET nick = '1' WHERE ID = '" + 0 + "';"); - else - sql.getConnection().createStatement().executeUpdate("UPDATE PlayerSettings SET nick = '0' WHERE ID = '" + 0 + "';"); - sql.closeConnection(); - } - - /** - * gets if player is nicked - * @param p player - * @return true / false - * @throws ClassNotFoundException Class couldn't be found - * @throws SQLException SQL server not available or throwing error - */ - static boolean isNicked(CustomPlayer p) throws SQLException, ClassNotFoundException { - MySQL sql = Core.returnSQL(); - sql.openConnection(); - ResultSet rs = sql.getConnection().createStatement().executeQuery("SELECT nick FROM PlayerSettings WHERE ID = '" + 0 + "';"); - if (rs.next()) { - boolean is = rs.getInt("nick") == 1; - sql.closeConnection(); - return is; - } - sql.closeConnection(); - return false; - } - - /** - * gets nickname of player - * @param p player - * @return String - */ - static String getNick(CustomPlayer p) { - if (nicks.containsKey(p)) { - return nicks.get(p); - }else if(p.isNicked()){ - nicks.put(p, getRandomNick()); - return nicks.get(p); - } - return null; - } - - /** + /** * gets random Nickname * @return String */ @@ -322,55 +241,4 @@ public class NickName { return names.get(i); } - static void setName(CustomPlayer p, String name) { - p.setDisplayName(name); - try { - nameField.set(p.getProfile(), name); - PacketPlayOutEntityDestroy destroy = new PacketPlayOutEntityDestroy(p.getEntityId()); - sendPacket(destroy); - removeFromTablist(p); - - new BukkitRunnable() { - - @Override - public void run() { - addToTablist(p); - PacketPlayOutNamedEntitySpawn spawn = new PacketPlayOutNamedEntitySpawn(p.getHandle()); - Bukkit.getOnlinePlayers().stream().filter(players -> !players.equals(p)).forEach(players -> { - ((CraftPlayer) players).getHandle().playerConnection.sendPacket(spawn); - }); - } - - }.runTaskLater(Core.getInstance(), 4); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - - private static void addToTablist(CraftPlayer p) { - PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, p.getHandle()); - sendPacket(packet); - } - - private static void removeFromTablist(CraftPlayer cp) { - PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER, cp.getHandle()); - sendPacket(packet); - } - - private static void sendPacket(Packet packet) { - for(Player players : Bukkit.getOnlinePlayers()) { - ((CraftPlayer)players).getHandle().playerConnection.sendPacket(packet); - } - } - - private static Field getField(Class clazz, String name) { - try{ - Field field = clazz.getDeclaredField(name); - field.setAccessible(true); - return field; - }catch (NoSuchFieldException | SecurityException e) { - e.printStackTrace(); - return null; - } - } } \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/player/PlayerSettings.java b/src/main/java/eu/univento/core/api/player/PlayerSettings.java deleted file mode 100644 index b9592d4..0000000 --- a/src/main/java/eu/univento/core/api/player/PlayerSettings.java +++ /dev/null @@ -1,144 +0,0 @@ -package eu.univento.core.api.player; - -import eu.univento.core.Core; -import eu.univento.core.api.database.MySQL; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -/** - * server-wide settings - * @author joethei - * @version 0.1 - */ - -public class PlayerSettings { - - /** - * returns if setting is set - * @param what what setting is set - * @param p CustomPlayer - * @return boolean - */ - static boolean isSet(String what, CustomPlayer p) { - int id = 0; - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("SELECT * FROM PlayerSettings WHERE ID = '" + id + "';"); - ResultSet rs = st.executeQuery(); - if (rs.next()) { - boolean is = rs.getInt(what) == 1; - sql.closeConnection(); - return is; - } - sql.closeConnection(); - return false; - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - return false; - } - } - - /** - * sets setting - * @param p CustomPlayer - * @param bool boolean to set to - * @param what what to set - * @throws ClassNotFoundException class could not be found - * @throws SQLException SQL ServerPinger not available or throwing error - */ - static void set(boolean bool, String what, CustomPlayer p) throws SQLException, ClassNotFoundException { - int id = 0; - MySQL sql = Core.returnSQL(); - sql.openConnection(); - if (bool) { - PreparedStatement st = sql.getConnection().prepareStatement("UPDATE PlayerSettings SET " + what + " = '1' WHERE ID = '" + id + "';"); - st.execute(); - }else { - PreparedStatement st = sql.getConnection().prepareStatement("UPDATE PlayerSettings SET " + what + " = '0' WHERE ID = '" + id + "';"); - st.execute(); - } - sql.closeConnection(); - } - - /** - * gets setting from player - * @param what what to get - * @param p CustomPlayer - * @return String - */ - static String get(String what, CustomPlayer p) { - int id = 0; - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("SELECT " + what + " FROM PlayerSettings WHERE ID='" + id + "';"); - ResultSet rs = st.executeQuery(); - if(rs.next()) { - String rt = rs.getString(what); - sql.closeConnection(); - return rt; - } - return null; - } catch (SQLException | ClassNotFoundException e) { - e.printStackTrace(); - return null; - } - } - - /** - * sets settings for player - * @param set value to set - * @param what what to set - * @param p CustomPlayer - */ - static void set(String set, String what, CustomPlayer p) { - int id = 0; - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("UPDATE PlayerSettings SET " + what + " = '" + set + "' WHERE ID = '" + id + "';"); - st.execute(); - } catch (SQLException | ClassNotFoundException e) { - e.printStackTrace(); - } - } - - /** - * changes settings - * @param what what to set - * @param p CustomPlayer - */ - static void change(String what, CustomPlayer p) { - if(isSet(what, p)) { - try { - set(false, what, p); - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - } - }else { - try { - set(true, what, p); - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - } - } - } - - public static ArrayList getAllPlayersWithEffectsEnabled() { - ArrayList list = new ArrayList<>(); - for(Player players : Bukkit.getOnlinePlayers()) { - CustomPlayer p = CustomPlayer.getPlayer(players); - if(isSet("effects", p)) { - list.add(p); - } - } - return list; - } - -} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/player/Rank.java b/src/main/java/eu/univento/core/api/player/Rank.java new file mode 100644 index 0000000..399a733 --- /dev/null +++ b/src/main/java/eu/univento/core/api/player/Rank.java @@ -0,0 +1,60 @@ +package eu.univento.core.api.player; + +public enum Rank { + Admin(16, "§4", "§8[§4Admin§8] ", "§8» ", "a", "§4Admin | "), + SrDeveloper(15, "§3", "§8[§3SrDev§8] ", "§8» ", "c", "§3SrDev | "), + SrBuilder(14, "§2", "§8[§2SrBuilder§8] ", "§8» ", "f", "§2SrBuilder | "), + SrSupporter(13, "§9", "§8[§9SrSupr§8] ", "§8» ", "i", "§9SrSup | "), + Developer(12, "§3", "§8[§3Dev§8] ", "§8» ", "d", "§3Dev | "), + Builder(11, "§2", "§8[§3Builder§8] ", "§8» ", "g", "§2Builder | "), + Supporter(10, "§9", "§8[§9Sup§8] ", "§8» ", "j", "§9Sup | "), + JrDeveloper(9, "§3", "§8[§3JrDev§8] ", "§8» ", "e", "§3JrDev | "), + JrBuilder(8, "§2", "§8[§2JrBuilder§8] ", "§8» ", "h", "§2JrBuilder | "), + JrSupporter(7, "§9", "§8[§9JrSup§8] ", "§8» ", "k", "§9JrSup | "), + Manager(6, "§c", "§8[§cManager§8] ", "§8» ", "b", "§cManager | "), + Grafik(5, "§e", "§8[§eGrafiker§8] ", "§8» ", "l", "§eGrafik | "), + Sound(4, "§e", "§8[§eSound§8] ", "§8» ", "m", "§eSound | "), + Partner(3, "§5", "§5", "§8» ", "n", "§5"), + Premium(2, "§6", "§6", "§8» ", "o", "§6"), + Player(1, "§7", "§7", "§8» ", "p", "§7"); + + private final int value; + private final String color; + private final String prefix; + private final String suffix; + private final String team; + private final String tab; + + Rank(int value, String color, String prefix, String suffix, String team, String tab) { + this.value = value; + this.color = color; + this.prefix = prefix; + this.suffix = suffix; + this.team = team; + this.tab = tab; + } + + public int getValue() { + return value; + } + + public String getColor() { + return color; + } + + public String getPrefix() { + return prefix; + } + + public String getSuffix() { + return suffix; + } + + public String getTeam() { + return team; + } + + public String getTab() { + return tab; + } +} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/player/Ranks.java b/src/main/java/eu/univento/core/api/player/Ranks.java deleted file mode 100644 index 009deaa..0000000 --- a/src/main/java/eu/univento/core/api/player/Ranks.java +++ /dev/null @@ -1,21 +0,0 @@ -package eu.univento.core.api.player; - -public enum Ranks { - Admin(11), - SrDeveloper(10), - HeadBuilder(9), - SrModerator(8), - Developer(7), - Builder(6), - Moderator(5), - Supporter(4), - Youtuber(3), - Premium(2), - Player(1); - - final int value; - - Ranks(int n) { - this.value = n; - } -} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/player/Statistics.java b/src/main/java/eu/univento/core/api/player/Statistics.java deleted file mode 100644 index 7de2d95..0000000 --- a/src/main/java/eu/univento/core/api/player/Statistics.java +++ /dev/null @@ -1,217 +0,0 @@ -package eu.univento.core.api.player; - -import eu.univento.core.Core; -import eu.univento.core.api.database.MySQL; -import eu.univento.core.api.server.Game; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; - -/** - * statistics management - * @author joethei - * @version 1.0 - */ -public class Statistics { - - CustomPlayer player; - Game game; - - /** - * @param player CustomPlayer - * @param game Game - */ - public Statistics(CustomPlayer player, Game game) { - this.player = player; - this.game = game; - } - - - /** - * gets deaths of player for game - * @return Integer - */ - public int getDeaths() { - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("SELECT Deaths FROM " + game.toString() + "Stats WHERE ID='" + 0 + "');"); - ResultSet rs = st.executeQuery(); - int deaths = rs.getInt("Deaths"); - sql.closeConnection(); - return deaths; - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - return 0; - } - } - - /** - * sets deaths of player for game - * @param deaths Integer - */ - public void setDeaths(int deaths) { - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("UPDATE " + game.toString() + "Stats WHERE ID='" + 0 + "' SET Deaths='" + deaths +"');"); - st.execute(); - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - } - } - - public void addDeath() { - setDeaths(getDeaths() + 1); - } - - /** - * gets kills of player for game - * @return Integer - */ - public int getKills() { - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("SELECT Kills FROM " + game.toString() + "Stats WHERE ID='" + 0 + "');"); - ResultSet rs = st.executeQuery(); - int kills = rs.getInt("Kills"); - sql.closeConnection(); - return kills; - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - return 0; - } - } - - /** - * sets kills of player for game - * @param kills Integer - */ - public void setKills(int kills) { - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("UPDATE " + game.toString() + "Stats WHERE ID='" + 0 + "' SET Kills='" + kills +"');"); - st.execute(); - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - } - } - - public void addKill() { - setKills(getKills() + 1); - } - - /** - * gets played rounds of player for game - * @return Integer - */ - public int getPlayedRounds() { - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("SELECT PlayedRounds FROM " + game.toString() + "Stats WHERE ID='" + 0 + "');"); - ResultSet rs = st.executeQuery(); - int rounds = rs.getInt("PlayedRounds"); - sql.closeConnection(); - return rounds; - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - return 0; - } - } - - /** - * sets played rounds of player for game - * @param rounds Integer - */ - public void setPlayedRounds(int rounds) { - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("UPDATE " + game.toString() + "Stats WHERE ID='" + 0 + "' SET PlayedRounds='" + rounds +"');"); - st.execute(); - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - } - } - - public void addPlayedRound() { - setPlayedRounds(getPlayedRounds() + 1); - } - - /** - * gets playtime of player for game - * @return Integer - */ - public int getPlaytime() { - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("SELECT Playtime FROM " + game.toString() + "Stats WHERE ID='" + 0 + "');"); - ResultSet rs = st.executeQuery(); - int time = rs.getInt("Playtime"); - sql.closeConnection(); - return time; - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - return 0; - } - } - - /** - * sets playtime of player for game - * @param time Integer - */ - public void setPlaytime(int time) { - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("UPDATE " + game.toString() + "Stats WHERE ID='" + 0 + "' SET Playtime='" + time +"');"); - st.execute(); - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - } - } - - /** - * gets wins of player for game - * @return Integer - */ - public int getWins() { - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("SELECT Wins FROM " + game.toString() + "Stats WHERE ID='" + 0 + "');"); - ResultSet rs = st.executeQuery(); - int wins = rs.getInt("Wins"); - sql.closeConnection(); - return wins; - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - return 0; - } - } - - /** - * sets wins of player for game - * @param wins Integer - */ - public void setWins(int wins) { - MySQL sql = Core.returnSQL(); - try { - sql.openConnection(); - PreparedStatement st = sql.getConnection().prepareStatement("UPDATE " + game.toString() + "Stats WHERE ID='" + 0 + "' SET Wins='" + wins +"');"); - st.execute(); - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - } - } - - public void addWin() { - setWins(getWins() + 1); - } - -} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/server/ServerDatabase.java b/src/main/java/eu/univento/core/api/server/ServerDatabase.java index e4a2278..a52dcd7 100644 --- a/src/main/java/eu/univento/core/api/server/ServerDatabase.java +++ b/src/main/java/eu/univento/core/api/server/ServerDatabase.java @@ -14,7 +14,7 @@ import java.sql.SQLException; public class ServerDatabase { static String getIP(String name) { - MySQL sql = Core.returnSQL(); + MySQL sql = Core.getMySQL(); try { sql.openConnection(); PreparedStatement st = sql.getConnection().prepareStatement("SELECT ip FROM Servers WHERE name='" + name + "'"); @@ -32,7 +32,7 @@ public class ServerDatabase { } static int getPort(String name) { - MySQL sql = Core.returnSQL(); + MySQL sql = Core.getMySQL(); try { sql.openConnection(); PreparedStatement st = sql.getConnection().prepareStatement("SELECT port FROM Servers WHERE name='" + name + "'"); @@ -50,7 +50,7 @@ public class ServerDatabase { } static String getMotd(String name) { - MySQL sql = Core.returnSQL(); + MySQL sql = Core.getMySQL(); try { sql.openConnection(); PreparedStatement st = sql.getConnection().prepareStatement("SELECT motd FROM Servers WHERE name='" + name + "'"); diff --git a/src/main/java/eu/univento/core/api/utils/UUIDFetcher.java b/src/main/java/eu/univento/core/api/utils/UUIDFetcher.java index 6202ae5..82f7e7e 100644 --- a/src/main/java/eu/univento/core/api/utils/UUIDFetcher.java +++ b/src/main/java/eu/univento/core/api/utils/UUIDFetcher.java @@ -30,7 +30,8 @@ public class UUIDFetcher{ private static Gson gson = new GsonBuilder().registerTypeAdapter(UUID.class, new UUIDTypeAdapter()).create(); - private static final String UUID_URL = "https://api.mojang.com/users/profiles/minecraft/%s?at=%d"; + //private static final String UUID_URL = "https://api.mojang.com/users/profiles/minecraft/%s?at=%d"; + private static final String UUID_URL = "https://mcapi.de/api/user/%s"; private static final String NAME_URL = "https://api.mojang.com/user/profiles/%s/names"; private static Map uuidCache = new HashMap<>(); private static Map nameCache = new HashMap<>(); diff --git a/src/main/java/eu/univento/core/commands/Build.java b/src/main/java/eu/univento/core/commands/Build.java index 7243cd2..701381f 100644 --- a/src/main/java/eu/univento/core/commands/Build.java +++ b/src/main/java/eu/univento/core/commands/Build.java @@ -4,7 +4,7 @@ import eu.univento.core.Core; import eu.univento.core.api.AutoCommand; import eu.univento.core.api.languages.Messages; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; import eu.univento.core.api.server.ServerSettings; import org.bukkit.GameMode; import org.bukkit.command.CommandSender; @@ -48,7 +48,7 @@ public class Build extends AutoCommand{ if(sender instanceof Player) { CustomPlayer p = CustomPlayer.getPlayer(sender.getName()); Messages msgs = new Messages(p); - if(p.isAllowed(Ranks.Builder)) { + if(p.isAllowed(Rank.Builder)) { if(players.containsKey(p)) { p.sendMessage(msgs.PREFIX() + msgs.Core_BUILD_OFF()); diff --git a/src/main/java/eu/univento/core/commands/ChatClear.java b/src/main/java/eu/univento/core/commands/ChatClear.java index 577bcac..f44d33d 100644 --- a/src/main/java/eu/univento/core/commands/ChatClear.java +++ b/src/main/java/eu/univento/core/commands/ChatClear.java @@ -4,7 +4,7 @@ import eu.univento.core.Core; import eu.univento.core.api.AutoCommand; import eu.univento.core.api.languages.Messages; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -26,13 +26,13 @@ public class ChatClear extends AutoCommand { if(sender instanceof Player) { CustomPlayer p = CustomPlayer.getPlayer(sender.getName()); Messages msgs = new Messages(p); - if(p.isAllowed(Ranks.Supporter)) { + if(p.isAllowed(Rank.Supporter)) { for(int i = 0; i <= 100; i++) { Bukkit.broadcastMessage(" "); } for(Player players : Bukkit.getOnlinePlayers()) { CustomPlayer player = CustomPlayer.getPlayer(players); - if (player.isAllowed(Ranks.Supporter)) { + if (player.isAllowed(Rank.Supporter)) { Messages messages = new Messages(player); player.sendMessage(messages.Core_CHAT_CLEARED(p)); } diff --git a/src/main/java/eu/univento/core/commands/GameMode.java b/src/main/java/eu/univento/core/commands/GameMode.java index 8e19156..dc5e878 100644 --- a/src/main/java/eu/univento/core/commands/GameMode.java +++ b/src/main/java/eu/univento/core/commands/GameMode.java @@ -4,7 +4,7 @@ import eu.univento.core.Core; import eu.univento.core.api.AutoCommand; import eu.univento.core.api.languages.Messages; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -33,11 +33,11 @@ public class GameMode extends AutoCommand{ if(sender instanceof Player) { CustomPlayer p = CustomPlayer.getPlayer(sender.getName()); Messages msgs = new Messages(p); - if(p.isAllowed(Ranks.Builder)) { + if(p.isAllowed(Rank.Builder)) { if(args.length == 1) { String mode = args[0]; p.setGameMode(getModeFromString(mode)); - p.sendMessage(msgs.Core_GM_CHANGED()); + p.sendMessage(msgs.Core_GM_CHANGED() + " auf " + p.getGameMode().name()); }if(args.length == 0){ p.sendMessage(msgs.Core_GM_USAGE()); } diff --git a/src/main/java/eu/univento/core/commands/GlobalMute.java b/src/main/java/eu/univento/core/commands/GlobalMute.java index 2a4372e..befeaf8 100644 --- a/src/main/java/eu/univento/core/commands/GlobalMute.java +++ b/src/main/java/eu/univento/core/commands/GlobalMute.java @@ -4,7 +4,7 @@ import eu.univento.core.Core; import eu.univento.core.api.AutoCommand; import eu.univento.core.api.languages.Messages; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; import eu.univento.core.api.server.ServerSettings; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -33,7 +33,7 @@ public class GlobalMute extends AutoCommand{ if(sender instanceof Player) { CustomPlayer p = CustomPlayer.getPlayer(sender.getName()); Messages msgs = new Messages(p); - if(p.isAllowed(Ranks.Moderator)) { + if(p.isAllowed(Rank.Supporter)) { if(ServerSettings.isMute()) { ServerSettings.setMute(false); p.sendMessage(msgs.Core_GLOBALMUTE_OFF()); diff --git a/src/main/java/eu/univento/core/commands/Nick.java b/src/main/java/eu/univento/core/commands/Nick.java index 49a31e3..ecb157f 100644 --- a/src/main/java/eu/univento/core/commands/Nick.java +++ b/src/main/java/eu/univento/core/commands/Nick.java @@ -5,7 +5,7 @@ import eu.univento.core.api.AutoCommand; import eu.univento.core.api.languages.Messages; import eu.univento.core.api.player.CustomPlayer; import eu.univento.core.api.player.NickName; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -34,7 +34,7 @@ public class Nick extends AutoCommand{ if(sender instanceof Player) { CustomPlayer p = CustomPlayer.getPlayer(sender.getName()); Messages msgs = new Messages(p); - if(p.isAllowed(Ranks.Youtuber)) { + if(p.isAllowed(Rank.Partner)) { if(p.isNicked()) { p.getTeam().removeEntry(p.getDisplayName()); p.setNicked(false); diff --git a/src/main/java/eu/univento/core/commands/RunAs.java b/src/main/java/eu/univento/core/commands/RunAs.java index e6c0b42..df6f0f9 100644 --- a/src/main/java/eu/univento/core/commands/RunAs.java +++ b/src/main/java/eu/univento/core/commands/RunAs.java @@ -4,7 +4,7 @@ import eu.univento.core.Core; import eu.univento.core.api.AutoCommand; import eu.univento.core.api.languages.Messages; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -35,7 +35,7 @@ public class RunAs extends AutoCommand{ if(sender instanceof Player) { CustomPlayer p = CustomPlayer.getPlayer(sender.getName()); Messages msgs = new Messages(p); - if(p.isAllowed(Ranks.SrDeveloper)) { + if(p.isAllowed(Rank.SrDeveloper)) { if(args.length >= 2) { CustomPlayer t = CustomPlayer.getPlayer(Bukkit.getPlayer(args[0]).getName()); if(t != null) { diff --git a/src/main/java/eu/univento/core/commands/SetRank.java b/src/main/java/eu/univento/core/commands/SetRank.java index 3e1efb4..15fdfa7 100644 --- a/src/main/java/eu/univento/core/commands/SetRank.java +++ b/src/main/java/eu/univento/core/commands/SetRank.java @@ -4,7 +4,7 @@ import eu.univento.core.Core; import eu.univento.core.api.AutoCommand; import eu.univento.core.api.languages.Messages; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -33,11 +33,11 @@ public class SetRank extends AutoCommand{ public boolean execute(CommandSender sender, String label, String[] args) { if(sender instanceof Player) { CustomPlayer p = CustomPlayer.getPlayer(sender.getName()); - if(p.isAllowed(Ranks.HeadBuilder)) { + if(p.isAllowed(Rank.SrBuilder)) { if(args.length == 2) { - Ranks rank; + Rank rank; try{ - rank = Ranks.valueOf(args[1]); + rank = Rank.valueOf(args[1]); if(Bukkit.getPlayer(args[0]) != null) { CustomPlayer player = CustomPlayer.getPlayer(args[0]); if(player.isAllowed(rank)) { @@ -45,29 +45,34 @@ public class SetRank extends AutoCommand{ p.sendMessage(p.getMessages().PREFIX() + "§cÄnderungen müssen in der Datenbank stattfinden."); return true; } - if(p.isAllowed(Ranks.Admin)) { + if(p.isAllowed(Rank.Admin)) { player.setRank(rank); p.sendMessage(p.getMessages().PREFIX() + p.getMessages().Core_SETRANK_SET(player, player.getRank())); refreshTablist(); } - if(p.isAllowed(Ranks.SrDeveloper) && rank.equals(Ranks.Developer)) { - player.setRank(Ranks.Developer); - p.sendMessage(p.getMessages().PREFIX() + p.getMessages().Core_SETRANK_SET(player, Ranks.Developer)); + if(p.isAllowed(Rank.SrDeveloper) && rank.equals(Rank.Developer)) { + player.setRank(Rank.Developer); + p.sendMessage(p.getMessages().PREFIX() + p.getMessages().Core_SETRANK_SET(player, Rank.Developer)); refreshTablist(); } - if(p.isAllowed(Ranks.SrModerator) && rank.equals(Ranks.Moderator)) { - player.setRank(Ranks.Moderator); - p.sendMessage(p.getMessages().PREFIX() + p.getMessages().Core_SETRANK_SET(player, Ranks.Moderator)); + if(p.isAllowed(Rank.SrSupporter) && rank.equals(Rank.Supporter)) { + player.setRank(Rank.Supporter); + p.sendMessage(p.getMessages().PREFIX() + p.getMessages().Core_SETRANK_SET(player, Rank.Supporter)); refreshTablist(); } - if(p.isAllowed(Ranks.SrModerator) && rank.equals(Ranks.Supporter)) { - player.setRank(Ranks.Supporter); - p.sendMessage(p.getMessages().PREFIX() + p.getMessages().Core_SETRANK_SET(player, Ranks.Supporter)); + if(p.isAllowed(Rank.SrSupporter) && rank.equals(Rank.JrSupporter)) { + player.setRank(Rank.JrSupporter); + p.sendMessage(p.getMessages().PREFIX() + p.getMessages().Core_SETRANK_SET(player, Rank.JrSupporter)); refreshTablist(); } - if(p.isAllowed(Ranks.HeadBuilder) && rank.equals(Ranks.Builder)) { - player.setRank(Ranks.Builder); - p.sendMessage(p.getMessages().PREFIX() + p.getMessages().Core_SETRANK_SET(player, Ranks.Builder)); + if(p.isAllowed(Rank.SrBuilder) && rank.equals(Rank.Builder)) { + player.setRank(Rank.Builder); + p.sendMessage(p.getMessages().PREFIX() + p.getMessages().Core_SETRANK_SET(player, Rank.Builder)); + refreshTablist(); + } + if(p.isAllowed(Rank.SrBuilder) && rank.equals(Rank.JrBuilder)) { + player.setRank(Rank.JrBuilder); + p.sendMessage(p.getMessages().PREFIX() + p.getMessages().Core_SETRANK_SET(player, Rank.JrBuilder)); refreshTablist(); } }else { @@ -90,24 +95,15 @@ public class SetRank extends AutoCommand{ @Override public List tabComplete(CommandSender sender, String label, String[] args) { List list = Bukkit.getOnlinePlayers().stream().map(Player::getDisplayName).collect(Collectors.toList()); - - list.add("Admin"); - list.add("SrDeveloper"); - list.add("Developer"); - list.add("SrModerator"); - list.add("Moderator"); - list.add("HeadBuilder"); - list.add("Builder"); - list.add("Supporter"); - list.add("Youtuber"); - list.add("Premium"); - list.add("Player"); - + for(Rank rank : Rank.values()) + list.add(rank.name()); return list; } private void refreshTablist() { - Core.getOnlinePlayers().forEach(CustomPlayer::refreshTablist); + Bukkit.getScheduler().runTaskLater(Core.getInstance(), () -> { + Core.getOnlinePlayers().forEach(CustomPlayer::refreshTablist); + }, 10L); } } \ No newline at end of file diff --git a/src/main/java/eu/univento/core/commands/Stats.java b/src/main/java/eu/univento/core/commands/Stats.java deleted file mode 100644 index bd54be6..0000000 --- a/src/main/java/eu/univento/core/commands/Stats.java +++ /dev/null @@ -1,67 +0,0 @@ -package eu.univento.core.commands; - -import eu.univento.core.Core; -import eu.univento.core.api.AutoCommand; -import eu.univento.core.api.languages.Messages; -import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.server.Game; -import eu.univento.core.api.server.ServerSettings; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import java.util.List; - -/** - * @author joethei - * @version 0.1 - */ -public class Stats extends AutoCommand { - - public Stats(Core plugin, String command, String description, String... aliases) { - super(plugin, command, description, aliases); - } - - @Override - public boolean execute(CommandSender sender, String label, String[] args) { - if(sender instanceof Player) { - CustomPlayer p = CustomPlayer.getPlayer(sender.getName()); - Game game = ServerSettings.getPlayedGame(); - if(args.length == 0) { - p.sendMessage("§aDeine " + game.toString() + " Statistiken"); - p.sendMessage("Tötungen: " + p.getStatistics(game).getKills()); - p.sendMessage("Tode: " + p.getStatistics(game).getDeaths()); - p.sendMessage("Gewinne: " + p.getStatistics(game).getWins()); - p.sendMessage("Gespielte Runden: " + p.getStatistics(game).getPlayedRounds()); - p.sendMessage("Spielzeit: " + p.getStatistics(game).getPlaytime()); - } - if(args.length == 1) { - if(ServerSettings.getGameState().equals("Lobby") || ServerSettings.getGameState().equals("Restart")) { - if(Bukkit.getPlayer(args[0]) != null) { - CustomPlayer t = CustomPlayer.getPlayer(args[0]); - p.sendMessage("§a" + game.toString() + " Statistiken von " + t.getDisplayName()); - p.sendMessage("Tötungen: " + t.getStatistics(game).getKills()); - p.sendMessage("Tode: " + t.getStatistics(game).getDeaths()); - p.sendMessage("Gewinne: " + t.getStatistics(game).getWins()); - p.sendMessage("Gespielte Runden: " + t.getStatistics(game).getPlayedRounds()); - p.sendMessage("Spielzeit: " + t.getStatistics(game).getPlaytime()); - }else{ - p.sendMessage(p.getMessages().PREFIX() + p.getMessages().NOT_ONLINE(args[0])); - } - }else{ - p.sendMessage(p.getMessages().PREFIX() + " §cDu kannst dir im Moment keine Statistiken von anderen Spielern anschauen"); - } - }else{ - - } - }else{ - sender.sendMessage(Messages.Console.NOT_A_PLAYER); - } - return true; - } - - @Override - public List tabComplete(CommandSender sender, String label, String[] args) { - return null; - } -} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/commands/SystemInfo.java b/src/main/java/eu/univento/core/commands/SystemInfo.java index 315ef7a..198114a 100644 --- a/src/main/java/eu/univento/core/commands/SystemInfo.java +++ b/src/main/java/eu/univento/core/commands/SystemInfo.java @@ -4,7 +4,7 @@ import eu.univento.core.Core; import eu.univento.core.api.AutoCommand; import eu.univento.core.api.languages.Messages; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -35,7 +35,7 @@ public class SystemInfo extends AutoCommand{ if(sender instanceof Player) { CustomPlayer p = CustomPlayer.getPlayer(sender.getName()); Messages msgs = new Messages(p); - if(p.isAllowed(Ranks.SrModerator)) { + if(p.isAllowed(Rank.Developer)) { Runtime run = Runtime.getRuntime(); p.sendMessage("§6§l===SystemInfo <" + Bukkit.getServerName() + ">==="); try { diff --git a/src/main/java/eu/univento/core/commands/Vanish.java b/src/main/java/eu/univento/core/commands/Vanish.java index 1ce004e..464df33 100644 --- a/src/main/java/eu/univento/core/commands/Vanish.java +++ b/src/main/java/eu/univento/core/commands/Vanish.java @@ -4,7 +4,7 @@ import eu.univento.core.Core; import eu.univento.core.api.AutoCommand; import eu.univento.core.api.languages.Messages; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -45,7 +45,7 @@ public class Vanish extends AutoCommand{ if(sender instanceof Player) { CustomPlayer p = CustomPlayer.getPlayer(sender.getName()); Messages msgs = new Messages(p); - if(p.isAllowed(Ranks.Moderator)) { + if(p.isAllowed(Rank.JrSupporter)) { if(players.contains(p)) { for(Player players : Bukkit.getOnlinePlayers()) { players.showPlayer(p); diff --git a/src/main/java/eu/univento/core/listeners/Chat.java b/src/main/java/eu/univento/core/listeners/Chat.java index fd4c042..02ca58a 100644 --- a/src/main/java/eu/univento/core/listeners/Chat.java +++ b/src/main/java/eu/univento/core/listeners/Chat.java @@ -2,7 +2,7 @@ package eu.univento.core.listeners; import eu.univento.core.api.languages.Messages; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; import eu.univento.core.api.server.ServerSettings; import net.md_5.bungee.api.ChatColor; import org.bukkit.event.EventHandler; @@ -24,17 +24,17 @@ public class Chat implements Listener{ CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer().getName()); Messages msgs = new Messages(p); if(ServerSettings.isMute()) { - if(!p.isAllowed(Ranks.Supporter)) { + if(!p.isAllowed(Rank.Sound)) { e.setCancelled(true); p.sendMessage(msgs.PREFIX() + msgs.Core_SERVER_MUTED()); } } String format; - if(p.isAllowed(Ranks.Youtuber)) { + if(p.isAllowed(Rank.Partner)) { if(p.isNicked() && !ServerSettings.isLobby()) { - format = p.getPrefix() + p.getDisplayName() + p.getSuffix() + ChatColor.translateAlternateColorCodes('&', e.getMessage()); + format = p.getPrefix() + p.getColor() + p.getDisplayName() + p.getSuffix() + ChatColor.translateAlternateColorCodes('&', e.getMessage()); }else { - format = p.getPrefix() + p.getDisplayName() + p.getSuffix() + ChatColor.translateAlternateColorCodes('&', e.getMessage()); + format = p.getPrefix() + p.getColor() + p.getDisplayName() + p.getSuffix() + ChatColor.translateAlternateColorCodes('&', e.getMessage()); } }else { format = p.getPrefix() + p.getDisplayName() + p.getSuffix() + e.getMessage(); diff --git a/src/main/java/eu/univento/core/listeners/Commands.java b/src/main/java/eu/univento/core/listeners/Commands.java index 14b3a44..2168dcb 100644 --- a/src/main/java/eu/univento/core/listeners/Commands.java +++ b/src/main/java/eu/univento/core/listeners/Commands.java @@ -3,7 +3,7 @@ package eu.univento.core.listeners; import eu.univento.core.Core; import eu.univento.core.api.languages.Messages; import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.Ranks; +import eu.univento.core.api.player.Rank; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -38,7 +38,7 @@ public class Commands implements Listener{ } String cmd = e.getMessage(); if(cmd.equalsIgnoreCase("/rl") || cmd.equalsIgnoreCase("/reload")) { - if(p.isAllowed(Ranks.Admin)) { + if(p.isAllowed(Rank.Admin)) { e.setCancelled(true); Bukkit.broadcastMessage(msgs.PREFIX() + "§cWarning ! Server will be restarted"); Bukkit.getScheduler().scheduleSyncDelayedTask(Core.getInstance(), () -> {