diff --git a/src/main/java/de/fanta/challenges/commands/VoidToggleCommand.java b/src/main/java/de/fanta/challenges/commands/VoidToggleCommand.java new file mode 100644 index 0000000..acc35d9 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/VoidToggleCommand.java @@ -0,0 +1,73 @@ +package de.fanta.challenges.commands; + +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.bukkit.world.EmptyChunkGenerator; +import de.iani.cubesideutils.commands.ArgsParser; +import net.md_5.bungee.api.ChatColor; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.WorldCreator; +import org.bukkit.WorldType; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class VoidToggleCommand extends SubCommand { + + private final Challenges plugin; + private final boolean enable; + + public VoidToggleCommand(Challenges plugin, boolean enable) { + this.plugin = plugin; + this.enable = enable; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + Player p = (Player) sender; + if (!p.hasPermission("challenges.event")) { + ChatUtil.sendErrorMessage(p, "Keine Berechtigung"); + return true; + } + if (enable) { + if (!plugin.getConfig().getBoolean("void.enabled")) { + World world = Bukkit.getWorld("VOID"); + if (world == null) { + WorldCreator wc = new WorldCreator("VOID"); + wc.environment(World.Environment.NORMAL); + wc.type(WorldType.FLAT); + wc.generateStructures(false); + wc.generator(new EmptyChunkGenerator()); + world = Bukkit.getServer().createWorld(wc); + Location loc = new Location(world, 0, 60, 0); + world.getBlockAt(loc).setType(Material.BEDROCK); + } + Location spawn = new Location(world, 0.5, 62, 0.5); + world.setSpawnLocation(spawn); + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.teleport(spawn); + } + GUIUtils.setConfig("void.enabled", true); + GUIUtils.sendTitleToAll("Void Challenge", "Void-Modus aktiviert", ChatColor.GREEN); + } else { + ChatUtil.sendErrorMessage(p, "Die Void Challenge läuft bereits!"); + return true; + } + } else { + if (plugin.getConfig().getBoolean("void.enabled")) { + GUIUtils.setConfig("void.enabled", false); + GUIUtils.sendTitleToAll("Void Challenge", "Void-Modus deaktiviert", ChatColor.RED); + } else { + ChatUtil.sendErrorMessage(p, "Aktuell läuft keine Void Challenge!"); + return true; + } + } + return true; + } +} + diff --git a/src/main/java/de/fanta/challenges/listeners/VoidListener.java b/src/main/java/de/fanta/challenges/listeners/VoidListener.java new file mode 100644 index 0000000..76fb3d5 --- /dev/null +++ b/src/main/java/de/fanta/challenges/listeners/VoidListener.java @@ -0,0 +1,41 @@ +package de.fanta.challenges.listeners; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.events.TimerChangedEvent; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.inventory.ItemStack; + +import java.util.Arrays; +import java.util.List; +import java.util.Random; + +public class VoidListener implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onActivation(TimerChangedEvent event) { + if (plugin.getConfig().getBoolean("void.enabled")) { + if (event.isRunning()) { + startTask(); + } + } + } + + public void startTask() { + Random random = new Random(); + Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> { + List materials = Arrays.asList(Material.values()); + ItemStack randomItem = new ItemStack(materials.get(random.nextInt(materials.size()))); + World world = Bukkit.getWorld("VOID"); + Location loc = new Location(world, 0.5, 61, 0.5); + world.dropItem(loc, randomItem); + + }, 10 * 20, 10 * 20); + } +}