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