diff --git a/lib/craftbukkit-1.9.4.jar b/lib/craftbukkit-1.9.4.jar new file mode 100644 index 000000000..d80bcb065 Binary files /dev/null and b/lib/craftbukkit-1.9.4.jar differ diff --git a/pom.xml b/pom.xml index 21f5ad990..8ed326773 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ me.blackvein.quests quests - 2.6.0 + 2.6.1 quests https://github.com/FlyingPikachu/Quests/ jar @@ -57,6 +57,13 @@ system ${project.basedir}/lib/craftbukkit-1.9.2.jar + + org.bukkit + spigot194 + 1.9.4-R0.1-SNAPSHOT + system + ${project.basedir}/lib/craftbukkit-1.9.4.jar + org.bukkit bukkit1710 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 index e8ec279df..6ed29fbe3 100644 --- a/src/main/java/me/blackvein/particles/Eff_1_8_R3.java +++ b/src/main/java/me/blackvein/particles/Eff_1_8_R3.java @@ -74,4 +74,4 @@ public enum Eff_1_8_R3 { ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet); } -} +} \ No newline at end of file diff --git a/src/main/java/me/blackvein/particles/Eff_1_9_R2.java b/src/main/java/me/blackvein/particles/Eff_1_9_R2.java new file mode 100644 index 000000000..2f84e4650 --- /dev/null +++ b/src/main/java/me/blackvein/particles/Eff_1_9_R2.java @@ -0,0 +1,77 @@ +package me.blackvein.particles; + +import me.blackvein.quests.util.ReflectionUtil; +import net.minecraft.server.v1_9_R2.EnumParticle; +import net.minecraft.server.v1_9_R2.PacketPlayOutWorldParticles; + +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; +import org.bukkit.entity.Player; + +public enum Eff_1_9_R2 { + + 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_9_R2(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); + } + +} \ No newline at end of file diff --git a/src/main/java/me/blackvein/quests/NpcEffectThread.java b/src/main/java/me/blackvein/quests/NpcEffectThread.java index 7b471fc1a..38f9ca627 100644 --- a/src/main/java/me/blackvein/quests/NpcEffectThread.java +++ b/src/main/java/me/blackvein/quests/NpcEffectThread.java @@ -1,15 +1,15 @@ package me.blackvein.quests; -import me.blackvein.particles.Eff_1_7_R3; - import java.util.List; import me.blackvein.particles.Eff_1_7_R1; +import me.blackvein.particles.Eff_1_7_R3; 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 me.blackvein.particles.Eff_1_9_R1; +import me.blackvein.particles.Eff_1_9_R2; import net.citizensnpcs.api.npc.NPC; import org.bukkit.Bukkit; @@ -75,11 +75,133 @@ public class NpcEffectThread implements Runnable { showEffect_1_8_R2(player, npc); } else if (Bukkit.getBukkitVersion().contains("1.8")) { showEffect_1_8_R1(player, npc); + } else if (Bukkit.getBukkitVersion().contains("1.9.4")) { + showEffect_1_9_R2(player, npc); } else if (Bukkit.getBukkitVersion().contains("1.9")) { showEffect_1_9_R1(player, npc); } } - +private static void showEffect_1_9_R2(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_9_R2.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_9_R2.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_9_R2.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_9_R2.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_9_R2.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_9_R2.NOTE.sendToPlayer(player, newLoc, 0, 0, 0, 1, 1, null); + } catch (Exception e) { + e.printStackTrace(); + } + + } else if (Quests.effect.equalsIgnoreCase("portal")) { + + try { + Eff_1_9_R2.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_9_R2.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_9_R2.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_9_R2.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_9_R2.SPLASH.sendToPlayer(player, newLoc, 0, 0, 0, 1, 4, null); + } catch (Exception e) { + e.printStackTrace(); + } + + } else if (Quests.effect.equalsIgnoreCase("smoke")) { + + try { + Eff_1_9_R2.TOWN_AURA.sendToPlayer(player, eyeLoc, 0, 1, 0, 1, 20, null); + } catch (Exception e) { + e.printStackTrace(); + } + + } else { + + try { + Eff_1_9_R2.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_9_R1(Player player, NPC npc) { //Get and set eye location, because npc.getBukkitEntity() is deprecated.