initial commit

This commit is contained in:
Laura
2026-01-18 15:09:04 +01:00
commit 1d18d3dd7e
15 changed files with 800 additions and 0 deletions
@@ -0,0 +1,53 @@
package de.softwarerat.lobby;
import com.softwarerat.API.prefix.PrefixAPI;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
public class IPrefix {
PrefixAPI prefixAPI;
public IPrefix(PrefixAPI prefixAPI) {
this.prefixAPI = prefixAPI;
}
public void permissiblePrefix(Player player) {
if (player.hasPermission("prefix.Admin")) {
this.prefixAPI.addPlayerToTeam("Admin", 1, player);
} else if (player.hasPermission("prefix.Moderator")) {
this.prefixAPI.addPlayerToTeam("Mod", 2, player);
} else if (player.hasPermission("prefix.Content")) {
this.prefixAPI.addPlayerToTeam("Content", 3, player);
} else if (player.hasPermission("prefix.Creator")) {
this.prefixAPI.addPlayerToTeam("Creator", 4, player);
} else {
this.prefixAPI.addPlayerToTeam("Player", 5, player);
}
}
public void removePlayerFromTeam(Player player) {
if (player.hasPermission("prefix.Admin")) {
this.prefixAPI.removePlayerFromTeam("Admin", 1, player);
} else if (player.hasPermission("prefix.Moderator")) {
this.prefixAPI.removePlayerFromTeam("Mod", 2, player);
} else if (player.hasPermission("prefix.Content")) {
this.prefixAPI.removePlayerFromTeam("Content", 3, player);
} else if (player.hasPermission("prefix.Creator")) {
this.prefixAPI.removePlayerFromTeam("Creator", 4, player);
} else {
this.prefixAPI.removePlayerFromTeam("Player", 5, player);
}
}
public String getRank(Player player) {
if (player.hasPermission("prefix.Admin"))
return ChatColor.RED + "Administrator";
if (player.hasPermission("prefix.Moderator"))
return ChatColor.YELLOW + "Moderator";
if (player.hasPermission("prefix.Content"))
return ChatColor.GOLD + "Content";
if (player.hasPermission("prefix.Creator"))
return ChatColor.DARK_PURPLE + "Creator";
return ChatColor.GRAY + "Spieler";
}
}
@@ -0,0 +1,87 @@
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;
public final class Lobby extends JavaPlugin implements PluginMessageListener {
GameAPI gameAPI;
@Getter
PrefixAPI prefixAPI;
@Override
public void onEnable() {
PluginManager pluginManager = Bukkit.getPluginManager();
// Plugin startup logic
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", this);
gameAPI = new GameAPI();
gameAPI.enableAPI(this);
GameData gameData;
gameData = new GameData(gameAPI);
gameAPI.setGameData(gameData);
Scoreboard scoreboard;
scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
gameData.setScoreboard(scoreboard);
prefixAPI = new PrefixAPI(scoreboard);
IPrefix iPrefix = new IPrefix(prefixAPI);
if (Bukkit.getScoreboardManager().getMainScoreboard().getTeam("1Admin") == null) {
prefixAPI.createPrefix("Admin", 01, ChatColor.RED + "Admin " + ChatColor.GRAY + "| ");
Bukkit.getScoreboardManager().getMainScoreboard().getTeam("1Admin").setColor(ChatColor.GRAY);
} else if (Bukkit.getScoreboardManager().getMainScoreboard().getTeam("2Mod") == null) {
prefixAPI.createPrefix("Mod", 02, ChatColor.YELLOW + "Mod " + ChatColor.GRAY + "| ");
Bukkit.getScoreboardManager().getMainScoreboard().getTeam("2Mod").setColor(ChatColor.GRAY);
} else if (Bukkit.getScoreboardManager().getMainScoreboard().getTeam("3Content") == null) {
prefixAPI.createPrefix("Content", 03, ChatColor.GOLD + "Content " + ChatColor.GRAY + "| ");
Bukkit.getScoreboardManager().getMainScoreboard().getTeam("3Content").setColor(ChatColor.GRAY);
} else if (Bukkit.getScoreboardManager().getMainScoreboard().getTeam("4Creator") == null) {
prefixAPI.createPrefix("Creator", 04, ChatColor.DARK_PURPLE + " Creator " + ChatColor.GRAY + "| ");
Bukkit.getScoreboardManager().getMainScoreboard().getTeam("4Creator").setColor(ChatColor.GRAY);
} else if (Bukkit.getScoreboardManager().getMainScoreboard().getTeam("5Player") == null) {
prefixAPI.createPrefix("Player", 05, "Spieler " + ChatColor.GRAY + "| ");
Bukkit.getScoreboardManager().getMainScoreboard().getTeam("5Player").setColor(ChatColor.GRAY);
}
if (gameAPI == null) {
System.out.println("Error");
}
pluginManager.registerEvents(new JoinListener(iPrefix), this);
pluginManager.registerEvents(new QuitListener(iPrefix), this);
pluginManager.registerEvents(new BuildBreakListener(), this);
pluginManager.registerEvents(new LobbyInventoryClickListener(), this);
getCommand("fly").setExecutor(new FlyCommand());
if (Bukkit.getWorld("world") != null) {
World w = Bukkit.getWorld("world");
Location location = new Location(w, -23.0D, 69.0D, 22.0D);
}
}
@Override
public void onDisable() {
// Plugin shutdown logic
}
@Override
public void onPluginMessageReceived(@NotNull String s, @NotNull Player player, @NotNull byte[] bytes) {
}
}
@@ -0,0 +1,26 @@
package de.softwarerat.lobby.MenuAPI;
import com.softwarerat.API.builder.ItemBuilder;
import lombok.Getter;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public class Navigator extends PageBuilder {
@Getter
ItemStack icon = PageIcon;
public Navigator(Player player) {
super("Server auswählen", new ItemBuilder(Material.GRAY_STAINED_GLASS_PANE).setDisplayname(" ").build(), player);
}
@Override
public void create(Player createdOn) {
PageIcon = new ItemBuilder(Material.STONE).setDisplayname(" ").build();
player.openInventory(page);
System.out.println("test");
}
}
@@ -0,0 +1,101 @@
package de.softwarerat.lobby.MenuAPI;
import de.softwarerat.lobby.Lobby;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;
public abstract class PageBuilder implements Listener {
private static final Map<Player, Boolean> openList = new HashMap<>();
private final Map<Integer, Consumer<InventoryClickEvent>> clickActions;
protected ItemStack PageIcon;
protected ItemStack[] items;
protected ArrayList<Integer> borderInt;
protected Inventory page;
protected Player player;
public PageBuilder(String pageName, ItemStack borderItem, Player player) {
this.borderInt = new ArrayList<>();
this.player = player;
addBorderInt();
openList.put(player, false);
page = Bukkit.createInventory(player, 27, pageName);
borderInt.forEach(integer -> page.setItem(integer, borderItem));
this.clickActions = new HashMap<>();
Bukkit.getPluginManager().registerEvents(this, Lobby.getPlugin(Lobby.class));
create(player);
}
public abstract void create(Player createdOn);
private void addBorderInt() {
borderInt.add(1);
borderInt.add(2);
borderInt.add(3);
borderInt.add(4);
borderInt.add(5);
borderInt.add(6);
borderInt.add(7);
borderInt.add(8);
borderInt.add(0);
borderInt.add(9);
borderInt.add(17);
borderInt.add(19);
borderInt.add(18);
borderInt.add(20);
borderInt.add(21);
borderInt.add(22);
borderInt.add(23);
borderInt.add(24);
borderInt.add(25);
borderInt.add(26);
}
@EventHandler
public void executeActions(InventoryClickEvent clickEvent) {
Inventory clickedInventory = clickEvent.getClickedInventory();
if (clickedInventory == null) {
}
}
public void addItem(ItemStack item, int slot, Consumer<InventoryClickEvent> clickAction) {
this.page.setItem(slot, item);
this.clickActions.put(slot, clickAction);
}
public void addItem(ItemStack item, int slot) {
this.page.setItem(slot, item);
}
@EventHandler
public void openInventory(InventoryOpenEvent openEvent) {
Inventory openInventory = openEvent.getInventory();
if (openInventory.getType() != InventoryType.CHEST) return;
openList.put(player, true);
}
@EventHandler
public void closeInventory(InventoryCloseEvent closeEvent) {
Inventory closeInventory = closeEvent.getInventory();
if (Boolean.FALSE.equals(openList.get(closeEvent.getPlayer()))) return;
if (closeInventory.getType() != InventoryType.CHEST) return;
openList.put(player, false);
}
}
@@ -0,0 +1,6 @@
package de.softwarerat.lobby.MenuAPI;
public class TestMenu {
}
@@ -0,0 +1,27 @@
package de.softwarerat.lobby.commands;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class FlyCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
Player player = Bukkit.getPlayer(commandSender.getName());
assert player != null;
boolean flying = player.isFlying();
if (!flying) {
player.setAllowFlight(true);
player.setFlying(true);
player.sendMessage(ChatColor.RED + "Server " + ChatColor.GRAY + "| Du kannst nun fliegen!");
} else {
player.setAllowFlight(false);
player.setFlying(false);
player.sendMessage(ChatColor.RED + "Server " + ChatColor.GRAY + "| Du kannst nun nicht mehr fliegen!");
}
return false;
}
}
@@ -0,0 +1,56 @@
package de.softwarerat.lobby.listener;
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;
public class JoinListener implements Listener {
IPrefix iPrefix;
public JoinListener(IPrefix iPrefix) {
this.iPrefix = iPrefix;
}
@EventHandler
public void onEvent(PlayerJoinEvent event) {
System.out.println("new join");
Location location = new Location(Bukkit.getWorld("world"), 0.0D, 68.0D, -8.0D);
Player player = event.getPlayer();
player.teleport(location);
this.iPrefix.permissiblePrefix(player);
event.setJoinMessage("");
player.setGameMode(GameMode.ADVENTURE);
System.out.println("playerjoin:" + event.getPlayer().getName());
player.setPlayerListHeader(ChatColor.DARK_PURPLE.toString() + ChatColor.BOLD + "\n Fourty6Media \n");
Bukkit.getOnlinePlayers().forEach(players -> {
players.setPlayerListFooter(ChatColor.DARK_AQUA.toString() + ChatColor.BOLD + "\n Online: " + (long) Bukkit.getOnlinePlayers().size() + " \n");
});
event.getPlayer().getInventory().clear();
SpigotInventory playerInventory = new SpigotInventory(player, Lobby.getPlugin(Lobby.class));
if (player.hasPermission("lobby.build"))
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");
});
}
public void sendPlayer(Player player, String targetServer) {
if (player.hasPermission("network.useServerNavigator")) {
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("Connect");
out.writeUTF(targetServer);
player.sendPluginMessage(Lobby.getPlugin(Lobby.class), "BungeeCord", out.toByteArray());
}
}
}
@@ -0,0 +1,22 @@
package de.softwarerat.lobby.listener;
import de.softwarerat.lobby.IPrefix;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerQuitEvent;
public class QuitListener implements Listener {
IPrefix iPrefix;
public QuitListener(IPrefix iPrefix) {
this.iPrefix = iPrefix;
}
@EventHandler
public void onEvent(PlayerQuitEvent event) {
System.out.println("new Quit");
event.setQuitMessage("");
this.iPrefix.removePlayerFromTeam(event.getPlayer());
}
}