From fbcba68cb303f1eae9383ff66f544afd26344d64 Mon Sep 17 00:00:00 2001 From: pintux98 Date: Mon, 3 Jun 2019 20:50:55 +0200 Subject: [PATCH] Fixed 1.9 - 1.14 particles. Using standard spigot api. --- .../sfy/TheBridge/database/Cosmeticbase.java | 21 +++++-- .../TheBridge/packets/ParticleHandler.java | 60 +++++++++---------- 2 files changed, 42 insertions(+), 39 deletions(-) diff --git a/MultiArena-TheBridge/src/cx/sfy/TheBridge/database/Cosmeticbase.java b/MultiArena-TheBridge/src/cx/sfy/TheBridge/database/Cosmeticbase.java index 8f85f5d..bf13708 100644 --- a/MultiArena-TheBridge/src/cx/sfy/TheBridge/database/Cosmeticbase.java +++ b/MultiArena-TheBridge/src/cx/sfy/TheBridge/database/Cosmeticbase.java @@ -86,9 +86,10 @@ public class Cosmeticbase { try { StringBuilder queryBuilder = new StringBuilder(); queryBuilder.append("INSERT INTO `BG_Cosmetic` "); - queryBuilder.append("(`UUID`, `Name`, `Cage`, `Arrow_Trail`, `Feet_Trail`, `KillSound`) "); + queryBuilder.append( + "(`UUID`, `Name`, `Cage`, `Arrow_Trail`, `Feet_Trail`, `KillSound`, 'Victory', 'Ability', 'Kit') "); queryBuilder.append("VALUES "); - queryBuilder.append("(?, ?, ?, ?, ?, ?);"); + queryBuilder.append("(?, ?, ?, ?, ?, ?, ?, ?, ?);"); preparedStatement = connection.prepareStatement(queryBuilder.toString()); preparedStatement.setString(1, fId); preparedStatement.setString(2, name); @@ -96,6 +97,9 @@ public class Cosmeticbase { preparedStatement.setString(4, "default"); preparedStatement.setString(5, "default"); preparedStatement.setString(6, "default"); + preparedStatement.setString(7, "default"); + preparedStatement.setString(8, "default"); + preparedStatement.setString(9, "default"); preparedStatement.executeUpdate(); } catch (final SQLException sqlException) { sqlException.printStackTrace(); @@ -162,7 +166,8 @@ public class Cosmeticbase { ResultSet resultSet = null; try { StringBuilder queryBuilder = new StringBuilder(); - queryBuilder.append("SELECT `Cage`, `Arrow_Trail`, `Feet_Trail`, `KillSound` "); + queryBuilder.append( + "SELECT `Cage`, `Arrow_Trail`, `Feet_Trail`, `KillSound`, 'Victory', 'Ability', 'Kit' "); queryBuilder.append("FROM `BG_Cosmetic` "); queryBuilder.append("WHERE `UUID` = ? "); queryBuilder.append("LIMIT 1;"); @@ -201,14 +206,18 @@ public class Cosmeticbase { try { StringBuilder queryBuilder = new StringBuilder(); queryBuilder.append("UPDATE `BG_Cosmetic` SET "); - queryBuilder.append("`Cage` = ?, `Arrow_Trail` = ?, `Feet_Trail` = ?, `KillSound` = ? "); + queryBuilder.append( + "`Cage` = ?, `Arrow_Trail` = ?, `Feet_Trail` = ?, `KillSound` = ?, 'Victory' = ?, 'Ability' = ?, 'Kit' = ?"); queryBuilder.append("WHERE `UUID` = ?;"); preparedStatement = connection.prepareStatement(queryBuilder.toString()); preparedStatement.setString(1, stat.getCage()); preparedStatement.setString(2, stat.getArrow_trail()); preparedStatement.setString(3, stat.getFeet_trail()); preparedStatement.setString(4, "default"); - preparedStatement.setString(5, stat.getUUID()); + preparedStatement.setString(5, "default"); + preparedStatement.setString(6, "default"); + preparedStatement.setString(7, "default"); + preparedStatement.setString(8, stat.getUUID()); preparedStatement.executeUpdate(); } catch (SQLException sqlException) { sqlException.printStackTrace(); @@ -233,7 +242,7 @@ public class Cosmeticbase { Statement statement = connection.createStatement(); try { statement.executeUpdate( - "CREATE TABLE IF NOT EXISTS BG_Cosmetic (UUID VARCHAR(60), Name VARCHAR(60), Cage TEXT, Arrow_Trail TEXT, Feet_Trail TEXT, KillSound TEXT)"); + "CREATE TABLE IF NOT EXISTS BG_Cosmetic (UUID VARCHAR(60), Name VARCHAR(60), Cage TEXT, Arrow_Trail TEXT, Feet_Trail TEXT, KillSound TEXT, Victory TEXT, Ability TEXT, Kit TEXT)"); } catch (SQLException ex) { try { if (statement != null) { diff --git a/MultiArena-TheBridge/src/cx/sfy/TheBridge/packets/ParticleHandler.java b/MultiArena-TheBridge/src/cx/sfy/TheBridge/packets/ParticleHandler.java index 488b126..a7d8388 100644 --- a/MultiArena-TheBridge/src/cx/sfy/TheBridge/packets/ParticleHandler.java +++ b/MultiArena-TheBridge/src/cx/sfy/TheBridge/packets/ParticleHandler.java @@ -8,6 +8,7 @@ import java.util.HashMap; import org.bukkit.Bukkit; import org.bukkit.Location; +import org.bukkit.Particle; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; @@ -19,7 +20,6 @@ public class ParticleHandler { private static Method player_sendPacket = null; private static HashMap, Method> handles = new HashMap, Method>(); - private static boolean newParticlePacketConstructor = false; private static Class enumParticle = null; private ParticleType type; @@ -27,8 +27,6 @@ public class ParticleHandler { private int count; private double radius; - private static boolean compatible = true; - public static void load() { String vString = getVersion().replace("v", ""); double v = 0; @@ -37,25 +35,20 @@ public class ParticleHandler { v = Double.parseDouble(array[0] + "." + array[1]); } try { - Bukkit.getLogger().info("[ParticleHandler] Hooking into Netty NMS classes"); packetClass = getNmsClass("PacketPlayOutWorldParticles"); - if (v == 1.8 || v == 1.9 || v == 1.10 || v == 1.11 || v == 1.12) { - Bukkit.getLogger().info("[ParticleHandler] Version is " + v + " - using old packet constructor"); + if (v == 1.8) { + Bukkit.getLogger().info("[ParticleHandler] Hooking into Netty NMS classes"); + Bukkit.getLogger().info("[ParticleHandler] Version is " + v + " - using packet constructor"); enumParticle = (Class) getNmsClass("EnumParticle"); packetConstructor = packetClass.getDeclaredConstructor(enumParticle, boolean.class, float.class, float.class, float.class, float.class, float.class, float.class, float.class, int.class, int[].class); } else { - Bukkit.getLogger().info("[ParticleHandler] Version is " + v + " - using new packet constructor"); - newParticlePacketConstructor = true; - enumParticle = (Class) getNmsClass("EnumParticle"); - packetConstructor = packetClass.getDeclaredConstructor(enumParticle, boolean.class, float.class, - float.class, float.class, float.class, float.class, float.class, float.class, int.class); + Bukkit.getLogger().info("[ParticleHandler] Hooking into the new particle system"); } } catch (Exception ex) { ex.printStackTrace(); Bukkit.getLogger().severe("[ParticleHandler] Failed to initialize NMS components!"); - compatible = false; } } @@ -79,13 +72,25 @@ public class ParticleHandler { } public void sendToLocation(Location location) { - try { - Object packet = createPacket(location); - for (Player player : Bukkit.getOnlinePlayers()) { - sendPacket(player, packet); + String vString = getVersion().replace("v", ""); + double v = 0; + if (!vString.isEmpty()) { + String[] array = vString.split("_"); + v = Double.parseDouble(array[0] + "." + array[1]); + } + if (v == 1.8) { + try { + Object packet = createPacket(location); + for (Player player : Bukkit.getOnlinePlayers()) { + sendPacket(player, packet); + } + } catch (Exception e) { + e.printStackTrace(); } - } catch (Exception e) { - e.printStackTrace(); + } else { + location.getWorld().spawnParticle(Particle.valueOf(type.getName().toUpperCase()), (float) location.getX(), + (float) location.getY(), (float) location.getZ(), this.count, (float) this.radius, + (float) this.radius, (float) this.radius, (float) this.speed); } } @@ -95,17 +100,10 @@ public class ParticleHandler { this.count = 1; } Object packet; - if (newParticlePacketConstructor) { - Object particleType = enumParticle.getEnumConstants()[type.getId()]; - packet = packetConstructor.newInstance(particleType, true, (float) location.getX(), - (float) location.getY(), (float) location.getZ(), (float) this.radius, (float) this.radius, - (float) this.radius, (float) this.speed, this.count); - } else { - Object particleType = enumParticle.getEnumConstants()[type.getId()]; - packet = packetConstructor.newInstance(particleType, true, (float) location.getX(), - (float) location.getY(), (float) location.getZ(), (float) this.radius, (float) this.radius, - (float) this.radius, (float) this.speed, this.count, new int[0]); - } + Object particleType = enumParticle.getEnumConstants()[type.getId()]; + packet = packetConstructor.newInstance(particleType, true, (float) location.getX(), (float) location.getY(), + (float) location.getZ(), (float) this.radius, (float) this.radius, (float) this.radius, + (float) this.speed, this.count, new int[0]); return packet; } catch (IllegalAccessException ex) { ex.printStackTrace(); @@ -178,10 +176,6 @@ public class ParticleHandler { return ""; } - public static boolean isCompatible() { - return compatible; - } - public enum ParticleType { EXPLOSION_NORMAL("explode", 0, 17), EXPLOSION_LARGE("largeexplode", 1, 1),