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.