diff --git a/.vscode/settings.json b/.vscode/settings.json
index c5f3f6b..0be1c0c 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,3 +1,4 @@
{
- "java.configuration.updateBuildConfiguration": "interactive"
+ "java.configuration.updateBuildConfiguration": "automatic",
+ "java.compile.nullAnalysis.mode": "automatic"
}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 369b6e2..a61259c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -69,10 +69,10 @@
sonatype
https://oss.sonatype.org/content/groups/public/
-
- gitlab-maven
- https://Gitlab.Softwarerat.com/api/v4/projects/16/packages/maven
-
+
+ gitea
+ http://heimserver.local:36107/api/packages/minecraft/maven
+
@@ -88,13 +88,11 @@
1.20.4-R0.1-SNAPSHOT
provided
-
- com.softwarerat
- GameAPI
- 1.6.4-SNAPSHOT
- system
- ${project.basedir}/GameAPI-1.6.4-SNAPSHOT.jar
-
+
+ com.softwarerat
+ GameAPI
+ 1.6.4-SNAPSHOT
+
org.jetbrains
annotations
diff --git a/src/main/java/de/softwarerat/lobby/IPrefix.java b/src/main/java/de/softwarerat/lobby/IPrefix.java
index cde9d3f..85fffbf 100644
--- a/src/main/java/de/softwarerat/lobby/IPrefix.java
+++ b/src/main/java/de/softwarerat/lobby/IPrefix.java
@@ -1,9 +1,10 @@
package de.softwarerat.lobby;
-import com.softwarerat.API.prefix.PrefixAPI;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
+import com.softwarerat.API.data.prefix.PrefixAPI;
+
public class IPrefix {
PrefixAPI prefixAPI;
diff --git a/src/main/java/de/softwarerat/lobby/Lobby.java b/src/main/java/de/softwarerat/lobby/Lobby.java
index 9fac75c..4b81bc6 100644
--- a/src/main/java/de/softwarerat/lobby/Lobby.java
+++ b/src/main/java/de/softwarerat/lobby/Lobby.java
@@ -1,28 +1,27 @@
package de.softwarerat.lobby;
-import com.softwarerat.API.data.GameData;
-import com.softwarerat.API.listener.BuildBreakListener;
-import com.softwarerat.API.listener.LobbyInventoryClickListener;
-import com.softwarerat.API.prefix.PrefixAPI;
-import com.softwarerat.GameAPI;
-import de.softwarerat.lobby.commands.FlyCommand;
-import de.softwarerat.lobby.listener.JoinListener;
-import de.softwarerat.lobby.listener.QuitListener;
-import lombok.Getter;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
-import org.bukkit.command.CommandExecutor;
import org.bukkit.entity.Player;
-import org.bukkit.event.Listener;
-import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.plugin.messaging.PluginMessageListener;
import org.bukkit.scoreboard.Scoreboard;
import org.jetbrains.annotations.NotNull;
+import com.softwarerat.API.data.GameData;
+import com.softwarerat.API.data.prefix.PrefixAPI;
+import com.softwarerat.API.event.listener.BuildBreakListener;
+import com.softwarerat.API.event.listener.LobbyInventoryClickListener;
+import com.softwarerat.GameAPI;
+
+import de.softwarerat.lobby.commands.FlyCommand;
+import de.softwarerat.lobby.listener.JoinListener;
+import de.softwarerat.lobby.listener.QuitListener;
+import lombok.Getter;
+
public final class Lobby extends JavaPlugin implements PluginMessageListener {
GameAPI gameAPI;
@Getter
@@ -84,4 +83,10 @@ public final class Lobby extends JavaPlugin implements PluginMessageListener {
public void onPluginMessageReceived(@NotNull String s, @NotNull Player player, @NotNull byte[] bytes) {
}
+
+
+ public static Lobby getInstance() {
+ return JavaPlugin.getPlugin(Lobby.class);
+
+ }
}
diff --git a/src/main/java/de/softwarerat/lobby/listener/JoinListener.java b/src/main/java/de/softwarerat/lobby/listener/JoinListener.java
index 0967be0..e5b1360 100644
--- a/src/main/java/de/softwarerat/lobby/listener/JoinListener.java
+++ b/src/main/java/de/softwarerat/lobby/listener/JoinListener.java
@@ -1,16 +1,23 @@
package de.softwarerat.lobby.listener;
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.GameMode;
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerJoinEvent;
+
import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import com.softwarerat.API.builder.SpigotInventory;
import com.softwarerat.API.builder.SpigotItem;
+
import de.softwarerat.lobby.IPrefix;
import de.softwarerat.lobby.Lobby;
-import org.bukkit.*;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.player.PlayerJoinEvent;
+import de.softwarerat.lobby.scoreboard.LobbyScoreboard;
public class JoinListener implements Listener {
@@ -41,6 +48,9 @@ public class JoinListener implements Listener {
playerInventory.setSlot(new SpigotItem(Material.GRASS_BLOCK).setName(ChatColor.BLUE.toString() + ChatColor.BOLD + "Bauserver Joinen " + ChatColor.RESET + ChatColor.GRAY + "(Click)").build(), 4, (click) -> {
sendPlayer(player, "build-1");
});
+
+
+ new LobbyScoreboard(player);
}
public void sendPlayer(Player player, String targetServer) {
diff --git a/src/main/java/de/softwarerat/lobby/scoreboard/EntryName.java b/src/main/java/de/softwarerat/lobby/scoreboard/EntryName.java
new file mode 100644
index 0000000..4db0616
--- /dev/null
+++ b/src/main/java/de/softwarerat/lobby/scoreboard/EntryName.java
@@ -0,0 +1,30 @@
+package de.softwarerat.lobby.scoreboard;
+
+import org.bukkit.ChatColor;
+
+public enum EntryName {
+ ENTRY_0(0, ChatColor.DARK_PURPLE.toString()),
+ ENTRY_1(1, ChatColor.DARK_GRAY.toString()),
+ ENTRY_2(2, ChatColor.BOLD.toString()),
+ ENTRY_3(3, ChatColor.DARK_RED.toString()),
+ ENTRY_4(4, ChatColor.GRAY.toString()),
+ ENTRY_5(5, ChatColor.DARK_GREEN.toString()),
+ ENTRY_6(6, ChatColor.LIGHT_PURPLE.toString()),
+ ENTRY_7(7, ChatColor.UNDERLINE.toString());
+
+ private final int entry;
+ private final String entryName;
+
+ EntryName(int entry, String entryName) {
+ this.entry = entry;
+ this.entryName = entryName;
+ }
+
+ public int getEntry() {
+ return entry;
+ }
+
+ public String getEntryName() {
+ return entryName;
+ }
+}
diff --git a/src/main/java/de/softwarerat/lobby/scoreboard/LobbyScoreboard.java b/src/main/java/de/softwarerat/lobby/scoreboard/LobbyScoreboard.java
new file mode 100644
index 0000000..2929e27
--- /dev/null
+++ b/src/main/java/de/softwarerat/lobby/scoreboard/LobbyScoreboard.java
@@ -0,0 +1,70 @@
+package de.softwarerat.lobby.scoreboard;
+
+import org.bukkit.ChatColor;
+import org.bukkit.entity.Player;
+import org.bukkit.scheduler.BukkitRunnable;
+
+import de.softwarerat.lobby.Lobby;
+
+public class LobbyScoreboard extends ScoreboardBuilder {
+
+ private int socialId;
+
+ public LobbyScoreboard(Player player) {
+ super(player, ChatColor.DARK_PURPLE.toString() + ChatColor.BOLD + " twitch.tv/DerBanko ");
+ socialId = 0;
+
+ run();
+ }
+
+ @Override
+ public void createScoreboard() {
+ setScore("test", 8);
+ setScore(ChatColor.DARK_GRAY.toString(), 7);
+ setScore(ChatColor.GRAY + "Dein Rang" + ChatColor.DARK_GRAY + ":", 6);
+
+ if(player.isOp()) {
+ setScore(ChatColor.RED + "Operator", 5);
+ } else {
+ setScore(ChatColor.GRAY + "Spieler", 5);
+ }
+
+ setScore(ChatColor.GRAY.toString(), 4);
+ setScore(ChatColor.AQUA + "twitter.com/DerBanko", 3);
+ setScore(ChatColor.RED.toString(), 2);
+ setScore(ChatColor.RED + player.getAddress().getHostName(), 1);
+ setScore(ChatColor.AQUA.toString(), 0);
+ }
+
+ @Override
+ public void update() {
+
+ }
+
+ private void run() {
+ new BukkitRunnable() {
+ @Override
+ public void run() {
+
+ switch (socialId) {
+ case 0:
+ setScore(ChatColor.AQUA + "softwarerat.com", 3);
+ break;
+ case 1:
+ setScore(ChatColor.DARK_PURPLE + "twitch.tv/zlavra", 3);
+ break;
+ case 2:
+ setScore(ChatColor.DARK_RED + "@zlavra:matrix.org", 3);
+ break;
+ }
+
+ socialId++;
+
+ if(socialId >= 3) {
+ socialId = 0;
+ }
+
+ }
+ }.runTaskTimer(Lobby.getInstance(), 20, 20);
+ }
+}
diff --git a/src/main/java/de/softwarerat/lobby/scoreboard/ScoreboardBuilder.java b/src/main/java/de/softwarerat/lobby/scoreboard/ScoreboardBuilder.java
new file mode 100644
index 0000000..6ae4e40
--- /dev/null
+++ b/src/main/java/de/softwarerat/lobby/scoreboard/ScoreboardBuilder.java
@@ -0,0 +1,114 @@
+package de.softwarerat.lobby.scoreboard;
+
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import org.bukkit.scoreboard.DisplaySlot;
+import org.bukkit.scoreboard.Objective;
+import org.bukkit.scoreboard.Scoreboard;
+import org.bukkit.scoreboard.Team;
+
+public abstract class ScoreboardBuilder {
+
+ protected final Scoreboard scoreboard;
+ protected final Objective objective;
+
+ protected final Player player;
+
+ public ScoreboardBuilder(Player player, String displayName) {
+ this.player = player;
+
+ if(player.getScoreboard().equals(Bukkit.getScoreboardManager().getMainScoreboard())) {
+ player.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
+ }
+
+ this.scoreboard = player.getScoreboard();
+
+ if(this.scoreboard.getObjective("display") != null) {
+ this.scoreboard.getObjective("display").unregister();
+ }
+
+ this.objective = this.scoreboard.registerNewObjective("display", "dummy", displayName);
+ this.objective.setDisplaySlot(DisplaySlot.SIDEBAR);
+
+ createScoreboard();
+ }
+
+ public abstract void createScoreboard();
+
+ public abstract void update();
+
+ public void setDisplayName(String displayName) {
+ this.objective.setDisplayName(displayName);
+ }
+
+ public void setScore(String content, int score) {
+ Team team = getTeamByScore(score);
+
+ if(team == null) {
+ return;
+ }
+
+ team.setPrefix(content);
+ showScore(score);
+ }
+
+ public void removeScore(int score) {
+ hideScore(score);
+ }
+
+ private EntryName getEntryNameByScore(int score) {
+ for(EntryName name : EntryName.values()) {
+ if(score == name.getEntry()) {
+ return name;
+ }
+ }
+
+ return null;
+ }
+
+ private Team getTeamByScore(int score) {
+ EntryName name = getEntryNameByScore(score);
+
+ if(name == null) {
+ return null;
+ }
+
+ Team team = scoreboard.getEntryTeam(name.getEntryName());
+
+ if(team != null) {
+ return team;
+ }
+
+ team = scoreboard.registerNewTeam(name.name());
+ team.addEntry(name.getEntryName());
+ return team;
+ }
+
+ private void showScore(int score) {
+ EntryName name = getEntryNameByScore(score);
+
+ if(name == null) {
+ return;
+ }
+
+ if(objective.getScore(name.getEntryName()).isScoreSet()) {
+ return;
+ }
+
+ objective.getScore(name.getEntryName()).setScore(score);
+ }
+
+ private void hideScore(int score) {
+ EntryName name = getEntryNameByScore(score);
+
+ if(name == null) {
+ return;
+ }
+
+ if(!objective.getScore(name.getEntryName()).isScoreSet()) {
+ return;
+ }
+
+ scoreboard.resetScores(name.getEntryName());
+ }
+}