diff --git a/.gitignore b/.gitignore index 7eae63f..02142ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea target -dependency-reduced-pom.xml \ No newline at end of file +dependency-reduced-pom.xml +*.iml \ No newline at end of file diff --git a/SpigotCore_10/src/de/steamwar/scoreboard/SWScoreboard_10.java b/SpigotCore_10/src/de/steamwar/scoreboard/SWScoreboard_10.java new file mode 100644 index 0000000..e469622 --- /dev/null +++ b/SpigotCore_10/src/de/steamwar/scoreboard/SWScoreboard_10.java @@ -0,0 +1,54 @@ +package de.steamwar.scoreboard; + +import net.minecraft.server.v1_10_R1.*; +import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; + +import java.util.Map; + +public class SWScoreboard_10 { + + ScoreboardCallback callback; + private Scoreboard scoreboard; + private ScoreboardObjective obj; + private int switcher = 0; //switch zwischen 0 und 1 + + public SWScoreboard_10(ScoreboardCallback callback) { + this.callback = callback; + this.scoreboard = new Scoreboard(); + this.obj = this.scoreboard.registerObjective("MainBord" + switcher, IScoreboardCriteria.b); + obj.setDisplayName(this.callback.getTitle()); + } + + public void sendScoreboard(Player player) { + PacketPlayOutScoreboardObjective removePacket = new PacketPlayOutScoreboardObjective(obj, 1); + PacketPlayOutScoreboardObjective createpacket = new PacketPlayOutScoreboardObjective(obj, 0); + + sendPacket(player, removePacket); + sendPacket(player, createpacket); + + for(Map.Entry currentEntry : this.callback.getData().entrySet()) { + ScoreboardScore score = new ScoreboardScore(this.scoreboard, this.obj, currentEntry.getKey()); + score.setScore(currentEntry.getValue()); + PacketPlayOutScoreboardScore scorePacket = new PacketPlayOutScoreboardScore(score); + sendPacket(player, scorePacket); + } + + switcher(); + + PacketPlayOutScoreboardDisplayObjective displayPacket = new PacketPlayOutScoreboardDisplayObjective(1, this.obj); + sendPacket(player, displayPacket); + } + + private void sendPacket(Player p, Packet packet) { + ((CraftPlayer)p).getHandle().playerConnection.sendPacket(packet); + } + + private void switcher() { + switcher++; + if(switcher == 1) + switcher = 0; + } + + +} diff --git a/SpigotCore_12/src/de/steamwar/scoreboard/SWScoreboard_12.java b/SpigotCore_12/src/de/steamwar/scoreboard/SWScoreboard_12.java new file mode 100644 index 0000000..66a8b5e --- /dev/null +++ b/SpigotCore_12/src/de/steamwar/scoreboard/SWScoreboard_12.java @@ -0,0 +1,53 @@ +package de.steamwar.scoreboard; + +import net.minecraft.server.v1_12_R1.*; +import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; + +import java.util.Map; + +public class SWScoreboard_12 { + + ScoreboardCallback callback; + private Scoreboard scoreboard; + private ScoreboardObjective obj; + private int switcher = 0; //switch zwischen 0 und 1 + + public SWScoreboard_12(ScoreboardCallback callback) { + this.callback = callback; + this.scoreboard = new Scoreboard(); + this.obj = this.scoreboard.registerObjective("MainBord" + switcher, IScoreboardCriteria.b); + obj.setDisplayName(this.callback.getTitle()); + } + + public void sendScoreboard(Player player) { + PacketPlayOutScoreboardObjective removePacket = new PacketPlayOutScoreboardObjective(obj, 1); + PacketPlayOutScoreboardObjective createpacket = new PacketPlayOutScoreboardObjective(obj, 0); + + sendPacket(player, removePacket); + sendPacket(player, createpacket); + + for(Map.Entry currentEntry : this.callback.getData().entrySet()) { + ScoreboardScore score = new ScoreboardScore(this.scoreboard, this.obj, currentEntry.getKey()); + score.setScore(currentEntry.getValue()); + PacketPlayOutScoreboardScore scorePacket = new PacketPlayOutScoreboardScore(score); + sendPacket(player, scorePacket); + } + + switcher(); + + PacketPlayOutScoreboardDisplayObjective displayPacket = new PacketPlayOutScoreboardDisplayObjective(1, this.obj); + sendPacket(player, displayPacket); + } + + private void sendPacket(Player p, Packet packet) { + ((CraftPlayer)p).getHandle().playerConnection.sendPacket(packet); + } + + private void switcher() { + switcher++; + if(switcher == 1) + switcher = 0; + } + +} diff --git a/SpigotCore_14/src/de/steamwar/scoreboard/SWScoreboard_14.java b/SpigotCore_14/src/de/steamwar/scoreboard/SWScoreboard_14.java new file mode 100644 index 0000000..a45b23e --- /dev/null +++ b/SpigotCore_14/src/de/steamwar/scoreboard/SWScoreboard_14.java @@ -0,0 +1,53 @@ +package de.steamwar.scoreboard; + +import net.minecraft.server.v1_14_R1.*; +import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; + +import java.util.Map; + +public class SWScoreboard_14 { + + ScoreboardCallback callback; + private Scoreboard scoreboard; + private ScoreboardObjective obj; + private int switcher = 0; //switch zwischen 0 und 1 + + public SWScoreboard_14(ScoreboardCallback callback) { + this.callback = callback; + this.scoreboard = new Scoreboard(); + this.obj = this.scoreboard.registerObjective("MainBord" + switcher, IScoreboardCriteria.DUMMY, new ChatMessage("USELESS"), IScoreboardCriteria.EnumScoreboardHealthDisplay.HEARTS); + obj.setDisplayName(new ChatMessage(this.callback.getTitle())); + } + + public void sendScoreboard(Player player) { + PacketPlayOutScoreboardObjective removePacket = new PacketPlayOutScoreboardObjective(obj, 1); + PacketPlayOutScoreboardObjective createpacket = new PacketPlayOutScoreboardObjective(obj, 0); + + sendPacket(player, removePacket); + sendPacket(player, createpacket); + + for(Map.Entry currentEntry : this.callback.getData().entrySet()) { + ScoreboardScore score = new ScoreboardScore(this.scoreboard, this.obj, currentEntry.getKey()); + score.setScore(currentEntry.getValue()); + PacketPlayOutScoreboardScore scorePacket = new PacketPlayOutScoreboardScore(ScoreboardServer.Action.CHANGE, this.obj.getName(), score.getPlayerName(), score.getScore()); + sendPacket(player, scorePacket); + } + + switcher(); + + PacketPlayOutScoreboardDisplayObjective displayPacket = new PacketPlayOutScoreboardDisplayObjective(1, this.obj); + sendPacket(player, displayPacket); + } + + private void sendPacket(Player p, Packet packet) { + ((CraftPlayer)p).getHandle().playerConnection.sendPacket(packet); + } + + private void switcher() { + switcher++; + if(switcher == 1) + switcher = 0; + } + +} diff --git a/SpigotCore_15/src/de/steamwar/scoreboard/SWScoreboard_15.java b/SpigotCore_15/src/de/steamwar/scoreboard/SWScoreboard_15.java new file mode 100644 index 0000000..b8db92d --- /dev/null +++ b/SpigotCore_15/src/de/steamwar/scoreboard/SWScoreboard_15.java @@ -0,0 +1,53 @@ +package de.steamwar.scoreboard; + +import net.minecraft.server.v1_15_R1.*; +import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; + +import java.util.Map; + +public class SWScoreboard_15 { + + ScoreboardCallback callback; + private Scoreboard scoreboard; + private ScoreboardObjective obj; + private int switcher = 0; //switch zwischen 0 und 1 + + public SWScoreboard_15(ScoreboardCallback callback) { + this.callback = callback; + this.scoreboard = new Scoreboard(); + this.obj = this.scoreboard.registerObjective("MainBord" + switcher, IScoreboardCriteria.DUMMY, new ChatMessage("USELESS"), IScoreboardCriteria.EnumScoreboardHealthDisplay.HEARTS); + obj.setDisplayName(new ChatMessage(this.callback.getTitle())); + } + + public void sendScoreboard(Player player) { + PacketPlayOutScoreboardObjective removePacket = new PacketPlayOutScoreboardObjective(obj, 1); + PacketPlayOutScoreboardObjective createpacket = new PacketPlayOutScoreboardObjective(obj, 0); + + sendPacket(player, removePacket); + sendPacket(player, createpacket); + + for(Map.Entry currentEntry : this.callback.getData().entrySet()) { + ScoreboardScore score = new ScoreboardScore(this.scoreboard, this.obj, currentEntry.getKey()); + score.setScore(currentEntry.getValue()); + PacketPlayOutScoreboardScore scorePacket = new PacketPlayOutScoreboardScore(ScoreboardServer.Action.CHANGE, this.obj.getName(), score.getPlayerName(), score.getScore()); + sendPacket(player, scorePacket); + } + + switcher(); + + PacketPlayOutScoreboardDisplayObjective displayPacket = new PacketPlayOutScoreboardDisplayObjective(1, this.obj); + sendPacket(player, displayPacket); + } + + private void sendPacket(Player p, Packet packet) { + ((CraftPlayer)p).getHandle().playerConnection.sendPacket(packet); + } + + private void switcher() { + switcher++; + if(switcher == 1) + switcher = 0; + } + +} diff --git a/SpigotCore_8/src/de/steamwar/scoreboard/SWScoreboard_8.java b/SpigotCore_8/src/de/steamwar/scoreboard/SWScoreboard_8.java new file mode 100644 index 0000000..f0b69ba --- /dev/null +++ b/SpigotCore_8/src/de/steamwar/scoreboard/SWScoreboard_8.java @@ -0,0 +1,53 @@ +package de.steamwar.scoreboard; + +import net.minecraft.server.v1_8_R3.*; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; +import org.bukkit.entity.Player; + +import java.util.Map; + +public class SWScoreboard_8 { + + ScoreboardCallback callback; + private Scoreboard scoreboard; + private ScoreboardObjective obj; + private int switcher = 0; //switch zwischen 0 und 1 + + public SWScoreboard_8(ScoreboardCallback callback) { + this.callback = callback; + this.scoreboard = new Scoreboard(); + this.obj = this.scoreboard.registerObjective("MainBord" + switcher, IScoreboardCriteria.b); + obj.setDisplayName(this.callback.getTitle()); + } + + public void sendScoreboard(Player player) { + PacketPlayOutScoreboardObjective removePacket = new PacketPlayOutScoreboardObjective(obj, 1); + PacketPlayOutScoreboardObjective createpacket = new PacketPlayOutScoreboardObjective(obj, 0); + + sendPacket(player, removePacket); + sendPacket(player, createpacket); + + for(Map.Entry currentEntry : this.callback.getData().entrySet()) { + ScoreboardScore score = new ScoreboardScore(this.scoreboard, this.obj, currentEntry.getKey()); + score.setScore(currentEntry.getValue()); + PacketPlayOutScoreboardScore scorePacket = new PacketPlayOutScoreboardScore(score); + sendPacket(player, scorePacket); + } + + switcher(); + + PacketPlayOutScoreboardDisplayObjective displayPacket = new PacketPlayOutScoreboardDisplayObjective(1, this.obj); + sendPacket(player, displayPacket); + } + + private void sendPacket(Player p, Packet packet) { + ((CraftPlayer)p).getHandle().playerConnection.sendPacket(packet); + } + + private void switcher() { + switcher++; + if(switcher == 1) + switcher = 0; + } + +} diff --git a/SpigotCore_9/src/de/steamwar/scoreboard/SWScoreboard_9.java b/SpigotCore_9/src/de/steamwar/scoreboard/SWScoreboard_9.java new file mode 100644 index 0000000..71f80a5 --- /dev/null +++ b/SpigotCore_9/src/de/steamwar/scoreboard/SWScoreboard_9.java @@ -0,0 +1,53 @@ +package de.steamwar.scoreboard; + +import net.minecraft.server.v1_9_R2.*; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; +import org.bukkit.entity.Player; + +import java.util.Map; + +public class SWScoreboard_9 { + + ScoreboardCallback callback; + private Scoreboard scoreboard; + private ScoreboardObjective obj; + private int switcher = 0; //switch zwischen 0 und 1 + + public SWScoreboard_9(ScoreboardCallback callback) { + this.callback = callback; + this.scoreboard = new Scoreboard(); + this.obj = this.scoreboard.registerObjective("MainBord" + switcher, IScoreboardCriteria.b); + obj.setDisplayName(this.callback.getTitle()); + } + + public void sendScoreboard(Player player) { + PacketPlayOutScoreboardObjective removePacket = new PacketPlayOutScoreboardObjective(obj, 1); + PacketPlayOutScoreboardObjective createpacket = new PacketPlayOutScoreboardObjective(obj, 0); + + sendPacket(player, removePacket); + sendPacket(player, createpacket); + + for(Map.Entry currentEntry : this.callback.getData().entrySet()) { + ScoreboardScore score = new ScoreboardScore(this.scoreboard, this.obj, currentEntry.getKey()); + score.setScore(currentEntry.getValue()); + PacketPlayOutScoreboardScore scorePacket = new PacketPlayOutScoreboardScore(score); + sendPacket(player, scorePacket); + } + + switcher(); + + PacketPlayOutScoreboardDisplayObjective displayPacket = new PacketPlayOutScoreboardDisplayObjective(1, this.obj); + sendPacket(player, displayPacket); + } + + private void sendPacket(Player p, Packet packet) { + ((CraftPlayer)p).getHandle().playerConnection.sendPacket(packet); + } + + private void switcher() { + switcher++; + if(switcher == 1) + switcher = 0; + } + +} diff --git a/SpigotCore_API/src/de/steamwar/scoreboard/ScoreboardCallback.java b/SpigotCore_API/src/de/steamwar/scoreboard/ScoreboardCallback.java new file mode 100644 index 0000000..9771cbb --- /dev/null +++ b/SpigotCore_API/src/de/steamwar/scoreboard/ScoreboardCallback.java @@ -0,0 +1,12 @@ +package de.steamwar.scoreboard; + +import java.util.HashMap; + +public interface ScoreboardCallback { + + HashMap getData(); + + String getTitle(); + + +} diff --git a/SpigotCore_Main/src/de/steamwar/scoreboard/SWScoreboard.java b/SpigotCore_Main/src/de/steamwar/scoreboard/SWScoreboard.java new file mode 100644 index 0000000..bf36558 --- /dev/null +++ b/SpigotCore_Main/src/de/steamwar/scoreboard/SWScoreboard.java @@ -0,0 +1,77 @@ +package de.steamwar.scoreboard; + +import de.steamwar.core.Core; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import java.util.HashMap; +import java.util.Map; + +public class SWScoreboard { + + private static HashMap playerBoards = new HashMap<>(); //Object -> Scoreboard | Alle Versionen in der Map! + + public static boolean createScoreboard(Player player, ScoreboardCallback callback) { + Object swScoreboardObject; + switch (Core.getVersion()) { + case 8: + swScoreboardObject = new SWScoreboard_8(callback); + break; + case 9: + swScoreboardObject = new SWScoreboard_9(callback); + break; + case 10: + swScoreboardObject = new SWScoreboard_10(callback); + break; + case 12: + swScoreboardObject = new SWScoreboard_12(callback); + break; + case 14: + swScoreboardObject = new SWScoreboard_14(callback); + break; + case 15: + swScoreboardObject = new SWScoreboard_15(callback); + break; + default: + return false; //Kein Scoreboard senden + } + playerBoards.put(player, swScoreboardObject); + return true; + } + + public static void removeScoreboard(Player player) { + if(playerBoards.containsKey(player)) + playerBoards.remove(player); + } + + //Scoreboard Updater + static { + Bukkit.getScheduler().scheduleAsyncRepeatingTask(Core.getInstance(), () -> { + synchronized (playerBoards) { + for(Map.Entry entry : playerBoards.entrySet()) { + switch (Core.getVersion()) { + case 8: + ((SWScoreboard_8) entry.getValue()).sendScoreboard(entry.getKey()); + break; + case 9: + ((SWScoreboard_9) entry.getValue()).sendScoreboard(entry.getKey()); + break; + case 10: + ((SWScoreboard_10) entry.getValue()).sendScoreboard(entry.getKey()); + break; + case 12: + ((SWScoreboard_12) entry.getValue()).sendScoreboard(entry.getKey()); + break; + case 14: + ((SWScoreboard_14) entry.getValue()).sendScoreboard(entry.getKey()); + break; + case 15: + ((SWScoreboard_15) entry.getValue()).sendScoreboard(entry.getKey()); + break; + } + } + } + }, 10, 5); + } + +}