initial commit
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
name: Lobby
|
||||
version: '1.0-SNAPSHOT'
|
||||
main: de.softwarerat.lobby.Lobby
|
||||
api-version: '1.20'
|
||||
commands:
|
||||
fly:
|
||||
permission: lobby.fly
|
||||
navigator:
|
||||
permission: lobby.navigator
|
||||
Reference in New Issue
Block a user