diff --git a/src/main/java/de/fanta/challenges/Bingo.java b/src/main/java/de/fanta/challenges/Bingo.java new file mode 100644 index 0000000..f71c77e --- /dev/null +++ b/src/main/java/de/fanta/challenges/Bingo.java @@ -0,0 +1,82 @@ +package de.fanta.challenges; + +import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.utils.guiutils.GUIUtils; +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +public class Bingo { + + private Challenges plugin = Challenges.getPlugin(); + + private boolean running; + + private List materials; + private Map> playerMaterials; + + public Bingo() { + this.materials = new ArrayList(); + this.playerMaterials = new HashMap<>(); + } + + public void setMaterials(List materials) { + this.materials = materials; + } + + public List getMaterials() { + return materials; + } + + public Map> getPlayerMaterials() { + return playerMaterials; + } + + public boolean isRunning() { + return running; + } + + public void setRunning(boolean running) { + this.running = running; + } + + public boolean addDiscoveredItem(Player player, ItemStack itemStack) { + UUID uuid = player.getUniqueId(); + Material material = itemStack.getType(); + if (this.materials.contains(material)) { + List items = new ArrayList<>(); + if (playerMaterials.get(uuid) != null) { + items = playerMaterials.get(uuid); + } + if (!items.contains(material)) { + items.add(material); + playerMaterials.put(uuid, items); + plugin.getScoreManager().updateScore(player, 1); + ChatUtil.sendNormalMessage(player, "Item: " + ChatUtil.PLAYER + itemStack.getI18NDisplayName() + ChatUtil.NORMAL + " wurde Registriert"); + player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F); + + if(plugin.getScoreManager().getScore(player) == materials.size()){ + ChatUtil.sendNormalMessage(player, "Wuhuu du hast gewonnen :>"); + plugin.getTimer().stopTimer(); + GUIUtils.sendTitleToAll("Event", player.getName() + " hat alle Items gefunden!", ChatUtil.PLAYER); + for (Player pp : Bukkit.getOnlinePlayers()) { + ChatUtil.sendNormalMessage(pp, ChatUtil.PLAYER + player.getName() + ChatUtil.NORMAL + " hat alle Items gefunden!"); + pp.setGameMode(GameMode.SPECTATOR); + } + } + return true; + } + } + return false; + } + +} diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java index 1262148..adc676a 100644 --- a/src/main/java/de/fanta/challenges/Challenges.java +++ b/src/main/java/de/fanta/challenges/Challenges.java @@ -6,6 +6,9 @@ package de.fanta.challenges; import de.fanta.challenges.challenges.RandomDrops; +import de.fanta.challenges.guis.eventgui.EventGui; +import de.fanta.challenges.guis.eventgui.EventItemsGui; +import de.fanta.challenges.listeners.BingoListener; import de.fanta.challenges.scoreboard.ScoreBoardManager; import de.fanta.challenges.commands.CommandRegistration; import de.fanta.challenges.events.PlayerCountChangedEvent; @@ -28,6 +31,7 @@ import de.fanta.challenges.listeners.QuitJoinListener; import de.fanta.challenges.scoreboard.ScoreManager; import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.utils.guiutils.GUIUtils; import net.md_5.bungee.api.ChatColor; import org.bukkit.BanList; import org.bukkit.Bukkit; @@ -42,6 +46,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import java.io.File; @@ -62,6 +67,8 @@ private Timer timer; + private Bingo bingo; + private BackpackGui backpack; private ScoreBoardManager sbManager; @@ -86,6 +93,7 @@ this.timer = new Timer(this); this.rndDrops = new RandomDrops(); + this.bingo = new Bingo(); this.scoreManager = new ScoreManager(this); @@ -93,20 +101,26 @@ new CommandRegistration(this).registerCommands(); - Bukkit.getPluginManager().registerEvents(new InventoryClickListener(), this); - Bukkit.getPluginManager().registerEvents(new QuitJoinListener(), this); - Bukkit.getPluginManager().registerEvents(new BlockDestroyListener(), this); - Bukkit.getPluginManager().registerEvents(new BlockCreateListener(), this); - Bukkit.getPluginManager().registerEvents(new InteractListener(), this); - Bukkit.getPluginManager().registerEvents(new DamageListener(), this); - Bukkit.getPluginManager().registerEvents(new DeathListener(), this); - Bukkit.getPluginManager().registerEvents(new PlayerListener(), this); - Bukkit.getPluginManager().registerEvents(new TimerGui(), this); - Bukkit.getPluginManager().registerEvents(new ResetGui(), this); - Bukkit.getPluginManager().registerEvents(new MainGui(), this); - Bukkit.getPluginManager().registerEvents(new SettingsGui(), this); - Bukkit.getPluginManager().registerEvents(new ServerSettingsGui(), this); - Bukkit.getPluginManager().registerEvents(new OtherSettingsGui(), this); + PluginManager pM = Bukkit.getPluginManager(); + pM.registerEvents(new InventoryClickListener(), this); + pM.registerEvents(new QuitJoinListener(), this); + pM.registerEvents(new BlockDestroyListener(), this); + pM.registerEvents(new BlockCreateListener(), this); + pM.registerEvents(new InteractListener(), this); + pM.registerEvents(new DamageListener(), this); + pM.registerEvents(new DeathListener(), this); + pM.registerEvents(new PlayerListener(), this); + pM.registerEvents(new TimerGui(), this); + pM.registerEvents(new ResetGui(), this); + pM.registerEvents(new MainGui(), this); + pM.registerEvents(new SettingsGui(), this); + pM.registerEvents(new ServerSettingsGui(), this); + pM.registerEvents(new OtherSettingsGui(), this); + pM.registerEvents(new EventGui(), this); + pM.registerEvents(new BingoListener(), this); + pM.registerEvents(new EventItemsGui(), this); + + saveDefaultConfig(); reloadConfig(); @@ -140,9 +154,9 @@ } Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> { - Bukkit.getPluginManager().callEvent(new ServerStatusChangedEvent(true)); - Bukkit.getPluginManager().callEvent(new TimerChangedEvent(timer.isRunning())); - Bukkit.getPluginManager().callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size())); + pM.callEvent(new ServerStatusChangedEvent(true)); + pM.callEvent(new TimerChangedEvent(timer.isRunning())); + pM.callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size())); }, 200L); } @@ -160,6 +174,10 @@ e.printStackTrace(); } getConfig().set("timertime", timer.getTime()); + if (getConfig().getBoolean("event.enabled")) { + GUIUtils.setConfig("event.enabled", false); + getScoreManager().saveScores(); + } saveConfig(); getLogger().info("Plugin unloaded"); } @@ -255,6 +273,14 @@ return timer; } + public Bingo getBingo() { + return bingo; + } + + public void setBingo(Bingo bingo) { + this.bingo = bingo; + } + public boolean isWaitingForShutdown() { return waitingForShutdown; } diff --git a/src/main/java/de/fanta/challenges/Timer.java b/src/main/java/de/fanta/challenges/Timer.java index d0d398c..d170c3b 100644 --- a/src/main/java/de/fanta/challenges/Timer.java +++ b/src/main/java/de/fanta/challenges/Timer.java @@ -2,6 +2,7 @@ import de.fanta.challenges.events.TimerChangedEvent; import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.utils.guiutils.GUIUtils; import de.iani.cubesideutils.StringUtil; import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; @@ -54,13 +55,20 @@ if (reverse) { if (time <= 0) { - for (Player p : Bukkit.getOnlinePlayers()) { - p.setGameMode(GameMode.SPECTATOR); - p.sendTitle(ChatColor.DARK_RED + "ZEIT ABGELAUFEN!", ChatColor.RED + "Challenge fehgeschlagen", 10, 60, 10); - } - Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.DARK_RED + " Die Zeit ist abgelaufen und die Challenge somit fehlgeschlagen!"); - Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.GREEN + " Seed: " + ChatColor.AQUA + Bukkit.getWorlds().get(0).getSeed()); + if (!plugin.getConfig().getBoolean("event.enabled")) { + for (Player p : Bukkit.getOnlinePlayers()) { + p.setGameMode(GameMode.SPECTATOR); + p.sendTitle(ChatColor.DARK_RED + "ZEIT ABGELAUFEN!", ChatColor.RED + "Challenge fehgeschlagen", 10, 60, 10); + } + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.DARK_RED + " Die Zeit ist abgelaufen und die Challenge somit fehlgeschlagen!"); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.GREEN + " Seed: " + ChatColor.AQUA + Bukkit.getWorlds().get(0).getSeed()); + } else { + for (Player p : Bukkit.getOnlinePlayers()) { + p.setGameMode(GameMode.SPECTATOR); + } + GUIUtils.sendTitleToAll("Event", "Die Zeit ist abgelaufen!", ChatColor.GREEN); + } stopTimer(); } else { time--; diff --git a/src/main/java/de/fanta/challenges/commands/BingoCommand.java b/src/main/java/de/fanta/challenges/commands/BingoCommand.java new file mode 100644 index 0000000..9f1f4e6 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/BingoCommand.java @@ -0,0 +1,35 @@ +package de.fanta.challenges.commands; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.guis.eventgui.EventItemsGui; +import de.fanta.challenges.utils.ChatUtil; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.Objects; + +public class BingoCommand extends SubCommand { + private final Challenges plugin; + + public BingoCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (!(sender instanceof Player)) { + ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); + return true; + } + if (plugin.getConfig().getBoolean("event.enabled") && Objects.equals(plugin.getConfig().getString("event.type"), "bingo") && plugin.getTimer().isRunning()) { + EventItemsGui.openPlayerInv((Player) sender); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell läuft kein Bingo Event"); + } + return true; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/CommandRegistration.java b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java index e3b1105..5c838d4 100644 --- a/src/main/java/de/fanta/challenges/commands/CommandRegistration.java +++ b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java @@ -12,6 +12,9 @@ import de.fanta.challenges.commands.editor.EditorCommand; import de.fanta.challenges.commands.editor.EditorSetCommand; import de.fanta.challenges.commands.event.EventCommand; +import de.fanta.challenges.commands.event.EventGetScoreCommand; +import de.fanta.challenges.commands.event.EventSettingsCommand; +import de.fanta.challenges.commands.event.EventStartCommand; import de.fanta.challenges.commands.event.EventToggleCommand; import de.fanta.challenges.commands.hp.HPAddCommand; import de.fanta.challenges.commands.hp.HPGetCommand; @@ -29,6 +32,7 @@ import de.fanta.challenges.commands.timer.TimerSetCommand; import de.fanta.challenges.commands.timer.TimerStartCommand; import de.iani.cubesideutils.bukkit.commands.CommandRouter; +import org.bukkit.material.Command; public class CommandRegistration { private final Challenges plugin; @@ -90,5 +94,11 @@ eventRouter.addCommandMapping(new EventCommand(plugin)); eventRouter.addCommandMapping(new EventToggleCommand(plugin, true), "enable"); eventRouter.addCommandMapping(new EventToggleCommand(plugin, false), "disable"); + eventRouter.addCommandMapping(new EventSettingsCommand(plugin), "settings"); + eventRouter.addCommandMapping(new EventGetScoreCommand(plugin), "getscore"); + eventRouter.addCommandMapping(new EventStartCommand(plugin), "start"); + + CommandRouter bingoRouter = new CommandRouter(plugin.getCommand("bingo")); + bingoRouter.addCommandMapping(new BingoCommand(plugin)); } } diff --git a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesHelpCommand.java b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesHelpCommand.java index 0774076..490c459 100644 --- a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesHelpCommand.java +++ b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesHelpCommand.java @@ -34,6 +34,7 @@ ChatUtil.sendNormalMessage(sender, "/Reset - Generiert eine neue Welt, setzt den Timer zurück und löscht gespeicherte Positionen"); ChatUtil.sendNormalMessage(sender, "/forcemlg - Triggert einen MLG wenn MLG aktiv ist"); ChatUtil.sendNormalMessage(sender, "/editor - zeigt dir den aktuellen Editor an"); + ChatUtil.sendNormalMessage(sender, "/challenges hilfe Seite und Spieler kicken"); return true; } else if (plugin.getCurrentEditor() != null) { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); diff --git a/src/main/java/de/fanta/challenges/commands/event/EventCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventCommand.java index 724fcf6..6586d70 100644 --- a/src/main/java/de/fanta/challenges/commands/event/EventCommand.java +++ b/src/main/java/de/fanta/challenges/commands/event/EventCommand.java @@ -26,8 +26,11 @@ ChatUtil.sendNormalMessage(sender, "/event enable - aktiviert die Event-Funktion"); ChatUtil.sendNormalMessage(sender, "/event disable - deaktiviert die Event-Funktion"); ChatUtil.sendNormalMessage(sender, "/event settings - öffnet die Event-Einstellungen"); + ChatUtil.sendNormalMessage(sender, "/event getscore [player] - zeigt den Score der Spieler"); ChatUtil.sendNormalMessage(sender, "--- ************** ---"); return true; + } else { + ChatUtil.sendErrorMessage(sender, "Keine Berechtigung!"); } return false; } diff --git a/src/main/java/de/fanta/challenges/commands/event/EventGetScoreCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventGetScoreCommand.java new file mode 100644 index 0000000..cc4a559 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/event/EventGetScoreCommand.java @@ -0,0 +1,49 @@ +package de.fanta.challenges.commands.event; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ChatUtil; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import org.bukkit.Bukkit; +import org.bukkit.attribute.Attribute; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.LinkedHashSet; +import java.util.stream.Collectors; + +public class EventGetScoreCommand extends SubCommand { + private final Challenges plugin; + + public EventGetScoreCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (!(sender instanceof Player)) { + ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); + return true; + } + if (sender.hasPermission("challenges.event")) { + if (args.hasNext()) { + String playerName = args.getNext(); + Player player = Bukkit.getPlayer(playerName); + + if (player == null) { + ChatUtil.sendErrorMessage(sender, "Dieser Spieler ist nicht online!"); + return true; + } + + ChatUtil.sendNormalMessage(sender, player.getName() + ": " + plugin.getScoreManager().getScore(player)); + return true; + } else { + ChatUtil.sendNormalMessage(sender, plugin.getScoreManager().getScores().entrySet().stream().sorted((o1, o2) -> o1.getValue().compareTo(o2.getValue()) * -1).collect(Collectors.toCollection(LinkedHashSet::new))); + } + } else { + ChatUtil.sendErrorMessage(sender, "Keine Berechtigung!"); + } + return true; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/event/EventSettingsCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventSettingsCommand.java new file mode 100644 index 0000000..51d01c7 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/event/EventSettingsCommand.java @@ -0,0 +1,38 @@ +package de.fanta.challenges.commands.event; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.guis.eventgui.EventGui; +import de.fanta.challenges.utils.ChatUtil; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class EventSettingsCommand extends SubCommand { + private final Challenges plugin; + + public EventSettingsCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (!(sender instanceof Player)) { + ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); + return true; + } + if (sender.hasPermission("challenges.event")) { + if (plugin.getConfig().getBoolean("event.enabled")) { + EventGui.createEventGUI((Player) sender); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Dafür musst du das Event erst Starten"); + return true; + } + } else { + ChatUtil.sendErrorMessage(sender, "Keine Berechtigung!"); + return true; + } + } +} diff --git a/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java new file mode 100644 index 0000000..644c535 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java @@ -0,0 +1,55 @@ +package de.fanta.challenges.commands.event; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.utils.guiutils.GUIUtils; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import org.bukkit.Bukkit; +import org.bukkit.GameRule; +import org.bukkit.World; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.concurrent.atomic.AtomicInteger; + +public class EventStartCommand extends SubCommand { + private final Challenges plugin; + + public EventStartCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (!(sender instanceof Player)) { + ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); + return true; + } + if (sender.hasPermission("challenges.event")) { + + AtomicInteger i = new AtomicInteger(4); + Bukkit.getScheduler().runTaskTimer(plugin, bukkitTask -> { + int j = i.decrementAndGet(); + + GUIUtils.sendTitleToAll("Event", j > 0 ? "" + j : "Go", ChatUtil.PLAYER); + + if(j <= 0){ + bukkitTask.cancel(); + World world = Bukkit.getWorld("world"); + world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, true); + plugin.getTimer().startTimer(); + } + }, 10, 20); + + + + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Keine Berechtigung!"); + } + return false; + } +} + diff --git a/src/main/java/de/fanta/challenges/commands/event/EventToggleCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventToggleCommand.java index 9aea66c..6e65008 100644 --- a/src/main/java/de/fanta/challenges/commands/event/EventToggleCommand.java +++ b/src/main/java/de/fanta/challenges/commands/event/EventToggleCommand.java @@ -23,21 +23,29 @@ @Override public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { - if (!sender.hasPermission("challenges.event")) { - ChatUtil.sendErrorMessage(sender, "Keine Berechtigung"); + Player p = (Player) sender; + if (!p.hasPermission("challenges.event")) { + ChatUtil.sendErrorMessage(p, "Keine Berechtigung"); return true; } if (enable) { - if (!plugin.getConfig().getBoolean("event")) { - GUIUtils.setConfig("event", true); + if (!plugin.getConfig().getBoolean("event.enabled")) { + GUIUtils.setConfig("event.enabled", true); GUIUtils.sendTitleToAll("Event", "Event-Modus aktiviert", ChatColor.GREEN); } else { - ChatUtil.sendErrorMessage(sender, "Das Event läuft bereits!"); + ChatUtil.sendErrorMessage(p, "Das Event läuft bereits!"); return true; } } else { - GUIUtils.setConfig("event", false); - GUIUtils.sendTitleToAll("Event", "Event-Modus deaktiviert", ChatColor.RED); + if (plugin.getConfig().getBoolean("event.enabled")) { + GUIUtils.setConfig("event.enabled", false); + GUIUtils.sendTitleToAll("Event", "Event-Modus deaktiviert", ChatColor.RED); + plugin.getScoreManager().saveScores(p); + plugin.getScoreManager().resetScores(); + } else { + ChatUtil.sendErrorMessage(p, "Aktuell läuft kein Event!"); + return true; + } } plugin.getSBManager().updateEventScoreboard(); return true; diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java b/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java new file mode 100644 index 0000000..65f855a --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java @@ -0,0 +1,103 @@ +package de.fanta.challenges.guis.eventgui; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.guiutils.GUIUtils; +import net.md_5.bungee.api.ChatColor; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.Inventory; + +import java.util.Objects; + +public class EventGui implements Listener { + + private static final Challenges plugin = Challenges.getPlugin(); + + public static final int INVENTORY_SIZE = 27; + public static final Inventory EVENT_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, Challenges.GUIPREFIX + " >> Event Settings"); + + private static final int NULL_EVENT_INDEX = 0; + private static final int BINGO_EVENT_INDEX = 10; + private static final int BINGO_ITEMS_INDEX = 19; + private static final int BUILD_EVENT_INDEX = 12; + private static final int XP_EVENT_INDEX = 11; + private static final int CLOSE_IDEX = 26; + + public static void createEventGUI(Player p) { + if (Objects.equals(plugin.getConfig().getString("event.type"), "bingo")) { + EVENT_GUI.setItem(BINGO_EVENT_INDEX, GUIUtils.createGuiItem(Material.PINK_SHULKER_BOX, ChatColor.GREEN + "Bingo Event", true, ChatColor.GREEN + "Sammle Vorgegebene Items", ChatColor.GREEN + "Items kann man mit /bingo sehen")); + EVENT_GUI.setItem(BINGO_ITEMS_INDEX, GUIUtils.createGuiItem(Material.CHEST, ChatColor.GREEN + "Items", ChatColor.GREEN + "Anklicken um Items Hinzuzufügen")); + } else { + EVENT_GUI.setItem(BINGO_EVENT_INDEX, GUIUtils.createGuiItem(Material.PINK_SHULKER_BOX, ChatColor.RED + "Bingo Event", ChatColor.GREEN + "Sammle Vorgegebene Items", ChatColor.GREEN + "Items kann man mit /bingo sehen")); + EVENT_GUI.setItem(BINGO_ITEMS_INDEX, GUIUtils.EMPTY_ICON); + } + if (!Objects.equals(plugin.getConfig().getString("event.type"), "nix")) { + EVENT_GUI.setItem(NULL_EVENT_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.RED + "Event beenden")); + } else { + EVENT_GUI.setItem(NULL_EVENT_INDEX, GUIUtils.EMPTY_ICON); + } + if (Objects.equals(plugin.getConfig().getString("event.type"), "build")) { + EVENT_GUI.setItem(BUILD_EVENT_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_PICKAXE, ChatColor.GREEN + "Build Event", true, ChatColor.GREEN + "Baue so viele Blöcke wie möglich ab", ChatColor.RED + "Einen Block setzen gibt einen Minus Punkt")); + } else { + EVENT_GUI.setItem(BUILD_EVENT_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_PICKAXE, ChatColor.RED + "Build Event", ChatColor.GREEN + "Baue so viele Blöcke wie möglich ab", ChatColor.RED + "Einen Block setzen gibt einen Minus Punkt")); + } + if (Objects.equals(plugin.getConfig().getString("event.type"), "xp")) { + EVENT_GUI.setItem(XP_EVENT_INDEX, GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatColor.GREEN + "XP Event", true, ChatColor.GREEN + "Sammle so viel XP wie Möglich", ChatColor.RED + "Verzaubern zieht Level ab")); + } else { + EVENT_GUI.setItem(XP_EVENT_INDEX, GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatColor.RED + "XP Event", ChatColor.GREEN + "Sammle so viel XP wie Möglich", ChatColor.RED + "Verzaubern zieht Level ab")); + } + EVENT_GUI.setItem(CLOSE_IDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.RED + "Menü verlassen!")); + for (int i = 0; i < INVENTORY_SIZE; i++) { + if (EVENT_GUI.getItem(i) == null || EVENT_GUI.getItem(i).getType() == Material.AIR) { + EVENT_GUI.setItem(i, GUIUtils.EMPTY_ICON); + } + } + p.openInventory(EVENT_GUI); + } + + @EventHandler + public void onInventoryClick(InventoryClickEvent e) { + int slot = e.getRawSlot(); + Player p = (Player) e.getWhoClicked(); + if (e.getInventory() == EVENT_GUI) { + if (plugin.getConfig().getBoolean("event.enabled")) { + switch (slot) { + case NULL_EVENT_INDEX: + plugin.getScoreManager().saveScores(p); + plugin.getScoreManager().resetScores(); + GUIUtils.setConfig("event.type", "nix"); + GUIUtils.sendTitleToAll("Event", "Event beendet", ChatColor.RED); + break; + case BUILD_EVENT_INDEX: + GUIUtils.setConfig("event.type", "build"); + GUIUtils.sendTitleToAll("Event", "Baue die meisten Blöcke ab!", ChatColor.GREEN); + break; + case XP_EVENT_INDEX: + GUIUtils.setConfig("event.type", "xp"); + GUIUtils.sendTitleToAll("Event", "Sammle so viel XP wie möglich ein!", ChatColor.GREEN); + break; + case BINGO_EVENT_INDEX: + GUIUtils.setConfig("event.type", "bingo"); + GUIUtils.sendTitleToAll("Event", "Sammle Vorgegebene Items! (/bingo)", ChatColor.GREEN); + } + createEventGUI(p); + + switch (slot) { + case BINGO_ITEMS_INDEX: + EventItemsGui.openEventGUI(p); + break; + case CLOSE_IDEX: + p.closeInventory(); + break; + } + } + e.setCancelled(true); + } + } +} + + diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/EventItemsGui.java b/src/main/java/de/fanta/challenges/guis/eventgui/EventItemsGui.java new file mode 100644 index 0000000..ce8405a --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/eventgui/EventItemsGui.java @@ -0,0 +1,81 @@ +package de.fanta.challenges.guis.eventgui; + +import de.fanta.challenges.Bingo; +import de.fanta.challenges.Challenges; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.enchantments.Enchantment; +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.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.stream.Collectors; + +public class EventItemsGui implements Listener { + + private static Challenges plugin = Challenges.getPlugin(); + + public static final String TITLE = Challenges.GUIPREFIX + " >> Event Items"; + private static final Inventory event_items = Bukkit.createInventory(null, InventoryType.DISPENSER, TITLE); + + private static Map playerInvs = new HashMap<>(); + + public static void openEventGUI(Player p) { + p.openInventory(event_items); + } + + public static List getEventItems() { + return Arrays.stream(event_items.getContents()).filter(itemStack -> itemStack != null && !itemStack.getType().equals(Material.AIR)).map(ItemStack::getType).collect(Collectors.toList()); + } + + public static Map getPlayerInvs() { + return playerInvs; + } + + public static void openPlayerInv(Player player) { + Inventory inventory = Bukkit.createInventory(player, InventoryType.DISPENSER, Challenges.GUIPREFIX + " >> Bingo"); + Bingo bingo = plugin.getBingo(); + List playerMaterials = bingo.getPlayerMaterials().getOrDefault(player.getUniqueId(), new ArrayList<>()); + bingo.getMaterials().forEach(material -> { + ItemStack itemStack = new ItemStack(material); + if (playerMaterials.contains(material)) { + ItemMeta itemMeta = itemStack.getItemMeta(); + itemMeta.addEnchant(Enchantment.MENDING, 1, false); + itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); + itemStack.setItemMeta(itemMeta); + } + inventory.addItem(itemStack); + }); + playerInvs.put(player.getUniqueId(), inventory); + player.openInventory(inventory); + } + + @EventHandler + public void onInventoryClick(InventoryClickEvent e) { + if (e.getClickedInventory() == null) + return; + Player player = (Player) e.getWhoClicked(); + UUID uuid = player.getUniqueId(); + if (playerInvs.get(uuid) == null) + return; + if (playerInvs.get(uuid).equals(e.getClickedInventory())) { + e.setCancelled(true); + } + } + +} + + + diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java index bf7778d..de58e74 100644 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java @@ -173,6 +173,7 @@ break; case SHUFFLE_RANDOM_DROP_INDEX: plugin.rndDrops.shuffleItems(); + plugin.rndDrops.saveItems(); GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops neu gemischt!", ChatColor.GREEN); break; case DEATH_ON_SPRINT_INDEX: diff --git a/src/main/java/de/fanta/challenges/listeners/BingoListener.java b/src/main/java/de/fanta/challenges/listeners/BingoListener.java new file mode 100644 index 0000000..4500c8b --- /dev/null +++ b/src/main/java/de/fanta/challenges/listeners/BingoListener.java @@ -0,0 +1,28 @@ +package de.fanta.challenges.listeners; + +import de.fanta.challenges.Bingo; +import de.fanta.challenges.Challenges; +import de.fanta.challenges.events.TimerChangedEvent; +import de.fanta.challenges.guis.eventgui.EventItemsGui; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +import java.util.Objects; + +public class BingoListener implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onActivation(TimerChangedEvent event){ + if(Objects.equals(plugin.getConfig().getString("event.type"), "bingo")){ + Bingo bingo = plugin.getBingo(); + if(event.isRunning()) { + bingo.setMaterials(EventItemsGui.getEventItems()); + bingo.setRunning(true); + }else{ + bingo.setRunning(false); + } + } + } +} diff --git a/src/main/java/de/fanta/challenges/listeners/BlockCreateListener.java b/src/main/java/de/fanta/challenges/listeners/BlockCreateListener.java index 3345b7d..1dd3f0b 100644 --- a/src/main/java/de/fanta/challenges/listeners/BlockCreateListener.java +++ b/src/main/java/de/fanta/challenges/listeners/BlockCreateListener.java @@ -16,7 +16,10 @@ if (!plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { e.setCancelled(true); } - } + if (plugin.getConfig().getString("event.type").equals("build")) { + plugin.getScoreManager().updateScore(e.getPlayer(), -1); + } + } @EventHandler public void onBucketPlace(PlayerBucketEmptyEvent e) { diff --git a/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java b/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java index 4ba6b22..b5abaf5 100644 --- a/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java +++ b/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java @@ -1,6 +1,8 @@ package de.fanta.challenges.listeners; import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ItemTypeListUtil; +import de.iani.cubesideutils.bukkit.items.ItemGroups; import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.event.EventHandler; @@ -23,6 +25,12 @@ if ((!plugin.getTimer().isRunning()) && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { e.setCancelled(true); } + if (plugin.getConfig().getString("event.type").equals("build") && plugin.getTimer().isRunning()) { + Material blockType = e.getBlock().getType(); + if (!ItemTypeListUtil.isInstaBreakBlock(blockType) && !ItemGroups.isDoubleBlockPlant(blockType) && !ItemGroups.isSingleBlockPlant(blockType)) { //TODO VOLLKORN :> + plugin.getScoreManager().updateScore(e.getPlayer(), 1); + } + } } @EventHandler @@ -42,7 +50,7 @@ public void onEntityExplode(EntityExplodeEvent e) { if (this.plugin.getConfig().getBoolean("rnddrops")) { e.blockList().forEach(block -> { - if(!block.getType().isAir()){ + if(!block.getType().isAir()) { block.getWorld().dropItem(block.getLocation().add(0.5D, 0.5D, 0.5D),new ItemStack(this.plugin.getRandomDropsManager().getMaterialFromBlock(block))); block.setType(Material.AIR); } @@ -50,6 +58,5 @@ e.blockList().clear(); } } - } diff --git a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java index 29eedb1..eb1a206 100644 --- a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java +++ b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java @@ -1,11 +1,21 @@ package de.fanta.challenges.listeners; +import de.fanta.challenges.Bingo; import de.fanta.challenges.Challenges; -import de.fanta.challenges.commands.event.EventToggleCommand; +import de.fanta.challenges.guis.eventgui.EventItemsGui; +import org.bukkit.Material; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityTargetLivingEntityEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.player.PlayerAttemptPickupItemEvent; +import org.bukkit.event.player.PlayerLevelChangeEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import java.util.Objects; public class PlayerListener implements Listener { @@ -24,4 +34,38 @@ e.setCancelled(true); } } + + @EventHandler + public void onExpChangeEvent(PlayerLevelChangeEvent e) { + if (Objects.equals(plugin.getConfig().getString("event.type"), "xp") && plugin.getTimer().isRunning()) { + plugin.getScoreManager().updateScore(e.getPlayer(), e.getNewLevel() - e.getOldLevel()); + } + } + + @EventHandler + public void onPickUpItem(PlayerAttemptPickupItemEvent e) { + ItemStack itemStack = e.getItem().getItemStack(); + Player player = e.getPlayer(); + Bingo bingo = plugin.getBingo(); + if (bingo.isRunning()) { + bingo.addDiscoveredItem(player, itemStack); + } + } + + @EventHandler + public void onInventoryClick(InventoryClickEvent e) { + if (e.getClickedInventory() == null) + return; + Bingo bingo = plugin.getBingo(); + Player player = (Player) e.getWhoClicked(); + Inventory playerInv = EventItemsGui.getPlayerInvs().get(player.getUniqueId()); + if (playerInv != null && playerInv.equals(e.getClickedInventory())) + return; + if (!bingo.isRunning()) + return; + ItemStack itemStack = e.getCurrentItem(); + if (itemStack != null && itemStack.getType() != Material.AIR) { + bingo.addDiscoveredItem(player, itemStack); + } + } } diff --git a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java index 42c2e8d..0f5e7c3 100644 --- a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java +++ b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java @@ -48,6 +48,18 @@ if (p.hasPermission("Challenges.editor")) { plugin.setCurrentEditor(p); ChatUtil.sendNormalMessage(p, "Du bist nun der Editor dieser Lobby!"); + ChatUtil.sendNormalMessage(p, "Verfügbare Befehle:"); + ChatUtil.sendNormalMessage(p, "/HP - Verwalte die HP einzelner Spieler"); + ChatUtil.sendNormalMessage(p, "/Coords - Teile oder speichere Coordinaten"); + ChatUtil.sendNormalMessage(p, "/Settings - Verwalte die Challenges Einstellungen"); + ChatUtil.sendNormalMessage(p, "/Timer - Verwalte den Timer"); + ChatUtil.sendNormalMessage(p, "/Revive - Wiederbelebe Spieler"); + ChatUtil.sendNormalMessage(p, "/Backpack | /bp - öffne das Backpack"); + ChatUtil.sendNormalMessage(p, "/Reset - Generiert eine neue Welt, setzt den Timer zurück und löscht gespeicherte Positionen"); + ChatUtil.sendNormalMessage(p, "/forcemlg - Triggert einen MLG wenn MLG aktiv ist"); + ChatUtil.sendNormalMessage(p, "/editor - zeigt dir den aktuellen Editor an"); + ChatUtil.sendNormalMessage(p, "/challenges hilfe Seite und Spieler kicken"); + } else { ChatUtil.sendWarningMessage(p, "Es ist aktuell kein Editor in dieser Lobby"); ChatUtil.sendWarningMessage(p, "Um selbst Editor zu werden musst du VIP sein!"); @@ -78,6 +90,8 @@ plugin.getTimer().stopTimer(); } + this.plugin.getSBManager().removeScoreboard(player); + if (plugin.getCurrentEditor() != null && player.getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) { if (Bukkit.getServer().getOnlinePlayers().size() - 1 > 0) { Random random = new Random(); diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java index 96d5fb9..33aa6d2 100644 --- a/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java @@ -45,6 +45,11 @@ p.setScoreboard(scoreboard); } + public void removeScoreboard(Player p) { + team.removeEntry(p.getName()); + p.setScoreboard(scoreboard); + } + public void updateTabHP() { if (plugin.getConfig().getBoolean("tabhp")) { if (this.tabHP == null) { @@ -70,7 +75,7 @@ } public void updateEventScoreboard() { - if (plugin.getConfig().getBoolean("event")) { + if (plugin.getConfig().getBoolean("event.enabled")) { this.team.setColor(ChatColor.BLUE); this.team.setDisplayName("Event"); diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java index d06c435..d2bf25e 100644 --- a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java @@ -1,39 +1,99 @@ package de.fanta.challenges.scoreboard; import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ChatUtil; +import de.iani.cubesideutils.HastebinUtil; import org.bukkit.entity.Player; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.HashMap; +import java.util.LinkedHashSet; import java.util.Map; -import java.util.UUID; +import java.util.Set; +import java.util.logging.Level; +import java.util.stream.Collectors; public class ScoreManager { private final Challenges plugin; - private final Map scores; + private final Map scores; public ScoreManager(Challenges plugin) { this.plugin = plugin; - this.scores = new HashMap<>(); + this.scores = new HashMap(); } public void updateScore(Player player, int difference) { - int score = scores.getOrDefault(player.getUniqueId(), 0); + int score = scores.getOrDefault(player.getName(), 0); score += difference; - scores.put(player.getUniqueId(), score); + scores.put(player.getName(), score); this.plugin.getSBManager().updateEventScore(player, difference); } public int getScore(Player player) { - return scores.getOrDefault(player.getUniqueId(), -1); + return scores.getOrDefault(player.getName(), -1); } public void saveScores() { - // TODO wenn man will, scores in Datei schreiben + saveScores(null); } - public Map getScores() { + public void saveScores(Player player) { + StringBuilder sb = new StringBuilder(); + DateFormat df = DateFormat.getDateInstance(); + String ownerName = plugin.hasEditor() ? plugin.getCurrentEditor().getName() : "Console"; + SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy - HH:mm:ss"); + Date currentTime = new Date(); + + sb.append("Challenges Event -> ").append(plugin.getConfig().getString("event.type")); + sb.append('\n'); + sb.append("=".repeat(20)); + sb.append('\n'); + sb.append("Erstellt von: ").append(ownerName).append('\n'); + sb.append("Erstellt am: ").append(formatter.format(currentTime)).append('\n'); + sb.append("=".repeat(20)); + sb.append('\n'); + Map participants = getScores(); + sb.append("Teilnehmer (").append(participants.size()).append("):\n"); + + if (this.scores.isEmpty()) { + sb.append(" Das Event hatte keine Teilnehmer!\n"); + } else { + Set> sorted = this.scores.entrySet().stream().sorted((o1, o2) -> o1.getValue().compareTo(o2.getValue())*-1).collect(Collectors.toCollection(LinkedHashSet::new)); + int i = 1; + for (Map.Entry entry : sorted) { + sb.append(i++).append(". ").append(entry.getKey()).append(" ").append(entry.getValue()).append("\n"); + } + } + HastebinUtil.paste(sb.toString(), new HastebinUtil.PasteCompletedListener() { + @Override + public void onSuccess(String url) { + System.out.println(); + if (player != null) { + ChatUtil.sendNormalMessage(player, "Event Log gepastet: " + url); + } + plugin.getLogger().log(Level.SEVERE, "Event Log gepastet: " + url); + } + + @Override + public void onError(Exception e) { + if (player != null) { + ChatUtil.sendErrorMessage(player, "Paste konnte nicht erstellt werden"); + } + plugin.getLogger().log(Level.SEVERE, "Could not paste event log", e); + } + }); + } + + public void resetScores() { + this.scores.clear(); + plugin.getSBManager().updateEventScoreboard(); + } + + public Map getScores() { return scores; } } diff --git a/src/main/java/de/fanta/challenges/utils/ChatUtil.java b/src/main/java/de/fanta/challenges/utils/ChatUtil.java index 2561da5..7e462ca 100644 --- a/src/main/java/de/fanta/challenges/utils/ChatUtil.java +++ b/src/main/java/de/fanta/challenges/utils/ChatUtil.java @@ -3,6 +3,7 @@ import de.fanta.challenges.Challenges; import de.iani.cubesideutils.bukkit.ChatUtilBukkit; import net.md_5.bungee.api.ChatColor; +import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; public class ChatUtil { @@ -31,4 +32,8 @@ public static void sendErrorMessage(CommandSender sender, Object message, Object... messageParts) { sendMessage(sender, ERROR.toString(), message, messageParts); } + + public static void sendBrodcastMessage(Object message) { + Bukkit.broadcastMessage(Challenges.PREFIX + " " + message); + } } diff --git a/src/main/java/de/fanta/challenges/utils/ItemTypeListUtil.java b/src/main/java/de/fanta/challenges/utils/ItemTypeListUtil.java new file mode 100644 index 0000000..c41fbec --- /dev/null +++ b/src/main/java/de/fanta/challenges/utils/ItemTypeListUtil.java @@ -0,0 +1,26 @@ +package de.fanta.challenges.utils; + +import org.bukkit.Material; + +import java.util.EnumSet; + +public class ItemTypeListUtil { + + private static final EnumSet INSTA_BREAK_BLOCK = EnumSet.noneOf(Material.class); + + static { + INSTA_BREAK_BLOCK.add(Material.GRASS); + INSTA_BREAK_BLOCK.add(Material.TALL_GRASS); + INSTA_BREAK_BLOCK.add(Material.FERN); + INSTA_BREAK_BLOCK.add(Material.LARGE_FERN); + INSTA_BREAK_BLOCK.add(Material.DEAD_BUSH); + INSTA_BREAK_BLOCK.add(Material.SUGAR_CANE); + INSTA_BREAK_BLOCK.add(Material.TORCH); + INSTA_BREAK_BLOCK.add(Material.FIRE); + INSTA_BREAK_BLOCK.add(Material.SOUL_FIRE); + } + + public static boolean isInstaBreakBlock(Material m) { + return INSTA_BREAK_BLOCK.contains(m); + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index ba20b36..45fe634 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -25,4 +25,6 @@ Saved_Locations: {} World_Name: world World_Reset: false -event: false \ No newline at end of file +event: + enabled: false + type: nix \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index d4693c9..7c7fbef 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -46,4 +46,7 @@ usage: Use /kick event: description: Event - usage: Use /event \ No newline at end of file + usage: Use /event + bingo: + description: Bingo + usage: Use /bingo \ No newline at end of file