Major Changes, still big WIP
This commit is contained in:
parent
6b8ef14f55
commit
33d329cda5
@ -0,0 +1,73 @@
|
|||||||
|
package de.ventority.randomizedminigames.GUI;
|
||||||
|
|
||||||
|
import de.ventority.randomizedminigames.RandomizedMinigames;
|
||||||
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.NamespacedKey;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import org.bukkit.persistence.PersistentDataContainer;
|
||||||
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
|
|
||||||
|
public abstract class BaseWindow {
|
||||||
|
private final Player p;
|
||||||
|
private final Inventory gui;
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
public BaseWindow(Player p, String status) {
|
||||||
|
this.p = p;
|
||||||
|
gui = Bukkit.createInventory(p, 54, RandomizedMinigames.serverSettingsHandler.getServerName()
|
||||||
|
+ ChatColor.RESET + ChatColor.DARK_GRAY + " " + status);
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fillBorder() {
|
||||||
|
ItemStack stack = new ItemStack(Material.BLACK_STAINED_GLASS_PANE, 1);
|
||||||
|
ItemMeta meta = stack.getItemMeta();
|
||||||
|
meta.setDisplayName(" ");
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
gui.setItem(i, new ItemStack(Material.BLACK_STAINED_GLASS_PANE, 1));
|
||||||
|
gui.getItem(i).setItemMeta(meta);
|
||||||
|
}
|
||||||
|
for (int i = 1; i < 5; i++) {
|
||||||
|
gui.setItem(9 * i, new ItemStack(Material.BLACK_STAINED_GLASS_PANE, 1));
|
||||||
|
gui.getItem(9 * i).setItemMeta(meta);
|
||||||
|
gui.setItem(8 + 9 * i, new ItemStack(Material.BLACK_STAINED_GLASS_PANE, 1));
|
||||||
|
gui.getItem(8 + 9 * i).setItemMeta(meta);
|
||||||
|
}
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
gui.setItem(i + 5 * 9, new ItemStack(Material.BLACK_STAINED_GLASS_PANE, 1));
|
||||||
|
gui.getItem(i + 5 * 9).setItemMeta(meta);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void fillGUI();
|
||||||
|
|
||||||
|
public void buildWindow() {
|
||||||
|
fillBorder();
|
||||||
|
fillGUI();
|
||||||
|
p.openInventory(gui);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemMeta addNBT(ItemMeta meta, String key, String value) {
|
||||||
|
NamespacedKey namespacedKey = new NamespacedKey(RandomizedMinigames.serverSettingsHandler.getPlugin(), key);
|
||||||
|
PersistentDataContainer data = meta.getPersistentDataContainer();
|
||||||
|
data.set(namespacedKey, PersistentDataType.STRING, value);
|
||||||
|
return meta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Inventory getGUI() {
|
||||||
|
return gui;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Player getPlayer() {
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,6 +2,7 @@ package de.ventority.randomizedminigames.GUI;
|
|||||||
|
|
||||||
|
|
||||||
import de.ventority.randomizedminigames.MinigameHandler;
|
import de.ventority.randomizedminigames.MinigameHandler;
|
||||||
|
import de.ventority.randomizedminigames.Minigames.Minigame;
|
||||||
import de.ventority.randomizedminigames.RandomizedMinigames;
|
import de.ventority.randomizedminigames.RandomizedMinigames;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -18,12 +19,17 @@ import org.bukkit.persistence.PersistentDataType;
|
|||||||
public class GUIClickEvent implements Listener {
|
public class GUIClickEvent implements Listener {
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onClickEvent(InventoryClickEvent event) {
|
public void onClickEvent(InventoryClickEvent event) {
|
||||||
Inventory inventory = event.getInventory();
|
Inventory inventory = event.getClickedInventory();
|
||||||
|
if (inventory == null) return;
|
||||||
if (inventory.getItem(0) == null) return;
|
if (inventory.getItem(0) == null) return;
|
||||||
if (hasNBTData(inventory.getItem(0))) {
|
ItemStack firstItem = inventory.getItem(0);
|
||||||
if (event.getCurrentItem() == null) return;
|
if (hasNBTData(firstItem)) {
|
||||||
if (event.getCurrentItem().getType() == Material.DIAMOND_SWORD) {
|
event.setCancelled(true);
|
||||||
MinigameHandler.createMinigame(0);
|
if (getStatus(firstItem).equals("selectMinigame")) {
|
||||||
|
handleMinigame(event);
|
||||||
|
}
|
||||||
|
if (getStatus(firstItem).equals("selectSettings")) {
|
||||||
|
handleSettings(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -37,4 +43,30 @@ public class GUIClickEvent implements Listener {
|
|||||||
PersistentDataContainer data = meta.getPersistentDataContainer();
|
PersistentDataContainer data = meta.getPersistentDataContainer();
|
||||||
return "1".equals(data.get(key, PersistentDataType.STRING));
|
return "1".equals(data.get(key, PersistentDataType.STRING));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getStatus(ItemStack item) {
|
||||||
|
if (item == null || !item.hasItemMeta()) return "";
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
NamespacedKey key = new NamespacedKey(RandomizedMinigames.serverSettingsHandler.getPlugin(), "IsMinigamePlugin");
|
||||||
|
if (meta == null) return "";
|
||||||
|
PersistentDataContainer data = meta.getPersistentDataContainer();
|
||||||
|
return data.get(key, PersistentDataType.STRING);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleMinigame(InventoryClickEvent event) {
|
||||||
|
for (Minigame minigame : Minigame.values()) {
|
||||||
|
if (event.getCurrentItem().getType() == minigame.getMaterial()) {
|
||||||
|
MinigameHandler.createMinigame(minigame.getNumber());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleSettings(InventoryClickEvent event) {
|
||||||
|
if (event.getCurrentItem() == null) return;
|
||||||
|
PersistentDataContainer data = event.getCurrentItem().getItemMeta().getPersistentDataContainer();
|
||||||
|
NamespacedKey key = new NamespacedKey(RandomizedMinigames.serverSettingsHandler.getPlugin(), "State");
|
||||||
|
if (data.get(key, PersistentDataType.STRING).equals("addContestants")) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package de.ventority.randomizedminigames.GUI;
|
package de.ventority.randomizedminigames.GUI;
|
||||||
|
|
||||||
|
import de.ventority.randomizedminigames.Minigames.Minigame;
|
||||||
import de.ventority.randomizedminigames.RandomizedMinigames;
|
import de.ventority.randomizedminigames.RandomizedMinigames;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@ -27,12 +28,17 @@ public class MinigamesDisplayWindow {
|
|||||||
public void buildWindow() {
|
public void buildWindow() {
|
||||||
fillBorder();
|
fillBorder();
|
||||||
fillGUI();
|
fillGUI();
|
||||||
addNBT();
|
|
||||||
p.openInventory(gui);
|
p.openInventory(gui);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void fillGUI() {
|
private void fillGUI() {
|
||||||
gui.addItem(new ItemStack(Material.DIAMOND_SWORD));
|
for (Minigame minigame : Minigame.values()) {
|
||||||
|
ItemStack item = new ItemStack(minigame.getMaterial(), 1);
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
assert meta != null;
|
||||||
|
meta.setDisplayName(minigame.getName());
|
||||||
|
gui.addItem(item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void fillBorder() {
|
private void fillBorder() {
|
||||||
@ -53,18 +59,22 @@ public class MinigamesDisplayWindow {
|
|||||||
gui.setItem(i + 5 * 9, new ItemStack(Material.BLACK_STAINED_GLASS_PANE, 1));
|
gui.setItem(i + 5 * 9, new ItemStack(Material.BLACK_STAINED_GLASS_PANE, 1));
|
||||||
gui.getItem(i + 5 * 9).setItemMeta(meta);
|
gui.getItem(i + 5 * 9).setItemMeta(meta);
|
||||||
}
|
}
|
||||||
|
ItemMeta meta1 = addNBT(gui.getItem(0).getItemMeta(), "Status", status);
|
||||||
|
meta1 = addNBT(meta1, "IsMinigamePlugin", "1");
|
||||||
|
gui.getItem(0).setItemMeta(meta1);
|
||||||
|
|
||||||
|
ItemStack settings = new ItemStack(Material.REDSTONE, 1);
|
||||||
|
ItemMeta settingsMeta = settings.getItemMeta();
|
||||||
|
settingsMeta.setDisplayName("Settings");
|
||||||
|
settingsMeta = addNBT(settingsMeta, "Status", "selectSettings");
|
||||||
|
settings.setItemMeta(settingsMeta);
|
||||||
|
gui.setItem(9, settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addNBT() {
|
private ItemMeta addNBT(ItemMeta meta, String key, String value) {
|
||||||
ItemStack item = gui.getItem(0);
|
NamespacedKey key1 = new NamespacedKey(RandomizedMinigames.serverSettingsHandler.getPlugin(), key);
|
||||||
assert item != null;
|
|
||||||
ItemMeta meta = item.getItemMeta();
|
|
||||||
NamespacedKey key1 = new NamespacedKey(RandomizedMinigames.serverSettingsHandler.getPlugin(), "Status");
|
|
||||||
NamespacedKey key2 = new NamespacedKey(RandomizedMinigames.serverSettingsHandler.getPlugin(), "IsMinigamePlugin");
|
|
||||||
assert meta != null;
|
|
||||||
PersistentDataContainer data = meta.getPersistentDataContainer();
|
PersistentDataContainer data = meta.getPersistentDataContainer();
|
||||||
data.set(key1, PersistentDataType.STRING, status);
|
data.set(key1, PersistentDataType.STRING, value);
|
||||||
data.set(key2, PersistentDataType.STRING, "1");
|
return meta;
|
||||||
item.setItemMeta(meta);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,27 @@
|
|||||||
|
package de.ventority.randomizedminigames.GUI;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
public class SettingsWindow extends BaseWindow{
|
||||||
|
|
||||||
|
public SettingsWindow(Player p, String status) {
|
||||||
|
super(p, status);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fillGUI() {
|
||||||
|
Inventory gui = getGUI();
|
||||||
|
ItemStack setContestants = new ItemStack(Material.ZOMBIE_HEAD, 1);
|
||||||
|
ItemMeta setContestantsMeta = setContestants.getItemMeta();
|
||||||
|
setContestantsMeta.setDisplayName("Contestants");
|
||||||
|
setContestantsMeta = addNBT(setContestantsMeta, "Status", "addContestants");
|
||||||
|
setContestants.setItemMeta(setContestantsMeta);
|
||||||
|
gui.addItem(setContestants);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
package de.ventority.randomizedminigames;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class GeneralSettings {
|
||||||
|
public List<Player> contestants = new ArrayList<>();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,8 +1,7 @@
|
|||||||
package de.ventority.randomizedminigames;
|
package de.ventority.randomizedminigames;
|
||||||
|
|
||||||
import de.ventority.randomizedminigames.GUI.GUIClickEvent;
|
import de.ventority.randomizedminigames.Minigames.ForceItemBattle;
|
||||||
import de.ventority.randomizedminigames.Minigames.ItemForceBattle;
|
import de.ventority.randomizedminigames.Minigames.MinigameBase;
|
||||||
import de.ventority.randomizedminigames.Minigames.Minigame;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -11,15 +10,15 @@ import java.util.List;
|
|||||||
import static org.bukkit.Bukkit.getServer;
|
import static org.bukkit.Bukkit.getServer;
|
||||||
|
|
||||||
public class MinigameHandler {
|
public class MinigameHandler {
|
||||||
private static List<Minigame> minigames = new ArrayList<>();
|
private static List<MinigameBase> minigames = new ArrayList<>();
|
||||||
|
|
||||||
public static void createMinigame(int gameNumber) {
|
public static void createMinigame(int gameNumber) {
|
||||||
List<Player> players = Bukkit.getOnlinePlayers().stream().map(p -> ((Player) p)).toList();
|
List<Player> players = Bukkit.getOnlinePlayers().stream().map(p -> ((Player) p)).toList();
|
||||||
minigames.add(new ItemForceBattle(players));
|
minigames.add(new ForceItemBattle(players));
|
||||||
getServer().getPluginManager().registerEvents(minigames.getFirst(), RandomizedMinigames.serverSettingsHandler.getPlugin());
|
getServer().getPluginManager().registerEvents(minigames.getFirst(), RandomizedMinigames.serverSettingsHandler.getPlugin());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void deleteGame(Minigame minigame) {
|
public static void deleteGame(MinigameBase minigame) {
|
||||||
minigames.remove(minigame);
|
minigames.remove(minigame);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,15 +11,16 @@ import org.bukkit.boss.BossBar;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
import org.bukkit.event.entity.EntityPickupItemEvent;
|
import org.bukkit.event.entity.EntityPickupItemEvent;
|
||||||
|
import org.bukkit.event.inventory.CraftItemEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
public class ItemForceBattle implements Minigame, Listener {
|
public class ForceItemBattle implements MinigameBase, Listener {
|
||||||
private final HashMap<Player, ItemStack> currentItems;
|
private final HashMap<Player, ItemStack> currentItems;
|
||||||
private final HashMap<Player, Integer> currentScores;
|
private final HashMap<Player, Integer> currentScores;
|
||||||
private final HashMap<Player, BossBar> itemDisplays;
|
private final HashMap<Player, BossBar> itemDisplays;
|
||||||
@ -28,7 +29,7 @@ public class ItemForceBattle implements Minigame, Listener {
|
|||||||
private final List<Player> contestants;
|
private final List<Player> contestants;
|
||||||
|
|
||||||
|
|
||||||
public ItemForceBattle(List<Player> players) {
|
public ForceItemBattle(List<Player> players) {
|
||||||
id = new Random().nextInt(1024);
|
id = new Random().nextInt(1024);
|
||||||
currentItems = new HashMap<>();
|
currentItems = new HashMap<>();
|
||||||
currentScores = new HashMap<>();
|
currentScores = new HashMap<>();
|
||||||
@ -140,6 +141,10 @@ public class ItemForceBattle implements Minigame, Listener {
|
|||||||
|
|
||||||
scoreboardManager.removeScoreboard();
|
scoreboardManager.removeScoreboard();
|
||||||
scoreboardManager = null;
|
scoreboardManager = null;
|
||||||
|
|
||||||
|
for (Player player : contestants) {
|
||||||
|
player.sendTitle(winner.getDisplayName() + " hat gewonnen!", "Die Player werden jetzt zurückgesetzt.", 10, 70, 20);
|
||||||
|
}
|
||||||
MinigameHandler.deleteGame(this);
|
MinigameHandler.deleteGame(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,7 +156,15 @@ public class ItemForceBattle implements Minigame, Listener {
|
|||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
if (currentItems.containsKey(eventPlayer))
|
if (currentItems.containsKey(eventPlayer))
|
||||||
if (e.getItem().getItemStack().getType() == currentItems.get(eventPlayer).getType())
|
checkItem(eventPlayer, e.getItem().getItemStack());
|
||||||
checkItem(eventPlayer, e.getItem().getItemStack());
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onItemCraft(CraftItemEvent e) {
|
||||||
|
if (e.getCurrentItem() == null)
|
||||||
|
return;
|
||||||
|
Player p = (Player)e.getWhoClicked();
|
||||||
|
if (currentItems.containsKey(p))
|
||||||
|
checkItem(p, e.getCurrentItem());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,17 +1,28 @@
|
|||||||
package de.ventority.randomizedminigames.Minigames;
|
package de.ventority.randomizedminigames.Minigames;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
import java.util.List;
|
public enum Minigame {
|
||||||
|
ForceItemBattle(Material.DIAMOND_SWORD, "Force Item Battle", 0);
|
||||||
|
|
||||||
public interface Minigame extends Listener {
|
Material material;
|
||||||
int getID();
|
String name;
|
||||||
String getName();
|
int number;
|
||||||
int getPlayerIntervals();
|
Minigame(Material m, String s, int i) {
|
||||||
int getMinPlayers();
|
material = m;
|
||||||
int getMaxPlayers();
|
name = s;
|
||||||
ItemStack getSymbol();
|
number = i;
|
||||||
void addPlayers(List<Player> players);
|
}
|
||||||
|
|
||||||
|
public Material getMaterial() {
|
||||||
|
return material;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getNumber() {
|
||||||
|
return number;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,17 @@
|
|||||||
|
package de.ventority.randomizedminigames.Minigames;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface MinigameBase extends Listener {
|
||||||
|
int getID();
|
||||||
|
String getName();
|
||||||
|
int getPlayerIntervals();
|
||||||
|
int getMinPlayers();
|
||||||
|
int getMaxPlayers();
|
||||||
|
ItemStack getSymbol();
|
||||||
|
void addPlayers(List<Player> players);
|
||||||
|
}
|
||||||
@ -1,13 +1,8 @@
|
|||||||
package de.ventority.randomizedminigames;
|
package de.ventority.randomizedminigames;
|
||||||
|
|
||||||
import de.ventority.randomizedminigames.GUI.GUIClickEvent;
|
import de.ventority.randomizedminigames.GUI.GUIClickEvent;
|
||||||
import de.ventority.randomizedminigames.Minigames.ItemForceBattle;
|
|
||||||
import de.ventority.randomizedminigames.Minigames.Minigame;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public final class RandomizedMinigames extends JavaPlugin {
|
public final class RandomizedMinigames extends JavaPlugin {
|
||||||
public static final ServerSettingsHandler serverSettingsHandler = new ServerSettingsHandler();
|
public static final ServerSettingsHandler serverSettingsHandler = new ServerSettingsHandler();
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import org.bukkit.entity.Player;
|
|||||||
public class SelectMinigame implements CommandExecutor {
|
public class SelectMinigame implements CommandExecutor {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) {
|
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) {
|
||||||
MinigamesDisplayWindow window = new MinigamesDisplayWindow((Player) commandSender, "MinigameSelect");
|
MinigamesDisplayWindow window = new MinigamesDisplayWindow((Player) commandSender, "minigameSelect");
|
||||||
window.buildWindow();
|
window.buildWindow();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user