diff --git a/lib/craftbukkit-1.8.6.jar b/lib/craftbukkit-1.8.6.jar new file mode 100644 index 000000000..88073293a Binary files /dev/null and b/lib/craftbukkit-1.8.6.jar differ diff --git a/pom.xml b/pom.xml index 5c48cb30f..8e1532c9e 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ me.blackvein.quests quests - 2.4.0 + 2.5.0 quests https://github.com/FlyingPikachu/Quests/ jar @@ -31,9 +31,17 @@ org.bukkit - craftbukkit + craftbukkit186 + 1.8.6-R0.1-SNAPSHOT + system + ${project.basedir}/lib/craftbukkit-1.8.6.jar + + + org.bukkit + craftbukkit183 1.8.3-R0.1-SNAPSHOT - provided + system + ${project.basedir}/lib/craftbukkit-1.8.3.jar org.bukkit diff --git a/src/main/java/me/blackvein/particles/Eff_1_8_R3.java b/src/main/java/me/blackvein/particles/Eff_1_8_R3.java new file mode 100644 index 000000000..e8ec279df --- /dev/null +++ b/src/main/java/me/blackvein/particles/Eff_1_8_R3.java @@ -0,0 +1,77 @@ +package me.blackvein.particles; + +import me.blackvein.quests.util.ReflectionUtil; +import net.minecraft.server.v1_8_R3.EnumParticle; +import net.minecraft.server.v1_8_R3.PacketPlayOutWorldParticles; + +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; +import org.bukkit.entity.Player; + +public enum Eff_1_8_R3 { + + EXPLOSION(EnumParticle.EXPLOSION_NORMAL), + EXPLOSION_LARGE(EnumParticle.EXPLOSION_LARGE), + EXPLOSION_HUGE(EnumParticle.EXPLOSION_HUGE), + FIREWORKS_SPARK(EnumParticle.FIREWORKS_SPARK), + BUBBLE(EnumParticle.WATER_BUBBLE), + WAKE(EnumParticle.WATER_WAKE), + SPLASH(EnumParticle.WATER_SPLASH), + SUSPENDED(EnumParticle.SUSPENDED), + DEPTH_SUSPEND(EnumParticle.SUSPENDED_DEPTH), + CRIT(EnumParticle.CRIT), + MAGIC_CRIT(EnumParticle.CRIT_MAGIC), + SMOKE(EnumParticle.SMOKE_NORMAL), + LARGE_SMOKE(EnumParticle.SMOKE_LARGE), + SPELL(EnumParticle.SPELL), + INSTANT_SPELL(EnumParticle.SPELL_INSTANT), + MOB_SPELL(EnumParticle.SPELL_MOB), + MOB_SPELL_AMBIENT(EnumParticle.SPELL_MOB_AMBIENT), + WITCH_MAGIC(EnumParticle.SPELL_WITCH), + DRIP_WATER(EnumParticle.DRIP_WATER), + DRIP_LAVA(EnumParticle.DRIP_LAVA), + ANGRY_VILLAGER(EnumParticle.VILLAGER_ANGRY), + HAPPY_VILLAGER(EnumParticle.VILLAGER_HAPPY), + TOWN_AURA(EnumParticle.TOWN_AURA), + NOTE(EnumParticle.NOTE), + PORTAL(EnumParticle.PORTAL), + ENCHANTMENT_TABLE(EnumParticle.ENCHANTMENT_TABLE), + FLAME(EnumParticle.FLAME), + LAVA(EnumParticle.LAVA), + FOOTSTEP(EnumParticle.FOOTSTEP), + CLOUD(EnumParticle.CLOUD), + RED_DUST(EnumParticle.REDSTONE), + SNOWBALL_POOF(EnumParticle.SNOWBALL), + SNOW_SHOVEL(EnumParticle.SNOW_SHOVEL), + SLIME(EnumParticle.SLIME), + HEART(EnumParticle.HEART), + BARRIER(EnumParticle.BARRIER), + ICONCRACK_(EnumParticle.ITEM_CRACK), + BLOCKCRACK_(EnumParticle.BLOCK_CRACK), + BLOCKDUST_(EnumParticle.BLOCK_DUST), + DROPLET(EnumParticle.WATER_DROP), + TAKE(EnumParticle.ITEM_TAKE), + MOB_APPEARANCE(EnumParticle.MOB_APPEARANCE); + + private final EnumParticle particleEnum; + + Eff_1_8_R3(EnumParticle particleEnum) { + this.particleEnum = particleEnum; + } + + public void sendToPlayer(Player player, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count, int[] data) throws Exception { + PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(); + ReflectionUtil.setValue(packet, "a", particleEnum); + ReflectionUtil.setValue(packet, "b", (float) location.getX()); + ReflectionUtil.setValue(packet, "c", (float) location.getY()); + ReflectionUtil.setValue(packet, "d", (float) location.getZ()); + ReflectionUtil.setValue(packet, "e", offsetX); + ReflectionUtil.setValue(packet, "f", offsetY); + ReflectionUtil.setValue(packet, "g", offsetZ); + ReflectionUtil.setValue(packet, "h", speed); + ReflectionUtil.setValue(packet, "i", count); + ReflectionUtil.setValue(packet, "k", data); + ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet); + } + +} diff --git a/src/main/java/me/blackvein/quests/NpcEffectThread.java b/src/main/java/me/blackvein/quests/NpcEffectThread.java index 712552b5d..627559419 100644 --- a/src/main/java/me/blackvein/quests/NpcEffectThread.java +++ b/src/main/java/me/blackvein/quests/NpcEffectThread.java @@ -8,6 +8,7 @@ import me.blackvein.particles.Eff_1_7_R1; import me.blackvein.particles.Eff_1_7_R4; import me.blackvein.particles.Eff_1_8_R1; import me.blackvein.particles.Eff_1_8_R2; +import me.blackvein.particles.Eff_1_8_R3; import net.citizensnpcs.api.npc.NPC; import org.bukkit.Bukkit; @@ -25,7 +26,8 @@ public class NpcEffectThread implements Runnable { } - @Override + @SuppressWarnings("deprecation") + @Override public void run() { for (Player player : plugin.getServer().getOnlinePlayers()) { @@ -63,6 +65,10 @@ public class NpcEffectThread implements Runnable { showEffect_R3(player, npc); } else if (Bukkit.getBukkitVersion().contains("1.7.10")) { showEffect_R4(player, npc); + } else if (Bukkit.getBukkitVersion().contains("1.8.4") + || Bukkit.getBukkitVersion().contains("1.8.5") + || Bukkit.getBukkitVersion().contains("1.8.6")) { + showEffect_1_8_R3(player, npc); } else if (Bukkit.getBukkitVersion().contains("1.8.3")) { showEffect_1_8_R2(player, npc); } else if (Bukkit.getBukkitVersion().contains("1.8")) { @@ -70,6 +76,127 @@ public class NpcEffectThread implements Runnable { } } + private static void showEffect_1_8_R3(Player player, NPC npc) { + + //Get and set eye location, because npc.getBukkitEntity() is deprecated. + Location eyeLoc = npc.getEntity().getLocation(); + eyeLoc.setY(eyeLoc.getY() + 1.5); + + if (Quests.effect.equalsIgnoreCase("enchant")) { + + try { + Eff_1_8_R3.ENCHANTMENT_TABLE.sendToPlayer(player, eyeLoc, 0, 1, 0, 1, 10, null); + } catch (Exception e) { + e.printStackTrace(); + } + + } else if (Quests.effect.equalsIgnoreCase("crit")) { + + try { + Eff_1_8_R3.CRIT.sendToPlayer(player, eyeLoc, 0, 0, 0, (float) 0.35, 3, null); + } catch (Exception e) { + e.printStackTrace(); + } + + } else if (Quests.effect.equalsIgnoreCase("spell")) { + + try { + Eff_1_8_R3.INSTANT_SPELL.sendToPlayer(player, eyeLoc, 0, 0, 0, 1, 3, null); + } catch (Exception e) { + e.printStackTrace(); + } + + } else if (Quests.effect.equalsIgnoreCase("magiccrit")) { + + try { + Eff_1_8_R3.MAGIC_CRIT.sendToPlayer(player, eyeLoc, 0, 0, 0, (float) 0.35, 3, null); + } catch (Exception e) { + e.printStackTrace(); + } + + } else if (Quests.effect.equalsIgnoreCase("mobspell")) { + + try { + Eff_1_8_R3.MOB_SPELL.sendToPlayer(player, eyeLoc, 0, 0, 0, 1, 3, null); + } catch (Exception e) { + e.printStackTrace(); + } + + } else if (Quests.effect.equalsIgnoreCase("note")) { + + try { + Location old = eyeLoc; + Location newLoc = new Location(player.getWorld(), old.getX(), old.getY() + (float) 0.5, old.getZ()); + Eff_1_8_R3.NOTE.sendToPlayer(player, newLoc, 0, 0, 0, 1, 1, null); + } catch (Exception e) { + e.printStackTrace(); + } + + } else if (Quests.effect.equalsIgnoreCase("portal")) { + + try { + Eff_1_8_R3.PORTAL.sendToPlayer(player, eyeLoc, 0, 0, 0, 1, 5, null); + } catch (Exception e) { + e.printStackTrace(); + } + + } else if (Quests.effect.equalsIgnoreCase("dust")) { + + try { + Location newLoc = new Location(player.getWorld(), eyeLoc.getX(), eyeLoc.getY() + (float) 0.5, eyeLoc.getZ()); + Eff_1_8_R3.RED_DUST.sendToPlayer(player, newLoc, 0, 0, 0, 1, 1, null); + } catch (Exception e) { + e.printStackTrace(); + } + + } else if (Quests.effect.equalsIgnoreCase("witch")) { + + try { + Eff_1_8_R3.WITCH_MAGIC.sendToPlayer(player, eyeLoc, 0, 0, 0, 1, 3, null); + } catch (Exception e) { + e.printStackTrace(); + } + + } else if (Quests.effect.equalsIgnoreCase("snowball")) { + + try { + Location old = eyeLoc; + Location newLoc = new Location(player.getWorld(), old.getX(), old.getY() + (float) 0.5, old.getZ()); + Eff_1_8_R3.SNOWBALL_POOF.sendToPlayer(player, newLoc, 0, 0, 0, 1, 3, null); + } catch (Exception e) { + e.printStackTrace(); + } + + } else if (Quests.effect.equalsIgnoreCase("splash")) { + + try { + Location old = eyeLoc; + Location newLoc = new Location(player.getWorld(), old.getX(), old.getY() + (float) 0.5, old.getZ()); + Eff_1_8_R3.SPLASH.sendToPlayer(player, newLoc, 0, 0, 0, 1, 4, null); + } catch (Exception e) { + e.printStackTrace(); + } + + } else if (Quests.effect.equalsIgnoreCase("smoke")) { + + try { + Eff_1_8_R3.TOWN_AURA.sendToPlayer(player, eyeLoc, 0, 1, 0, 1, 20, null); + } catch (Exception e) { + e.printStackTrace(); + } + + } else { + + try { + Eff_1_8_R3.valueOf(Quests.effect).sendToPlayer(player, eyeLoc, 0, 0, 0, 1, 3, null); + } catch (Exception e) { + Quests.getInstance().getLogger().info(Quests.effect + " is not a valid effect name!"); + e.printStackTrace(); + } + } + + } + private static void showEffect_1_8_R2(Player player, NPC npc) { //Get and set eye location, because npc.getBukkitEntity() is deprecated.