diff --git a/pom.xml b/pom.xml
index eed1b17..0a8073c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -81,6 +81,20 @@
system
${spigot}/1.9.2.jar
1.9.2
+
+
+ spigotmc.org
+ spigot-1.8.8
+ system
+ ${spigot}/1.8.8.jar
+ 1.8.8
+
+
+ spigotmc.org
+ spigot-1.8.3
+ system
+ ${spigot}/1.8.3.jar
+ 1.8.3
spigotmc.org
diff --git a/src/main/java/mykyta/Harbor/Events/Move.java b/src/main/java/mykyta/Harbor/Events/Move.java
index fcbcb70..65317cd 100644
--- a/src/main/java/mykyta/Harbor/Events/Move.java
+++ b/src/main/java/mykyta/Harbor/Events/Move.java
@@ -1,8 +1,5 @@
package mykyta.Harbor.Events;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
diff --git a/src/main/java/mykyta/Harbor/Events/PlayerLeave.java b/src/main/java/mykyta/Harbor/Events/PlayerLeave.java
index 55ff4a4..9c9dd35 100644
--- a/src/main/java/mykyta/Harbor/Events/PlayerLeave.java
+++ b/src/main/java/mykyta/Harbor/Events/PlayerLeave.java
@@ -19,7 +19,6 @@ public class PlayerLeave implements Listener {
new java.util.TimerTask() {
@Override
public void run() {
- // FIXME IM BROKE THE THING UPDATES NIGHT WHEN PEOPLE LEAVE IS BAD
if (w.getPlayers().size() > 0 && Math.max(0, util.getNeeded(w) - util.getExcluded(w).size()) == 0) util.skip(w);
Util.activity.remove(p);
}
diff --git a/src/main/java/mykyta/Harbor/NMS/NMS_1_7_R1.java b/src/main/java/mykyta/Harbor/NMS/NMS_1_8_R2.java
similarity index 53%
rename from src/main/java/mykyta/Harbor/NMS/NMS_1_7_R1.java
rename to src/main/java/mykyta/Harbor/NMS/NMS_1_8_R2.java
index 25f3985..6789cfa 100644
--- a/src/main/java/mykyta/Harbor/NMS/NMS_1_7_R1.java
+++ b/src/main/java/mykyta/Harbor/NMS/NMS_1_8_R2.java
@@ -1,21 +1,21 @@
package mykyta.Harbor.NMS;
-import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
-import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer;
+import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer;
import org.bukkit.entity.Player;
-import org.inventivetalent.bossbar.BossBarAPI;
-import net.md_5.bungee.api.chat.TextComponent;
-import net.minecraft.server.v1_7_R1.ChatSerializer;
-import net.minecraft.server.v1_7_R1.IChatBaseComponent;
-import net.minecraft.server.v1_7_R1.PacketPlayOutChat;
+import net.minecraft.server.v1_8_R2.IChatBaseComponent;
+import net.minecraft.server.v1_8_R2.IChatBaseComponent.ChatSerializer;
+import net.minecraft.server.v1_8_R2.PacketPlayOutChat;
+import net.minecraft.server.v1_8_R2.PacketPlayOutTitle;
+import net.minecraft.server.v1_8_R2.PacketPlayOutTitle.EnumTitleAction;
-public class NMS_1_7_R1 implements NMS {
+public class NMS_1_8_R2 implements NMS {
@Override
public void sendActionbar(Player player, String message) {
- if (Bukkit.getServer().getPluginManager().getPlugin("BossBarAPI") == null) System.out.println("API missing");
- else BossBarAPI.addBar(player, new TextComponent(ChatColor.translateAlternateColorCodes('&', message)), BossBarAPI.Color.RED, BossBarAPI.Style.PROGRESS, 1.0f, 20, 5);
+ IChatBaseComponent titleComponent = ChatSerializer.a("{\"text\": \"" + ChatColor.translateAlternateColorCodes('&', message) + "\"}");
+ PacketPlayOutChat titlePacket = new PacketPlayOutChat(titleComponent, (byte)2);
+ ((CraftPlayer) player).getHandle().playerConnection.sendPacket(titlePacket);
}
@Override
@@ -27,12 +27,12 @@ public class NMS_1_7_R1 implements NMS {
@Override
public void sendTitle(Player player, String top, String bottom) {
- /*IChatBaseComponent titleTop = ChatSerializer.a("{\"text\": \"" + ChatColor.translateAlternateColorCodes('&', top) + "\"}");
+ IChatBaseComponent titleTop = ChatSerializer.a("{\"text\": \"" + ChatColor.translateAlternateColorCodes('&', top) + "\"}");
IChatBaseComponent titleBottom = ChatSerializer.a("{\"text\": \"" + ChatColor.translateAlternateColorCodes('&', bottom) + "\"}");
PacketPlayOutTitle title = new PacketPlayOutTitle(EnumTitleAction.TITLE, titleTop);
PacketPlayOutTitle subtitle = new PacketPlayOutTitle(EnumTitleAction.SUBTITLE, titleBottom);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(title);
- ((CraftPlayer) player).getHandle().playerConnection.sendPacket(subtitle);*/
+ ((CraftPlayer) player).getHandle().playerConnection.sendPacket(subtitle);
}
@Override
diff --git a/src/main/java/mykyta/Harbor/NMS/NMS_1_8_R3.java b/src/main/java/mykyta/Harbor/NMS/NMS_1_8_R3.java
new file mode 100644
index 0000000..04a2b4b
--- /dev/null
+++ b/src/main/java/mykyta/Harbor/NMS/NMS_1_8_R3.java
@@ -0,0 +1,42 @@
+package mykyta.Harbor.NMS;
+
+import org.bukkit.ChatColor;
+import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
+import org.bukkit.entity.Player;
+
+import net.minecraft.server.v1_8_R3.IChatBaseComponent;
+import net.minecraft.server.v1_8_R3.IChatBaseComponent.ChatSerializer;
+import net.minecraft.server.v1_8_R3.PacketPlayOutChat;
+import net.minecraft.server.v1_8_R3.PacketPlayOutTitle;
+import net.minecraft.server.v1_8_R3.PacketPlayOutTitle.EnumTitleAction;
+
+public class NMS_1_8_R3 implements NMS {
+ @Override
+ public void sendActionbar(Player player, String message) {
+ IChatBaseComponent titleComponent = ChatSerializer.a("{\"text\": \"" + ChatColor.translateAlternateColorCodes('&', message) + "\"}");
+ PacketPlayOutChat titlePacket = new PacketPlayOutChat(titleComponent, (byte)2);
+ ((CraftPlayer) player).getHandle().playerConnection.sendPacket(titlePacket);
+ }
+
+ @Override
+ public void sendJSONMessage(Player player, String json) {
+ IChatBaseComponent component = ChatSerializer.a(json);
+ PacketPlayOutChat packet = new PacketPlayOutChat(component);
+ ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
+ }
+
+ @Override
+ public void sendTitle(Player player, String top, String bottom) {
+ IChatBaseComponent titleTop = ChatSerializer.a("{\"text\": \"" + ChatColor.translateAlternateColorCodes('&', top) + "\"}");
+ IChatBaseComponent titleBottom = ChatSerializer.a("{\"text\": \"" + ChatColor.translateAlternateColorCodes('&', bottom) + "\"}");
+ PacketPlayOutTitle title = new PacketPlayOutTitle(EnumTitleAction.TITLE, titleTop);
+ PacketPlayOutTitle subtitle = new PacketPlayOutTitle(EnumTitleAction.SUBTITLE, titleBottom);
+ ((CraftPlayer) player).getHandle().playerConnection.sendPacket(title);
+ ((CraftPlayer) player).getHandle().playerConnection.sendPacket(subtitle);
+ }
+
+ @Override
+ public void enterBed(Player player) {
+
+ }
+}
diff --git a/src/main/java/mykyta/Harbor/Util.java b/src/main/java/mykyta/Harbor/Util.java
index 2e57d3d..24ca258 100644
--- a/src/main/java/mykyta/Harbor/Util.java
+++ b/src/main/java/mykyta/Harbor/Util.java
@@ -18,8 +18,9 @@ import mykyta.Harbor.NMS.NMS_1_12_R1;
import mykyta.Harbor.NMS.NMS_1_13_R1;
import mykyta.Harbor.NMS.NMS_1_13_R2;
import mykyta.Harbor.NMS.NMS_1_14_R1;
-import mykyta.Harbor.NMS.NMS_1_7_R1;
import mykyta.Harbor.NMS.NMS_1_8_R1;
+import mykyta.Harbor.NMS.NMS_1_8_R2;
+import mykyta.Harbor.NMS.NMS_1_8_R3;
import mykyta.Harbor.NMS.NMS_1_9_R1;
import mykyta.Harbor.NMS.NMS_1_9_R2;
@@ -47,10 +48,9 @@ public class Util {
enabled = false;
}
if (debug) Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&', config.getString("messages.miscellaneous.prefix") + config.getString("messages.miscellaneous.running").replace("[version]", version)));
-
- if (version.equals("v1_7_R1")) {nms = new NMS_1_7_R1();}
- else if (version.equals("v1_8_R1")) {nms = new NMS_1_8_R1();}
- //TODO more 1.8 versions
+ if (version.equals("v1_8_R1")) {nms = new NMS_1_8_R1();}
+ else if (version.equals("v1_8_R2")) {nms = new NMS_1_8_R2();}
+ else if (version.equals("v1_8_R3")) {nms = new NMS_1_8_R3();}
else if (version.equals("v1_9_R1")) {nms = new NMS_1_9_R1();}
else if (version.equals("v1_9_R2")) {nms = new NMS_1_9_R2();}
else if (version.equals("v1_10_R1")) {nms = new NMS_1_10_R1();}
@@ -99,8 +99,7 @@ public class Util {
* @param world World to fetch count for
*/
public int getNeeded(World w) {
- //FIXME make sure to remove excluded players
- try {return Math.max(0, (int) Math.ceil(w.getPlayers().size() * (config.getDouble("values.percent") / 100) - this.getSleeping(w)));}
+ try {return Math.max(0, (int) Math.ceil((w.getPlayers().size() - getExcluded(w).size()) * (config.getDouble("values.percent") / 100) - this.getSleeping(w)));}
catch (NullPointerException e) {return 0;}
}
@@ -192,7 +191,7 @@ public class Util {
* @param World to return value for
*/
public void skip(World w) {
- if (config.getBoolean("features.skip") && this.getNeeded(w) - this.getExcluded(w).size() == 0) {
+ if (config.getBoolean("features.skip") && Math.max(0, this.getNeeded(w) - this.getExcluded(w).size()) == 0) {
w.setTime(1000L);
// Set weather to clear