diff --git a/pom.xml b/pom.xml index 6da6989..ff21402 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,7 @@ com.destroystokyo.paper paper - 1.16.4-R0.1-SNAPSHOT + 1.16.5-R0.1-SNAPSHOT provided diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java index cb9d579..13b2fb8 100644 --- a/src/main/java/de/fanta/challenges/Challenges.java +++ b/src/main/java/de/fanta/challenges/Challenges.java @@ -2,7 +2,6 @@ import de.fanta.challenges.challenges.RandomDrops; import de.fanta.challenges.commands.CommandRegistration; -import de.fanta.challenges.commands.GamemodeCommand; import de.fanta.challenges.events.PlayerCountChangedEvent; import de.fanta.challenges.events.ServerStatusChangedEvent; import de.fanta.challenges.events.TimerChangedEvent; @@ -24,17 +23,18 @@ import de.fanta.challenges.listeners.InventoryClickListener; import de.fanta.challenges.listeners.PlayerListener; import de.fanta.challenges.listeners.QuitJoinListener; +import de.fanta.challenges.listeners.VoidListener; import de.fanta.challenges.scoreboard.ScoreBoardManager; import de.fanta.challenges.scoreboard.ScoreManager; import de.fanta.challenges.utils.ChatUtil; import de.fanta.challenges.utils.VanishUtils; import de.fanta.challenges.utils.guiutils.GUIUtils; import net.md_5.bungee.api.ChatColor; +import org.apache.commons.io.FileUtils; import org.bukkit.BanList; import org.bukkit.Bukkit; import org.bukkit.GameRule; import org.bukkit.Material; -import org.bukkit.Server; import org.bukkit.World; import org.bukkit.WorldCreator; import org.bukkit.WorldType; @@ -53,9 +53,12 @@ import java.util.Arrays; import java.util.List; import java.util.Random; +import java.util.logging.Logger; import java.util.stream.Collectors; public class Challenges extends JavaPlugin { + public static Logger LOGGER; + private static Challenges plugin; private File backpackConfigFile; @@ -92,10 +95,58 @@ private boolean waitingForShutdown; @Override + public void onLoad() { + LOGGER = getLogger(); + + saveDefaultConfig(); + if (getConfig().getBoolean("World_Reset")) { + File world = new File(Bukkit.getWorldContainer(), "world"); + File nether = new File(Bukkit.getWorldContainer(), "world_nether"); + File end = new File(Bukkit.getWorldContainer(), "world_the_end"); + File void_world = new File(Bukkit.getWorldContainer(), "VOID"); + File mlg_world = new File(Bukkit.getWorldContainer(), "mlg_challenge"); + + File mlg_new = new File("plugins/Challenges/mlg_challenge"); + File mlg_dir = new File("mlg_challenge"); + try { + FileUtils.deleteDirectory(world); + FileUtils.deleteDirectory(nether); + FileUtils.deleteDirectory(end); + FileUtils.deleteDirectory(void_world); + FileUtils.deleteDirectory(mlg_world); + + FileUtils.copyDirectory(mlg_new, mlg_dir); + } catch (IOException e) { + e.printStackTrace(); + } + + world.mkdirs(); + new File(world, "data").mkdirs(); + new File(world, "datapacks").mkdirs(); + new File(world, "playerdata").mkdirs(); + new File(world, "poi").mkdirs(); + new File(world, "region").mkdirs(); + + new File(nether, "data").mkdirs(); + new File(nether, "datapacks").mkdirs(); + new File(nether, "playerdata").mkdirs(); + new File(nether, "poi").mkdirs(); + new File(nether, "region").mkdirs(); + + new File(end, "data").mkdirs(); + new File(end, "datapacks").mkdirs(); + new File(end, "playerdata").mkdirs(); + new File(end, "poi").mkdirs(); + new File(end, "region").mkdirs(); + System.out.println("Welten Erfolgreich zurückgesetzte!"); + } + } + + @Override public void onEnable() { plugin = this; - getCommand("gamemode").setExecutor(new GamemodeCommand()); + //getCommand("gamemode").setExecutor(new GamemodeCommand()); this.timer = new Timer(this); this.rndDrops = new RandomDrops(); @@ -117,6 +168,7 @@ pM.registerEvents(new DamageListener(), this); pM.registerEvents(new DeathListener(), this); pM.registerEvents(new PlayerListener(), this); + pM.registerEvents(new VoidListener(), this); pM.registerEvents(new TimerGui(), this); pM.registerEvents(new ResetGui(), this); pM.registerEvents(new MainGui(), this); diff --git a/src/main/java/de/fanta/challenges/commands/BingoCommand.java b/src/main/java/de/fanta/challenges/commands/BingoCommand.java index 9f1f4e6..8a0e2cb 100644 --- a/src/main/java/de/fanta/challenges/commands/BingoCommand.java +++ b/src/main/java/de/fanta/challenges/commands/BingoCommand.java @@ -5,6 +5,7 @@ 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.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -25,7 +26,19 @@ return true; } if (plugin.getConfig().getBoolean("event.enabled") && Objects.equals(plugin.getConfig().getString("event.type"), "bingo") && plugin.getTimer().isRunning()) { - EventItemsGui.openPlayerInv((Player) sender); + 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; + } + EventItemsGui.openPlayerInv(player, (Player) sender); + + } else { + EventItemsGui.openPlayerInv((Player) sender, (Player) sender); + } return true; } else { ChatUtil.sendErrorMessage(sender, "Aktuell läuft kein Bingo Event"); diff --git a/src/main/java/de/fanta/challenges/commands/CommandRegistration.java b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java index c7882d0..db27185 100644 --- a/src/main/java/de/fanta/challenges/commands/CommandRegistration.java +++ b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java @@ -107,5 +107,9 @@ CommandRouter netherRouter = new CommandRouter(plugin.getCommand("nether")); netherRouter.addCommandMapping(new NetherToggleCommand(plugin, true), "enable"); netherRouter.addCommandMapping(new NetherToggleCommand(plugin, false), "disable"); + + CommandRouter voidRouter = new CommandRouter(plugin.getCommand("void")); + voidRouter.addCommandMapping(new VoidToggleCommand(plugin, true), "enable"); + voidRouter.addCommandMapping(new VoidToggleCommand(plugin, false), "disable"); } } diff --git a/src/main/java/de/fanta/challenges/commands/VillageCommand.java b/src/main/java/de/fanta/challenges/commands/VillageCommand.java index c96c9b9..c9a5d08 100644 --- a/src/main/java/de/fanta/challenges/commands/VillageCommand.java +++ b/src/main/java/de/fanta/challenges/commands/VillageCommand.java @@ -8,6 +8,7 @@ import org.bukkit.HeightMap; import org.bukkit.Location; import org.bukkit.StructureType; +import org.bukkit.block.Structure; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java index ab9a5ce..cb24f56 100644 --- a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java +++ b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java @@ -5,11 +5,13 @@ import de.fanta.challenges.utils.SaveWorldUtils; import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; +import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import java.util.UUID; +import java.util.logging.Level; public class ChallengesSaveCommand extends SubCommand { @@ -33,9 +35,9 @@ try { SaveWorldUtils.saveWorld(uuid); } catch (Exception ex) { - ex.printStackTrace(); + Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex); ChatUtil.sendErrorMessage(sender, "Challenge konnte nicht gespeichert werden!"); - return false; + return true; } ChatUtil.sendNormalMessage(sender, "Challenge wurde erfolgreich gespeichert!"); } else { diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerResetCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerResetCommand.java index fa17f77..c5a0d92 100644 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerResetCommand.java +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerResetCommand.java @@ -26,7 +26,7 @@ } if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { plugin.getTimer().setTime(0); - Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.RED + " Der Timer wurde zurückgesetzt!"); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatUtil.GREEN + " Der Timer wurde zurückgesetzt!"); } else if (plugin.getCurrentEditor() != null) { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); return 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 index 62b0ff3..1106ee6 100644 --- a/src/main/java/de/fanta/challenges/guis/eventgui/EventItemsGui.java +++ b/src/main/java/de/fanta/challenges/guis/eventgui/EventItemsGui.java @@ -44,7 +44,7 @@ return playerInvs; } - public static void openPlayerInv(Player player) { + public static void openPlayerInv(Player player, Player sender) { Inventory inventory = Bukkit.createInventory(player, InventoryType.DISPENSER, Challenges.GUIPREFIX + " >> Bingo"); Bingo bingo = plugin.getBingo(); List playerMaterials = bingo.getPlayerMaterials().getOrDefault(player.getUniqueId(), new ArrayList<>()); @@ -59,7 +59,7 @@ inventory.addItem(itemStack); }); playerInvs.put(player.getUniqueId(), inventory); - player.openInventory(inventory); + sender.openInventory(inventory); } @EventHandler diff --git a/src/main/java/de/fanta/challenges/listeners/DamageListener.java b/src/main/java/de/fanta/challenges/listeners/DamageListener.java index 8021dbd..1859aca 100644 --- a/src/main/java/de/fanta/challenges/listeners/DamageListener.java +++ b/src/main/java/de/fanta/challenges/listeners/DamageListener.java @@ -27,6 +27,10 @@ @EventHandler public void onDamage(EntityDamageEvent e) { + if (!plugin.getTimer().isRunning()) { + e.setCancelled(true); + return; + } if (e.getEntity() instanceof Player) { Player p = (Player) e.getEntity(); if (plugin.getVanish().isVanish(p)) { @@ -43,7 +47,7 @@ Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + dmg + ChatUtil.GREEN + " HP Schaden genommen durch " + ChatUtil.ORANGE + e.getCause()); } Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> p.setHealth(0), 1); - } else if (plugin.getConfig().getBoolean("dmginchat") && (plugin.getTimer().isRunning())) { + } else if (plugin.getConfig().getBoolean("dmginchat")) { Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + dmg + ChatUtil.GREEN + " HP Schaden genommen durch " + ChatUtil.ORANGE + e.getCause()); } } else if (e.getCause() == DamageCause.CUSTOM) { @@ -52,10 +56,10 @@ } } else if (e.getCause() == DamageCause.ENTITY_ATTACK || e.getCause() == DamageCause.ENTITY_EXPLOSION) { - } else if (plugin.getConfig().getBoolean("dmginchat") && (plugin.getTimer().isRunning())) { + } else if (plugin.getConfig().getBoolean("dmginchat")) { Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + dmg + ChatUtil.GREEN + " HP Schaden genommen durch " + ChatUtil.ORANGE + e.getCause()); } - if (plugin.getConfig().getBoolean("sharedmg") && plugin.getTimer().isRunning()) { + if (plugin.getConfig().getBoolean("sharedmg")) { for (Player pp : Bukkit.getOnlinePlayers()) { if (pp != p) { if (!plugin.getVanish().isVanish(pp)) { @@ -83,6 +87,10 @@ @EventHandler public void onEntityDamage(EntityDamageByEntityEvent e) { + if (!plugin.getTimer().isRunning()) { + e.setCancelled(true); + return; + } if (e.getEntity() instanceof Player) { Player p = (Player) e.getEntity(); if (plugin.getVanish().isVanish(p)) { @@ -96,9 +104,6 @@ Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + dmg + ChatUtil.GREEN + " HP Schaden genommen durch " + ChatUtil.ORANGE + e.getDamager().getName()); } } - if (!plugin.getTimer().isRunning()) { - e.setCancelled(true); - } } @EventHandler @@ -176,6 +181,10 @@ @EventHandler public void onDamageclear(EntityDamageEvent e) { + if (!plugin.getTimer().isRunning()) { + e.setCancelled(true); + return; + } if (e.getEntity() instanceof Player) { Player p = (Player) e.getEntity(); if (e.getEntity() instanceof Player) { diff --git a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java index 6098ca2..c53e2ca 100644 --- a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java +++ b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java @@ -1,5 +1,6 @@ package de.fanta.challenges.listeners; +import com.destroystokyo.paper.event.player.PlayerJumpEvent; import de.fanta.challenges.Bingo; import de.fanta.challenges.Challenges; import de.fanta.challenges.RIPBoden; @@ -31,7 +32,10 @@ import org.bukkit.scheduler.BukkitRunnable; import org.kitteh.vanish.event.VanishStatusChangeEvent; +import java.util.Arrays; +import java.util.List; import java.util.Objects; +import java.util.Random; public class PlayerListener implements Listener { @@ -107,20 +111,11 @@ Location playerloc = player.getLocation(); if (!plugin.getConfig().getBoolean("firsttimerstart")) { if (!plugin.getTimer().isRunning() && player.getGameMode() == GameMode.SURVIVAL) { - if (plugin.getConfig().getBoolean("nether.enabled")) { - Location netherspawn = Bukkit.getWorlds().get(1).getSpawnLocation(); - if (playerloc.distance(netherspawn) > 20) { - player.teleport(netherspawn); - ChatUtil.sendWarningMessage(player, "Du kommst erst vom Spawn weg, wenn die Map gestartet wurde!"); - } - } else { - Location spawn = Bukkit.getWorlds().get(0).getSpawnLocation(); - if (playerloc.distance(spawn) > 20) { - player.teleport(spawn); - ChatUtil.sendWarningMessage(player, "Du kommst erst vom Spawn weg, wenn die Map gestartet wurde!"); - } + Location spawn = e.getPlayer().getWorld().getSpawnLocation(); + if (playerloc.distance(spawn) > 20) { + player.teleport(spawn); + ChatUtil.sendWarningMessage(player, "Du kommst erst vom Spawn weg, wenn die Map gestartet wurde!"); } - } } if (plugin.getTimer().isRunning() && player.getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(player)) { @@ -182,7 +177,7 @@ } if (plugin.getConfig().getBoolean("nether.enabled")) { Location spawn = Bukkit.getWorlds().get(1).getSpawnLocation(); - e.setRespawnLocation(spawn); + e.setRespawnLocation(spawn); } } diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java index 751c5c2..e6ab2a9 100644 --- a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java @@ -50,7 +50,8 @@ sb.append('\n'); sb.append("=".repeat(20)); sb.append('\n'); - sb.append("Erstellt von: ").append(ownerName).append('\n'); + sb.append("Editor: ").append(ownerName).append('\n'); + sb.append("Erstellt von: ").append(player.getName()).append('\n'); sb.append("Erstellt am: ").append(formatter.format(currentTime)).append('\n'); sb.append("Timer: ").append(plugin.getTimer().formatTime()).append('\n'); sb.append("=".repeat(20)); diff --git a/src/main/java/de/fanta/challenges/utils/ChatSkullAPI/Message.java b/src/main/java/de/fanta/challenges/utils/ChatSkullAPI/Message.java index 9b9bf0c..d4ad069 100644 --- a/src/main/java/de/fanta/challenges/utils/ChatSkullAPI/Message.java +++ b/src/main/java/de/fanta/challenges/utils/ChatSkullAPI/Message.java @@ -78,17 +78,6 @@ } } - public void setItemLore(Player player) { - byte b; - int i; - String[] arrayOfString; - for (i = (arrayOfString = this.lines).length, b = 0; b < i; ) { - String line = arrayOfString[b]; - player.performCommand("additemlore " + line); - b++; - } - } - private ChatColor getClosestChatColor(ChatColor color) { return color; } diff --git a/src/main/java/de/fanta/challenges/utils/ChatUtil.java b/src/main/java/de/fanta/challenges/utils/ChatUtil.java index 637a960..5ce7940 100644 --- a/src/main/java/de/fanta/challenges/utils/ChatUtil.java +++ b/src/main/java/de/fanta/challenges/utils/ChatUtil.java @@ -5,7 +5,6 @@ import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; public class ChatUtil { @@ -18,23 +17,23 @@ // prevent instances } - public static void sendMessage(CommandSender sender, String colors, Object message, Object... messageParts) { - ChatUtilBukkit.sendMessage(sender, Challenges.PREFIX, colors, message, messageParts); + public static void sendMessage(CommandSender sender, String colors, Object... messageParts) { + ChatUtilBukkit.sendMessage(sender, Challenges.PREFIX, colors, messageParts); } - public static void sendNormalMessage(CommandSender sender, Object message, Object... messageParts) { - sendMessage(sender, GREEN.toString(), message, messageParts); + public static void sendNormalMessage(CommandSender sender, Object... messageParts) { + sendMessage(sender, GREEN.toString(), messageParts); } - public static void sendWarningMessage(CommandSender sender, Object message, Object... messageParts) { - sendMessage(sender, ORANGE.toString(), message, messageParts); + public static void sendWarningMessage(CommandSender sender, Object... messageParts) { + sendMessage(sender, ORANGE.toString(), messageParts); } - public static void sendErrorMessage(CommandSender sender, Object message, Object... messageParts) { - sendMessage(sender, RED.toString(), message, messageParts); + public static void sendErrorMessage(CommandSender sender, Object... messageParts) { + sendMessage(sender, RED.toString(), messageParts); } - public static void sendBrodcastMessage(Object message) { + public static void sendBrodcastMessage(String message) { Bukkit.broadcastMessage(Challenges.PREFIX + " " + GREEN + message); } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 55921fb..57d2648 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -31,4 +31,6 @@ enabled: false type: nix nether: + enabled: false +void: enabled: false \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index ee8ebe5..c9541c8 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -67,8 +67,8 @@ nether: description: Spiele die Challenge vom Nether ins End durch usage: Use /nether - gamemode: - aliases: - - gm + void: + description: Void Challenge + usage: Use /void test: description: test command \ No newline at end of file