Update prefix, join listener, and add scoreboard package

This commit is contained in:
Laura
2026-08-09 15:03:52 +02:00
parent 9b4fad07aa
commit 057a4b72fc
8 changed files with 259 additions and 30 deletions
+2 -1
View File
@@ -1,3 +1,4 @@
{ {
"java.configuration.updateBuildConfiguration": "interactive" "java.configuration.updateBuildConfiguration": "automatic",
"java.compile.nullAnalysis.mode": "automatic"
} }
+2 -4
View File
@@ -70,8 +70,8 @@
<url>https://oss.sonatype.org/content/groups/public/</url> <url>https://oss.sonatype.org/content/groups/public/</url>
</repository> </repository>
<repository> <repository>
<id>gitlab-maven</id> <id>gitea</id>
<url>https://Gitlab.Softwarerat.com/api/v4/projects/16/packages/maven</url> <url>http://heimserver.local:36107/api/packages/minecraft/maven</url>
</repository> </repository>
</repositories> </repositories>
@@ -92,8 +92,6 @@
<groupId>com.softwarerat</groupId> <groupId>com.softwarerat</groupId>
<artifactId>GameAPI</artifactId> <artifactId>GameAPI</artifactId>
<version>1.6.4-SNAPSHOT</version> <version>1.6.4-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/GameAPI-1.6.4-SNAPSHOT.jar</systemPath>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.jetbrains</groupId> <groupId>org.jetbrains</groupId>
@@ -1,9 +1,10 @@
package de.softwarerat.lobby; package de.softwarerat.lobby;
import com.softwarerat.API.prefix.PrefixAPI;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.softwarerat.API.data.prefix.PrefixAPI;
public class IPrefix { public class IPrefix {
PrefixAPI prefixAPI; PrefixAPI prefixAPI;
+17 -12
View File
@@ -1,28 +1,27 @@
package de.softwarerat.lobby; 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.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.command.CommandExecutor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.plugin.messaging.PluginMessageListener; import org.bukkit.plugin.messaging.PluginMessageListener;
import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.Scoreboard;
import org.jetbrains.annotations.NotNull; 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 { public final class Lobby extends JavaPlugin implements PluginMessageListener {
GameAPI gameAPI; GameAPI gameAPI;
@Getter @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 void onPluginMessageReceived(@NotNull String s, @NotNull Player player, @NotNull byte[] bytes) {
} }
public static Lobby getInstance() {
return JavaPlugin.getPlugin(Lobby.class);
}
} }
@@ -1,16 +1,23 @@
package de.softwarerat.lobby.listener; 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.ByteArrayDataOutput;
import com.google.common.io.ByteStreams; import com.google.common.io.ByteStreams;
import com.softwarerat.API.builder.SpigotInventory; import com.softwarerat.API.builder.SpigotInventory;
import com.softwarerat.API.builder.SpigotItem; import com.softwarerat.API.builder.SpigotItem;
import de.softwarerat.lobby.IPrefix; import de.softwarerat.lobby.IPrefix;
import de.softwarerat.lobby.Lobby; import de.softwarerat.lobby.Lobby;
import org.bukkit.*; import de.softwarerat.lobby.scoreboard.LobbyScoreboard;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
public class JoinListener implements Listener { 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) -> { 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"); sendPlayer(player, "build-1");
}); });
new LobbyScoreboard(player);
} }
public void sendPlayer(Player player, String targetServer) { public void sendPlayer(Player player, String targetServer) {
@@ -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;
}
}
@@ -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);
}
}
@@ -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());
}
}