diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..234db15 --- /dev/null +++ b/.classpath @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4a9e9ef --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/target/ +/bin/ +.gitignore +.classpath +.project diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 2f5cc74..b5490a0 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,8 +1,8 @@ eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.compliance=11 org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore -org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=11 diff --git a/bin/pom.xml b/bin/pom.xml index 04b6cde..678c043 100644 --- a/bin/pom.xml +++ b/bin/pom.xml @@ -50,6 +50,10 @@ destroystokyo-repo https://repo.destroystokyo.com/repository/maven-public/ + + brokkonaut + https://www.iani.de/nexus/content/groups/public + diff --git a/pom.xml b/pom.xml index d268225..413ad7b 100644 --- a/pom.xml +++ b/pom.xml @@ -1,53 +1,62 @@ - - 4.0.0 - net.brennholz.challenges - Challenges - 2.0 - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + de.fanta.challenges + Challenges + 1.16.1.2-DEV + UTF-8 - UTF-8 - UTF-8 - UTF-8 - - - - destroystokyo-repo - https://repo.destroystokyo.com/repository/maven-public/ - - - - - com.destroystokyo.paper - paper-api - 1.15.2-R0.1-SNAPSHOT - provided - - - - - - org.apache.maven.plugins - maven-jar-plugin - 3.2.0 - - ${project.artifactId} - - - - maven-compiler-plugin - 3.8.1 - + UTF-8 + ${project.groupId}.Challenges + fanta, vollkorntomate + + + + destroystokyo-repo + https://repo.destroystokyo.com/repository/maven-public/ + + + brokkonaut + https://www.iani.de/nexus/content/groups/public + + + + + com.destroystokyo.paper + paper-api + 1.16.1-R0.1-SNAPSHOT + provided + + + de.iani.cubeside + CubesideUtilsBukkit + 1.16-SNAPSHOT + provided + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + ${project.artifactId}-${project.version} + + + + maven-compiler-plugin + 3.8.1 + 11 - - - - - - src/main/resources - true - - - + + + + + + src/main/resources + true + + + diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java new file mode 100644 index 0000000..1262148 --- /dev/null +++ b/src/main/java/de/fanta/challenges/Challenges.java @@ -0,0 +1,277 @@ +/*TODO +Backpack Reset +Gamerule Buttons +*/ + +package de.fanta.challenges; + +import de.fanta.challenges.challenges.RandomDrops; +import de.fanta.challenges.scoreboard.ScoreBoardManager; +import de.fanta.challenges.commands.CommandRegistration; +import de.fanta.challenges.events.PlayerCountChangedEvent; +import de.fanta.challenges.events.ServerStatusChangedEvent; +import de.fanta.challenges.events.TimerChangedEvent; +import de.fanta.challenges.guis.BackpackGui; +import de.fanta.challenges.guis.ResetGui; +import de.fanta.challenges.guis.TimerGui; +import de.fanta.challenges.guis.settingsgui.MainGui; +import de.fanta.challenges.guis.settingsgui.OtherSettingsGui; +import de.fanta.challenges.guis.settingsgui.ServerSettingsGui; +import de.fanta.challenges.guis.settingsgui.SettingsGui; +import de.fanta.challenges.listeners.BlockCreateListener; +import de.fanta.challenges.listeners.BlockDestroyListener; +import de.fanta.challenges.listeners.DamageListener; +import de.fanta.challenges.listeners.DeathListener; +import de.fanta.challenges.listeners.InteractListener; +import de.fanta.challenges.listeners.InventoryClickListener; +import de.fanta.challenges.listeners.PlayerListener; +import de.fanta.challenges.listeners.QuitJoinListener; +import de.fanta.challenges.scoreboard.ScoreManager; +import de.fanta.challenges.utils.ChatUtil; +import net.md_5.bungee.api.ChatColor; +import org.bukkit.BanList; +import org.bukkit.Bukkit; +import org.bukkit.GameRule; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.WorldCreator; +import org.bukkit.WorldType; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.plugin.java.JavaPlugin; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; + +public class Challenges extends JavaPlugin { + private static Challenges plugin; + + private File backpackConfigFile; + + private FileConfiguration BackpackConfig; + + private File RndDropsConfigFile; + + private FileConfiguration RndDropsConfig; + + private Timer timer; + + private BackpackGui backpack; + + private ScoreBoardManager sbManager; + private ScoreManager scoreManager; + + public RandomDrops rndDrops; + + public static Challenges getPlugin() { + return plugin; + } + + public static final String PREFIX = ChatColor.of("#455aad") + "[" + ChatUtil.NORMAL + "Challenge" + ChatColor.of("#455aad") + "]"; + public static final String GUIPREFIX = ChatColor.of("#2d8745") + "Challenge"; + + private Player currentEditor; + + private boolean waitingForShutdown; + + @Override + public void onEnable() { + plugin = this; + + this.timer = new Timer(this); + this.rndDrops = new RandomDrops(); + + this.scoreManager = new ScoreManager(this); + + this.backpack = new BackpackGui(getConfig().getInt("backpack_size") * 9); + + 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); + + saveDefaultConfig(); + reloadConfig(); + createRndDropsConfig(); + createBackpackConfig(); + + this.backpack.loadInventoryFromConfig(); + getLogger().info("Plugin loaded!"); + this.sbManager = new ScoreBoardManager(this); + + timer.setTime(getConfig().getInt("timertime")); + + Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> { + World world = Bukkit.getWorld("world"); + world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); + checkMLGWorld(); + }, 1L); + + if (getConfig().getBoolean("World_Reset")) { + File config = new File(plugin.getDataFolder(), "config.yml"); + config.delete(); + reloadConfig(); + saveConfig(); + this.backpack.clearConfig(); + this.rndDrops.shuffleItems(); + this.rndDrops.saveItems(); + this.rndDrops.loadItems(); + } else { + this.rndDrops.loadItems(); + this.backpack.loadInventoryFromConfig(); + } + + 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())); + }, 200L); + } + + @Override + public void onDisable() { + Bukkit.getBanList(BanList.Type.NAME).getBanEntries().forEach(b -> Bukkit.getBanList(BanList.Type.NAME).pardon(b.getTarget())); + if (!getConfig().getBoolean("World_Reset")) { + this.backpack.saveInventoryToConfig();getConfig().set("backpack_size", backpack.getSize() / 9); + } else { + this.backpack.clearConfig(); + } + try { + this.RndDropsConfig.save(this.RndDropsConfigFile); + } catch (IOException e) { + e.printStackTrace(); + } + getConfig().set("timertime", timer.getTime()); + saveConfig(); + getLogger().info("Plugin unloaded"); + } + + public RandomDrops getRandomDropsManager() { + return this.rndDrops; + } + + public FileConfiguration getBackpackConfig() { + return this.BackpackConfig; + } + + private void createBackpackConfig() { + this.backpackConfigFile = new File(getDataFolder(), "backpack.yml"); + if (!this.backpackConfigFile.exists()) { + this.backpackConfigFile.getParentFile().mkdirs(); + saveResource("backpack.yml", false); + } + this.BackpackConfig = new YamlConfiguration(); + try { + this.BackpackConfig.load(this.backpackConfigFile); + } catch (InvalidConfigurationException | IOException e) { + e.printStackTrace(); + } + } + + public FileConfiguration getRndDropsConfig() { + return this.RndDropsConfig; + } + + private void createRndDropsConfig() { + this.RndDropsConfigFile = new File(getDataFolder(), "rnddrops.yml"); + if (!this.RndDropsConfigFile.exists()) { + this.RndDropsConfigFile.getParentFile().mkdirs(); + saveResource("rnddrops.yml", false); + } + this.RndDropsConfig = new YamlConfiguration(); + try { + this.RndDropsConfig.load(this.RndDropsConfigFile); + } catch (IOException | org.bukkit.configuration.InvalidConfigurationException e) { + e.printStackTrace(); + } + } + + public ScoreBoardManager getSBManager() { + return this.sbManager; + } + + public void checkMLGWorld() { + World mlgWorld = Bukkit.getWorld("mlg_challenge"); + if (mlgWorld == null) { + mlgWorld = Bukkit.createWorld((new WorldCreator("mlg_challenge")).type(WorldType.FLAT).generateStructures(false)); + mlgWorld.setAnimalSpawnLimit(0); + mlgWorld.setGameRule(GameRule.DO_MOB_SPAWNING, false); + mlgWorld.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); + mlgWorld.setGameRule(GameRule.DO_WEATHER_CYCLE, false); + mlgWorld.setTime(6000L); + } + } + + public ItemStack addGUIItem(Material mat, String name, String... lore) { + ItemStack item = new ItemStack(mat, 1); + ItemMeta meta = item.getItemMeta(); + if (mat != Material.AIR) { + meta.setDisplayName(name); + ArrayList metalore = new ArrayList<>(); + if (lore != null) { + metalore.addAll(Arrays.asList(lore)); + } + meta.setLore(metalore); + item.setItemMeta(meta); + } + return item; + } + + public Player getCurrentEditor() { + return currentEditor; + } + + public void setCurrentEditor(Player currentEditor) { + this.currentEditor = currentEditor; + } + + public boolean hasEditor() { + return currentEditor != null; + } + + public boolean isEditor(Player player) { + return hasEditor() && currentEditor.getUniqueId().equals(player.getUniqueId()); + } + + public Timer getTimer() { + return timer; + } + + public boolean isWaitingForShutdown() { + return waitingForShutdown; + } + + public void setWaitingForShutdown(boolean waitingForShutdown) { + this.waitingForShutdown = waitingForShutdown; + } + + public BackpackGui getBackpack() { + return backpack; + } + + public File getBackpackConfigFile() { + return backpackConfigFile; + } + + public ScoreManager getScoreManager() { + return scoreManager; + } +} diff --git a/src/main/java/de/fanta/challenges/Timer.java b/src/main/java/de/fanta/challenges/Timer.java new file mode 100644 index 0000000..d0d398c --- /dev/null +++ b/src/main/java/de/fanta/challenges/Timer.java @@ -0,0 +1,184 @@ +package de.fanta.challenges; + +import de.fanta.challenges.events.TimerChangedEvent; +import de.fanta.challenges.utils.ChatUtil; +import de.iani.cubesideutils.StringUtil; +import net.md_5.bungee.api.ChatColor; +import org.bukkit.Bukkit; +import org.bukkit.Effect; +import org.bukkit.GameMode; +import org.bukkit.GameRule; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import java.util.Random; + +public class Timer { + + private final Challenges plugin; + private final Random random; + private int actionBarTaskId; + private int idleActionBarTaskId; + + private int time; // seconds + private int timeSinceMLG; // seconds + private int maxMLGTime; // seconds + private boolean mlgActive; + private boolean reverse; + + public Timer(Challenges plugin) { + this.plugin = plugin; + this.random = new Random(); + this.maxMLGTime = plugin.getConfig().getInt("mlg.maxtime"); + + if (!isRunning()) { + sendIdleActionBar(); + } + } + + public void startTimer() { + if (idleActionBarTaskId > 0) { + Bukkit.getScheduler().cancelTask(idleActionBarTaskId); + idleActionBarTaskId = -1; + } + actionBarTaskId = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> { + int random = this.random.nextInt(750); + timeSinceMLG++; + if (random == 638 || timeSinceMLG >= maxMLGTime) { + triggerMLG(); + } + + 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()); + + stopTimer(); + } else { + time--; + sendTimerActionBar(ChatColor.AQUA); + } + } else { + time++; + sendTimerActionBar(ChatColor.GREEN); + } + }, 20L, 20L); + + Bukkit.getPluginManager().callEvent(new TimerChangedEvent(true)); + } + + public void stopTimer() { + if (actionBarTaskId > 0) { + Bukkit.getScheduler().cancelTask(actionBarTaskId); + actionBarTaskId = -1; + sendIdleActionBar(); + } + + Bukkit.getPluginManager().callEvent(new TimerChangedEvent(false)); + } + + private void sendIdleActionBar() { + idleActionBarTaskId = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> { + for (Player p : Bukkit.getOnlinePlayers()) { + p.sendActionBar(ChatColor.RED + "" + ChatColor.BOLD + "Der Timer ist pausiert."); + if (p.getGameMode() != GameMode.SPECTATOR) { + p.getWorld().playEffect(p.getLocation(), Effect.ENDER_SIGNAL, 2); + } + } + }, 20L, 20L); + } + + public boolean triggerMLG() { + if (plugin.getConfig().getBoolean("mlg.enabled") && !mlgActive && Bukkit.getOnlinePlayers().size() >= 1) { + mlgActive = true; + Bukkit.broadcastMessage(Challenges.PREFIX + " §bZeit für einen MLG! §6Viel Glück!"); + timeSinceMLG = 0; + for (Player p : Bukkit.getOnlinePlayers()) { + if (p.getGameMode() == GameMode.SURVIVAL && !p.isDead()) { + tpMLG(p); + } + } + return true; + } + return false; + } + + private void sendTimerActionBar(ChatColor color) { + for (Player p : Bukkit.getOnlinePlayers()) { + p.sendActionBar(formatTime(color)); + } + } + + public String formatTime(ChatColor color) { + return color + StringUtil.formatTimespan((long) time * 1000L, " Tag/e ", "", "", "", ":", ":", false, true); + } + + public void reverseTimer() { + this.reverse = !this.reverse; + } + + public void tpMLG(Player p) { + p.closeInventory(); + Inventory inv = Bukkit.createInventory(p, InventoryType.PLAYER, p.getName()); + inv.setContents(p.getInventory().getContents()); + p.getInventory().clear(); + p.getInventory().setItemInMainHand(new ItemStack(Material.WATER_BUCKET)); + int rndY = random.nextInt(20); + Location oldloc = p.getLocation(); + + Location newloc = new Location(Bukkit.getWorld("mlg_challenge"), p.getLocation().getBlockX(), (50 + rndY), p.getLocation().getBlockZ()); + p.teleport(newloc); + mlgResult(p, oldloc, inv); + } + + public void mlgResult(final Player p, final Location loc, final Inventory inv) { + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + mlgActive = false; + if (!p.isDead() && p.getWorld() == Bukkit.getWorld("mlg_challenge")) { + ChatUtil.sendNormalMessage(p, "§aDu hast den §bMLG §aerfolgreich absolviert! §6Weitere folgen..."); + p.setInvulnerable(true); + mlgBack(p, loc, inv); + } else if (Bukkit.getWorlds().get(0).getGameRuleValue(GameRule.KEEP_INVENTORY)) { + p.getInventory().setContents(inv.getContents()); + } + }, 100L); + } + + public void mlgBack(final Player p, Location loc, Inventory inv) { + p.teleport(loc); + p.getInventory().setContents(inv.getContents()); + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> p.setInvulnerable(false), 60L); + } + + public boolean isMlgActive() { + return mlgActive; + } + + public void setMlgActive(boolean mlgActive) { + this.mlgActive = mlgActive; + } + + public boolean isRunning() { + return actionBarTaskId > 0; + } + + public boolean isReverse() { + return reverse; + } + + public int getTime() { + return time; + } + + public void setTime(int seconds) { + this.time = seconds; + } +} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/challenges/RandomDrops.java b/src/main/java/de/fanta/challenges/challenges/RandomDrops.java new file mode 100644 index 0000000..0293e67 --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/RandomDrops.java @@ -0,0 +1,60 @@ +package de.fanta.challenges.challenges; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.Random; +import java.util.stream.Collectors; + +import de.fanta.challenges.Challenges; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.configuration.file.FileConfiguration; + +public class RandomDrops { + private final ArrayList BLOCKS; + + private final ArrayList ITEM_DROPS; + + private HashMap drops = new HashMap<>(); + + public RandomDrops() { + this.BLOCKS = (ArrayList) Arrays. stream(Material.values()).filter(mat -> mat.isBlock()).collect(Collectors.toList()); + this.ITEM_DROPS = (ArrayList) Arrays. stream(Material.values()).filter(mat -> (mat.isItem() || mat == Material.BEDROCK)).collect(Collectors.toList()); + } + + public void shuffleItems() { + Collections.shuffle(this.ITEM_DROPS); + ArrayList itemDropsCopy = new ArrayList<>(); + this.ITEM_DROPS.forEach(m -> itemDropsCopy.add(m)); + this.BLOCKS.forEach(mat -> { + int r = (new Random()).nextInt(itemDropsCopy.size() - 1); + this.drops.put(mat, itemDropsCopy.get(r)); + itemDropsCopy.remove(r); + }); + saveItems(); + } + + public void saveItems() { + FileConfiguration config = Challenges.getPlugin().getRndDropsConfig(); + config.set("drops", this.drops.entrySet().stream().map(entry -> (new StringBuilder()).append(entry.getKey()).append(":").append(entry.getValue()).toString()).collect(Collectors.toList())); + } + + public void loadItems() { + this.drops.clear(); + FileConfiguration config = Challenges.getPlugin().getRndDropsConfig(); + if (config.isList("drops")) { + config.getStringList("drops").forEach(str -> { + String[] materialSplitted = str.split(":"); + this.drops.put(Material.getMaterial(materialSplitted[0]), Material.getMaterial(materialSplitted[1])); + }); + } else { + shuffleItems(); + } + } + + public Material getMaterialFromBlock(Block block) { + return this.drops.get(block.getType()); + } +} diff --git a/src/main/java/de/fanta/challenges/commands/BackpackCommand.java b/src/main/java/de/fanta/challenges/commands/BackpackCommand.java new file mode 100644 index 0000000..1460de3 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/BackpackCommand.java @@ -0,0 +1,28 @@ +package de.fanta.challenges.commands; + +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.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class BackpackCommand extends SubCommand { + private final Challenges plugin; + + public BackpackCommand(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; + } + Player p = (Player) sender; + plugin.getBackpack().open(p); + return true; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/CommandRegistration.java b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java new file mode 100644 index 0000000..e3b1105 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java @@ -0,0 +1,94 @@ +package de.fanta.challenges.commands; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.commands.challenges.ChallengesCommand; +import de.fanta.challenges.commands.challenges.ChallengesHelpCommand; +import de.fanta.challenges.commands.challenges.ChallengesKickCommand; +import de.fanta.challenges.commands.coords.CoordsCommand; +import de.fanta.challenges.commands.coords.CoordsDeleteCommand; +import de.fanta.challenges.commands.coords.CoordsGetCommand; +import de.fanta.challenges.commands.coords.CoordsSaveCommand; +import de.fanta.challenges.commands.coords.CoordsShareCommand; +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.EventToggleCommand; +import de.fanta.challenges.commands.hp.HPAddCommand; +import de.fanta.challenges.commands.hp.HPGetCommand; +import de.fanta.challenges.commands.hp.HPMaxCommand; +import de.fanta.challenges.commands.hp.HPRemoveCommand; +import de.fanta.challenges.commands.hp.HPSetCommand; +import de.fanta.challenges.commands.reset.ResetCommand; +import de.fanta.challenges.commands.reset.ResetConfirmCommand; +import de.fanta.challenges.commands.revive.ReviveCommandTODO; +import de.fanta.challenges.commands.settings.SettingsCommandTODO; +import de.fanta.challenges.commands.timer.TimerCommand; +import de.fanta.challenges.commands.timer.TimerPauseCommand; +import de.fanta.challenges.commands.timer.TimerResetCommand; +import de.fanta.challenges.commands.timer.TimerReverseCommand; +import de.fanta.challenges.commands.timer.TimerSetCommand; +import de.fanta.challenges.commands.timer.TimerStartCommand; +import de.iani.cubesideutils.bukkit.commands.CommandRouter; + +public class CommandRegistration { + private final Challenges plugin; + + public CommandRegistration(Challenges plugin) { + this.plugin = plugin; + } + + public void registerCommands() { + plugin.getCommand("settings").setExecutor(new SettingsCommandTODO(plugin)); + plugin.getCommand("revive").setExecutor(new ReviveCommandTODO(plugin)); + + CommandRouter challengesRouter = new CommandRouter(plugin.getCommand("challenges")); + challengesRouter.addCommandMapping(new ChallengesCommand(plugin)); + challengesRouter.addCommandMapping(new ChallengesHelpCommand(plugin), "help"); + challengesRouter.addCommandMapping(new ChallengesKickCommand(plugin), "kick"); + + + CommandRouter resetRouter = new CommandRouter(plugin.getCommand("reset")); + resetRouter.addCommandMapping(new ResetCommand(plugin)); + resetRouter.addCommandMapping(new ResetConfirmCommand(plugin), "confirm"); + + CommandRouter backpackRouter = new CommandRouter(plugin.getCommand("backpack")); + backpackRouter.addCommandMapping(new BackpackCommand(plugin)); + + CommandRouter coordsRouter = new CommandRouter(plugin.getCommand("coords")); + coordsRouter.addCommandMapping(new CoordsCommand(plugin)); + coordsRouter.addCommandMapping(new CoordsShareCommand(plugin), "share"); + coordsRouter.addCommandMapping(new CoordsGetCommand(plugin), "get"); + coordsRouter.addCommandMapping(new CoordsSaveCommand(plugin), "save"); + coordsRouter.addCommandMapping(new CoordsDeleteCommand(plugin), "delete"); + + CommandRouter hpRouter = new CommandRouter(plugin.getCommand("hp")); + hpRouter.addCommandMapping(new HPAddCommand(plugin), "add"); + hpRouter.addCommandMapping(new HPGetCommand(plugin), "get"); + hpRouter.addCommandMapping(new HPMaxCommand(plugin), "max"); + hpRouter.addCommandMapping(new HPRemoveCommand(plugin), "remove"); + hpRouter.addCommandMapping(new HPSetCommand(plugin), "set"); + + CommandRouter timerRouter = new CommandRouter(plugin.getCommand("timer")); + timerRouter.addCommandMapping(new TimerCommand(plugin)); + timerRouter.addCommandMapping(new TimerPauseCommand(plugin), "pause"); + timerRouter.addCommandMapping(new TimerResetCommand(plugin), "reset"); + timerRouter.addCommandMapping(new TimerReverseCommand(plugin), "reverse"); + timerRouter.addCommandMapping(new TimerSetCommand(plugin), "set"); + timerRouter.addCommandMapping(new TimerStartCommand(plugin), "start"); + + CommandRouter forcemlgRouter = new CommandRouter(plugin.getCommand("forcemlg")); + forcemlgRouter.addCommandMapping(new ForceMLGCommand(plugin)); + + CommandRouter editorRouter = new CommandRouter(plugin.getCommand("editor")); + editorRouter.addCommandMapping(new EditorCommand(plugin)); + editorRouter.addCommandMapping(new EditorSetCommand(plugin), "set"); + + CommandRouter leaveRouter = new CommandRouter(plugin.getCommand("leave")); + leaveRouter.addCommandMapping(new LeaveCommand()); + + CommandRouter eventRouter = new CommandRouter(plugin.getCommand("event")); + eventRouter.addCommandMapping(new EventCommand(plugin)); + eventRouter.addCommandMapping(new EventToggleCommand(plugin, true), "enable"); + eventRouter.addCommandMapping(new EventToggleCommand(plugin, false), "disable"); + } +} diff --git a/src/main/java/de/fanta/challenges/commands/ForceMLGCommand.java b/src/main/java/de/fanta/challenges/commands/ForceMLGCommand.java new file mode 100644 index 0000000..dfd7d21 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/ForceMLGCommand.java @@ -0,0 +1,40 @@ +package de.fanta.challenges.commands; + +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.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class ForceMLGCommand extends SubCommand { + + private final Challenges plugin; + + public ForceMLGCommand(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.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + if (!plugin.getTimer().triggerMLG()) { + ChatUtil.sendWarningMessage(sender, "Ein MLG findet bereits statt! Oder MLGs sind nicht aktiv."); + } + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + return true; + } + +} diff --git a/src/main/java/de/fanta/challenges/commands/LeaveCommand.java b/src/main/java/de/fanta/challenges/commands/LeaveCommand.java new file mode 100644 index 0000000..2f1e9d6 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/LeaveCommand.java @@ -0,0 +1,27 @@ +package de.fanta.challenges.commands; + +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 LeaveCommand extends SubCommand { + + public LeaveCommand() { + } + + @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; + } else { + ((Player) sender).performCommand("tt challenge"); + } + return true; + } + +} + diff --git a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesCommand.java b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesCommand.java new file mode 100644 index 0000000..51de8bf --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesCommand.java @@ -0,0 +1,24 @@ +package de.fanta.challenges.commands.challenges; + +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.command.Command; +import org.bukkit.command.CommandSender; + +public class ChallengesCommand extends SubCommand { + + private final Challenges plugin; + + public ChallengesCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + ChatUtil.sendNormalMessage(sender, "Challenges v" + plugin.getDescription().getVersion() + " by " + plugin.getDescription().getAuthors()); + ChatUtil.sendNormalMessage(sender, "Nutze /challenges help für Hilfe"); + return true; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesHelpCommand.java b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesHelpCommand.java new file mode 100644 index 0000000..0774076 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesHelpCommand.java @@ -0,0 +1,47 @@ +package de.fanta.challenges.commands.challenges; + +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.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class ChallengesHelpCommand extends SubCommand { + + private final Challenges plugin; + + public ChallengesHelpCommand(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.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + ChatUtil.sendNormalMessage(sender, "Verfügbare Befehle:"); + ChatUtil.sendNormalMessage(sender, "/HP - Verwalte die HP einzelner Spieler"); + ChatUtil.sendNormalMessage(sender, "/Coords - Teile oder speichere Coordinaten"); + ChatUtil.sendNormalMessage(sender, "/Settings - Verwalte die Challenges Einstellungen"); + ChatUtil.sendNormalMessage(sender, "/Timer - Verwalte den Timer"); + ChatUtil.sendNormalMessage(sender, "/Revive - Wiederbelebe Spieler"); + ChatUtil.sendNormalMessage(sender, "/Backpack | /bp - öffne das Backpack"); + 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"); + return true; + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; + } + } +} diff --git a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesKickCommand.java b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesKickCommand.java new file mode 100644 index 0000000..e0043df --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesKickCommand.java @@ -0,0 +1,61 @@ +package de.fanta.challenges.commands.challenges; + +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.BanList; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class ChallengesKickCommand extends SubCommand { + private final Challenges plugin; + + public ChallengesKickCommand(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.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + if (args.hasNext()) { + String playerName = args.getNext(); + Player player = Bukkit.getPlayer(playerName); + + if (player == sender) { + ChatUtil.sendErrorMessage(sender,"Du kannst dich nicht selbst kicken"); + return true; + } + + if (player == null) { + ChatUtil.sendErrorMessage(sender, "Dieser Spieler ist nicht online!"); + } else { + player.performCommand("tt challenge"); + ChatUtil.sendWarningMessage(player, "Du wurdest vom Editor gekickt!"); + ChatUtil.sendWarningMessage(player, "Du kannst in einer Minute wieder joinen"); + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + player.banPlayer("Du wurdest vom Editor gekickt"); + }, 5L); + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + Bukkit.getBanList(BanList.Type.NAME).pardon(player.getName()); + }, 20 * 60); + } + return true; + } + return false; + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! Nur " + plugin.getCurrentEditor().getName() + " kann Spieler kicken"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + } +} diff --git a/src/main/java/de/fanta/challenges/commands/coords/CoordsCommand.java b/src/main/java/de/fanta/challenges/commands/coords/CoordsCommand.java new file mode 100644 index 0000000..705fc8d --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/coords/CoordsCommand.java @@ -0,0 +1,71 @@ +package de.fanta.challenges.commands.coords; + +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.Material; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +public class CoordsCommand extends SubCommand { + + private Challenges plugin = Challenges.getPlugin(); + + public static final Inventory CoordsGUI = Bukkit.createInventory(null, 45, "§6Koordinaten"); + + public static final String CGUIN = "§6Koordinaten"; + + public CoordsCommand(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; + } + createMainGUI((Player) sender); + + return true; +} + + public void createMainGUI(Player p) { + int i = 0; + String w; + String x; + String y; + String z; + for (String key : plugin.getConfig().getConfigurationSection("Saved_Locations").getKeys(false)) { + if (i >= 45) { + break; + } + w = plugin.getConfig().getString("Saved_Locations." + key + ".World"); + x = plugin.getConfig().getString("Saved_Locations." + key + ".BlockX"); + y = plugin.getConfig().getString("Saved_Locations." + key + ".BlockY"); + z = plugin.getConfig().getString("Saved_Locations." + key + ".BlockZ"); + CoordsGUI.setItem(i, plugin.addGUIItem(getBlock(w), key, "§bX: §c" + x, "§bY: §c" + y, "§bZ: §c" + z)); + i++; + } + for (int ii = i; ii < 45; ii++) { + CoordsGUI.setItem(ii, plugin.addGUIItem(Material.AIR, "")); + } + p.openInventory(CoordsGUI); + } + + private Material getBlock(String wname) { + ItemStack mat = new ItemStack(Material.GRASS_BLOCK); + if (wname.equals(Bukkit.getWorlds().get(1).getName())) { + mat.setType(Material.NETHERRACK); + } else if (wname.equals(Bukkit.getWorlds().get(2).getName())) { + mat.setType(Material.END_STONE); + } + return mat.getType(); + } +} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/commands/coords/CoordsDeleteCommand.java b/src/main/java/de/fanta/challenges/commands/coords/CoordsDeleteCommand.java new file mode 100644 index 0000000..e8709e0 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/coords/CoordsDeleteCommand.java @@ -0,0 +1,63 @@ +package de.fanta.challenges.commands.coords; + +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.Material; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +import java.util.Collection; + +public class CoordsDeleteCommand extends SubCommand { + + public static final Inventory CoordsDeleteGUI = Bukkit.createInventory(null, 9, "§6Entferne Koordinate"); + public static final String CDGUIN = "§6Entferne Koordinate"; + private final Challenges plugin; + + public CoordsDeleteCommand(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; + } + Player player = (Player) sender; + + if (args.hasNext()) { + String next = args.getNext(); + if (plugin.getConfig().contains("Saved_Locations." + next)) { + createDeleteGUI(player, next); + player.openInventory(CoordsDeleteGUI); + } else { + ChatUtil.sendWarningMessage(player, "Diese Position existiert nicht!"); + } + return true; + } + return false; + } + + public void createDeleteGUI(Player p, String dname) { + CoordsDeleteGUI.setItem(0, plugin.addGUIItem(Material.LIME_TERRACOTTA, "§aLöschen bestätigen", "§bWegpunkt: §c" + dname)); + CoordsDeleteGUI.setItem(4, plugin.addGUIItem(Material.ORANGE_BANNER, dname)); + for (int i = 1; i < 8; i++) { + if (CoordsDeleteGUI.getItem(i) == null) { + CoordsDeleteGUI.setItem(i, plugin.addGUIItem(Material.ORANGE_STAINED_GLASS_PANE, "")); + } + } + CoordsDeleteGUI.setItem(8, plugin.addGUIItem(Material.RED_TERRACOTTA, "§cLöschen abbrechen", "§bWegpunkt: §c" + dname)); + p.openInventory(CoordsDeleteGUI); + } + + @Override + public Collection onTabComplete(CommandSender sender, Command command, String alias, ArgsParser args) { + return plugin.getConfig().getConfigurationSection("Saved_Locations").getKeys(false); + } +} diff --git a/src/main/java/de/fanta/challenges/commands/coords/CoordsGetCommand.java b/src/main/java/de/fanta/challenges/commands/coords/CoordsGetCommand.java new file mode 100644 index 0000000..15991d8 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/coords/CoordsGetCommand.java @@ -0,0 +1,53 @@ +package de.fanta.challenges.commands.coords; + +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.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.Collection; + +public class CoordsGetCommand extends SubCommand { + + private final Challenges plugin; + + public CoordsGetCommand(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; + } + Player player = (Player) sender; + + if (!args.hasNext()) { + ChatUtil.sendNormalMessage(player, "Verfügbare Positionen:"); + for (String key : plugin.getConfig().getConfigurationSection("Saved_Locations").getKeys(false)) { + ChatUtil.sendNormalMessage(player, key); + } + } else { + String next = args.getNext(); + if (plugin.getConfig().contains("Saved_Locations." + next)) { + String w = plugin.getConfig().getString("Saved_Locations." + next + ".World"); + String x = plugin.getConfig().getString("Saved_Locations." + next + ".BlockX"); + String y = plugin.getConfig().getString("Saved_Locations." + next + ".BlockY"); + String z = plugin.getConfig().getString("Saved_Locations." + next + ".BlockZ"); + ChatUtil.sendNormalMessage(player, ChatUtil.NORMAL + "Position " + ChatUtil.WARNING + next + ChatUtil.NORMAL + ": " + ChatUtil.WARNING + "[" + x + "/" + y + "/" + z + " " + w + "]"); + } else { + ChatUtil.sendWarningMessage(player, "§cDiese Position existiert nicht!"); + } + } + return true; + } + + @Override + public Collection onTabComplete(CommandSender sender, Command command, String alias, ArgsParser args) { + return plugin.getConfig().getConfigurationSection("Saved_Locations").getKeys(false); + } +} diff --git a/src/main/java/de/fanta/challenges/commands/coords/CoordsSaveCommand.java b/src/main/java/de/fanta/challenges/commands/coords/CoordsSaveCommand.java new file mode 100644 index 0000000..5d8bbc4 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/coords/CoordsSaveCommand.java @@ -0,0 +1,49 @@ +package de.fanta.challenges.commands.coords; + +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.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class CoordsSaveCommand extends SubCommand { + + private final Challenges plugin; + + public CoordsSaveCommand(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; + } + Player player = (Player) sender; + + if (args.hasNext()) { + String next = args.getNext(); + if (!plugin.getConfig().contains("Saved_Locations." + next)) { + String w = player.getLocation().getWorld().getName().toLowerCase(); + int x = player.getLocation().getBlockX(); + int y = player.getLocation().getBlockY(); + int z = player.getLocation().getBlockZ(); + ChatUtil.sendNormalMessage(player, ChatUtil.NORMAL + "Position " + ChatUtil.WARNING + next + ChatUtil.NORMAL + ": " + ChatUtil.WARNING + "[" + x + "/" + y + "/" + z + " " + w + "]"); + plugin.getConfig().set("Saved_Locations." + next + ".World", w); + plugin.getConfig().set("Saved_Locations." + next + ".BlockX", x); + plugin.getConfig().set("Saved_Locations." + next + ".BlockY", y); + plugin.getConfig().set("Saved_Locations." + next + ".BlockZ", z); + plugin.saveConfig(); + } else { + ChatUtil.sendWarningMessage(player, "Diese Position existiert bereits! Benutze einen anderen Namen oder lösche die alte zuerst mit /coords delete " + next); + } + return true; + } + return false; + } + + +} diff --git a/src/main/java/de/fanta/challenges/commands/coords/CoordsShareCommand.java b/src/main/java/de/fanta/challenges/commands/coords/CoordsShareCommand.java new file mode 100644 index 0000000..59e132b --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/coords/CoordsShareCommand.java @@ -0,0 +1,34 @@ +package de.fanta.challenges.commands.coords; + +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.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class CoordsShareCommand extends SubCommand { + + private final Challenges plugin; + + public CoordsShareCommand(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; + } + Player player = (Player) sender; + String w = player.getLocation().getWorld().getName().toLowerCase(); + int x = player.getLocation().getBlockX(); + int y = player.getLocation().getBlockY(); + int z = player.getLocation().getBlockZ(); + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + sender.getName() + ChatUtil.NORMAL + " ist bei " + ChatUtil.WARNING + x + "/" + y + "/" + z + " " + ChatUtil.WARNING + w); + return true; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/editor/EditorCommand.java b/src/main/java/de/fanta/challenges/commands/editor/EditorCommand.java new file mode 100644 index 0000000..66b4677 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/editor/EditorCommand.java @@ -0,0 +1,35 @@ +package de.fanta.challenges.commands.editor; + +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.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class EditorCommand extends SubCommand { + + private final Challenges plugin; + + public EditorCommand(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.getCurrentEditor() != null) { + ChatUtil.sendNormalMessage(sender, plugin.getCurrentEditor().getName() + " ist der aktuelle Editor"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + } + +} diff --git a/src/main/java/de/fanta/challenges/commands/editor/EditorSetCommand.java b/src/main/java/de/fanta/challenges/commands/editor/EditorSetCommand.java new file mode 100644 index 0000000..1cfc619 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/editor/EditorSetCommand.java @@ -0,0 +1,56 @@ +package de.fanta.challenges.commands.editor; + +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.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class EditorSetCommand extends SubCommand { + + private final Challenges plugin; + + public EditorSetCommand(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.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + 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; + } else if (!plugin.isEditor(player)){ + plugin.setCurrentEditor(player); + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatColor.GREEN + player.getName() + " wurde von " + sender.getName() + " zum Editor ernannt"); + ChatUtil.sendNormalMessage(player, "Du bist jetzt Editor und kannst diese Lobby bearbeiten. (/challenges)"); + return true; + } else { + ChatUtil.sendWarningMessage(sender, "Du bist bereits Editor!"); + return true; + } + } + return true; + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! Nur " + plugin.getCurrentEditor().getName() + " kann einen neuen Editor bestimmen!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + } + +} diff --git a/src/main/java/de/fanta/challenges/commands/event/EventCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventCommand.java new file mode 100644 index 0000000..724fcf6 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/event/EventCommand.java @@ -0,0 +1,34 @@ +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.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class EventCommand extends SubCommand { + private final Challenges plugin; + + public EventCommand(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")) { + ChatUtil.sendNormalMessage(sender, "--- Event Commands ---"); + 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, "--- ************** ---"); + return true; + } + 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 new file mode 100644 index 0000000..9aea66c --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/event/EventToggleCommand.java @@ -0,0 +1,45 @@ +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 net.md_5.bungee.api.ChatColor; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class EventToggleCommand extends SubCommand { + + private final Challenges plugin; + private final boolean enable; + + public EventToggleCommand(Challenges plugin, boolean enable) { + this.plugin = plugin; + this.enable = enable; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (!sender.hasPermission("challenges.event")) { + ChatUtil.sendErrorMessage(sender, "Keine Berechtigung"); + return true; + } + if (enable) { + if (!plugin.getConfig().getBoolean("event")) { + GUIUtils.setConfig("event", true); + GUIUtils.sendTitleToAll("Event", "Event-Modus aktiviert", ChatColor.GREEN); + } else { + ChatUtil.sendErrorMessage(sender, "Das Event läuft bereits!"); + return true; + } + } else { + GUIUtils.setConfig("event", false); + GUIUtils.sendTitleToAll("Event", "Event-Modus deaktiviert", ChatColor.RED); + } + plugin.getSBManager().updateEventScoreboard(); + return true; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/hp/HPAddCommand.java b/src/main/java/de/fanta/challenges/commands/hp/HPAddCommand.java new file mode 100644 index 0000000..e49c1a1 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/hp/HPAddCommand.java @@ -0,0 +1,67 @@ +package de.fanta.challenges.commands.hp; + +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; + +public class HPAddCommand extends SubCommand { + + private final Challenges plugin; + + public HPAddCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + 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; + } + + if (args.hasNext()) { + double input = args.getNext(0.0); + double finalAddHP = player.getHealth() + input; + + if (finalAddHP <= player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue() && finalAddHP >= 0) { + player.setHealth(finalAddHP); + ChatUtil.sendNormalMessage(player, "Du wurdest von " + sender.getName() + " um " + input + "HP geheilt!"); + ChatUtil.sendNormalMessage(sender, "Du hast " + player.getName() + " " + input + "HP hinzugefügt!"); + } else { + ChatUtil.sendErrorMessage(sender, "Operation nicht möglich!"); + } + return true; + } + } + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + return false; + } + + @Override + public boolean requiresPlayer() { + return true; + } + + @Override + public String getUsage() { + return " - Füge einem Spieler die angegebene Zahl an Herzen hinzu"; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/hp/HPGetCommand.java b/src/main/java/de/fanta/challenges/commands/hp/HPGetCommand.java new file mode 100644 index 0000000..ea83474 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/hp/HPGetCommand.java @@ -0,0 +1,54 @@ +package de.fanta.challenges.commands.hp; + +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.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class HPGetCommand extends SubCommand { + + private final Challenges plugin; + + public HPGetCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + if (args.hasNext()) { + String playerName = args.getNext(); + Player player = Bukkit.getPlayer(playerName); + + if (player != null) { + ChatUtil.sendNormalMessage(sender, player.getName() + " besitzt derzeit " + player.getHealth() + "HP!"); + } else { + ChatUtil.sendErrorMessage(sender, "Dieser Spieler ist nicht online!"); + } + return true; + } + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + return false; + } + + @Override + public boolean requiresPlayer() { + return true; + } + + @Override + public String getUsage() { + return " - Erhalte die aktuellen HP eines Spielers"; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/hp/HPMaxCommand.java b/src/main/java/de/fanta/challenges/commands/hp/HPMaxCommand.java new file mode 100644 index 0000000..9c3345a --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/hp/HPMaxCommand.java @@ -0,0 +1,55 @@ +package de.fanta.challenges.commands.hp; + +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; + +public class HPMaxCommand extends SubCommand { + + private final Challenges plugin; + + public HPMaxCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + if (args.hasNext()) { + double next = args.getNext(-1.0); + if (next > 0) { + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue(next); + pp.setHealth(pp.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()); + } + ChatUtil.sendNormalMessage(sender, "Du hast die maximalen HP auf " + next + " gesetzt!"); + return true; + } + } + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + return false; + } + + @Override + public boolean requiresPlayer() { + return true; + } + + @Override + public String getUsage() { + return " - Setze die maximalen HP aller Spieler"; + } +} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/commands/hp/HPRemoveCommand.java b/src/main/java/de/fanta/challenges/commands/hp/HPRemoveCommand.java new file mode 100644 index 0000000..e86b78a --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/hp/HPRemoveCommand.java @@ -0,0 +1,66 @@ +package de.fanta.challenges.commands.hp; + +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; + +public class HPRemoveCommand extends SubCommand { + + private final Challenges plugin; + + public HPRemoveCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + 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; + } + + if (args.hasNext()) { + double input = args.getNext(0.0); + double finalRemoveHP = player.getHealth() - input; + if (finalRemoveHP <= player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue() && finalRemoveHP >= 0) { + player.setHealth(finalRemoveHP); + ChatUtil.sendNormalMessage(player, sender.getName() + " hat dir " + input + " HP entfernt!"); + ChatUtil.sendNormalMessage(sender, "Du hast " + player.getName() + " " + input + " HP entfernt!"); + } else { + ChatUtil.sendErrorMessage(sender, "Operation nicht möglich!"); + } + return true; + } + } + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + return false; + } + + @Override + public boolean requiresPlayer() { + return true; + } + + @Override + public String getUsage() { + return " - Entferne einem Spieler die angegebene Zahl an Herzen"; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/hp/HPSetCommand.java b/src/main/java/de/fanta/challenges/commands/hp/HPSetCommand.java new file mode 100644 index 0000000..0bc071b --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/hp/HPSetCommand.java @@ -0,0 +1,65 @@ +package de.fanta.challenges.commands.hp; + +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; + +public class HPSetCommand extends SubCommand { + + private final Challenges plugin; + + public HPSetCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + 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; + } + + if (args.hasNext()) { + double input = args.getNext(0.0); + if (input <= player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue() && input >= 0) { + player.setHealth(input); + ChatUtil.sendNormalMessage(player, sender.getName() + " hat deine HP auf " + input + " gesetzt!"); + ChatUtil.sendNormalMessage(sender, "Du hast die HP von " + player.getName() + " auf " + input + " gesetzt!"); + } else { + ChatUtil.sendErrorMessage(sender, "Operation nicht möglich!"); + } + return true; + } + } + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + return false; + } + + @Override + public boolean requiresPlayer() { + return true; + } + + @Override + public String getUsage() { + return " - Setze die Herzen eines Spieler auf die angegebene Zahl"; + } +} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/commands/reset/ResetCommand.java b/src/main/java/de/fanta/challenges/commands/reset/ResetCommand.java new file mode 100644 index 0000000..8fa6d69 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/reset/ResetCommand.java @@ -0,0 +1,38 @@ +package de.fanta.challenges.commands.reset; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.guis.ResetGui; +import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.commands.BackpackCommand; +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 ResetCommand extends SubCommand { + + private final Challenges plugin; + + public ResetCommand(Challenges plugin) { + this.plugin = plugin; + } + BackpackCommand backpack; + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + ResetGui.createResetGUI((Player) sender); + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! Nur" + plugin.getCurrentEditor().getName() + " kann die Map zurücksetzen!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + return true; + } +} + + diff --git a/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java b/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java new file mode 100644 index 0000000..4e66e22 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java @@ -0,0 +1,52 @@ +package de.fanta.challenges.commands.reset; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.commands.BackpackCommand; +import de.fanta.challenges.utils.ChatUtil; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import net.md_5.bungee.api.ChatColor; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class ResetConfirmCommand extends SubCommand { + + private final Challenges plugin; + + public ResetConfirmCommand(Challenges plugin) { + this.plugin = plugin; + } + BackpackCommand backpack; + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if ((sender instanceof Player && plugin.isEditor((Player) sender)) || sender.hasPermission("Challenges.editor.override")) { + plugin.getTimer().stopTimer(); + plugin.getTimer().setTime(0); + for (Player p : Bukkit.getOnlinePlayers()) { + p.sendTitle(ChatColor.of("#0ddead") + "Server wird zurückgesetzt!", ChatColor.RED + "Bitte warte einen Moment" + ChatColor.of("#0ddead") + "." + ChatColor.AQUA + "." + ChatColor.YELLOW + ".", 10, 220, 10); + p.performCommand("tt challenge"); + } + plugin.getConfig().set("World_Name", Bukkit.getWorlds().get(0).getName()); + plugin.getConfig().set("World_Reset", true); + for (String key : plugin.getConfig().getConfigurationSection("Saved_Locations").getKeys(false)) { + plugin.getConfig().set("Saved_Locations." + key, null); + } + plugin.saveConfig(); + + plugin.setWaitingForShutdown(true); + + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, Bukkit::shutdown, 60); + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! Nur" + plugin.getCurrentEditor().getName() + " kann die Map zurücksetzen!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + return true; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/revive/ReviveCommandTODO.java b/src/main/java/de/fanta/challenges/commands/revive/ReviveCommandTODO.java new file mode 100644 index 0000000..5a8af9a --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/revive/ReviveCommandTODO.java @@ -0,0 +1,81 @@ +package de.fanta.challenges.commands.revive; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ChatUtil; +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.OfflinePlayer; +import org.bukkit.World; +import org.bukkit.attribute.Attribute; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class ReviveCommandTODO implements CommandExecutor { + + private final Challenges plugin; + + public ReviveCommandTODO(Challenges plugin) { + this.plugin = plugin; + } + @Deprecated + @Override + public boolean onCommand(CommandSender sender, Command cmd, String lable, String[] args) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + if (args.length == 1) { + plugin.getTimer().setMlgActive(false); + if (args[0].equalsIgnoreCase("all")) { + for (Player p : Bukkit.getOnlinePlayers()) { + p.setHealth(p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()); + p.setGameMode(GameMode.SURVIVAL); + } + Bukkit.broadcastMessage("§bAlle Spieler wurden wiederbelebt! §aEs kann weiter gehen!"); + } else { + OfflinePlayer other = (Bukkit.getServer().getOfflinePlayer(args[0])); + if (other.isOnline()) { + Player p = (Player) other; + p.setHealth(p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()); + p.setGameMode(GameMode.SURVIVAL); + Bukkit.broadcastMessage("§b" + p.getName() + " §awurde von §b" + sender.getName() + " §awiederbelebt!"); + } else + sender.sendMessage("§cDieser Spieler ist nicht online!"); + } + } else if (args.length >= 4) { + World w = Bukkit.getWorld(args[1]); + double x = Double.parseDouble(args[2]); + double y = Double.parseDouble(args[3]); + double z = Double.parseDouble(args[4]); + Location loc = new Location(w, x, y, z); + if (args[0].equalsIgnoreCase("all")) { + for (Player p : Bukkit.getOnlinePlayers()) { + p.teleport(loc); + p.setHealth(p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()); + p.setGameMode(GameMode.SURVIVAL); + } + Bukkit.broadcastMessage("§bAlle Spieler wurden bei §c" + w.getName() + " " + x + " " + y + " " + z + " §bwiederbelebt! §aEs kann weiter gehen!"); + } else { + OfflinePlayer other = (Bukkit.getServer().getOfflinePlayer(args[0])); + if (other.isOnline()) { + Player p = (Player) other; + p.teleport(loc); + p.setHealth(p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()); + p.setGameMode(GameMode.SURVIVAL); + Bukkit.broadcastMessage("§b" + p.getName() + " §awurde von §b" + sender.getName() + " §abei §c" + w.getName() + " " + x + " " + y + " " + z + " §awiederbelebt!"); + } else + sender.sendMessage("§cDieser Spieler ist nicht online!"); + } + } else + sender.sendMessage("§cBenutze: /revive [world] [x] [y] [z]"); + return true; + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! Nur" + plugin.getCurrentEditor().getName() + " kann Spieler wiederbeleben!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + } +} diff --git a/src/main/java/de/fanta/challenges/commands/settings/SettingsCommandTODO.java b/src/main/java/de/fanta/challenges/commands/settings/SettingsCommandTODO.java new file mode 100644 index 0000000..88ba167 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/settings/SettingsCommandTODO.java @@ -0,0 +1,155 @@ +package de.fanta.challenges.commands.settings; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.guis.settingsgui.MainGui; +import de.fanta.challenges.utils.ChatUtil; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class SettingsCommandTODO implements CommandExecutor { + + + private final Challenges plugin; + + public SettingsCommandTODO(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player p = (Player) sender; + if (args.length == 0) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + MainGui.createMainGUI(p); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + } + } else if (args.length == 1) { + if (args[0].equalsIgnoreCase("get")) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + ChatUtil.sendNormalMessage(p, "Einstellungen"); + ChatUtil.sendNormalMessage(p, "Crafting = " + plugin.getConfig().getBoolean("craftingtable")); + ChatUtil.sendNormalMessage(p, "Villager Handel = " + plugin.getConfig().getBoolean("allowtrading")); + ChatUtil.sendNormalMessage(p, "Sterben bei Fallschaden = " + plugin.getConfig().getBoolean("deathonfall")); + ChatUtil.sendNormalMessage(p, "Schaden beim Schleichen = " + plugin.getConfig().getBoolean("damageonsneak")); + ChatUtil.sendNormalMessage(p, "Schadenswert beim Schleichen = " + plugin.getConfig().getString("sneakdmg")); + ChatUtil.sendNormalMessage(p, "Geteilter Schaden = " + plugin.getConfig().getBoolean("sharedmg")); + ChatUtil.sendNormalMessage(p, "Ein Leben für alle = " + plugin.getConfig().getBoolean("onelife")); + ChatUtil.sendNormalMessage(p, "Schaden im Chat = " + plugin.getConfig().getBoolean("dmginchat")); + ChatUtil.sendNormalMessage(p, "Respawn = " + plugin.getConfig().getBoolean("respawn")); + ChatUtil.sendNormalMessage(p, "MLG " + plugin.getConfig().getBoolean("mlg.enabled")); + ChatUtil.sendNormalMessage(p, "MLG Kill All " + plugin.getConfig().getBoolean("mlg.killall")); + ChatUtil.sendNormalMessage(p, "Maximale Zeit bis zum nächsten MLG = " + plugin.getConfig().getString("mlg.maxtime") + " Sekunden"); + ChatUtil.sendNormalMessage(p, "Sterben beim XP aufheben: " + plugin.getConfig().getBoolean("xpdeath")); + + } else { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + } + } else { + ChatUtil.sendWarningMessage(p, "/settings Get/Crafting/Trading/DeathFall/DMGOnSneak/SneakDMG/RndDrops/ShareDMG/Respawn/OneLife/ChatDMG/MLG/MLGkillall/MLGTime/DeathXP/SprintDeath/JumpDeath [True/False]"); + } + } else { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + Boolean Bwert = Boolean.parseBoolean(args[1]); + switch (args[0].toLowerCase()) { + case "crafting": + plugin.getConfig().set("craftingtable", Bwert); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Crafting = " + plugin.getConfig().getBoolean("craftingtable")); + break; + case "deathfall": + plugin.getConfig().set("deathonfall", Bwert); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Sterben bei Fallschaden = " + plugin.getConfig().getBoolean("deathonfall")); + break; + case "trading": + plugin.getConfig().set("allowtrading", Bwert); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Villager Handel = " + plugin.getConfig().getBoolean("allowtrading")); + break; + case "dmgonsneak": + plugin.getConfig().set("damageonsneak", Bwert); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Schaden beim Schleichen = " + plugin.getConfig().getBoolean("damageonsneak")); + break; + case "sneakdmg": + Double Dwert = Double.parseDouble(args[1]); + plugin.getConfig().set("sneakdmg", Dwert); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Schadenswert beim Schleichen = " + plugin.getConfig().getString("sneakdmg")); + break; + case "rnddrops": + plugin.getConfig().set("rnddrops", Bwert); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Random Drops = " + plugin.getConfig().getBoolean("rnddrops")); + break; + case "sharedmg": + plugin.getConfig().set("sharehp", Bwert); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Geteielter Schaden = " + plugin.getConfig().getBoolean("sharedmg")); + case "respawn": + plugin.getConfig().set("respawn", Bwert); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Respawn = " + plugin.getConfig().getBoolean("respawn")); + break; + case "onelife": + plugin.getConfig().set("onelife", Bwert); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Ein Leben für alle = " + plugin.getConfig().getBoolean("onelife")); + break; + case "chatdmg": + plugin.getConfig().set("dmginchat", Bwert); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Schaden im Chat = " + plugin.getConfig().getBoolean("dmginchat")); + break; + case "mlg": + plugin.getConfig().set("mlg.enabled", Bwert); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "MLG " + plugin.getConfig().getBoolean("mlg.enabled")); + break; + case "mlgkillall": + plugin.getConfig().set("mlg.killall", Bwert); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "MLG Kill All " + plugin.getConfig().getBoolean("mlg.killall")); + break; + case "mlgtime": + Double time = Double.parseDouble(args[1]); + plugin.getConfig().set("mlg.maxtime", time); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Maximale zeit bis zum nächsten MLG = " + plugin.getConfig().getString("mlg.maxtime") + " Sekunden"); + break; + case "deathxp": + plugin.getConfig().set("xpdeath", Bwert); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Sterben beim XP aufheben: " + plugin.getConfig().getBoolean("xpdeath")); + break; + case "sprintdeath": + plugin.getConfig().set("deathonsprint", Bwert); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Sterben durch sprinten: " + plugin.getConfig().getBoolean("deathonsprint")); + break; + case "jumpdeath": + plugin.getConfig().set("deathonjump", Bwert); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Sterben durch springenn: " + plugin.getConfig().getBoolean("deathonjump")); + break; + } + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP Kaufen!"); + return true; + } + } + } else { + ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); + } + return true; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerCommand.java new file mode 100644 index 0000000..3ab4809 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerCommand.java @@ -0,0 +1,40 @@ +package de.fanta.challenges.commands.timer; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.guis.TimerGui; +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 TimerCommand extends SubCommand { + + private final Challenges plugin; + + public TimerCommand(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.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + Player p = (Player) sender; + TimerGui.createTimerGUI(p); + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + return true; + } + +} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerPauseCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerPauseCommand.java new file mode 100644 index 0000000..63c19b8 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerPauseCommand.java @@ -0,0 +1,49 @@ +package de.fanta.challenges.commands.timer; + +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 net.md_5.bungee.api.ChatColor; +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; + +public class TimerPauseCommand extends SubCommand { + + private final Challenges plugin; + + public TimerPauseCommand(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.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + if (plugin.getTimer().isRunning()) { + World world = Bukkit.getWorld("world"); + world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); + plugin.getTimer().stopTimer(); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.RED + " Der Timer wurde angehalten"); + } else { + ChatUtil.sendWarningMessage(sender, "Der Timer ist bereits pausiert!"); + } + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + return true; + } + +} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerResetCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerResetCommand.java new file mode 100644 index 0000000..fa17f77 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerResetCommand.java @@ -0,0 +1,41 @@ +package de.fanta.challenges.commands.timer; + +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.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class TimerResetCommand extends SubCommand { + + private final Challenges plugin; + + public TimerResetCommand(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.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + plugin.getTimer().setTime(0); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.RED + " 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; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + return true; + } + +} diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerReverseCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerReverseCommand.java new file mode 100644 index 0000000..317ba7c --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerReverseCommand.java @@ -0,0 +1,45 @@ +package de.fanta.challenges.commands.timer; + +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 net.md_5.bungee.api.ChatColor; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class TimerReverseCommand extends SubCommand { + + private final Challenges plugin; + + public TimerReverseCommand(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.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + plugin.getTimer().reverseTimer(); + if (plugin.getTimer().isReverse()) { + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.AQUA + " Der Timer läuft nun rückwärts!"); + } else { + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.GREEN + " Der Timer läuft nun vorwärts!"); + } + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + return true; + } + +} diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerSetCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerSetCommand.java new file mode 100644 index 0000000..88c6b2e --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerSetCommand.java @@ -0,0 +1,48 @@ +package de.fanta.challenges.commands.timer; + +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 net.md_5.bungee.api.ChatColor; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class TimerSetCommand extends SubCommand { + + private final Challenges plugin; + + public TimerSetCommand(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 (args.hasNext()) { + int time = args.getNext(-1); + if (time >= 0) { + if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + plugin.getTimer().setTime(time); + Bukkit.broadcastMessage(Challenges.PREFIX + " §bDer Timer wurde auf " + plugin.getTimer().formatTime(ChatColor.GREEN) + " §bgesetzt!"); + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + } else { + ChatUtil.sendErrorMessage(sender, "Zeit muss eine Zahl größer als 0 sein!"); + } + return true; + } + return false; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java new file mode 100644 index 0000000..b2d34c1 --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java @@ -0,0 +1,49 @@ +package de.fanta.challenges.commands.timer; + +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.ChatColor; +import org.bukkit.GameRule; +import org.bukkit.World; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class TimerStartCommand extends SubCommand { + + private final Challenges plugin; + + public TimerStartCommand(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.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { + if (!plugin.getTimer().isRunning()) { + World world = Bukkit.getWorld("world"); + world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, true); + plugin.getTimer().startTimer(); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.GREEN + " Der Timer wird fortgesetzt!"); + } else { + ChatUtil.sendWarningMessage(sender, "Der Timer läuft bereits!"); + } + } else if (plugin.getCurrentEditor() != null) { + ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); + return true; + } else { + ChatUtil.sendErrorMessage(sender, "Aktuell gibt es keinen Editor!"); + ChatUtil.sendErrorMessage(sender, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!"); + return true; + } + return true; + } + +} diff --git a/src/main/java/de/fanta/challenges/events/PlayerCountChangedEvent.java b/src/main/java/de/fanta/challenges/events/PlayerCountChangedEvent.java new file mode 100644 index 0000000..d94336f --- /dev/null +++ b/src/main/java/de/fanta/challenges/events/PlayerCountChangedEvent.java @@ -0,0 +1,28 @@ +package de.fanta.challenges.events; + +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class PlayerCountChangedEvent extends Event { + + private static final HandlerList handlers = new HandlerList(); + + private int count; + + public PlayerCountChangedEvent(int count) { + this.count = count; + } + + public int getCount() { + return count; + } + + public static HandlerList getHandlerList() { + return handlers; + } + + @Override + public HandlerList getHandlers() { + return handlers; + } +} diff --git a/src/main/java/de/fanta/challenges/events/ServerStatusChangedEvent.java b/src/main/java/de/fanta/challenges/events/ServerStatusChangedEvent.java new file mode 100644 index 0000000..52c306f --- /dev/null +++ b/src/main/java/de/fanta/challenges/events/ServerStatusChangedEvent.java @@ -0,0 +1,28 @@ +package de.fanta.challenges.events; + +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class ServerStatusChangedEvent extends Event { + + private static final HandlerList handlers = new HandlerList(); + + private boolean online; + + public ServerStatusChangedEvent(boolean online) { + this.online = online; + } + + public boolean isOnline() { + return online; + } + + public static HandlerList getHandlerList() { + return handlers; + } + + @Override + public HandlerList getHandlers() { + return handlers; + } +} diff --git a/src/main/java/de/fanta/challenges/events/TimerChangedEvent.java b/src/main/java/de/fanta/challenges/events/TimerChangedEvent.java new file mode 100644 index 0000000..22a0aa0 --- /dev/null +++ b/src/main/java/de/fanta/challenges/events/TimerChangedEvent.java @@ -0,0 +1,28 @@ +package de.fanta.challenges.events; + +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class TimerChangedEvent extends Event { + + private static final HandlerList handlers = new HandlerList(); + + private boolean running; + + public TimerChangedEvent(boolean running) { + this.running = running; + } + + public boolean isRunning() { + return running; + } + + public static HandlerList getHandlerList() { + return handlers; + } + + @Override + public HandlerList getHandlers() { + return handlers; + } +} diff --git a/src/main/java/de/fanta/challenges/guis/BackpackGui.java b/src/main/java/de/fanta/challenges/guis/BackpackGui.java new file mode 100644 index 0000000..e7e030b --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/BackpackGui.java @@ -0,0 +1,102 @@ +package de.fanta.challenges.guis; + +import de.fanta.challenges.Challenges; +import net.md_5.bungee.api.ChatColor; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.configuration.MemorySection; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import java.io.IOException; +import java.util.Map; +import java.util.logging.Level; + +public class BackpackGui { + + public static final String TITLE = Challenges.GUIPREFIX + " >> Backpack"; + private Inventory backpack; + + public BackpackGui(int size) { + this.backpack = Bukkit.createInventory(null, size, TITLE); + } + + public void resize(int newSize) { + if (newSize == backpack.getSize()) { + return; + } + + Inventory newBackpack = Bukkit.createInventory(backpack.getHolder(), newSize, TITLE); + if (newSize > backpack.getSize()) { + for (int i = 0; i < backpack.getSize(); i++) { + newBackpack.setItem(i, backpack.getItem(i)); + } + } else if (newSize < backpack.getSize()) { + for (int i = 0; i < newSize; i++) { + newBackpack.setItem(i, backpack.getItem(i)); + } + + for (int i = newSize; i < backpack.getSize(); i++) { + ItemStack item = backpack.getItem(i); + if (item != null && item.getType() != Material.AIR) { + if (!newBackpack.addItem(item).isEmpty()) { + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.DARK_RED + " Backpack kann nicht verkleinert werden. Zu wenig Platz!"); // TODO COLOR + return; + } + } + } + } + for (HumanEntity player : backpack.getViewers()) { + player.closeInventory(); + } + this.backpack = newBackpack; + } + + public void open(Player player) { + player.openInventory(this.backpack); + } + + public int getSize() { + return this.backpack.getSize(); + } + + public void clearConfig() { + Challenges.getPlugin().getBackpackConfigFile().delete(); + } + + public void saveInventoryToConfig() { + clearConfig(); + for (int slot = 0; slot < backpack.getSize(); slot++) { + ItemStack stack = backpack.getItem(slot); + if (stack != null && stack.getType() != Material.AIR) { + Challenges.getPlugin().getBackpackConfig().set(String.valueOf(slot), stack.serialize()); + } + } + try { + Challenges.getPlugin().getBackpackConfig().save(Challenges.getPlugin().getBackpackConfigFile()); + } catch (IOException e) { + Bukkit.getLogger().log(Level.SEVERE, "Could not save backpack config", e); + } + } + + public void loadInventoryFromConfig() { + for (Map.Entry stringObjectEntry : Challenges.getPlugin().getBackpackConfig().getValues(false).entrySet()) { + int slot; + try { + slot = Integer.parseInt(stringObjectEntry.getKey()); + } catch (NumberFormatException e) { + Bukkit.getLogger().log(Level.SEVERE, "Fehler! Slot: " + stringObjectEntry.getKey(), e); + continue; + } + if (slot >= backpack.getSize()) { + Bukkit.getLogger().log(Level.SEVERE, "Slot " + slot + " befindet sich außerhalb des Inventars!"); + continue; + } + MemorySection memorySection = (MemorySection) stringObjectEntry.getValue(); + ItemStack deserialized = ItemStack.deserialize(memorySection.getValues(false)); + backpack.setItem(slot, deserialized); + } + } +} diff --git a/src/main/java/de/fanta/challenges/guis/ResetGui.java b/src/main/java/de/fanta/challenges/guis/ResetGui.java new file mode 100644 index 0000000..91f4e93 --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/ResetGui.java @@ -0,0 +1,45 @@ +package de.fanta.challenges.guis; + +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.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; + +public class ResetGui implements Listener { + + private static final int RESET_INDEX = 2; + + public static final int INVENTORY_SIZE = 5; + public static final Inventory RESET_GUI = Bukkit.createInventory(null, InventoryType.HOPPER, Challenges.GUIPREFIX + " >> Reset"); + + public static void createResetGUI(Player p) { + RESET_GUI.setItem(RESET_INDEX, GUIUtils.createGuiItem(Material.REPEATING_COMMAND_BLOCK, ChatColor.DARK_RED + "Server resetten", ChatColor.RED + "Wenn du denn Server resettest wird", ChatColor.RED + "der Server komplett zurückgesetzt", ChatColor.RED + "und du musst von vorne beginnen!")); + for (int i = 0; i < INVENTORY_SIZE; i++) { + if (RESET_GUI.getItem(i) == null || RESET_GUI.getItem(i).getType() == Material.AIR) { + RESET_GUI.setItem(i, GUIUtils.EMPTY_ICON); + } + } + p.openInventory(RESET_GUI); + } + + @EventHandler + public void onInventoryClick(InventoryClickEvent e) { + int slot = e.getRawSlot(); + Player p = (Player) e.getWhoClicked(); + if (RESET_GUI.equals(e.getClickedInventory())) { + if (slot == RESET_INDEX) { + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "reset confirm"); + p.closeInventory(); + } + e.setCancelled(true); + } + } +} + diff --git a/src/main/java/de/fanta/challenges/guis/SettingsGui.java b/src/main/java/de/fanta/challenges/guis/SettingsGui.java new file mode 100644 index 0000000..cf51761 --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/SettingsGui.java @@ -0,0 +1,63 @@ +/*package de.fanta.challenges.guis; + +import de.fanta.challenges.Challenges; +import java.util.ArrayList; +import java.util.List; + +import me.wolfyscript.utilities.api.inventory.GuiUpdateEvent; +import me.wolfyscript.utilities.api.inventory.GuiWindow; +import me.wolfyscript.utilities.api.inventory.InventoryAPI; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.event.EventHandler; + +public class SettingsGui extends GuiWindow { + + private Challenges challenges = Challenges.getPlugin(); + + public SettingsGui(InventoryAPI inventoryAPI) { + super("settings", inventoryAPI, 54); + } + + @Override + public void onInit() { + registerButton(new SettingButton("craftingtable", Material.CRAFTING_TABLE, "Erlaube Crafting")); + registerButton(new SettingButton("allowtrading", Material.EMERALD, "Erlaube Handeln")); + registerButton(new SettingButton("deathonfall", Material.BONE, "Tod bei Fallschaden", ChatColor.RED + "Spieler stirbt bei Fallschaden")); + registerButton(new SettingButton("damageonsneak", Material.MAGMA_BLOCK, "Schaden bei Schleichen",ChatColor.RED + "Spieler erhält " + challenges.getConfig().getInt("sneakdmg") + " Schaden bei Schleichen")); + registerButton(new SettingButton("rnddrops", Material.DIAMOND_PICKAXE, "Drops", ChatColor.RED + "Random Drops")); + registerButton(new SettingButton("sharedmg", Material.GLISTERING_MELON_SLICE, "Geteilter Schaden",ChatColor.RED + "Alle Spieler erhalten den gleichen Schaden")); + registerButton(new SettingButton("respawn", Material.TOTEM_OF_UNDYING, "Respawn")); + registerButton(new SettingButton("onelife", Material.POPPY, "Ein Leben für alle", ChatColor.RED + "Stirbt ein Spieler ist die", ChatColor.RED + "Challenge fehlgeschlagen")); + registerButton(new SettingButton("dmginchat", Material.BOOK, "Schaden in Chat", ChatColor.RED + "Zeigt Spielerschaden im Chat an")); + registerButton(new SettingButton("deathonsprint", Material.DIAMOND_BOOTS, "Tod bei Sprinten", ChatColor.RED + "Spieler Stirbt beim Sprinten")); + registerButton(new SettingButton("deathonjump", Material.LEATHER_BOOTS, "Tod bei Springen", ChatColor.RED + "Spieler Stirbt beim Springen")); + registerButton(new SettingButton("clinvdmg", Material.BARRIER, "Inv Löschen bei DMG",ChatColor.RED + "Löscht das Inventar von allen wenn ein Spieler schaden bekommt!")); + + registerButton(new SettingButton("tntdeath", Material.TNT, "Sterben durch TnT",ChatColor.RED + "Tötet dich mit tnt bei der nicht Springen Schleichen und Jumpen Challenge")); + registerButton(new SettingButton("xpdeath", Material.ENCHANTING_TABLE, "Sterben durch XP", ChatColor.RED + "Tötet dich wenn du XP einsammelst")); + registerButton(new SettingButton("mlg.enabled", Material.WATER_BUCKET, "MLG", "an aus")); + registerButton(new SettingButton("mlg.killall", Material.WATER_BUCKET, "MLG killall", "an aus")); + registerButton(new SettingButton("wither", Material.NETHER_STAR, "Wither Töten", "Ziel: Töte denn Wither")); + registerButton(new SettingButton("dragon", Material.DRAGON_EGG, "Ender Dragon Töten", "Ziel: Töte denn Ender Dragon")); + + // TODO Gamerules xpdeath + } + + @EventHandler + public void onUpdate(GuiUpdateEvent event) { + + //Other + event.setButton(46, "mlg.killall"); + } + + @Override + protected String getInventoryName() { + return ChatColor.DARK_GREEN + "" + ChatColor.BOLD + "Settings"; + } + + @Override + public List getHelpInformation() { + return new ArrayList<>(); + } +}*/ diff --git a/src/main/java/de/fanta/challenges/guis/TimerGui.java b/src/main/java/de/fanta/challenges/guis/TimerGui.java new file mode 100644 index 0000000..054e4a9 --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/TimerGui.java @@ -0,0 +1,80 @@ +package de.fanta.challenges.guis; + +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.GameRule; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.World; +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; + +public class TimerGui implements Listener { + + private static final Challenges plugin = Challenges.getPlugin(); + + public static final int INVENTORY_SIZE = 27; + public static final Inventory TIMER_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, Challenges.GUIPREFIX + " >> Timer"); + + public static void createTimerGUI(Player p) { + + if (plugin.getTimer().isReverse()) { + TIMER_GUI.setItem(11, GUIUtils.createGuiItem(Material.MAGENTA_GLAZED_TERRACOTTA, ChatColor.AQUA + "Timer Richtung - rückwärts")); + } else { + TIMER_GUI.setItem(11, GUIUtils.createGuiItem(Material.MAGENTA_GLAZED_TERRACOTTA, ChatColor.GREEN + "Timer Richtung - vorwärts")); + } + if (plugin.getTimer().isRunning()) { + TIMER_GUI.setItem(15, GUIUtils.createGuiItem(Material.CLOCK, ChatColor.GREEN + "Timer gestartet", true)); + } else { + TIMER_GUI.setItem(15, GUIUtils.createGuiItem(Material.CLOCK, ChatColor.RED + "Timer pausiert")); + } + for (int i = 0; i < INVENTORY_SIZE; i++) { + if (TIMER_GUI.getItem(i) == null || TIMER_GUI.getItem(i).getType() == Material.AIR) { + TIMER_GUI.setItem(i, GUIUtils.EMPTY_ICON); + } + } + p.openInventory(TIMER_GUI); + } + + @EventHandler + public void onInventoryClick(InventoryClickEvent e) { + int slot = e.getRawSlot(); + World world = Bukkit.getWorld("world"); + Player p = (Player) e.getWhoClicked(); + if (e.getInventory() == TIMER_GUI) { + if (slot == 15) { + if (plugin.getTimer().isRunning()) { + plugin.getTimer().stopTimer(); + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F); + world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); + pp.sendTitle(ChatColor.of("#0ddead") + "Timer", ChatColor.RED + "Der Timer wurde pausiert.", 10, 40, 10); + } + } else { + plugin.getTimer().startTimer(); + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F); + world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, true); + pp.sendTitle(ChatColor.of("#0ddead") + "Timer", ChatColor.GREEN + "Der Timer wurde gestartet.", 10, 60, 10); + } + } + p.closeInventory(); + } else if (slot == 11) { + if (plugin.getTimer().isReverse()) { + plugin.getTimer().reverseTimer(); + GUIUtils.sendTitleToAll("Timer", "Der Timer läuft jetzt vorwärts.", ChatColor.GREEN); + } else { + plugin.getTimer().reverseTimer(); + GUIUtils.sendTitleToAll("Timer", "Der Timer läuft jetzt rückwärts.", ChatColor.AQUA); + } + p.closeInventory(); + } + e.setCancelled(true); + } + } +} diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/MainGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/MainGui.java new file mode 100644 index 0000000..5dfd5d9 --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/MainGui.java @@ -0,0 +1,62 @@ +package de.fanta.challenges.guis.settingsgui; + +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; + +public class MainGui implements Listener { + + private static final Challenges plugin = Challenges.getPlugin(); + + public static final int INVENTORY_SIZE = 27; + public static final Inventory MAIN_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, Challenges.GUIPREFIX + " >> Settings"); + + private static final int CHALLENGES_INDEX = 10; + private static final int OTHER_SETTINGS_INDEX = 13; + private static final int SERVER_SETTINGS_INDEX = 16; + private static final int CLOSE_IDEX = 26; + + public static void createMainGUI(Player p) { + MAIN_GUI.setItem(CHALLENGES_INDEX, GUIUtils.createGuiItem(Material.REPEATER, ChatColor.GREEN + "Challenges")); + MAIN_GUI.setItem(CLOSE_IDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.RED + "Menü verlassen!")); + MAIN_GUI.setItem(SERVER_SETTINGS_INDEX, GUIUtils.createGuiItem(Material.COMMAND_BLOCK, ChatColor.GREEN + "Server Einstellungen")); + MAIN_GUI.setItem(OTHER_SETTINGS_INDEX, GUIUtils.createGuiItem(Material.COMPARATOR, ChatColor.GREEN + "Andere Einstellungen")); + for (int i = 0; i < INVENTORY_SIZE; i++) { + if (MAIN_GUI.getItem(i) == null || MAIN_GUI.getItem(i).getType() == Material.AIR) { + MAIN_GUI.setItem(i, GUIUtils.EMPTY_ICON); + } + } + p.openInventory(MAIN_GUI); + } + + @EventHandler + public void onInventoryClick(InventoryClickEvent e) { + int slot = e.getRawSlot(); + Player p = (Player) e.getWhoClicked(); + if (e.getInventory() == MAIN_GUI) { + switch (slot) { + case CHALLENGES_INDEX: + SettingsGui.createSettingsGUI(p); + break; + case CLOSE_IDEX: + p.closeInventory(); + break; + case SERVER_SETTINGS_INDEX: + ServerSettingsGui.createServerSettingsGUI(p); + break; + case OTHER_SETTINGS_INDEX: + OtherSettingsGui.createOtherSettingsGUI(p); + break; + } + e.setCancelled(true); + } + } +} + diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java new file mode 100644 index 0000000..ab06a11 --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java @@ -0,0 +1,133 @@ +package de.fanta.challenges.guis.settingsgui; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.guiutils.GUIUtils; +import de.iani.cubesideutils.bukkit.items.CustomHeads; +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; + +public class OtherSettingsGui implements Listener { + + private static final Challenges plugin = Challenges.getPlugin(); + + public static final int INVENTORY_SIZE = 27; + private static final int BACK_INDEX = 18; + private static final int BACKPACK_INDEX = 10; + private static final int DMG_INCHAT_INDEX = 11; + private static final int TNT_DEATH_INDEX = 12; + private static final int TAB_HP_INDEX = 13; + private static final int BACKPACK_ADD_INDEX = 1; + private static final int BACKPACK_REMOVE_INDEX = 19; + + public static final Inventory OTHER_SETTINGS_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, Challenges.GUIPREFIX + " >> Other Settings"); + + private static final int CLOSE_IDEX = 26; + + public static void createOtherSettingsGUI(Player p) { + OTHER_SETTINGS_GUI.setItem(BACKPACK_INDEX, GUIUtils.createGuiItem(Material.LIME_SHULKER_BOX, ChatColor.GREEN + "Rucksack Größe: " + plugin.getBackpack().getSize() / 9 + "/6")); + if (plugin.getBackpack().getSize() < 6 * 9) { + OTHER_SETTINGS_GUI.setItem(BACKPACK_ADD_INDEX, CustomHeads.QUARTZ_ARROW_UP.getHead()); + } else { + OTHER_SETTINGS_GUI.setItem(BACKPACK_ADD_INDEX, GUIUtils.EMPTY_ICON); + } + if (plugin.getBackpack().getSize() > 9) { + OTHER_SETTINGS_GUI.setItem(BACKPACK_REMOVE_INDEX, CustomHeads.QUARTZ_ARROW_DOWN.getHead()); + } else { + OTHER_SETTINGS_GUI.setItem(BACKPACK_REMOVE_INDEX, GUIUtils.EMPTY_ICON); + } + if (plugin.getConfig().getBoolean("dmginchat")) { + OTHER_SETTINGS_GUI.setItem(DMG_INCHAT_INDEX, GUIUtils.createGuiItem(Material.PAPER, ChatColor.GREEN + "Schaden im Chat anzeigen aktiviert", true)); + } else { + OTHER_SETTINGS_GUI.setItem(DMG_INCHAT_INDEX, GUIUtils.createGuiItem(Material.PAPER, ChatColor.RED + "Schaden im Chat anzeigen deaktiviert")); + } + if (p.hasPermission("challenges.event")) { + if (plugin.getConfig().getBoolean("tntdeath")) { + OTHER_SETTINGS_GUI.setItem(TNT_DEATH_INDEX, GUIUtils.createGuiItem(Material.TNT, ChatColor.GREEN + "Sterben durch TNT aktiviert", true, ChatColor.GREEN + "Tötet dich mit TNT bei der \"nicht springen, schleichen und jumpen\" Challenge")); + } else { + OTHER_SETTINGS_GUI.setItem(TNT_DEATH_INDEX, GUIUtils.createGuiItem(Material.TNT, ChatColor.RED + "Sterben durch TNT deaktiviert", ChatColor.RED + "Tötet dich mit TNT bei der \"nicht springen, schleichen und jumpen\" Challenge")); + } + } else { + OTHER_SETTINGS_GUI.setItem(TNT_DEATH_INDEX, GUIUtils.EMPTY_ICON); + } + if (plugin.getConfig().getBoolean("tabhp")) { + OTHER_SETTINGS_GUI.setItem(TAB_HP_INDEX, GUIUtils.createGuiItem(Material.HEART_OF_THE_SEA, ChatColor.GREEN + "Herzen in der Tablist anzeigen aktiviert", true)); + } else { + OTHER_SETTINGS_GUI.setItem(TAB_HP_INDEX, GUIUtils.createGuiItem(Material.HEART_OF_THE_SEA, ChatColor.RED + "Herzen in der Tablist anzeigen deaktiviert")); + } + + OTHER_SETTINGS_GUI.setItem(BACK_INDEX, GUIUtils.createGuiItem(Material.ARROW, ChatColor.GREEN + "Zurück")); + OTHER_SETTINGS_GUI.setItem(CLOSE_IDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.RED + "Menü verlassen!")); + for (int i = 0; i < INVENTORY_SIZE; i++) { + if (OTHER_SETTINGS_GUI.getItem(i) == null || OTHER_SETTINGS_GUI.getItem(i).getType() == Material.AIR) { + OTHER_SETTINGS_GUI.setItem(i, GUIUtils.EMPTY_ICON); + } + } + p.openInventory(OTHER_SETTINGS_GUI); + } + + @EventHandler + public void onInventoryClick(InventoryClickEvent e) { + int slot = e.getRawSlot(); + Player p = (Player) e.getWhoClicked(); + if (e.getInventory() == OTHER_SETTINGS_GUI) { + switch (slot) { + case BACKPACK_ADD_INDEX: + if (plugin.getBackpack().getSize() < 6 * 9) { + plugin.getBackpack().resize(plugin.getBackpack().getSize() + 9); + } + break; + case BACKPACK_REMOVE_INDEX: + if (plugin.getBackpack().getSize() > 9) { + plugin.getBackpack().resize(plugin.getBackpack().getSize() - 9); + } + break; + case DMG_INCHAT_INDEX: + if (plugin.getConfig().getBoolean("dmginchat")) { + GUIUtils.sendTitleToAll("Einstellungen", "Schaden im Chat anzeigen deaktiviert", ChatColor.RED); + GUIUtils.setConfig("dmginchat", false); + } else { + GUIUtils.sendTitleToAll("Einstellungen", "Schaden im Chat anzeigen aktiviert", ChatColor.GREEN); + GUIUtils.setConfig("dmginchat", true); + } + break; + case TNT_DEATH_INDEX: + if (e.getCurrentItem() != null && e.getCurrentItem().getType() == Material.TNT) { + if (plugin.getConfig().getBoolean("tntdeath")) { + GUIUtils.sendTitleToAll("Einstellungen", "Sterben durch TNT deaktiviert", ChatColor.RED); + GUIUtils.setConfig("tntdeath", false); + } else { + GUIUtils.sendTitleToAll("Einstellungen", "Sterben durch TNT aktiviert", ChatColor.GREEN); + GUIUtils.setConfig("tntdeath", true); + } + } + break; + case TAB_HP_INDEX: + if (plugin.getConfig().getBoolean("tabhp")) { + GUIUtils.sendTitleToAll("Einstellungen", "Herzen in der Tablist anzeigen deaktiviert", ChatColor.RED); + GUIUtils.setConfig("tabhp", false); + } else { + GUIUtils.sendTitleToAll("Einstellungen", "Herzen in der Tablist anzeigen aktiviert", ChatColor.GREEN); + GUIUtils.setConfig("tabhp", true); + } + plugin.getSBManager().updateTabHP(); + break; + } + createOtherSettingsGUI(p); + switch (slot) { + case BACK_INDEX: + MainGui.createMainGUI(p); + break; + case CLOSE_IDEX: + p.closeInventory(); + break; + } + e.setCancelled(true); + } + } +} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java new file mode 100644 index 0000000..75fed35 --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java @@ -0,0 +1,178 @@ +package de.fanta.challenges.guis.settingsgui; + +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.Difficulty; +import org.bukkit.GameRule; +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; + +public class ServerSettingsGui implements Listener { + + private static final Challenges plugin = Challenges.getPlugin(); + + public static final int INVENTORY_SIZE = 27; + public static final Inventory SERVER_SETTINGS_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, Challenges.GUIPREFIX + " >> Server Settings"); + + private static final int DIFFICULTY_INDEX = 10; + private static final int KEEP_INVENTORY_INDEX = 11; + private static final int NATURAL_REGENERATION_INDEX = 12; + private static final int PVP_INDEX = 16; + private static final int BACK_INDEX = 18; + private static final int CLOSE_INDEX = 26; + private static final int ONE_LIFE_INDEX = 14; + private static final int RESPAWN_INDEX = 15; + + public static void createServerSettingsGUI(Player p) { + if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.EASY) { + SERVER_SETTINGS_GUI.setItem(DIFFICULTY_INDEX, GUIUtils.createGuiItem(Material.IRON_SWORD, ChatColor.AQUA + "Schwierigkeitsgrad Leicht")); + } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.NORMAL) { + SERVER_SETTINGS_GUI.setItem(DIFFICULTY_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_SWORD, ChatColor.RED + "Schwierigkeitsgrad Mittel")); + } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.HARD) { + SERVER_SETTINGS_GUI.setItem(DIFFICULTY_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_SWORD, ChatColor.DARK_RED + "Schwierigkeitsgrad Schwer")); + } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.PEACEFUL) { + SERVER_SETTINGS_GUI.setItem(DIFFICULTY_INDEX, GUIUtils.createGuiItem(Material.POPPY, ChatColor.GREEN + "Schwierigkeitsgrad Friedlich")); + } + if (plugin.getServer().getWorld("world").getPVP()) { + SERVER_SETTINGS_GUI.setItem(PVP_INDEX, GUIUtils.createGuiItem(Material.WOODEN_SWORD, ChatColor.GREEN + "PVP aktiviert", true)); + } else { + SERVER_SETTINGS_GUI.setItem(PVP_INDEX, GUIUtils.createGuiItem(Material.WOODEN_SWORD, ChatColor.RED + "PVP deaktiviert")); + } + if (plugin.getConfig().getBoolean("onelife")) { + SERVER_SETTINGS_GUI.setItem(ONE_LIFE_INDEX, GUIUtils.createGuiItem(Material.SUNFLOWER, ChatColor.GREEN + "Ein Leben für alle aktiviert", true)); + } else { + SERVER_SETTINGS_GUI.setItem(ONE_LIFE_INDEX, GUIUtils.createGuiItem(Material.SUNFLOWER, ChatColor.RED + "Ein Leben für alle deaktiviert")); + } + if (plugin.getConfig().getBoolean("respawn")) { + SERVER_SETTINGS_GUI.setItem(RESPAWN_INDEX, GUIUtils.createGuiItem(Material.TOTEM_OF_UNDYING, ChatColor.GREEN + "Wiederbeleben aktiviert", true)); + } else { + SERVER_SETTINGS_GUI.setItem(RESPAWN_INDEX, GUIUtils.createGuiItem(Material.TOTEM_OF_UNDYING, ChatColor.RED + "Wiederbeleben deaktiviert")); + } + if (plugin.getServer().getWorld("world").getGameRuleValue(GameRule.KEEP_INVENTORY)) { + SERVER_SETTINGS_GUI.setItem(KEEP_INVENTORY_INDEX, GUIUtils.createGuiItem(Material.CHEST_MINECART,ChatColor.GREEN + "Keep Inventory aktiviert", true)); + } else { + SERVER_SETTINGS_GUI.setItem(KEEP_INVENTORY_INDEX, GUIUtils.createGuiItem(Material.CHEST_MINECART,ChatColor.RED + "Keep Inventory deaktiviert")); + } + if (plugin.getServer().getWorld("world").getGameRuleValue(GameRule.NATURAL_REGENERATION)) { + SERVER_SETTINGS_GUI.setItem(NATURAL_REGENERATION_INDEX, GUIUtils.createGuiItem(Material.GOLDEN_APPLE,ChatColor.GREEN + "Natürliche Regeneration aktiviert", true)); + } else { + SERVER_SETTINGS_GUI.setItem(NATURAL_REGENERATION_INDEX, GUIUtils.createGuiItem(Material.GOLDEN_APPLE,ChatColor.RED + "Natürliche Regeneration deaktiviert")); + } + + SERVER_SETTINGS_GUI.setItem(CLOSE_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.RED + "Menü verlassen!")); + SERVER_SETTINGS_GUI.setItem(BACK_INDEX, GUIUtils.createGuiItem(Material.ARROW, ChatColor.GREEN + "Zurück")); + for (int i = 0; i < INVENTORY_SIZE; i++) { + if (SERVER_SETTINGS_GUI.getItem(i) == null || SERVER_SETTINGS_GUI.getItem(i).getType() == Material.AIR) { + SERVER_SETTINGS_GUI.setItem(i, GUIUtils.EMPTY_ICON); + } + } + p.openInventory(SERVER_SETTINGS_GUI); + } + + @EventHandler + public void onInventoryClick(InventoryClickEvent e) { + int slot = e.getRawSlot(); + Player p = (Player) e.getWhoClicked(); + if (e.getInventory() == SERVER_SETTINGS_GUI) { + switch (slot) { + case DIFFICULTY_INDEX: + if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.EASY) { + plugin.getServer().getWorld("world").setDifficulty(Difficulty.NORMAL); + plugin.getServer().getWorld("world_nether").setDifficulty(Difficulty.NORMAL); + plugin.getServer().getWorld("world_the_end").setDifficulty(Difficulty.NORMAL); + GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Mittel", ChatColor.RED); + } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.NORMAL) { + plugin.getServer().getWorld("world").setDifficulty(Difficulty.HARD); + plugin.getServer().getWorld("world_nether").setDifficulty(Difficulty.HARD); + plugin.getServer().getWorld("world_the_end").setDifficulty(Difficulty.HARD); + GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Schwer", ChatColor.DARK_RED); + } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.HARD) { + plugin.getServer().getWorld("world").setDifficulty(Difficulty.PEACEFUL); + plugin.getServer().getWorld("world_nether").setDifficulty(Difficulty.PEACEFUL); + plugin.getServer().getWorld("world_the_end").setDifficulty(Difficulty.PEACEFUL); + GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Friedlich", ChatColor.GREEN); + } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.PEACEFUL) { + plugin.getServer().getWorld("world").setDifficulty(Difficulty.EASY); + plugin.getServer().getWorld("world_nether").setDifficulty(Difficulty.EASY); + plugin.getServer().getWorld("world_the_end").setDifficulty(Difficulty.EASY); + GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Leicht", ChatColor.AQUA); + } + break; + case PVP_INDEX: + if (plugin.getServer().getWorld("world").getPVP()) { + plugin.getServer().getWorld("world").setPVP(false); + plugin.getServer().getWorld("world_nether").setPVP(false); + plugin.getServer().getWorld("world_the_end").setPVP(false); + GUIUtils.sendTitleToAll("Server Einstellungen", "PVP deaktiviert", ChatColor.RED); + } else { + plugin.getServer().getWorld("world").setPVP(true); + plugin.getServer().getWorld("world_nether").setPVP(true); + plugin.getServer().getWorld("world_the_end").setPVP(true); + GUIUtils.sendTitleToAll("Server Einstellungen", "PVP aktiviert", ChatColor.GREEN); + } + break; + case ONE_LIFE_INDEX: + if (plugin.getConfig().getBoolean("onelife")) { + GUIUtils.setConfig("onelife", false); + GUIUtils.sendTitleToAll("Server Einstellungen", "Ein Leben für alle deaktiviert", ChatColor.RED); + } else { + GUIUtils.setConfig("onelife", true); + GUIUtils.sendTitleToAll("Server Einstellungen", "Ein Leben für alle aktiviert", ChatColor.GREEN); + } + break; + case RESPAWN_INDEX: + if (plugin.getConfig().getBoolean("respawn")) { + GUIUtils.setConfig("respawn", false); + GUIUtils.sendTitleToAll("Server Einstellungen", "Wiederbeleben deaktiviert", ChatColor.RED); + } else { + GUIUtils.setConfig("respawn", true); + GUIUtils.sendTitleToAll("Server Einstellungen", "Wiederbeleben aktiviert", ChatColor.GREEN); + } + break; + case KEEP_INVENTORY_INDEX: + if (plugin.getServer().getWorld("world").getGameRuleValue(GameRule.KEEP_INVENTORY)) { + plugin.getServer().getWorld("world").setGameRule(GameRule.KEEP_INVENTORY, false); + plugin.getServer().getWorld("world_nether").setGameRule(GameRule.KEEP_INVENTORY, false); + plugin.getServer().getWorld("world_the_end").setGameRule(GameRule.KEEP_INVENTORY, false); + GUIUtils.sendTitleToAll("Server Einstellungen", "Keep Inventory deaktiviert", ChatColor.RED); + } else { + plugin.getServer().getWorld("world").setGameRule(GameRule.KEEP_INVENTORY, true); + plugin.getServer().getWorld("world_nether").setGameRule(GameRule.KEEP_INVENTORY, true); + plugin.getServer().getWorld("world_the_end").setGameRule(GameRule.KEEP_INVENTORY, true); + GUIUtils.sendTitleToAll("Server Einstellungen", "Keep Inventory aktiviert", ChatColor.GREEN); + } + break; + case NATURAL_REGENERATION_INDEX: + if (plugin.getServer().getWorld("world").getGameRuleValue(GameRule.NATURAL_REGENERATION)) { + plugin.getServer().getWorld("world").setGameRule(GameRule.NATURAL_REGENERATION, false); + plugin.getServer().getWorld("world_nether").setGameRule(GameRule.NATURAL_REGENERATION, false); + plugin.getServer().getWorld("world_the_end").setGameRule(GameRule.NATURAL_REGENERATION, false); + GUIUtils.sendTitleToAll("Server Einstellungen", "Natürliche Regeneration aktiviert", ChatColor.GREEN); + } else { + plugin.getServer().getWorld("world").setGameRule(GameRule.NATURAL_REGENERATION, true); + plugin.getServer().getWorld("world_nether").setGameRule(GameRule.NATURAL_REGENERATION, true); + plugin.getServer().getWorld("world_the_end").setGameRule(GameRule.NATURAL_REGENERATION, true); + GUIUtils.sendTitleToAll("Server Einstellungen", "Natürliche Regeneration deaktiviert", ChatColor.RED); + } + break; + } + createServerSettingsGUI(p); + + switch (slot) { + case BACK_INDEX: + MainGui.createMainGUI(p); + break; + case CLOSE_INDEX: + p.closeInventory(); + break; + } + 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 new file mode 100644 index 0000000..bf7778d --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java @@ -0,0 +1,264 @@ +package de.fanta.challenges.guis.settingsgui; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.guiutils.GUIUtils; +import de.iani.cubesideutils.bukkit.items.CustomHeads; +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; + +public class SettingsGui implements Listener { + + private static final Challenges plugin = Challenges.getPlugin(); + + public static final int INVENTORY_SIZE = 54; + public static final Inventory SETTINGS_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, Challenges.GUIPREFIX + " >> Challenges"); + + private static final int CRAFTING_TABLE_INDEX = 0; + private static final int TRADING_INDEX = 9; + + private static final int CLOSE_GUI_INDEX = 53; + private static final int BACK_BUTTON_INDEX = 45; + + private static final int XP_DEATH_INDEX = 37; + private static final int DEATH_ON_FALL_INDEX = 38; + private static final int DEATH_ON_SPRINT_INDEX = 39; + private static final int DEATH_ON_JUMP_INDEX = 40; + private static final int CLEANR_INV_BY_DAMAGE_INDEX = 41; + private static final int MLG_INDEX = 42; + private static final int RANDOM_DROP_INDEX = 8; + private static final int SHUFFLE_RANDOM_DROP_INDEX = 17; + private static final int TARGET_INDEX = 4; + private static final int SHARE_DMG_INDEX = 28; + + private static final int DMG_ON_SNEAK_INDEX = 43; + private static final int DMG_ON_SNEAK_ADD_INDEX = 34; + private static final int DMG_ON_SNEAK_REMOVE_INDEX = 52; + + public static void createSettingsGUI(Player p) { + if (plugin.getConfig().getBoolean("craftingtable")) { + SETTINGS_GUI.setItem(CRAFTING_TABLE_INDEX, GUIUtils.createGuiItem(Material.CRAFTING_TABLE, ChatColor.GREEN + "Werkbank aktiviert", true)); + } else { + SETTINGS_GUI.setItem(CRAFTING_TABLE_INDEX, GUIUtils.createGuiItem(Material.CRAFTING_TABLE, ChatColor.RED + "Werkbank deaktiviert")); + } + if (plugin.getConfig().getBoolean("allowtrading")) { + SETTINGS_GUI.setItem(TRADING_INDEX, GUIUtils.createGuiItem(Material.VILLAGER_SPAWN_EGG, ChatColor.GREEN + "Handeln aktiviert", true)); + } else { + SETTINGS_GUI.setItem(TRADING_INDEX, GUIUtils.createGuiItem(Material.VILLAGER_SPAWN_EGG, ChatColor.RED + "Handeln deaktiviert")); + } + if (plugin.getConfig().getBoolean("xpdeath")) { + SETTINGS_GUI.setItem(XP_DEATH_INDEX, GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatColor.GREEN + "Sterben durch XP aktiviert", true, ChatColor.GREEN + "Wenn ein Spieler XP einsammelt wird er sterben")); + } else { + SETTINGS_GUI.setItem(XP_DEATH_INDEX, GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatColor.RED + "Sterben durch XP deaktiviert", ChatColor.RED + "Wenn ein Spieler XP einsammelt wird er sterben")); + } + if (plugin.getConfig().getBoolean("deathonfall")) { + SETTINGS_GUI.setItem(DEATH_ON_FALL_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_BOOTS, ChatColor.GREEN + "Tod bei Fallschaden aktiviert", true)); + } else { + SETTINGS_GUI.setItem(DEATH_ON_FALL_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_BOOTS, ChatColor.RED + "Tod bei Fallschaden deaktiviert")); + } + if (plugin.getConfig().getBoolean("rnddrops")) { + SETTINGS_GUI.setItem(RANDOM_DROP_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_PICKAXE, ChatColor.GREEN + "Zufällige Drops aktiviert", true)); + } else { + SETTINGS_GUI.setItem(RANDOM_DROP_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_PICKAXE, ChatColor.RED + "Zufällige Drops deaktiviert")); + } + if (plugin.getConfig().getBoolean("deathonsprint")) { + SETTINGS_GUI.setItem(DEATH_ON_SPRINT_INDEX, GUIUtils.createGuiItem(Material.POTION, ChatColor.GREEN + "Tod beim Sprinten aktiviert", true)); + } else { + SETTINGS_GUI.setItem(DEATH_ON_SPRINT_INDEX, GUIUtils.createGuiItem(Material.GLASS_BOTTLE, ChatColor.RED + "Tod beim Sprinten deaktiviert")); + } + if (plugin.getConfig().getBoolean("deathonjump")) { + SETTINGS_GUI.setItem(DEATH_ON_JUMP_INDEX, GUIUtils.createGuiItem(Material.RABBIT_FOOT, ChatColor.GREEN + "Tod beim Springen aktiviert", true)); + } else { + SETTINGS_GUI.setItem(DEATH_ON_JUMP_INDEX, GUIUtils.createGuiItem(Material.RABBIT_FOOT, ChatColor.RED + "Tod beim Springen deaktiviert")); + } + if (plugin.getConfig().getBoolean("target")) { + SETTINGS_GUI.setItem(TARGET_INDEX, GUIUtils.createGuiItem(Material.DRAGON_HEAD, ChatColor.GREEN + "Ziel: Enderdrachen töten")); + } else { + SETTINGS_GUI.setItem(TARGET_INDEX, GUIUtils.createGuiItem(Material.WITHER_SKELETON_SKULL, ChatColor.GREEN + "Ziel: Wither töten")); + } + if (plugin.getConfig().getBoolean("clinvdmg")) { + SETTINGS_GUI.setItem(CLEANR_INV_BY_DAMAGE_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.GREEN + "Alle Inventare löschen wenn ein Spieler Schaden bekommt aktiviert", true)); + } else { + SETTINGS_GUI.setItem(CLEANR_INV_BY_DAMAGE_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.RED + "Alle Inventare löschen wenn ein Spieler Schaden bekommt deaktiviert")); + } + if (plugin.getConfig().getBoolean("damageonsneak")) { + SETTINGS_GUI.setItem(DMG_ON_SNEAK_INDEX, GUIUtils.createGuiItem(Material.SMOOTH_STONE_SLAB, ChatColor.GREEN + "Schaden beim Schleichen aktiviert", true, ChatColor.GREEN + "Schaden beim Schleichen: " + plugin.getConfig().getDouble("sneakdmg"))); + SETTINGS_GUI.setItem(DMG_ON_SNEAK_ADD_INDEX, CustomHeads.QUARTZ_ARROW_UP.getHead()); + SETTINGS_GUI.setItem(DMG_ON_SNEAK_REMOVE_INDEX, CustomHeads.QUARTZ_ARROW_DOWN.getHead()); + + } else { + SETTINGS_GUI.setItem(DMG_ON_SNEAK_INDEX, GUIUtils.createGuiItem(Material.SMOOTH_STONE_SLAB, ChatColor.RED + "Schaden beim Schleichen deaktiviert")); + SETTINGS_GUI.setItem(DMG_ON_SNEAK_ADD_INDEX, GUIUtils.EMPTY_ICON); + SETTINGS_GUI.setItem(DMG_ON_SNEAK_REMOVE_INDEX, GUIUtils.EMPTY_ICON); + } + if (plugin.getConfig().getBoolean("mlg.enabled")) { + SETTINGS_GUI.setItem(MLG_INDEX, GUIUtils.createGuiItem(Material.WATER_BUCKET, ChatColor.GREEN + "MLG aktiviert", true)); + } else { + SETTINGS_GUI.setItem(MLG_INDEX, GUIUtils.createGuiItem(Material.WATER_BUCKET, ChatColor.RED + "MLG deaktiviert")); + } + if (plugin.getConfig().getBoolean("sharedmg")) { + SETTINGS_GUI.setItem(SHARE_DMG_INDEX, GUIUtils.createGuiItem(Material.MELON_SLICE, ChatColor.GREEN + "Geteilter Schaden aktiviert", true)); + } else { + SETTINGS_GUI.setItem(SHARE_DMG_INDEX, GUIUtils.createGuiItem(Material.MELON_SLICE, ChatColor.RED + "Geteilter Schaden deaktiviert")); + } + SETTINGS_GUI.setItem(SHUFFLE_RANDOM_DROP_INDEX, GUIUtils.createGuiItem(Material.CHORUS_FLOWER, ChatColor.GREEN + "Zufällige Drops neu mischen")); + SETTINGS_GUI.setItem(CLOSE_GUI_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.RED + "Menü verlassen!")); + SETTINGS_GUI.setItem(BACK_BUTTON_INDEX, GUIUtils.createGuiItem(Material.ARROW, ChatColor.GREEN + "Zurück")); + for (int i = 0; i < INVENTORY_SIZE; i++) { + if (SETTINGS_GUI.getItem(i) == null || SETTINGS_GUI.getItem(i).getType() == Material.AIR) { + SETTINGS_GUI.setItem(i, GUIUtils.EMPTY_ICON); + } + } + p.openInventory(SETTINGS_GUI); + } + + @EventHandler + public void onInventoryClick(InventoryClickEvent e) { + if (e.getInventory() != SETTINGS_GUI) { + return; + } + int slot = e.getRawSlot(); + Player p = (Player) e.getWhoClicked(); + switch (slot) { + case CRAFTING_TABLE_INDEX: + if (plugin.getConfig().getBoolean("craftingtable")) { + GUIUtils.setConfig("craftingtable", false); + GUIUtils.sendTitleToAll("Challenge", "Werkbank deaktiviert", ChatColor.RED); + } else { + GUIUtils.setConfig("craftingtable", true); + GUIUtils.sendTitleToAll("Challenge", "Werkbank aktiviert", ChatColor.GREEN); + } + break; + + case TRADING_INDEX: + if (plugin.getConfig().getBoolean("allowtrading")) { + GUIUtils.setConfig("allowtrading", false); + GUIUtils.sendTitleToAll("Challenge", "Handeln deaktiviert", ChatColor.RED); + } else { + GUIUtils.setConfig("allowtrading", true); + GUIUtils.sendTitleToAll("Challenge", "Handeln aktiviert", ChatColor.GREEN); + } + break; + case XP_DEATH_INDEX: + if (plugin.getConfig().getBoolean("xpdeath")) { + GUIUtils.setConfig("xpdeath", false); + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Einsammeln von XP deaktiviert", ChatColor.RED); + } else { + GUIUtils.setConfig("xpdeath", true); + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Einsammeln von XP aktiviert", ChatColor.GREEN); + } + break; + case DEATH_ON_FALL_INDEX: + if (plugin.getConfig().getBoolean("deathonfall")) { + GUIUtils.setConfig("deathonfall", false); + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Fallschaden deaktiviert", ChatColor.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Fallschaden aktiviert", ChatColor.GREEN); + GUIUtils.setConfig("deathonfall", true); + } + break; + case RANDOM_DROP_INDEX: + if (plugin.getConfig().getBoolean("rnddrops")) { + GUIUtils.setConfig("rnddrops", false); + GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops deaktiviert", ChatColor.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops aktiviert", ChatColor.GREEN); + GUIUtils.setConfig("rnddrops", true); + } + break; + case SHUFFLE_RANDOM_DROP_INDEX: + plugin.rndDrops.shuffleItems(); + GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops neu gemischt!", ChatColor.GREEN); + break; + case DEATH_ON_SPRINT_INDEX: + if (plugin.getConfig().getBoolean("deathonsprint")) { + GUIUtils.setConfig("deathonsprint", false); + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Sprinten deaktiviert", ChatColor.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Sprinten aktiviert", ChatColor.GREEN); + GUIUtils.setConfig("deathonsprint", true); + } + break; + case DEATH_ON_JUMP_INDEX: + if (plugin.getConfig().getBoolean("deathonjump")) { + GUIUtils.setConfig("deathonjump", false); + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Springen deaktiviert", ChatColor.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Springen aktiviert", ChatColor.GREEN); + GUIUtils.setConfig("deathonjump", true); + } + break; + case TARGET_INDEX: + if (plugin.getConfig().getBoolean("target")) { + GUIUtils.setConfig("target", false); + GUIUtils.sendTitleToAll("Challenge", "Ziel: Töte den Wither", ChatColor.GREEN); + } else { + GUIUtils.sendTitleToAll("Challenge", "Ziel: Töte den Enderdrachen", ChatColor.GREEN); + GUIUtils.setConfig("target", true); + } + break; + case CLEANR_INV_BY_DAMAGE_INDEX: + if (plugin.getConfig().getBoolean("clinvdmg")) { + GUIUtils.setConfig("clinvdmg", false); + GUIUtils.sendTitleToAll("Challenge", "Inventar von allen löschen wenn einer Schaden bekommt deaktiviert", ChatColor.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Inventar von allen löschen wenn einer Schaden bekommt aktiviert", ChatColor.GREEN); + GUIUtils.setConfig("clinvdmg", true); + } + break; + case DMG_ON_SNEAK_INDEX: + if (plugin.getConfig().getBoolean("damageonsneak")) { + GUIUtils.setConfig("damageonsneak", false); + GUIUtils.sendTitleToAll("Challenge", "Schaden bekommen beim Schleichen deaktiviert", ChatColor.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Schaden bekommen beim Schleichen aktiviert", ChatColor.GREEN); + GUIUtils.setConfig("damageonsneak", true); + } + break; + case MLG_INDEX: + if (plugin.getConfig().getBoolean("mlg.enabled")) { + GUIUtils.setConfig("mlg.enabled", false); + GUIUtils.sendTitleToAll("Challenge", "MLG deaktiviert", ChatColor.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "MLG aktiviert", ChatColor.GREEN); + GUIUtils.setConfig("mlg.enabled", true); + } + break; + case DMG_ON_SNEAK_ADD_INDEX: + GUIUtils.setConfig("sneakdmg", plugin.getConfig().getDouble("sneakdmg") + 0.5); + break; + case DMG_ON_SNEAK_REMOVE_INDEX: + if (plugin.getConfig().getDouble("sneakdmg") > 0) { + GUIUtils.setConfig("sneakdmg", plugin.getConfig().getDouble("sneakdmg") - 0.5); + } + break; + case SHARE_DMG_INDEX: + if (plugin.getConfig().getBoolean("sharedmg")) { + GUIUtils.setConfig("sharedmg", false); + GUIUtils.sendTitleToAll("Challenge", "Geteielter Schaden deaktiviert", ChatColor.RED); + } else { + GUIUtils.setConfig("sharedmg", true); + GUIUtils.sendTitleToAll("Challenge", "Geteielter Schaden aktiviert", ChatColor.GREEN); + } + break; + + default: + break; + } + createSettingsGUI(p); + switch (slot) { + case CLOSE_GUI_INDEX: + p.closeInventory(); + break; + case BACK_BUTTON_INDEX: + MainGui.createMainGUI(p); + break; + } + e.setCancelled(true); + } +} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/listeners/BlockCreateListener.java b/src/main/java/de/fanta/challenges/listeners/BlockCreateListener.java new file mode 100644 index 0000000..3345b7d --- /dev/null +++ b/src/main/java/de/fanta/challenges/listeners/BlockCreateListener.java @@ -0,0 +1,27 @@ +package de.fanta.challenges.listeners; + +import de.fanta.challenges.Challenges; +import org.bukkit.GameMode; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.player.PlayerBucketEmptyEvent; + +public class BlockCreateListener implements Listener { + + private Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onBlockPlace(BlockPlaceEvent e) { + if (!plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { + e.setCancelled(true); + } + } + + @EventHandler + public void onBucketPlace(PlayerBucketEmptyEvent e) { + if (!plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { + e.setCancelled(true); + } + } +} diff --git a/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java b/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java new file mode 100644 index 0000000..4ba6b22 --- /dev/null +++ b/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java @@ -0,0 +1,55 @@ +package de.fanta.challenges.listeners; + +import de.fanta.challenges.Challenges; +import org.bukkit.GameMode; +import org.bukkit.Material; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockExplodeEvent; +import org.bukkit.event.entity.EntityExplodeEvent; +import org.bukkit.inventory.ItemStack; + +public class BlockDestroyListener implements Listener { + + private Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onBlockBreak(BlockBreakEvent e) { + if (this.plugin.getConfig().getBoolean("rnddrops") && plugin.getTimer().isRunning()) { + e.setDropItems(false); + e.getBlock().getWorld().dropItem(e.getBlock().getLocation().add(0.5D, 0.5D, 0.5D), new ItemStack(this.plugin.getRandomDropsManager().getMaterialFromBlock(e.getBlock()))); + } + if ((!plugin.getTimer().isRunning()) && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { + e.setCancelled(true); + } + } + + @EventHandler + public void onBlockExplode(BlockExplodeEvent e) { + if (this.plugin.getConfig().getBoolean("rnddrops")) { + e.blockList().forEach(block -> { + 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); + } + }); + e.blockList().clear(); + } + } + + @EventHandler + public void onEntityExplode(EntityExplodeEvent e) { + if (this.plugin.getConfig().getBoolean("rnddrops")) { + e.blockList().forEach(block -> { + 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); + } + }); + e.blockList().clear(); + } + } + +} + diff --git a/src/main/java/de/fanta/challenges/listeners/DamageListener.java b/src/main/java/de/fanta/challenges/listeners/DamageListener.java new file mode 100644 index 0000000..0cf86c7 --- /dev/null +++ b/src/main/java/de/fanta/challenges/listeners/DamageListener.java @@ -0,0 +1,203 @@ +package de.fanta.challenges.listeners; + +import com.destroystokyo.paper.event.player.PlayerJumpEvent; +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ChatUtil; +import java.text.DecimalFormat; + +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.Sound; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.entity.TNTPrimed; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.player.PlayerExpChangeEvent; +import org.bukkit.event.player.PlayerToggleSneakEvent; +import org.bukkit.event.player.PlayerToggleSprintEvent; + +public class DamageListener implements Listener { + + private Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onDamage(EntityDamageEvent e) { + if (e.getEntity() instanceof Player) { + Player p = (Player) e.getEntity(); + String dmg = new DecimalFormat("#.##").format(e.getFinalDamage()); + if (e.getFinalDamage() > 0) { + if (e.getCause() == DamageCause.FALL) { + if (plugin.getConfig().getBoolean("deathonfall")) { + if (plugin.getConfig().getBoolean("dmginchat")) { + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + p.getName() + ChatUtil.NORMAL + " hat " + ChatUtil.WARNING + dmg + ChatUtil.NORMAL + " HP Schaden genommen durch " + ChatUtil.WARNING + e.getCause()); + } + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> p.setHealth(0), 1); + } else if (plugin.getConfig().getBoolean("dmginchat") && (plugin.getTimer().isRunning())) { + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + p.getName() + ChatUtil.NORMAL + " hat " + ChatUtil.WARNING + dmg + ChatUtil.NORMAL + " HP Schaden genommen durch " + ChatUtil.WARNING + e.getCause()); + } + } else if (e.getCause() == DamageCause.CUSTOM) { + if (!p.isSneaking() && (plugin.getConfig().getBoolean("dmginchat"))) { + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + p.getName() + ChatUtil.NORMAL + " hat " + ChatUtil.WARNING + plugin.getConfig().getDouble("sneakdmg") + ChatUtil.NORMAL + " HP Schaden genommen durch" + ChatUtil.WARNING + " SNEAKING"); + } + } else if (e.getCause() == DamageCause.ENTITY_ATTACK || e.getCause() == DamageCause.ENTITY_EXPLOSION) { + + } else if (plugin.getConfig().getBoolean("dmginchat") && (plugin.getTimer().isRunning())) { + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + p.getName() + ChatUtil.NORMAL + " hat " + ChatUtil.WARNING + dmg + ChatUtil.NORMAL + " HP Schaden genommen durch " + ChatUtil.WARNING + e.getCause()); + } + if (plugin.getConfig().getBoolean("sharedmg") && plugin.getTimer().isRunning()) { + for (Player pp : Bukkit.getOnlinePlayers()) { + if (pp != p) { + double health = pp.getHealth() - e.getFinalDamage(); + if (health < 0) { + pp.setHealth(0); + } else { + if (pp.getGameMode() == GameMode.SURVIVAL) { + pp.setHealth(health); + pp.getWorld().playSound(pp.getLocation(), Sound.ENTITY_PLAYER_HURT, 1, 1); + } + + } + + } + } + } + } + } + if (!plugin.getTimer().isRunning()) { + e.setCancelled(true); + } + } + + @EventHandler + public void onEntityDamage(EntityDamageByEntityEvent e) { + if ((e.getEntity() instanceof Player) && (e.getFinalDamage() > 0) && (plugin.getTimer().isRunning())) { + Player p = (Player) e.getEntity(); + String dmg = new DecimalFormat("#.##").format(e.getFinalDamage()); + if ((e.getCause() == DamageCause.ENTITY_ATTACK || e.getCause() == DamageCause.ENTITY_EXPLOSION) && plugin.getConfig().getBoolean("dmginchat")) { + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + p.getName() + ChatUtil.NORMAL + " hat " + ChatUtil.WARNING + dmg + ChatUtil.NORMAL + " HP Schaden genommen durch " + ChatUtil.WARNING + e.getDamager().getName()); + } + } + if (!plugin.getTimer().isRunning()) { + e.setCancelled(true); + } + } + + @EventHandler + public void onPlayerSneak(PlayerToggleSneakEvent e) { + Player p = e.getPlayer(); + if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { + if (!p.isSneaking()) { + if (plugin.getConfig().getBoolean("damageonsneak")) { + if (plugin.getConfig().getBoolean("tntdeath")) { + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.sendTitle("§c" + p.getName() + " §ahat gesneakt!", "§b:>", 5, 50, 5); + EntityType tnt = EntityType.PRIMED_TNT; + Location loc = pp.getLocation(); + TNTPrimed PRIME_TNT = (TNTPrimed) pp.getWorld().spawnEntity(loc, tnt); + PRIME_TNT.setCustomName("§c§lNUKE"); + PRIME_TNT.setFuseTicks(15); + PRIME_TNT.setYield(120); + PRIME_TNT.setIsIncendiary(true); + } + } else { + p.damage(plugin.getConfig().getDouble("sneakdmg")); + } + } + } + } + } + + @EventHandler + public void onPlayerSprint(PlayerToggleSprintEvent e) { + Player p = e.getPlayer(); + if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { + if (!p.isSprinting()) { + if (plugin.getConfig().getBoolean("deathonsprint")) { + if (plugin.getConfig().getBoolean("tntdeath")) { + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.sendTitle("§c" + p.getName() + " §aist gesprintet!", "§bBOOOM :>", 5, 50, 5); + EntityType tnt = EntityType.PRIMED_TNT; + Location loc = pp.getLocation(); + TNTPrimed PRIME_TNT = (TNTPrimed) pp.getWorld().spawnEntity(loc, tnt); + PRIME_TNT.setCustomName("§c§lNUKE"); + PRIME_TNT.setFuseTicks(15); + PRIME_TNT.setYield(120); + PRIME_TNT.setIsIncendiary(true); + } + } else { + p.setHealth(0); + } + } + } + } + } + + @EventHandler + public void onPlayerJump(PlayerJumpEvent e) { + Player p = e.getPlayer(); + if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { + if (plugin.getConfig().getBoolean("deathonjump")) { + if (plugin.getConfig().getBoolean("tntdeath")) { + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.sendTitle("§c" + p.getName() + " §aist gesprungen!", "§bBOOOM :>", 5, 50, 5); + EntityType tnt = EntityType.PRIMED_TNT; + Location loc = pp.getLocation(); + TNTPrimed PRIME_TNT = (TNTPrimed) pp.getWorld().spawnEntity(loc, tnt); + PRIME_TNT.setCustomName("§c§lNUKE"); + PRIME_TNT.setFuseTicks(15); + PRIME_TNT.setYield(120); + PRIME_TNT.setIsIncendiary(true); + } + } else { + p.setHealth(0); + } + } + } + } + + @EventHandler + public void onDamageclear(EntityDamageEvent e) { + if (e.getEntity() instanceof Player) { + Player p = (Player) e.getEntity(); + if (e.getEntity() instanceof Player) { + if (plugin.getConfig().getBoolean("clinvdmg")) { + if (plugin.getTimer().isRunning() && p.getGameMode() == GameMode.SURVIVAL) { + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.getInventory().clear(); + ChatUtil.sendNormalMessage(pp, ChatUtil.PLAYER + p.getName() + ChatUtil.WARNING + " hat Schaden bekommen! Alle Inventare wurden gelöscht!"); + + } + } + } + } + } + } + + @EventHandler + public void onPlayerGetXP(PlayerExpChangeEvent e) { + Player p = e.getPlayer(); + if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { + if (plugin.getConfig().getBoolean("xpdeath")) { + if (plugin.getConfig().getBoolean("tntdeath")) { + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.sendTitle("§c" + p.getName() + " §ahat XP eingesammelt!", "§bPling :>", 5, 50, 5); + EntityType tnt = EntityType.PRIMED_TNT; + Location loc = pp.getLocation(); + TNTPrimed PRIME_TNT = (TNTPrimed) pp.getWorld().spawnEntity(loc, tnt); + PRIME_TNT.setCustomName("§c§lNUKE"); + PRIME_TNT.setFuseTicks(15); + PRIME_TNT.setYield(120); + PRIME_TNT.setIsIncendiary(true); + } + } else { + p.setHealth(0); + } + } + } + } +} diff --git a/src/main/java/de/fanta/challenges/listeners/DeathListener.java b/src/main/java/de/fanta/challenges/listeners/DeathListener.java new file mode 100644 index 0000000..f61de08 --- /dev/null +++ b/src/main/java/de/fanta/challenges/listeners/DeathListener.java @@ -0,0 +1,66 @@ +package de.fanta.challenges.listeners; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ChatUtil; +import net.md_5.bungee.api.ChatColor; +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.entity.EnderDragon; +import org.bukkit.entity.Player; +import org.bukkit.entity.Wither; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDeathEvent; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.PlayerRespawnEvent; + +public class DeathListener implements Listener { + + private Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (plugin.getConfig().getBoolean("onelife")) { + plugin.getTimer().stopTimer(); + for (Player p : Bukkit.getOnlinePlayers()) { + p.setGameMode(GameMode.SPECTATOR); + } + e.setDeathMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + e.getEntity().getName() + ChatUtil.NORMAL + " ist gestorben!"); + Bukkit.broadcastMessage("§cVerschwendete Zeit §6" + plugin.getTimer().formatTime(ChatColor.GOLD)); + Bukkit.broadcastMessage("§aWelt Seed: §b" + Bukkit.getWorlds().get(0).getSeed()); + Bukkit.broadcastMessage("§6Um alle wiederzubeleben benutze §c/revive ALL"); + } else { + e.setDeathMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + e.getEntity().getName() + ChatUtil.NORMAL + " ist gestorben! " + ChatUtil.WARNING + "(" + e.getEntity().getLocation().getBlockX() + " " + e.getEntity().getLocation().getBlockY() + " " + e.getEntity().getLocation().getBlockZ() + ")"); + if (!plugin.getConfig().getBoolean("respawn")) { + Player editor = plugin.getCurrentEditor(); + ChatUtil.sendNormalMessage(editor, "§6Benutze §c/revive " + e.getEntity().getName() + " [world] [x] [y] [z] §6um ihn wiederzubeleben!"); + } + } + } + + @EventHandler + public void onPlayerRespawn(PlayerRespawnEvent e) { + if (!plugin.getConfig().getBoolean("respawn")) { + e.getPlayer().sendTitle(ChatUtil.NORMAL + "Du bist gestorben!", ChatUtil.ERROR + "Du bist nun Zuschauer", 10, 80, 10); + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> e.getPlayer().setGameMode(GameMode.SPECTATOR), 1); + } + } + + @EventHandler + public void DragonDeath(EntityDeathEvent e) { + if ((e.getEntity() instanceof EnderDragon && plugin.getConfig().getBoolean("target")) || (e.getEntity() instanceof Wither && !plugin.getConfig().getBoolean("target"))) { + plugin.getTimer().stopTimer(); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.GREEN + ChatColor.BOLD + ChatColor.MAGIC + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); + Bukkit.broadcastMessage(Challenges.PREFIX); + Bukkit.broadcastMessage(Challenges.PREFIX); + Bukkit.broadcastMessage(Challenges.PREFIX); + Bukkit.broadcastMessage(Challenges.PREFIX + " §8>> §7Der §2§l" + e.getEntity().getName().toLowerCase() + " §7wurde besiegt."); + Bukkit.broadcastMessage(Challenges.PREFIX + " §8>> §7Benötigte Zeit: §2§l" + plugin.getTimer().formatTime(ChatColor.GREEN) + "§7!"); + Bukkit.broadcastMessage(Challenges.PREFIX + " §8>> §7Seed: §2§l" + Bukkit.getWorlds().get(0).getSeed()); + Bukkit.broadcastMessage(Challenges.PREFIX); + Bukkit.broadcastMessage(Challenges.PREFIX); + Bukkit.broadcastMessage(Challenges.PREFIX); + Bukkit.broadcastMessage(Challenges.PREFIX + ChatColor.GREEN + ChatColor.BOLD + ChatColor.MAGIC + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); + } + } +} diff --git a/src/main/java/de/fanta/challenges/listeners/InteractListener.java b/src/main/java/de/fanta/challenges/listeners/InteractListener.java new file mode 100644 index 0000000..74b9a08 --- /dev/null +++ b/src/main/java/de/fanta/challenges/listeners/InteractListener.java @@ -0,0 +1,43 @@ +package de.fanta.challenges.listeners; + +import de.fanta.challenges.Challenges; +import org.bukkit.GameMode; +import org.bukkit.Material; +import org.bukkit.entity.EntityType; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.event.player.PlayerInteractEvent; + +public class InteractListener implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onBlockClick(PlayerInteractEvent e) { + if (e.getAction() == Action.RIGHT_CLICK_BLOCK) { + if (e.getClickedBlock().getType() == Material.CRAFTING_TABLE) { + if (!plugin.getConfig().getBoolean("craftingtable")) { + e.setCancelled(true); + } + } + if (!plugin.getTimer().isRunning() && e.getPlayer().getGameMode() != GameMode.CREATIVE) { + e.setCancelled(true); + } + } + } + + @EventHandler + public void onEntityClick(PlayerInteractEntityEvent e) { + if (e.getRightClicked().getType() == EntityType.VILLAGER) { + if (!plugin.getConfig().getBoolean("allowtrading")) { + e.setCancelled(true); + } + } + if (!plugin.getTimer().isRunning() && e.getPlayer().getGameMode() != GameMode.CREATIVE) { + e.setCancelled(true); + } + } +} + diff --git a/src/main/java/de/fanta/challenges/listeners/InventoryClickListener.java b/src/main/java/de/fanta/challenges/listeners/InventoryClickListener.java new file mode 100644 index 0000000..27f6c72 --- /dev/null +++ b/src/main/java/de/fanta/challenges/listeners/InventoryClickListener.java @@ -0,0 +1,44 @@ +package de.fanta.challenges.listeners; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.commands.coords.CoordsCommand; +import de.fanta.challenges.commands.coords.CoordsDeleteCommand; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; + +public class InventoryClickListener implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void InvClick(InventoryClickEvent e) { + String invname = e.getView().getTitle(); + Player p = (Player) e.getWhoClicked(); + int slot = e.getRawSlot(); + if (invname.equals(CoordsCommand.CGUIN)) { + e.setCancelled(true); + if (slot >= 0 && slot <= 44) { + if (CoordsCommand.CoordsGUI.getItem(slot) != null && p.hasPermission("challenges.coords.delete")) { + p.performCommand("coords delete " + e.getCurrentItem().getItemMeta().getDisplayName()); + } + } + } + if (invname.equals(CoordsDeleteCommand.CDGUIN)) { + e.setCancelled(true); + if (slot == 0) { + String cname = CoordsDeleteCommand.CoordsDeleteGUI.getItem(4).getItemMeta().getDisplayName(); + plugin.getConfig().set("Saved_Locations." + cname, null); + plugin.saveConfig(); + ChatUtil.sendNormalMessage(p, "Position " + cname + " wurde gelöscht!"); + p.closeInventory(); + } + if (slot == 8) { + p.performCommand("coords"); + } + } + } +} + diff --git a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java new file mode 100644 index 0000000..29eedb1 --- /dev/null +++ b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java @@ -0,0 +1,27 @@ +package de.fanta.challenges.listeners; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.commands.event.EventToggleCommand; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityTargetLivingEntityEvent; +import org.bukkit.event.entity.FoodLevelChangeEvent; + +public class PlayerListener implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onEntityTarget(EntityTargetLivingEntityEvent e) { + if (!plugin.getTimer().isRunning()) { + e.setCancelled(true); + } + } + + @EventHandler + public void onFoodChange(FoodLevelChangeEvent e) { + if (!plugin.getTimer().isRunning()) { + e.setCancelled(true); + } + } +} diff --git a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java new file mode 100644 index 0000000..42c2e8d --- /dev/null +++ b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java @@ -0,0 +1,117 @@ +package de.fanta.challenges.listeners; + +import de.fanta.challenges.Challenges; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.stream.Collectors; + +import de.fanta.challenges.events.PlayerCountChangedEvent; +import de.fanta.challenges.events.ServerStatusChangedEvent; +import de.fanta.challenges.utils.ChatUtil; +import net.md_5.bungee.api.ChatColor; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerLoginEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +public class QuitJoinListener implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + private int resetTaskId = -1; + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent e) { + Player p = e.getPlayer();; + if (resetTaskId > 0) { + Bukkit.getScheduler().cancelTask(resetTaskId); + resetTaskId = -1; + } + + + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + p.getName() + ChatUtil.NORMAL + " hat die Lobby betreten! " + ChatColor.of("#E4E737") + "[" + Bukkit.getServer().getOnlinePlayers().size() + "/" + Bukkit.getServer().getMaxPlayers() + "]"); + e.setJoinMessage(null); + if (plugin.getConfig().getBoolean("sharedmg")) { + int rnd = new Random().nextInt(Bukkit.getOnlinePlayers().size()); + Player rp = (Player) Bukkit.getServer().getOnlinePlayers().toArray()[rnd]; + p.setHealth(rp.getHealth()); + } + + this.plugin.getSBManager().setScoreboard(p); + + if (plugin.getCurrentEditor() == null) { + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + if (p.hasPermission("Challenges.editor")) { + plugin.setCurrentEditor(p); + ChatUtil.sendNormalMessage(p, "Du bist nun der Editor dieser Lobby!"); + } else { + ChatUtil.sendWarningMessage(p, "Es ist aktuell kein Editor in dieser Lobby"); + ChatUtil.sendWarningMessage(p, "Um selbst Editor zu werden musst du VIP sein!"); + } + }, 1L); + } else { + ChatUtil.sendNormalMessage(p, plugin.getCurrentEditor().getName() + " ist der Editor dieser Lobby!"); + } + + Bukkit.getPluginManager().callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size())); + } + + @EventHandler + public void onPlayerLogin(PlayerLoginEvent e) { + if (plugin.isWaitingForShutdown()) { + e.setResult(PlayerLoginEvent.Result.KICK_OTHER); + e.setKickMessage("Der Server wird gerade neu gestartet."); + } + } + + @EventHandler + public void onPlayerQuit(PlayerQuitEvent e) { + Player player = e.getPlayer(); + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatColor.of("#3D98DC") + player.getName() + ChatColor.of("#C45B3D") + " hat die Lobby verlassen! " + ChatColor.of("#E4E737") + "[" + (Bukkit.getServer().getOnlinePlayers().size() - 1) + "/" + Bukkit.getServer().getMaxPlayers() + "]"); + e.setQuitMessage(null); + + if (Bukkit.getOnlinePlayers().size() == 1) { + plugin.getTimer().stopTimer(); + } + + if (plugin.getCurrentEditor() != null && player.getUniqueId().equals(plugin.getCurrentEditor().getUniqueId())) { + if (Bukkit.getServer().getOnlinePlayers().size() - 1 > 0) { + Random random = new Random(); + Player randomPlayer; + + List onlinePlayersWithPermission = Bukkit.getOnlinePlayers().stream().filter(p -> p.hasPermission("Challenges.editor")).distinct().collect(Collectors.toList()); + onlinePlayersWithPermission.remove(player); + if (onlinePlayersWithPermission.size() > 0) { + int rnd = random.nextInt(onlinePlayersWithPermission.size()); + randomPlayer = onlinePlayersWithPermission.get(rnd); + } else { + List onlinePlayers = new ArrayList<>(Bukkit.getOnlinePlayers()); + onlinePlayers.remove(player); + int rnd = random.nextInt(onlinePlayers.size()); + randomPlayer = onlinePlayers.get(rnd); + } + plugin.setCurrentEditor(randomPlayer); + ChatUtil.sendNormalMessage(randomPlayer, "Du bist nun der Editor dieser Lobby!"); + Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatColor.GREEN + randomPlayer.getName() + " ist nun der Editor dieser Lobby!"); + } else { + plugin.setCurrentEditor(null); + + resetTaskId = Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + Bukkit.dispatchCommand(Bukkit.getConsoleSender() ,"reset confirm"); + }, 10 * 60 * 20); + } + } + + Bukkit.getPluginManager().callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size() - 1)); + + if (plugin.isWaitingForShutdown() && Bukkit.getOnlinePlayers().size() == 1) { + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + Bukkit.getPluginManager().callEvent(new ServerStatusChangedEvent(false)); + }, 1L); + } + } +} diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java new file mode 100644 index 0000000..96d5fb9 --- /dev/null +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java @@ -0,0 +1,104 @@ +package de.fanta.challenges.scoreboard; + +import de.fanta.challenges.Challenges; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; +import org.bukkit.entity.Strider; +import org.bukkit.scoreboard.DisplaySlot; +import org.bukkit.scoreboard.Objective; +import org.bukkit.scoreboard.RenderType; +import org.bukkit.scoreboard.Score; +import org.bukkit.scoreboard.Scoreboard; +import org.bukkit.scoreboard.ScoreboardManager; +import org.bukkit.scoreboard.Team; + +public class ScoreBoardManager { + + private final Challenges plugin; + private Scoreboard scoreboard; + private Team team; + + private Objective event; + private Objective tabHP; + + public ScoreBoardManager(Challenges plugin) { + this.plugin = plugin; + } + + private void initScoreboard() { // only possible after first world has loaded + this.scoreboard = Bukkit.getScoreboardManager().getNewScoreboard(); + this.team = scoreboard.registerNewTeam("Player"); + + this.team.setColor(ChatColor.GREEN); + + updateTabHP(); + } + + public void setScoreboard(Player p) { + if (this.scoreboard == null) { + initScoreboard(); + } + + team.addEntry(p.getName()); + + p.setScoreboard(scoreboard); + } + + public void updateTabHP() { + if (plugin.getConfig().getBoolean("tabhp")) { + if (this.tabHP == null) { + tabHP = scoreboard.registerNewObjective("hp", "health", "§6Challenges"); + } + tabHP.setDisplaySlot(DisplaySlot.PLAYER_LIST); + tabHP.setDisplayName("§cHP"); + tabHP.setRenderType(RenderType.HEARTS); + + for (String entry : team.getEntries()) { + Player player = Bukkit.getPlayer(entry); + if (player != null) { + tabHP.getScore(entry).setScore((int) player.getHealth()); + } + } + + } else { + if (tabHP != null) { + tabHP.unregister(); + tabHP = null; + } + } + } + + public void updateEventScoreboard() { + if (plugin.getConfig().getBoolean("event")) { + this.team.setColor(ChatColor.BLUE); + this.team.setDisplayName("Event"); + + if (this.event == null) { + event = this.scoreboard.registerNewObjective("event", "event", "§6Challenges"); + } + event.setDisplaySlot(DisplaySlot.SIDEBAR); + event.setDisplayName(team.getColor() + team.getPrefix() + team.getDisplayName()); + event.setRenderType(RenderType.INTEGER); + + for (String entry : team.getEntries()) { + event.getScore(entry).setScore(0); + } + + } else { + if (event != null) { + event.unregister(); + event = null; + } + this.team.setColor(ChatColor.GREEN); + this.team.setDisplayName("Player"); + } + } + + void updateEventScore(Player player, int difference) { + if (this.event != null) { + Score score = event.getScore(player.getName()); + score.setScore(score.getScore() + difference); + } + } +} diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java new file mode 100644 index 0000000..d06c435 --- /dev/null +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java @@ -0,0 +1,39 @@ +package de.fanta.challenges.scoreboard; + +import de.fanta.challenges.Challenges; +import org.bukkit.entity.Player; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class ScoreManager { + + private final Challenges plugin; + private final Map scores; + + public ScoreManager(Challenges plugin) { + this.plugin = plugin; + this.scores = new HashMap<>(); + } + + public void updateScore(Player player, int difference) { + int score = scores.getOrDefault(player.getUniqueId(), 0); + score += difference; + scores.put(player.getUniqueId(), score); + + this.plugin.getSBManager().updateEventScore(player, difference); + } + + public int getScore(Player player) { + return scores.getOrDefault(player.getUniqueId(), -1); + } + + public void saveScores() { + // TODO wenn man will, scores in Datei schreiben + } + + 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 new file mode 100644 index 0000000..2561da5 --- /dev/null +++ b/src/main/java/de/fanta/challenges/utils/ChatUtil.java @@ -0,0 +1,34 @@ +package de.fanta.challenges.utils; + +import de.fanta.challenges.Challenges; +import de.iani.cubesideutils.bukkit.ChatUtilBukkit; +import net.md_5.bungee.api.ChatColor; +import org.bukkit.command.CommandSender; + +public class ChatUtil { + + public static final ChatColor NORMAL = ChatColor.of("#1FFF00"); + public static final ChatColor WARNING = ChatColor.of("#ffe100"); + public static final ChatColor ERROR = ChatColor.of("#a30202"); + public static final ChatColor PLAYER = ChatColor.of("#3D98DC"); + + private ChatUtil() { + // 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 sendNormalMessage(CommandSender sender, Object message, Object... messageParts) { + sendMessage(sender, NORMAL.toString(), message, messageParts); + } + + public static void sendWarningMessage(CommandSender sender, Object message, Object... messageParts) { + sendMessage(sender, WARNING.toString(), message, messageParts); + } + + public static void sendErrorMessage(CommandSender sender, Object message, Object... messageParts) { + sendMessage(sender, ERROR.toString(), message, messageParts); + } +} diff --git a/src/main/java/de/fanta/challenges/utils/guiutils/GUIUtils.java b/src/main/java/de/fanta/challenges/utils/guiutils/GUIUtils.java new file mode 100644 index 0000000..474b16b --- /dev/null +++ b/src/main/java/de/fanta/challenges/utils/guiutils/GUIUtils.java @@ -0,0 +1,50 @@ +package de.fanta.challenges.utils.guiutils; + +import de.fanta.challenges.Challenges; +import net.md_5.bungee.api.ChatColor; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.Arrays; + +public class GUIUtils { + + private static final Challenges plugin = Challenges.getPlugin(); + + public static final ItemStack EMPTY_ICON = createGuiItem(Material.GRAY_STAINED_GLASS_PANE, "§1", true); + + public static ItemStack createGuiItem(Material material, String name, String... lore) { + return createGuiItem(material, name, false, lore); + } + + public static ItemStack createGuiItem(final Material material, final String name, boolean glowing, final String... lore) { + final ItemStack item = new ItemStack(material, 1); + final ItemMeta meta = item.getItemMeta(); + meta.setDisplayName(name); + meta.setLore(Arrays.asList(lore)); + if (glowing) { + meta.addEnchant(Enchantment.MENDING, 1, false); + meta.addItemFlags(ItemFlag.HIDE_ENCHANTS); + } + item.setItemMeta(meta); + return item; + } + + public static void sendTitleToAll(String headline, String text, ChatColor textColor) { + for (Player p : Bukkit.getOnlinePlayers()) { + p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F); + p.sendTitle(ChatColor.of("#0ddead") + headline, textColor + text, 10, 60, 10); + } + } + + public static void setConfig(String path, Object value) { + plugin.getConfig().set(path, value); + plugin.saveConfig(); + } +} diff --git a/src/main/java/net/brennholz/challenges/Backpack.java b/src/main/java/net/brennholz/challenges/Backpack.java deleted file mode 100644 index 3f3a23b..0000000 --- a/src/main/java/net/brennholz/challenges/Backpack.java +++ /dev/null @@ -1,75 +0,0 @@ -package net.brennholz.challenges; - -import java.util.Iterator; -import java.util.Map; -import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.configuration.MemorySection; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; - -public class Backpack implements CommandExecutor { - private Challenges chl = Challenges.getplugin(); - private static Challenges chl1 = Challenges.getplugin(); - - static int size = chl1.getConfig().getInt("backpack_size"); - public static Inventory Backpack = Bukkit.createInventory(null, size, "§6Backpack"); - - public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - if (sender instanceof Player) { - Player p = (Player) sender; - if (p.hasPermission("challenges.backpack")) { - p.openInventory(Backpack); - } else { - p.sendMessage("hast hierfkeine Berechtigung"); - } - } else { - sender.sendMessage("Konsolenbefehl!"); - } - return true; - } - - public void clearConfig() { - Iterator var2 = this.chl.getBackpackConfig().getKeys(false).iterator(); - while (var2.hasNext()) { - String main_path = (String) var2.next(); - this.chl.getBackpackConfig().set(main_path, null); - } - } - - public void saveInventoryToConfig() { - clearConfig(); - int slot = 0; - for (; slot < Backpack.getSize(); slot++) { - ItemStack stack = Backpack.getItem(slot); - if (stack != null && stack.getType() != Material.AIR) - this.chl.getBackpackConfig().set(String.valueOf(slot), stack.serialize()); - } - } - - @SuppressWarnings("rawtypes") - public void loadInventoryFromConfig() { - Iterator var2 = this.chl.getBackpackConfig().getValues(false).entrySet().iterator(); - while (var2.hasNext()) { - int slot; - Map.Entry entry = (Map.Entry) var2.next(); - try { - slot = Integer.parseInt((String) entry.getKey()); - } catch (NumberFormatException var6) { - this.chl.getServer().broadcastMessage("Fehler! Slot: " + (String) entry.getKey()); - continue; - } - if (slot >= Backpack.getSize()) { - this.chl.getServer().broadcastMessage("" + slot + " befindet sich audes Inventars!"); - continue; - } - MemorySection memorySection = (MemorySection) entry.getValue(); - ItemStack deserialized = ItemStack.deserialize(memorySection.getValues(false)); - Backpack.setItem(slot, deserialized); - } - } -} diff --git a/src/main/java/net/brennholz/challenges/Challenges.java b/src/main/java/net/brennholz/challenges/Challenges.java deleted file mode 100644 index edca76e..0000000 --- a/src/main/java/net/brennholz/challenges/Challenges.java +++ /dev/null @@ -1,281 +0,0 @@ -package net.brennholz.challenges; - -import net.brennholz.commands.Challenges_Command; -import net.brennholz.commands.Coords_Command; -import net.brennholz.commands.HP_Command; -import net.brennholz.commands.Reset_Command; -import net.brennholz.commands.Revive_Command; -import net.brennholz.commands.Settings_Command; -import net.brennholz.commands.Timer_Command; -import net.brennholz.events.BlockCreateListener; -import net.brennholz.events.BlockDestroyListener; -import net.brennholz.events.DamageListener; -import net.brennholz.events.DeathListener; -import net.brennholz.events.InteractListener; -import net.brennholz.events.InventoryClickListener; -import net.brennholz.events.QuitJoinListener; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.World; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.java.JavaPlugin; - -import com.google.common.io.MoreFiles; -import com.google.common.io.RecursiveDeleteOption; - -public class Challenges extends JavaPlugin { - private static Challenges plugin; - - private File BackpackConfigFile; - - private FileConfiguration BackpackConfig; - - private File RndDropsConfigFile; - - private FileConfiguration RndDropsConfig; - - private Timer_Command Timer; - - private Backpack backpack; - - private SBManager sbManager; - - private RandomDrops rndDrops; - - public static Inventory SettingsGUI = Bukkit.createInventory(null, 45, "§6Settings"); - - public static String GUIName = "§6Settings"; - - public static Challenges getplugin() { return plugin; } - - - public void onEnable() { - plugin = this; - this.Timer = new Timer_Command(); - this.backpack = new Backpack(); - this.rndDrops = new RandomDrops(); - getCommand("hp").setExecutor(new HP_Command()); - getCommand("settings").setExecutor(new Settings_Command()); - getCommand("coords").setExecutor(new Coords_Command()); - getCommand("revive").setExecutor(new Revive_Command()); - getCommand("timer").setExecutor(new Timer_Command()); - getCommand("challenges").setExecutor(new Challenges_Command()); - getCommand("backpack").setExecutor(new Backpack()); - getCommand("reset").setExecutor(new Reset_Command()); - - Bukkit.getPluginManager().registerEvents(new InventoryClickListener(), (Plugin)this); - Bukkit.getPluginManager().registerEvents(new QuitJoinListener(), (Plugin)this); - Bukkit.getPluginManager().registerEvents(new BlockDestroyListener(), (Plugin)this); - Bukkit.getPluginManager().registerEvents(new BlockCreateListener(), (Plugin)this); - Bukkit.getPluginManager().registerEvents(new InteractListener(), (Plugin)this); - Bukkit.getPluginManager().registerEvents(new DamageListener(), (Plugin)this); - Bukkit.getPluginManager().registerEvents(new DeathListener(), (Plugin)this); - - saveDefaultConfig(); - reloadConfig(); - createRndDropsConfig(); - createBackpackConfig(); - if (getConfig().getBoolean("World_Reset")) { - getLogger().info("/Reset Command was executed!"); - getLogger().info("Preparing world reset!"); - String worldname = getConfig().getString("World_Name"); - String nethername = worldname + "_nether"; - String endname = worldname + "_the_end"; - File worldfolder = new File(Bukkit.getWorldContainer().getPath() + "/" + worldname); - File netherfolder = new File(Bukkit.getWorldContainer().getPath() + "/" + nethername); - File endfolder = new File(Bukkit.getWorldContainer().getPath() + "/" + endname); - try { - MoreFiles.deleteRecursively(worldfolder.toPath(), new RecursiveDeleteOption[] { RecursiveDeleteOption.ALLOW_INSECURE }); - MoreFiles.deleteRecursively(netherfolder.toPath(), new RecursiveDeleteOption[] { RecursiveDeleteOption.ALLOW_INSECURE }); - MoreFiles.deleteRecursively(endfolder.toPath(), new RecursiveDeleteOption[] { RecursiveDeleteOption.ALLOW_INSECURE }); - getLogger().info("World reset successful!"); - } catch (IOException e) { - getLogger().info("World reset failed!"); - e.printStackTrace(); - } - getConfig().set("World_Reset", Boolean.valueOf(false)); - saveConfig(); - this.backpack.clearConfig(); - this.rndDrops.shuffleItems(); - this.rndDrops.saveItems(); - this.rndDrops.loadItems(); - } else { - this.rndDrops.loadItems(); - } - this.backpack.loadInventoryFromConfig(); - this.Timer.Run_Timer(); - getLogger().info("Plugin loaded!"); - this.sbManager = new SBManager(); - } - - - - public void onDisable() { - this.backpack.saveInventoryToConfig(); - try { - this.BackpackConfig.save(this.BackpackConfigFile); - this.RndDropsConfig.save(this.RndDropsConfigFile); - } catch (IOException e) { - e.printStackTrace(); - } - getLogger().info("Plugin unloaded"); - } - - public RandomDrops getRandomDropsManager() { - return this.rndDrops; - } - - public FileConfiguration getBackpackConfig() { - return this.BackpackConfig; - } - - private void createBackpackConfig() { - this.BackpackConfigFile = new File(getDataFolder(), "backpack.yml"); - if (!this.BackpackConfigFile.exists()) { - this.BackpackConfigFile.getParentFile().mkdirs(); - saveResource("backpack.yml", false); - } - this.BackpackConfig = (FileConfiguration)new YamlConfiguration(); - try { - this.BackpackConfig.load(this.BackpackConfigFile); - } catch (IOException|org.bukkit.configuration.InvalidConfigurationException e) { - e.printStackTrace(); - } - } - - public FileConfiguration getRndDropsConfig() { - return this.RndDropsConfig; - } - - private void createRndDropsConfig() { - this.RndDropsConfigFile = new File(getDataFolder(), "rnddrops.yml"); - if (!this.RndDropsConfigFile.exists()) { - this.RndDropsConfigFile.getParentFile().mkdirs(); - saveResource("rnddrops.yml", false); - } - this.RndDropsConfig = (FileConfiguration)new YamlConfiguration(); - try { - this.RndDropsConfig.load(this.RndDropsConfigFile); - } catch (IOException|org.bukkit.configuration.InvalidConfigurationException e) { - e.printStackTrace(); - } - } - - - - public void createGUI(Player p) { - SettingsGUI.setItem(0, addGUIItem(Material.CRAFTING_TABLE, "§6Erlaube Crafting")); - SettingsGUI.setItem(1, addGUIItem(Material.EMERALD, "§6Erlaube Handeln")); - SettingsGUI.setItem(2, addGUIItem(Material.BONE, "§6Tod bei Fallschaden", "§cSpieler stirbt bei Fallschaden")); - SettingsGUI.setItem(3, addGUIItem(Material.MAGMA_BLOCK, "§6Schaden bei Schleichen","§cSpieler erhält §6" + getConfig().getInt("sneakdmg") + " §cSchaden bei Schleichen")); - SettingsGUI.setItem(4, addGUIItem(Material.DIAMOND_PICKAXE, "§6Drops", "§cRandom Drops")); - SettingsGUI.setItem(5, addGUIItem(Material.GLISTERING_MELON_SLICE, "§6Geteilter Schaden","§cAlle Spieler erhalten den gleichen Schaden")); - SettingsGUI.setItem(6, addGUIItem(Material.TOTEM_OF_UNDYING, "§6Respawn")); - SettingsGUI.setItem(7, addGUIItem(Material.POPPY, "§6Ein Leben für alle", "§cStirbt ein Spieler ist die","§cChallenge fehlgeschlagen")); - SettingsGUI.setItem(8, addGUIItem(Material.BOOK, "§6Schaden in Chat", "§cZeigt Spielerschaden im Chat an")); - SettingsGUI.setItem(18, addGUIItem(Material.DIAMOND_BOOTS, "§6Tod bei Sprinten", "§cSpieler Stirbt beim Sprinten")); - SettingsGUI.setItem(19, addGUIItem(Material.LEATHER_BOOTS, "§6Tod bei Springen", "§cSpieler Stirbt beim Springen")); - SettingsGUI.setItem(20, addGUIItem(Material.BARRIER, "§6Inv Löschen bei DMG","§cLöscht das Inventar von allen wenn ein Spieler schaden bekommt!")); - - SettingsGUI.setItem(26, addGUIItem(Material.TNT, "§6Sterben durch TnT","§cTötet dich mit tnt bei der nicht Springen Schleichen und Jumpen Challenge")); - - SettingsGUI.setItem(36, addGUIItem(Material.CHEST, "§6KeepInventory", "§cStirbst du, beh§lst du dein Inventar")); - SettingsGUI.setItem(44, addGUIItem(Material.GOLDEN_APPLE, "§6Natürliche Regeneration", "§cSchalte natürliche Regeneration um")); - - SettingsGUI.setItem(9, addGUIItem(getDye("craftingtable"), getBool("craftingtable"))); - SettingsGUI.setItem(10, addGUIItem(getDye("allowtrading"), getBool("allowtrading"))); - SettingsGUI.setItem(11, addGUIItem(getDye("deathonfall"), getBool("deathonfall"))); - SettingsGUI.setItem(12, addGUIItem(getDye("damageonsneak"), getBool("damageonsneak"))); - SettingsGUI.setItem(13, addGUIItem(getDye("rnddrops"), getBool("rnddrops"))); - SettingsGUI.setItem(14, addGUIItem(getDye("sharedmg"), getBool("sharedmg"))); - SettingsGUI.setItem(15, addGUIItem(getDye("respawn"), getBool("respawn"))); - SettingsGUI.setItem(16, addGUIItem(getDye("onelife"), getBool("onelife"))); - SettingsGUI.setItem(17, addGUIItem(getDye("dmginchat"), getBool("dmginchat"))); - SettingsGUI.setItem(27, addGUIItem(getDye("deathonsprint"), getBool("deathonsprint"))); - SettingsGUI.setItem(28, addGUIItem(getDye("deathonjump"), getBool("deathonjump"))); - SettingsGUI.setItem(29, addGUIItem(getDye("clinvdmg"), getBool("clinvdmg"))); - - SettingsGUI.setItem(35, addGUIItem(getDye("tntdeath"), getBool("tntdeath"))); - - SettingsGUI.setItem(37, addGUIItem(getgrDye("keepInventory"), getgrBool("keepInventory"))); - SettingsGUI.setItem(43, addGUIItem(getgrDye("naturalRegeneration"), getgrBool("naturalRegeneration"))); - - - - for (int i = 0; i < 45; i++) { - if (SettingsGUI.getItem(i) == null) - SettingsGUI.setItem(i, addGUIItem(Material.GRAY_STAINED_GLASS_PANE, "")); - } - p.openInventory(SettingsGUI); - } - - private Material getDye(String cnfpath) { - ItemStack mat = new ItemStack(Material.GRAY_DYE); - if (getConfig().getBoolean(cnfpath) == true) { - mat.setType(Material.LIME_DYE); - } else { - mat.setType(Material.RED_DYE); - } - return mat.getType(); - } - - private String getBool(String cnfpath) { - if (getConfig().getBoolean(cnfpath) == true) - return "§aTrue"; - return "§cFalse"; - } - - - - @SuppressWarnings("deprecation") - private Material getgrDye(String gr) { - ItemStack mat = new ItemStack(Material.GRAY_DYE); - World wld = Bukkit.getWorlds().get(0); - if (wld.getGameRuleValue(gr).equals("true")) { - mat.setType(Material.LIME_DYE); - } else if (wld.getGameRuleValue(gr).equals("false")) { - mat.setType(Material.RED_DYE); - } - return mat.getType(); - } - - - - @SuppressWarnings("deprecation") -private String getgrBool(String gr) { - World wld = Bukkit.getWorlds().get(0); - if (wld.getGameRuleValue(gr).equals("true")) - return "§aTrue"; - if (wld.getGameRuleValue(gr).equals("false")) - return "§cFalse"; - return "§7Unknown"; - } - - - - private ItemStack addGUIItem(Material mat, String name, String... lore) { - ItemStack item = new ItemStack(mat, 1); - ItemMeta meta = item.getItemMeta(); - meta.setDisplayName(name); - ArrayList metalore = new ArrayList<>(); - if (lore != null) - for (String lorecomments : lore) - metalore.add(lorecomments); - meta.setLore(metalore); - item.setItemMeta(meta); - return item; - } - - public SBManager getSBManager() { - return this.sbManager; - } -} diff --git a/src/main/java/net/brennholz/challenges/RandomDrops.java b/src/main/java/net/brennholz/challenges/RandomDrops.java deleted file mode 100644 index e45f406..0000000 --- a/src/main/java/net/brennholz/challenges/RandomDrops.java +++ /dev/null @@ -1,59 +0,0 @@ -package net.brennholz.challenges; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.Random; -import java.util.stream.Collectors; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.configuration.file.FileConfiguration; - -public class RandomDrops { - private final ArrayList BLOCKS; - - private final ArrayList ITEM_DROPS; - - private HashMap drops = new HashMap<>(); - - public RandomDrops() { - this.BLOCKS = (ArrayList)Arrays.stream(Material.values()).filter(mat -> mat.isBlock()).collect(Collectors.toList()); - this.ITEM_DROPS = (ArrayList)Arrays.stream(Material.values()).filter(mat -> (mat.isItem() || mat == Material.BEDROCK)).collect(Collectors.toList()); - } - - public void shuffleItems() { - Collections.shuffle(this.ITEM_DROPS); - ArrayList itemDropsCopy = new ArrayList<>(); - this.ITEM_DROPS.forEach(m -> itemDropsCopy.add(m)); - this.BLOCKS.forEach(mat -> { - int r = (new Random()).nextInt(itemDropsCopy.size() - 1); - this.drops.put(mat, itemDropsCopy.get(r)); - itemDropsCopy.remove(r); - }); - saveItems(); - } - - public void saveItems() { - FileConfiguration config = Challenges.getplugin().getRndDropsConfig(); - config.set("drops", this.drops.entrySet().stream().map(entry -> (new StringBuilder()).append(entry.getKey()).append(":").append(entry.getValue()).toString()).collect(Collectors.toList())); - } - - public void loadItems() { - this.drops.clear(); - FileConfiguration config = Challenges.getplugin().getRndDropsConfig(); - if (config.isList("drops")) { - config.getStringList("drops").forEach(str -> { - String[] materialSplitted = str.split(":"); - this.drops.put(Material.getMaterial(materialSplitted[0]), Material.getMaterial(materialSplitted[1])); - }); - } else { - shuffleItems(); - } - } - - public Material getMaterialFromBlock(Block block) { - return this.drops.get(block.getType()); - } -} - diff --git a/src/main/java/net/brennholz/challenges/SBManager.java b/src/main/java/net/brennholz/challenges/SBManager.java deleted file mode 100644 index 923f327..0000000 --- a/src/main/java/net/brennholz/challenges/SBManager.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.brennholz.challenges; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import org.bukkit.scoreboard.DisplaySlot; -import org.bukkit.scoreboard.Objective; -import org.bukkit.scoreboard.RenderType; -import org.bukkit.scoreboard.Scoreboard; -import org.bukkit.scoreboard.ScoreboardManager; - -public class SBManager { - public void createScoreboard(Player p) { - ScoreboardManager manager = Bukkit.getScoreboardManager(); - Scoreboard sb = manager.getNewScoreboard(); - @SuppressWarnings("deprecation") - Objective TabHP = sb.registerNewObjective("§6Challenges", "health"); - TabHP.setDisplaySlot(DisplaySlot.PLAYER_LIST); - TabHP.setDisplayName("§cHP"); - TabHP.setRenderType(RenderType.HEARTS); - p.setScoreboard(sb); - } -} diff --git a/src/main/java/net/brennholz/commands/Challenges_Command.java b/src/main/java/net/brennholz/commands/Challenges_Command.java deleted file mode 100644 index 9b3f5a8..0000000 --- a/src/main/java/net/brennholz/commands/Challenges_Command.java +++ /dev/null @@ -1,27 +0,0 @@ -package net.brennholz.commands; - - - -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; - -public class Challenges_Command implements CommandExecutor { - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String lable, String[] args) { - if (sender.hasPermission("challenges.challenges")) { - sender.sendMessage("§6Challenges Ver 1.9 by Brennholz3000"); - sender.sendMessage("§6Verfügbare Befehle:"); - sender.sendMessage("§c/HP §4- §6Verwalte die HP einzelner Spieler"); - sender.sendMessage("§c/Coords §4- §6Teile oder speichere Coordinaten"); - sender.sendMessage("§c/Settings §4- §6Verwalte die Challenges Einstellungen"); - sender.sendMessage("§c/Timer §4- §6Verwalte den Timer"); - sender.sendMessage("§c/Revive §4- §6Wiederbelebe Spieler"); - sender.sendMessage("§c/Backpack §6| §c/bp §4- §6öffne das Backpack"); - sender.sendMessage("§c/Reset §4- §6Generiert eine neue Welt, setzt den Timer zurück und löscht gespeicherte Positionen"); - } else - sender.sendMessage("§cDu hast hierfür keine Berechtigung"); - return true; - } -} diff --git a/src/main/java/net/brennholz/commands/Coords_Command.java b/src/main/java/net/brennholz/commands/Coords_Command.java deleted file mode 100644 index 0d216f0..0000000 --- a/src/main/java/net/brennholz/commands/Coords_Command.java +++ /dev/null @@ -1,159 +0,0 @@ -package net.brennholz.commands; - - - -import java.util.ArrayList; - -import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -import net.brennholz.challenges.Challenges; - -public class Coords_Command implements CommandExecutor { - - private Challenges chl = Challenges.getplugin(); - - public static Inventory CoordsGUI = Bukkit.createInventory(null, 45, "§6Koordinaten"); - public static Inventory CoordsDeleteGUI = Bukkit.createInventory(null, 9, "§6Entferne Koordinate"); - - public static String CGUIN = "§6Koordinaten"; - public static String CDGUIN = "§6Entferne Koordinate"; - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String lable, String[] args) { - if (sender instanceof Player) { - Player p = (Player) sender; - if (args.length == 0) { - if (p.hasPermission("challenges.coords.view")) { - createMainGUI(p); - } else - p.sendMessage("§cDu hast hierfür keine Berechtigung"); - } else if (args.length == 1) { - if (args[0].equalsIgnoreCase("share")) { - if (p.hasPermission("challenges.coords.share")) { - chl.getServer().broadcastMessage("§c" + p.getName() + " §6ist bei §c" + p.getLocation().getBlockX() + " " + p.getLocation().getBlockY() + " " + p.getLocation().getBlockZ() + " §6in Welt §6" + p.getWorld().getName()); - } else - p.sendMessage("§cDu hast hierfür keine Berechtigung"); - } else if (args[0].equalsIgnoreCase("get")) { - if (p.hasPermission("challenges.coords.get")) { - p.sendMessage("§6Verfügbare Positionen:"); - for (String key : chl.getConfig().getConfigurationSection("Saved_Locations").getKeys(false)) { - p.sendMessage("§c" + key); - } - } else - p.sendMessage("§cDu hast hierfür keine Berechtigung"); - } else - p.sendMessage("§cBenutze: /coords share/save/get/delete [Name]"); - } else if (args.length >= 2) { - if (args[0].equalsIgnoreCase("save")) { - if (p.hasPermission("challenges.coords.save")) { - if (!chl.getConfig().contains("Saved_Locations." + args[1])) { - chl.getServer().broadcastMessage("§7| §aPosition §8>> §2" + p.getName() + " §7- " + args[1] + " §7[§2" + p.getLocation().getBlockX() + "§7/§2" + p.getLocation().getBlockY() + "§7/§2" + p.getLocation().getBlockZ() + "§7]"); - chl.getConfig().set("Saved_Locations." + args[1] + ".World", p.getWorld().getName()); - chl.getConfig().set("Saved_Locations." + args[1] + ".BlockX", p.getLocation().getBlockX()); - chl.getConfig().set("Saved_Locations." + args[1] + ".BlockY", p.getLocation().getBlockY()); - chl.getConfig().set("Saved_Locations." + args[1] + ".BlockZ", p.getLocation().getBlockZ()); - chl.saveConfig(); - } else - p.sendMessage("§cDiese Position existiert bereits! Benutze einen anderen Namen oder lösche die alte zuerst mit /coords delete " + args[1]); - } else - p.sendMessage("§cDu hast hierfür keine Berechtigung"); - } else if (args[0].equalsIgnoreCase("get")) { - if (p.hasPermission("challenges.coords.get")) { - if (chl.getConfig().contains("Saved_Locations." + args[1])) { - String w = chl.getConfig().getString("Saved_Locations." + args[1] + ".World"); - String x = chl.getConfig().getString("Saved_Locations." + args[1] + ".BlockX"); - String y = chl.getConfig().getString("Saved_Locations." + args[1] + ".BlockY"); - String z = chl.getConfig().getString("Saved_Locations." + args[1] + ".BlockZ"); - p.sendMessage("§7| §aPosition §8>> §2" + p.getName() + " §7- " + args[1] + " §7[§2" + x + "§7/§2" + y + "§7/§2" + z + " " + w + "§7]"); - } else - p.sendMessage("§cDiese Position existiert nicht!"); - } else - p.sendMessage("§cDu hast hierfür keine Berechtigung"); - } else if (args[0].equalsIgnoreCase("delete")) { - if (p.hasPermission("challenges.coords.delete")) { - if (chl.getConfig().contains("Saved_Locations." + args[1])) { - createDeleteGUI(p, args[1]); - p.openInventory(CoordsDeleteGUI); - } else - p.sendMessage("§cDiese Position existiert nicht!"); - } else - p.sendMessage("§cDu hast hierfür keine Berechtigung"); - } else - p.sendMessage("§cBenutze: /coords share/save/get/delete [Name]"); - } - } else - sender.sendMessage("§cKein Konsolenbefehl!"); - return true; - } - - public void createMainGUI(Player p) { - int i = 0; - String w; - String x; - String y; - String z; - for (String key : chl.getConfig().getConfigurationSection("Saved_Locations").getKeys(false)) { - if (i >= 45) { - break; - } - w = chl.getConfig().getString("Saved_Locations." + key + ".World"); - x = chl.getConfig().getString("Saved_Locations." + key + ".BlockX"); - y = chl.getConfig().getString("Saved_Locations." + key + ".BlockY"); - z = chl.getConfig().getString("Saved_Locations." + key + ".BlockZ"); - CoordsGUI.setItem(i, addGUIItem(getBlock(w), key, "§bX: §c" + x, "§bY: §c" + y, "§bZ: §c" + z)); - i++; - } - for (int ii = i; ii < 45; ii++) { - CoordsGUI.setItem(ii, addGUIItem(Material.AIR, "")); - } - p.openInventory(CoordsGUI); - } - - public void createDeleteGUI(Player p, String dname) { - CoordsDeleteGUI.setItem(0, addGUIItem(Material.LIME_TERRACOTTA, "§aLöschen bestätigen", "§bWegpunkt: §c" + dname)); - CoordsDeleteGUI.setItem(4, addGUIItem(Material.ORANGE_BANNER, dname)); - for (int i = 1; i < 8; i++) { - if (CoordsDeleteGUI.getItem(i) == null) { - CoordsDeleteGUI.setItem(i, addGUIItem(Material.ORANGE_STAINED_GLASS_PANE, "")); - } - } - CoordsDeleteGUI.setItem(8, addGUIItem(Material.RED_TERRACOTTA, "§cLöschen abbrechen", "§bWegpunkt: §c" + dname)); - p.openInventory(CoordsDeleteGUI); - } - - private ItemStack addGUIItem(Material mat, String name, String... lore) { - ItemStack item = new ItemStack(mat, 1); - ItemMeta meta = item.getItemMeta(); - if (mat != Material.AIR) { - meta.setDisplayName(name); - ArrayList metalore = new ArrayList(); - if (lore != null) { - for (String lorecomments : lore) { - metalore.add(lorecomments); - } - } - meta.setLore(metalore); - item.setItemMeta(meta); - } - return item; - } - - private Material getBlock(String wname) { - ItemStack mat = new ItemStack(Material.GRASS_BLOCK); - if (wname.equals(Bukkit.getWorlds().get(1).getName())) { - mat.setType(Material.NETHERRACK); - } else if (wname.equals(Bukkit.getWorlds().get(2).getName())) { - mat.setType(Material.END_STONE); - } - return mat.getType(); - } - -} \ No newline at end of file diff --git a/src/main/java/net/brennholz/commands/HP_Command.java b/src/main/java/net/brennholz/commands/HP_Command.java deleted file mode 100644 index 8fde042..0000000 --- a/src/main/java/net/brennholz/commands/HP_Command.java +++ /dev/null @@ -1,97 +0,0 @@ -package net.brennholz.commands; - - - -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class HP_Command implements CommandExecutor { - - @SuppressWarnings("deprecation") - @Override - public boolean onCommand(CommandSender sender, Command cmd, String lable, String[] args) { - if (sender.hasPermission("challenges.hp.modify")) { - if (args.length >= 2) { - if (args[0].equalsIgnoreCase("max")) { - if (Double.parseDouble(args[1]) > 0) { - for (Player pp : Bukkit.getOnlinePlayers()) { - pp.setMaxHealth(Double.parseDouble(args[1])); - pp.setHealth(pp.getMaxHealth()); - } - sender.sendMessage("§6Du hast die maximalen HP auf §c" + args[1] + " §6gesetzt!"); - } - } else if (args[0].equalsIgnoreCase("get")) { - OfflinePlayer other = (Bukkit.getServer().getOfflinePlayer(args[1])); - if (other.isOnline()) { - Player p = (Player) other; - sender.sendMessage("§6" + p.getName() + " §ebesitzt derzeit §6" + p.getHealth() + "HP§e!"); - } else - sender.sendMessage("§cDieser Spieler ist nicht online!"); - } else if (args.length >= 3) { - OfflinePlayer other = (Bukkit.getServer().getOfflinePlayer(args[1])); - if (other.isOnline()) { - Player p = (Player) other; - double finaladdhp = p.getHealth() + Double.parseDouble(args[2]); - double finalremhp = p.getHealth() - Double.parseDouble(args[2]); - if (args[0].equalsIgnoreCase("add")) { - if (!(finaladdhp > p.getMaxHealth()) && !(finaladdhp < 0)) { - p.setHealth(finaladdhp); - p.sendMessage("§aDu wurdest von §b" + sender.getName() + " §aum §c" + args[2] - + "HP §ageheilt!"); - sender.sendMessage( - "§aDu hast §b" + p.getName() + " §aum §c" + args[2] + "HP §ageheilt!"); - } else - sender.sendMessage("§cUnm§gliche Operation"); - } - if (args[0].equalsIgnoreCase("remove")) { - if (!(finalremhp > p.getMaxHealth()) && !(finalremhp < 0)) { - p.setHealth(finalremhp); - p.sendMessage("§4" + sender.getName() + " §chat dir §4" + args[2] + "HP §centfernt!"); - sender.sendMessage("§cDu hast §4" + p.getName() + " " + args[2] + "HP §centfernt!"); - } else - sender.sendMessage("§cUnmögliche Operation!"); - } - if (args[0].equalsIgnoreCase("set")) { - if (!(Double.parseDouble(args[2]) > p.getMaxHealth()) - && !(Double.parseDouble(args[2]) < 0)) { - p.setHealth(Double.parseDouble(args[2])); - p.sendMessage( - "§6" + sender.getName() + " §ehat deine HP auf §6" + args[2] + " §egesetzt!"); - sender.sendMessage("§eDu hast die HP von §6" + p.getName() + " §eauf §6" + args[2] - + " §egesetzt!"); - } else - sender.sendMessage("§cUnmögliche Operation"); - } - } else - sender.sendMessage("§cDieser Spieler ist nicht online!"); - } else { - sender.sendMessage("§c~~~~~ §6HP command §c~~~~~"); - sender.sendMessage("§c/HP Get §4- §6Erhalte die aktuelen HP eines Spielers"); - sender.sendMessage( - "§c/HP Add §4- §6Füge einem Spieler die angegebene Zahl an Herzen hinzu"); - sender.sendMessage( - "§c/HP Remove §4- §6Entferne einem Spieler die angegebene Zahl an Herzen"); - sender.sendMessage( - "§c/HP Set §4- §6Setze die Herzen eines Spieler auf die angegebene Zahl"); - sender.sendMessage("§c/HP Max §4- §6Setze die maximalen HP aller Spieler"); - } - } else { - sender.sendMessage("§c~~~~~ §6HP command §c~~~~~"); - sender.sendMessage("§c/HP Get §4- §6Erhalte die aktuelen HP eines Spielers"); - sender.sendMessage( - "§c/HP Add §4- §6Füge einem Spieler die angegebene Zahl an Herzen hinzu"); - sender.sendMessage( - "§c/HP Remove §4- §6Entferne einem Spieler die angegebene Zahl an Herzen"); - sender.sendMessage( - "§c/HP Set §4- §6Setze die Herzen eines Spieler auf die angegebene Zahl"); - sender.sendMessage("§c/HP Max §4- §6Setze die maximalen HP aller Spieler"); - } - } else - sender.sendMessage("§cDu hast hierfür keine Berechtigung"); - return true; - } -} diff --git a/src/main/java/net/brennholz/commands/Reset_Command.java b/src/main/java/net/brennholz/commands/Reset_Command.java deleted file mode 100644 index 85a008c..0000000 --- a/src/main/java/net/brennholz/commands/Reset_Command.java +++ /dev/null @@ -1,54 +0,0 @@ -package net.brennholz.commands; - - - -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.entity.Player; - -import net.brennholz.challenges.Backpack; -import net.brennholz.challenges.Challenges; - -public class Reset_Command implements CommandExecutor { - - private Challenges chl = Challenges.getplugin(); - Backpack backpack; - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - { - - } - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "lb clearlog all world world"); - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "lb clearlog all world world_nether"); - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "lb clearlog all world world_the_end"); - - chl.getConfig().set("World_Name", Bukkit.getWorlds().get(0).getName()); - chl.getConfig().set("World_Reset", true); - chl.getConfig().set("timer.enabled", false); - chl.getConfig().set("timer.time", 0); - chl.getConfig().set("timer.sek", "00"); - chl.getConfig().set("timer.min", "00"); - chl.getConfig().set("timer.hrs", 0); - for (String key : chl.getConfig().getConfigurationSection("Saved_Locations").getKeys(false)) { - chl.getConfig().set("Saved_Locations." + key, null); - } - chl.saveConfig(); - - Bukkit.getScheduler().scheduleSyncDelayedTask(chl, new Runnable() { - @Override - public void run() { - for (Player p : Bukkit.getOnlinePlayers()) { - p.sendTitle("§aWelt wird zurückgesetzt!", "§cBitte warte einen Moment§a.§b.§e.", 10, 400, 10); - p.kickPlayer("§cWelt wird zurückgesetzt!\n§cBitte warte einen Moment..."); - } - ConsoleCommandSender console = Bukkit.getServer().getConsoleSender(); - Bukkit.dispatchCommand(console, "restart"); - } - }, 60); - return true; - } -} diff --git a/src/main/java/net/brennholz/commands/Revive_Command.java b/src/main/java/net/brennholz/commands/Revive_Command.java deleted file mode 100644 index d47fc30..0000000 --- a/src/main/java/net/brennholz/commands/Revive_Command.java +++ /dev/null @@ -1,75 +0,0 @@ -package net.brennholz.commands; - - - -import org.bukkit.Bukkit; -import org.bukkit.GameMode; -import org.bukkit.Location; -import org.bukkit.OfflinePlayer; -import org.bukkit.World; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import net.brennholz.challenges.Challenges; - -public class Revive_Command implements CommandExecutor { - - private Challenges chl = Challenges.getplugin(); - - @SuppressWarnings("deprecation") - @Override - public boolean onCommand(CommandSender sender, Command cmd, String lable, String[] args) { - if (sender.hasPermission("challenges.revive")) { - if (args.length == 1) { - if (args[0].equalsIgnoreCase("all")) { - for (Player p : Bukkit.getOnlinePlayers()) { - p.setHealth(p.getMaxHealth()); - p.setGameMode(GameMode.SURVIVAL); - } - chl.getServer().broadcastMessage("§bAlle Spieler wurden wiederbelebt! §aEs kann weiter gehen!"); - } else { - OfflinePlayer other = (Bukkit.getServer().getOfflinePlayer(args[0])); - if (other.isOnline()) { - Player p = (Player) other; - p.setHealth(p.getMaxHealth()); - p.setGameMode(GameMode.SURVIVAL); - chl.getServer().broadcastMessage( - "§b" + p.getName() + " §awurde von §b" + sender.getName() + " §awiederbelebt!"); - } else - sender.sendMessage("§cDieser Spieler ist nicht online!"); - } - } else if (args.length >= 4) { - World w = Bukkit.getWorld(args[1]); - double x = Double.parseDouble(args[2]); - double y = Double.parseDouble(args[3]); - double z = Double.parseDouble(args[4]); - Location loc = new Location(w, x, y, z); - if (args[0].equalsIgnoreCase("all")) { - for (Player p : Bukkit.getOnlinePlayers()) { - p.teleport(loc); - p.setHealth(p.getMaxHealth()); - p.setGameMode(GameMode.SURVIVAL); - } - chl.getServer().broadcastMessage("§bAlle Spieler wurden bei §c" + w.getName() + " " + x + " " + y - + " " + z + " §bwiederbelebt! §aEs kann weiter gehen!"); - } else { - OfflinePlayer other = (Bukkit.getServer().getOfflinePlayer(args[0])); - if (other.isOnline()) { - Player p = (Player) other; - p.teleport(loc); - p.setHealth(p.getMaxHealth()); - p.setGameMode(GameMode.SURVIVAL); - chl.getServer().broadcastMessage("§b" + p.getName() + " §awurde von §b" + sender.getName() - + " §abei §c" + w.getName() + " " + x + " " + y + " " + z + " §awiederbelebt!"); - } else - sender.sendMessage("§cDieser Spieler ist nicht online!"); - } - } else - sender.sendMessage("§cBenutze: /revive [world] [x] [y] [z]"); - } else - sender.sendMessage("§cDu hast hierfür keine Berechtigung"); - return true; - } -} diff --git a/src/main/java/net/brennholz/commands/Settings_Command.java b/src/main/java/net/brennholz/commands/Settings_Command.java deleted file mode 100644 index c4d308c..0000000 --- a/src/main/java/net/brennholz/commands/Settings_Command.java +++ /dev/null @@ -1,103 +0,0 @@ -package net.brennholz.commands; - -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import net.brennholz.challenges.Challenges; - -public class Settings_Command implements CommandExecutor { - - private Challenges chl = Challenges.getplugin(); - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - if (sender instanceof Player) { - Player p = (Player) sender; - if (args.length == 0) { - if (p.hasPermission("challenges.settings.view")) { - chl.createGUI(p); - } else { - p.sendMessage("hast hierfkeine Berechtigung"); - } - } else if (args.length == 1) { - if (args[0].equalsIgnoreCase("get")) { - if (p.hasPermission("challenges.settings.get")) { - p.sendMessage("Einstellungen"); - p.sendMessage("Crafting =" + chl.getConfig().getBoolean("craftingtable")); - p.sendMessage("Handeln =" + chl.getConfig().getBoolean("allowtrading")); - p.sendMessage("bei Fallschaden =" + chl.getConfig().getBoolean("deathonfall")); - p.sendMessage("bei Schleichen =" + chl.getConfig().getBoolean("damageonsneak")); - p.sendMessage("Schaden bei Schleichen =" + chl.getConfig().getInt("sneakdmg")); - p.sendMessage("Drops =" + chl.getConfig().getBoolean("rnddrops")); - p.sendMessage("Schaden =" + chl.getConfig().getBoolean("sharedmg")); - p.sendMessage("Leben falle =" + chl.getConfig().getBoolean("onelife")); - p.sendMessage("in Chat =" + chl.getConfig().getBoolean("dmginchat")); - p.sendMessage("=" + chl.getConfig().getBoolean("respawn")); - } else { - p.sendMessage("hast hierfkeine Berechtigung"); - } - } else { - p.sendMessage("/settings Get/Crafting/Trading/DeathFall/DMGOnSneak/SneakDMG/RndDrops/ShareDMG/Respawn/OneLife/ChatDMG [True/False]"); - } - } else if (args.length >= 2) { - if (p.hasPermission("challenges.settings.modify")) { - Boolean Bwert = Boolean.valueOf(Boolean.parseBoolean(args[1])); - if (args[0].equalsIgnoreCase("crafting")) { - chl.getConfig().set("craftingtable", Bwert); - chl.saveConfig(); - p.sendMessage("Crafting =" + chl.getConfig().getBoolean("craftingtable")); - } else if (args[0].equalsIgnoreCase("deathfall")) { - chl.getConfig().set("deathonfall", Bwert); - chl.saveConfig(); - p.sendMessage("bei Fallschaden =" + chl.getConfig().getBoolean("deathonfall")); - } else if (args[0].equalsIgnoreCase("trading")) { - chl.getConfig().set("allowtrading", Bwert); - chl.saveConfig(); - p.sendMessage("Handeln =" + chl.getConfig().getBoolean("allowtrading")); - } else if (args[0].equalsIgnoreCase("dmgonsneak")) { - chl.getConfig().set("damageonsneak", Bwert); - chl.saveConfig(); - p.sendMessage("bei Schleichen =" + chl.getConfig().getBoolean("damageonsneak")); - } else if (args[0].equalsIgnoreCase("sneakdmg")) { - Double Dwert = Double.valueOf(Double.parseDouble(args[1])); - chl.getConfig().set("sneakdmg", Dwert); - chl.saveConfig(); - p.sendMessage("Schaden bei Schleichen =" + chl.getConfig().getString("sneakdmg")); - } else if (args[0].equalsIgnoreCase("rnddrops")) { - chl.getConfig().set("rnddrops", Bwert); - chl.saveConfig(); - p.sendMessage("Drops =" + chl.getConfig().getBoolean("rnddrops")); - } else if (args[0].equalsIgnoreCase("sharedmg")) { - chl.getConfig().set("sharehp", Bwert); - chl.saveConfig(); - p.sendMessage("Schaden =" + chl.getConfig().getBoolean("sharedmg")); - } else if (args[0].equalsIgnoreCase("respawn")) { - chl.getConfig().set("respawn", Bwert); - chl.saveConfig(); - p.sendMessage("=" + chl.getConfig().getBoolean("respawn")); - } else if (args[0].equalsIgnoreCase("onelife")) { - chl.getConfig().set("onelife", Bwert); - chl.saveConfig(); - p.sendMessage("Leben falle =" + chl.getConfig().getBoolean("onelife")); - } else if (args[0].equalsIgnoreCase("chatdmg")) { - chl.getConfig().set("dmginchat", Bwert); - chl.saveConfig(); - p.sendMessage("in Chat =" + chl.getConfig().getBoolean("dmginchat")); - } else { - p.sendMessage("Parameter!"); - } - } else { - p.sendMessage("hast hierfkeine Berechtigung"); - } - } else { - p.sendMessage( - "/settings Get/Crafting/Trading/DeathFall/DMGOnSneak/SneakDMG/RndDrops/ShareDMG/Respawn/OneLife/ChatDMG [True/False]"); - } - } else { - sender.sendMessage("Konsolenbefehl!"); - } - return true; - } -} diff --git a/src/main/java/net/brennholz/commands/Timer_Command.java b/src/main/java/net/brennholz/commands/Timer_Command.java deleted file mode 100644 index 870fde9..0000000 --- a/src/main/java/net/brennholz/commands/Timer_Command.java +++ /dev/null @@ -1,125 +0,0 @@ -package net.brennholz.commands; - - - -import net.brennholz.challenges.Challenges; -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class Timer_Command implements CommandExecutor { - - private Challenges chl = Challenges.getplugin(); - public boolean timer; - private int zeit = chl.getConfig().getInt("timer.time"); - private int sek; - private int min; - private int hrs; - private String ssek; - private String smin; - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String lable, String[] args) { - timer = chl.getConfig().getBoolean("timer.enabled"); - if (sender.hasPermission("challenges.timer")) { - if (args.length >= 1) { - if (args[0].equalsIgnoreCase("resume")) { - if (timer == false) { - timer = true; - chl.getServer().broadcastMessage("§aDer Timer wird fortgesetzt!"); - chl.getConfig().set("timer.enabled", timer); - chl.saveConfig(); - } else - sender.sendMessage("§cDer Timer läuft bereits!"); - } else if (args[0].equalsIgnoreCase("pause")) { - if (timer == true) { - timer = false; - chl.getServer().broadcastMessage("§6Der Timer wurde angehalten"); - chl.getConfig().set("timer.enabled", timer); - chl.saveConfig(); - } else - sender.sendMessage("§cDer Timer ist bereits pausiert!"); - } else if (args[0].equalsIgnoreCase("reset")) { - timer = false; - chl.getConfig().set("timer.enabled", timer); - chl.saveConfig(); - zeit = 0; - sek = 0; - min = 0; - hrs = 0; - RefreshConfig(); - chl.getServer().broadcastMessage("§cDer Timer wurde zurückgesetzt!"); - } else if (args.length >= 2) { - if (args[0].equalsIgnoreCase("set")) { - timer = false; - chl.getConfig().set("timer.enabled", timer); - chl.saveConfig(); - zeit = Integer.parseInt(args[1]); - RefreshConfig(); - chl.getServer().broadcastMessage( - "§bDer Timer wurde auf §a" + hrs + ":" + smin + ":" + ssek + " §bgesetzt!"); - } - } else - sender.sendMessage("§cBenutze: /timer resume/pause/reset/set [Zeit in Sekunden]"); - } else { - sender.sendMessage("§c~~~~~ §6Timer command §c~~~~~"); - sender.sendMessage("§c/timer resume §4- §6Setze den Timer fort"); - sender.sendMessage("§c/timer pause §4- §6Pausiere den Timer"); - sender.sendMessage("§c/timer reset §4- §6Setze den Timer zurück"); - sender.sendMessage("§c/timer set [Zeit in Sekunden] §4- §6Setze den Timer auf eine bestimmte Zeit"); - } - } else - sender.sendMessage("§cDu hast hierfür keine Berechtigung"); - return true; - - } - - @SuppressWarnings("deprecation") - public void Run_Timer() { - Bukkit.getScheduler().scheduleAsyncRepeatingTask(chl, new Runnable() { - @Override - public void run() { - boolean ttimer = chl.getConfig().getBoolean("timer.enabled"); - int ttime = chl.getConfig().getInt("timer.time"); - int thrs = chl.getConfig().getInt("timer.hrs"); - String tsek = chl.getConfig().getString("timer.sek"); - String tmin = chl.getConfig().getString("timer.min"); - if (ttimer) { - ttime = ttime + 1; - zeit = ttime; - RefreshConfig(); - for (Player p : chl.getServer().getOnlinePlayers()) { - p.sendActionBar("§7Challenge§8: §2§l" + thrs + ":" + tmin + ":" + tsek); - } - } else { - for (Player p : chl.getServer().getOnlinePlayers()) { - p.sendActionBar("§6Der Timer ist pausiert."); - } - } - } - }, 1 * 20L, 1 * 20L); - } - - public void RefreshConfig() { - min = zeit / 60; - hrs = min / 60; - min = min % 60; - sek = zeit % 60; - if (sek >= 10) { - ssek = Integer.toString(sek); - } else - ssek = '0' + Integer.toString(sek); - if (min >= 10) { - smin = Integer.toString(min); - } else - smin = '0' + Integer.toString(min); - chl.getConfig().set("timer.time", zeit); - chl.getConfig().set("timer.sek", ssek); - chl.getConfig().set("timer.min", smin); - chl.getConfig().set("timer.hrs", hrs); - chl.saveConfig(); - } - -} diff --git a/src/main/java/net/brennholz/events/BlockCreateListener.java b/src/main/java/net/brennholz/events/BlockCreateListener.java deleted file mode 100644 index dd4df6c..0000000 --- a/src/main/java/net/brennholz/events/BlockCreateListener.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.brennholz.events; - - - -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.event.player.PlayerBucketEmptyEvent; - -import net.brennholz.challenges.Challenges; - -public class BlockCreateListener implements Listener { - - private Challenges chl = Challenges.getplugin(); - - @EventHandler - public void onBlockPlace(BlockPlaceEvent e) { - if (this.chl.getConfig().getBoolean("timer.enabled") == false) { - e.setCancelled(true); - } - } - - @EventHandler - public void onBucketPlace(PlayerBucketEmptyEvent e) { - if (this.chl.getConfig().getBoolean("timer.enabled") == false) { - e.setCancelled(true); - } - } -} diff --git a/src/main/java/net/brennholz/events/BlockDestroyListener.java b/src/main/java/net/brennholz/events/BlockDestroyListener.java deleted file mode 100644 index 7297dbc..0000000 --- a/src/main/java/net/brennholz/events/BlockDestroyListener.java +++ /dev/null @@ -1,57 +0,0 @@ -package net.brennholz.events; - - - -import org.bukkit.Material; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockExplodeEvent; -import org.bukkit.event.entity.EntityExplodeEvent; -import org.bukkit.inventory.ItemStack; - -import net.brennholz.challenges.Challenges; - -public class BlockDestroyListener implements Listener { - - private Challenges chl = Challenges.getplugin(); - - @EventHandler - public void onBlockBreak(BlockBreakEvent e) { - if (this.chl.getConfig().getBoolean("rnddrops") == true && this.chl.getConfig().getBoolean("timer.enabled") == true) { - e.setDropItems(false); - e.getBlock().getWorld().dropItem(e.getBlock().getLocation().add(0.5D, 0.5D, 0.5D), new ItemStack(this.chl.getRandomDropsManager().getMaterialFromBlock(e.getBlock()))); - } - if (this.chl.getConfig().getBoolean("timer.enabled") == false) { - e.setCancelled(true); - } - } - - @EventHandler - public void onBlockExplode(BlockExplodeEvent e) { - if (this.chl.getConfig().getBoolean("rnddrops") == true) { - e.blockList().forEach(block -> { - if(!block.getType().isAir()){ - block.getWorld().dropItem(block.getLocation().add(0.5D, 0.5D, 0.5D),new ItemStack(this.chl.getRandomDropsManager().getMaterialFromBlock(block))); - block.setType(Material.AIR); - } - }); - e.blockList().clear(); - } - } - - @EventHandler - public void onEntityExplode(EntityExplodeEvent e) { - if (this.chl.getConfig().getBoolean("rnddrops") == true) { - e.blockList().forEach(block -> { - if(!block.getType().isAir()){ - block.getWorld().dropItem(block.getLocation().add(0.5D, 0.5D, 0.5D),new ItemStack(this.chl.getRandomDropsManager().getMaterialFromBlock(block))); - block.setType(Material.AIR); - } - }); - e.blockList().clear(); - } - } - -} - diff --git a/src/main/java/net/brennholz/events/DamageListener.java b/src/main/java/net/brennholz/events/DamageListener.java deleted file mode 100644 index e15b7b0..0000000 --- a/src/main/java/net/brennholz/events/DamageListener.java +++ /dev/null @@ -1,175 +0,0 @@ -package net.brennholz.events; - - - -import java.text.DecimalFormat; - - -import org.bukkit.Bukkit; -import org.bukkit.GameMode; -import org.bukkit.Location; -import org.bukkit.Sound; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.Player; -import org.bukkit.entity.TNTPrimed; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.EntityDamageEvent.DamageCause; -import org.bukkit.event.player.PlayerToggleSneakEvent; -import org.bukkit.event.player.PlayerToggleSprintEvent; - -import com.destroystokyo.paper.event.player.PlayerJumpEvent; - -import net.brennholz.challenges.Challenges; - -public class DamageListener implements Listener { - - private Challenges chl = Challenges.getplugin(); - - @EventHandler - public void onDamage(EntityDamageEvent e) { - if (e.getEntity() instanceof Player) { - Player p = (Player) e.getEntity(); - String dmg = new DecimalFormat("#.##").format(e.getFinalDamage()); - if (e.getFinalDamage() > 0) { - if (e.getCause() == DamageCause.FALL) { - if (chl.getConfig().getBoolean("deathonfall") == true) { - if (chl.getConfig().getBoolean("dmginchat") == true) { - Bukkit.broadcastMessage("§6" + p.getName() + " §chat §4" + p.getHealth() + " §cHP Schaden genommen durch §4" + e.getCause()); - } - Bukkit.getScheduler().scheduleSyncDelayedTask(chl, new Runnable() { - @Override - public void run() { - p.setHealth(0); - } - }, 1); - } else if (chl.getConfig().getBoolean("dmginchat") == true) { - Bukkit.broadcastMessage("§6" + p.getName() + " §chat §4" + dmg + " §cHP Schaden genommen durch §4" + e.getCause()); - } - } else if (e.getCause() == DamageCause.CUSTOM) { - if (!p.isSneaking() && (chl.getConfig().getBoolean("dmginchat") == true)) { - Bukkit.broadcastMessage("§6" + p.getName() + " §chat §4" + chl.getConfig().getDouble("sneakdmg") + " §cHP Schaden genommen durch §4SNEAKING"); - } - } else if (e.getCause() == DamageCause.ENTITY_ATTACK || e.getCause() == DamageCause.ENTITY_EXPLOSION) { - - } else if (chl.getConfig().getBoolean("dmginchat") == true) { - Bukkit.broadcastMessage("§6" + p.getName() + " §chat §4" + dmg + " §cHP Schaden genommen durch §4" + e.getCause()); - } - if (chl.getConfig().getBoolean("sharedmg") == true) { - for (Player pp : Bukkit.getOnlinePlayers()) { - if (pp != p) { - double health = pp.getHealth() - e.getFinalDamage(); - if(health < 0) { - pp.setHealth(0); - }else { - pp.setHealth(health); - pp.getWorld().playSound(pp.getLocation(), Sound.ENTITY_PLAYER_HURT, (float) 1, 1); - } - - } - } - } - } - } - } - - @EventHandler - public void onEntityDamage(EntityDamageByEntityEvent e) { - if ((e.getEntity() instanceof Player) && (e.getFinalDamage() > 0)) { - Player p = (Player) e.getEntity(); - String dmg = new DecimalFormat("#.##").format(e.getFinalDamage()); - if ((e.getCause() == DamageCause.ENTITY_ATTACK || e.getCause() == DamageCause.ENTITY_EXPLOSION) && chl.getConfig().getBoolean("dmginchat") == true) { - Bukkit.broadcastMessage("§6" + p.getName() + " §chat §4" + dmg + " §cHP Schaden genommen durch §4" + e.getDamager().getName()); - } - } - } - - @SuppressWarnings("deprecation") - @EventHandler - public void PlayerSneak(PlayerToggleSneakEvent e) { - Player p = (Player) e.getPlayer(); - if (p.getGameMode() == GameMode.SURVIVAL) { - if (!p.isSneaking()) { - if (chl.getConfig().getBoolean("damageonsneak") == true) { - if (chl.getConfig().getBoolean("tntdeath") == true) { - for (Player pp : Bukkit.getOnlinePlayers()) { - pp.sendTitle("§c" + p.getDisplayName().toString() + " §ahat gesneakt!", "§b:>"); - EntityType tnt = EntityType.PRIMED_TNT; - Location loc = pp.getLocation(); - TNTPrimed PRIME_TNT = (TNTPrimed) pp.getWorld().spawnEntity(loc, tnt); - PRIME_TNT.setCustomName("§c§lNUKE"); - PRIME_TNT.setFuseTicks(15); - PRIME_TNT.setYield(120); - PRIME_TNT.setIsIncendiary(true); - } - } else { - p.damage(chl.getConfig().getDouble("sneakdmg")); - } - } - } - } -} - - @SuppressWarnings("deprecation") - @EventHandler - public void PlayerSprint(PlayerToggleSprintEvent e) { - Player p = (Player) e.getPlayer(); - if (p.getGameMode() == GameMode.SURVIVAL) { - if (!p.isSprinting()) { - if (chl.getConfig().getBoolean("deathonsprint") == true) { - if (chl.getConfig().getBoolean("tntdeath") == true) { - for (Player pp : Bukkit.getOnlinePlayers()) { - pp.sendTitle("§c" + p.getDisplayName().toString() + " §aist gesprintet!", "§b:>"); - EntityType tnt = EntityType.PRIMED_TNT; - Location loc = pp.getLocation(); - TNTPrimed PRIME_TNT = (TNTPrimed) pp.getWorld().spawnEntity(loc, tnt); - PRIME_TNT.setCustomName("§c§lNUKE"); - PRIME_TNT.setFuseTicks(15); - PRIME_TNT.setYield(120); - PRIME_TNT.setIsIncendiary(true); - } - } else { - p.setHealth(0); - } - } - } - } - } - @SuppressWarnings("deprecation") - @EventHandler - public void PlayerJump(PlayerJumpEvent e) { - Player p = (Player) e.getPlayer(); - if (p.getGameMode() == GameMode.SURVIVAL) { - if (chl.getConfig().getBoolean("deathonjump") == true) { - if (chl.getConfig().getBoolean("tntdeath") == true) { - for (Player pp : Bukkit.getOnlinePlayers()) { - pp.sendTitle("§c" + p.getDisplayName().toString() + " §aist gesprungen!", "§b:>"); - EntityType tnt = EntityType.PRIMED_TNT; - Location loc = pp.getLocation(); - TNTPrimed PRIME_TNT = (TNTPrimed) pp.getWorld().spawnEntity(loc, tnt); - PRIME_TNT.setCustomName("§c§lNUKE"); - PRIME_TNT.setFuseTicks(15); - PRIME_TNT.setYield(120); - PRIME_TNT.setIsIncendiary(true); - } - } else { - p.setHealth(0); - } - } - } - } - @EventHandler - public void onDamageclear(EntityDamageEvent e) { - if (e.getEntity() instanceof Player) { - if (chl.getConfig().getBoolean("clinvdmg") == true) { - for (Player pp : Bukkit.getOnlinePlayers()) { - pp.getInventory().clear(); - - } - } - } - } -} - diff --git a/src/main/java/net/brennholz/events/DeathListener.java b/src/main/java/net/brennholz/events/DeathListener.java deleted file mode 100644 index 9534e79..0000000 --- a/src/main/java/net/brennholz/events/DeathListener.java +++ /dev/null @@ -1,74 +0,0 @@ -package net.brennholz.events; - - - -import org.bukkit.Bukkit; -import org.bukkit.GameMode; -import org.bukkit.entity.EnderDragon; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityDeathEvent; -import org.bukkit.event.entity.PlayerDeathEvent; -import org.bukkit.event.player.PlayerRespawnEvent; - -import net.brennholz.challenges.Challenges; - -public class DeathListener implements Listener { - - private Challenges chl = Challenges.getplugin(); - - @EventHandler - public void onPlayerDeath(PlayerDeathEvent e) { - if (chl.getConfig().getBoolean("onelife") == true) { - chl.getConfig().set("timer.enabled", false); - chl.saveConfig(); - for (Player p : Bukkit.getOnlinePlayers()) { - p.setGameMode(GameMode.SPECTATOR); - } - chl.getServer().broadcastMessage(""); - chl.getServer().broadcastMessage(""); - e.setDeathMessage("§6" + e.getEntity().getName() + " §cist gestorben!"); - chl.getServer().broadcastMessage("§cDie Challenge wurde nach §6" + chl.getConfig().getInt("timer.hrs") + ":" + chl.getConfig().getString("timer.min") + ":" + chl.getConfig().getString("timer.sek") + " §cabgebrochen!"); - chl.getServer().broadcastMessage("§aSeed: §b" + Bukkit.getWorlds().get(0).getSeed()); - chl.getServer().broadcastMessage("§6Um alle wiederzubeleben benutze §c/revive ALL"); - } else { - e.setDeathMessage("§6" + e.getEntity().getName() + " §cist gestorben! §6(" + e.getEntity().getWorld().getName() + " " + e.getEntity().getLocation().getBlockX() + " " + e.getEntity().getLocation().getBlockY() + " " + e.getEntity().getLocation().getBlockZ() + "§c)"); - if (chl.getConfig().getBoolean("respawn") == false) { - Bukkit.getServer().broadcastMessage("§6Benutze §c/revive " + e.getEntity().getName() + " [world] [x] [y] [z] §6um ihn wiederzubeleben!"); - } - } - } - - @EventHandler - public void onPlayerRespawn(PlayerRespawnEvent e) { - if (chl.getConfig().getBoolean("respawn") == false) { - e.getPlayer().sendTitle("§cDu bist gestorben!", "§4Du bist nun Zuschauer", 10, 80, 10); - Bukkit.getScheduler().scheduleSyncDelayedTask(chl, new Runnable() { - @Override - public void run() { - e.getPlayer().setGameMode(GameMode.SPECTATOR); - } - }, 1); - } - } - - @EventHandler - public void DragonDeath(EntityDeathEvent e) { - if (e.getEntity() instanceof EnderDragon) { - chl.getConfig().set("timer.enabled", false); - chl.getServer().broadcastMessage(""); - chl.getServer().broadcastMessage(""); - chl.getServer().broadcastMessage(""); - chl.getServer().broadcastMessage(""); - chl.getServer().broadcastMessage("§8>> §aDie Challenge wurde §2§lerfolgreich §aabgeschlossen."); - chl.getServer().broadcastMessage("§8>> §7Der §2§lEnderdrache §7ist gestorben."); - chl.getServer().broadcastMessage("§8>> §7Benötigte Zeit: §2§l" + chl.getConfig().getInt("timer.hrs") + ":"+ chl.getConfig().getString("timer.min") + ":" + chl.getConfig().getString("timer.sek") + "§7!"); - chl.getServer().broadcastMessage("§8>> §7Seed: §2§l" + Bukkit.getWorlds().get(0).getSeed()); - chl.getServer().broadcastMessage(""); - chl.getServer().broadcastMessage(""); - chl.getServer().broadcastMessage(""); - chl.getServer().broadcastMessage(""); - } - } -} diff --git a/src/main/java/net/brennholz/events/InteractListener.java b/src/main/java/net/brennholz/events/InteractListener.java deleted file mode 100644 index 265bb06..0000000 --- a/src/main/java/net/brennholz/events/InteractListener.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.brennholz.events; - - - -import org.bukkit.Material; -import org.bukkit.entity.EntityType; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.block.Action; -import org.bukkit.event.player.PlayerInteractEntityEvent; -import org.bukkit.event.player.PlayerInteractEvent; - -import net.brennholz.challenges.Challenges; - -public class InteractListener implements Listener { - - private Challenges chl = Challenges.getplugin(); - - @EventHandler - public void onBlockClick(PlayerInteractEvent e) { - if (e.getAction() == Action.RIGHT_CLICK_BLOCK) { - if (e.getClickedBlock().getType() == Material.CRAFTING_TABLE) { - if (chl.getConfig().getBoolean("craftingtable") == false) { - e.setCancelled(true); - } - } - if (this.chl.getConfig().getBoolean("timer.enabled") == false) { - e.setCancelled(true); - } - } - } - - @EventHandler - public void onEntityClick(PlayerInteractEntityEvent e) { - if (e.getRightClicked().getType() == EntityType.VILLAGER) { - if (chl.getConfig().getBoolean("allowtrading") == false) { - e.setCancelled(true); - } - } - if (this.chl.getConfig().getBoolean("timer.enabled") == false) { - e.setCancelled(true); - } - } -} - diff --git a/src/main/java/net/brennholz/events/InventoryClickListener.java b/src/main/java/net/brennholz/events/InventoryClickListener.java deleted file mode 100644 index ecba344..0000000 --- a/src/main/java/net/brennholz/events/InventoryClickListener.java +++ /dev/null @@ -1,124 +0,0 @@ -package net.brennholz.events; - - -import org.bukkit.Bukkit; -import org.bukkit.World; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.InventoryClickEvent; - -import net.brennholz.challenges.Challenges; - -public class InventoryClickListener implements Listener { - - private Challenges chl = Challenges.getplugin(); - - Challenges chall; - net.brennholz.commands.Coords_Command coco; - - @SuppressWarnings({ "deprecation", "static-access" }) - @EventHandler - public void InvClick(InventoryClickEvent e) { - World wld = Bukkit.getWorlds().get(0); - World nth = Bukkit.getWorlds().get(1); - World end = Bukkit.getWorlds().get(2); - String invname = e.getView().getTitle(); - Player p = (Player) e.getWhoClicked(); - int slot = e.getRawSlot(); - if (invname.equals(chall.GUIName)) { - e.setCancelled(true); - if (p.hasPermission("challenges.settings.modify")) { - switch (slot) { - case 9: - chl.getConfig().set("craftingtable", !(chl.getConfig().getBoolean("craftingtable"))); - break; - case 10: - chl.getConfig().set("allowtrading", !(chl.getConfig().getBoolean("allowtrading"))); - break; - case 11: - chl.getConfig().set("deathonfall", !(chl.getConfig().getBoolean("deathonfall"))); - break; - case 12: - chl.getConfig().set("damageonsneak", !(chl.getConfig().getBoolean("damageonsneak"))); - break; - case 13: - chl.getConfig().set("rnddrops", !(chl.getConfig().getBoolean("rnddrops"))); - break; - case 14: - chl.getConfig().set("sharedmg", !(chl.getConfig().getBoolean("sharedmg"))); - break; - case 15: - chl.getConfig().set("respawn", !(chl.getConfig().getBoolean("respawn"))); - break; - case 16: - chl.getConfig().set("onelife", !(chl.getConfig().getBoolean("onelife"))); - break; - case 17: - chl.getConfig().set("dmginchat", !(chl.getConfig().getBoolean("dmginchat"))); - break; - case 27: - chl.getConfig().set("deathonsprint", !(chl.getConfig().getBoolean("deathonsprint"))); - break; - case 28: - chl.getConfig().set("deathonjump", !(chl.getConfig().getBoolean("deathonjump"))); - break; - case 29: - chl.getConfig().set("clinvdmg", !(chl.getConfig().getBoolean("clinvdmg"))); - break; - case 35: - chl.getConfig().set("tntdeath", !(chl.getConfig().getBoolean("tntdeath"))); - break; - case 37: - if (wld.getGameRuleValue("keepInventory").equals("true")) { - wld.setGameRuleValue("keepInventory", "false"); - nth.setGameRuleValue("keepInventory", "false"); - end.setGameRuleValue("keepInventory", "false"); - } else if (wld.getGameRuleValue("keepInventory").equals("false")) { - wld.setGameRuleValue("keepInventory", "true"); - nth.setGameRuleValue("keepInventory", "true"); - end.setGameRuleValue("keepInventory", "true"); - } - break; - case 43: - if (wld.getGameRuleValue("naturalRegeneration").equals("true")) { - wld.setGameRuleValue("naturalRegeneration", "false"); - nth.setGameRuleValue("naturalRegeneration", "false"); - end.setGameRuleValue("naturalRegeneration", "false"); - } else if (wld.getGameRuleValue("naturalRegeneration").equals("false")) { - wld.setGameRuleValue("naturalRegeneration", "true"); - nth.setGameRuleValue("naturalRegeneration", "true"); - end.setGameRuleValue("naturalRegeneration", "true"); - } - break; - default: - break; - } - chl.saveConfig(); - p.performCommand("settings"); - } - } - if (invname.equals(coco.CGUIN)) { - e.setCancelled(true); - if (slot >= 0 && slot <= 44) { - if (coco.CoordsGUI.getItem(slot) != null && p.hasPermission("challenges.coords.delete")) { - p.performCommand("coords delete " + e.getCurrentItem().getItemMeta().getDisplayName()); - } - } - } - if (invname.equals(coco.CDGUIN)) { - e.setCancelled(true); - if (slot == 0) { - String cname = coco.CoordsDeleteGUI.getItem(4).getItemMeta().getDisplayName(); - chl.getConfig().set("Saved_Locations." + cname, null); - chl.saveConfig(); - p.sendMessage("§cPosition §6" + cname + " §cwurde gelöscht!"); - p.closeInventory(); - } - if (slot == 8) { - p.performCommand("coords"); - } - } - } -} - diff --git a/src/main/java/net/brennholz/events/QuitJoinListener.java b/src/main/java/net/brennholz/events/QuitJoinListener.java deleted file mode 100644 index ae097fe..0000000 --- a/src/main/java/net/brennholz/events/QuitJoinListener.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.brennholz.events; - - - -import java.util.Random; -import net.brennholz.challenges.Challenges; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerQuitEvent; - -public class QuitJoinListener implements Listener { - - private Challenges chl = Challenges.getplugin(); - - - - @EventHandler - public void PlayerJoinEvent(PlayerJoinEvent e) { - Player p = e.getPlayer(); - e.setJoinMessage("§6" + p.getName() + " §chat den Server betreten!"); - if (chl.getConfig().getBoolean("sharedmg") == true) { - int rnd = new Random().nextInt(Bukkit.getOnlinePlayers().size()); - Player rp = (Player) Bukkit.getServer().getOnlinePlayers().toArray()[rnd]; - p.setHealth(rp.getHealth()); - } - if (this.chl.getConfig().getBoolean("tabhp") == true) { - this.chl.getSBManager().createScoreboard(p); - } - } - - @EventHandler - public void PlayerQuitEvent(PlayerQuitEvent e) { - Player p = e.getPlayer(); - e.setQuitMessage("§6" + p.getName() + " §chat den Server verlassen!"); - - if (Bukkit.getOnlinePlayers().size() == 1) { - chl.getConfig().set("timer.enabled", false); - chl.saveConfig(); - } - } -} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index d7859b4..ba20b36 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -7,20 +7,22 @@ sharedmg: false respawn: true onelife: false -dmginchat: false +dmginchat: true deathonsprint: false deathonjump: false +xpdeath: false clinvdmg: false -tabhp: true +tabhp: false tntdeath: false -#Mögliche werte: 9 18 27 36 45 54 -backpack_size: 27 -timer: +target: true +#Mögliche werte: 1-6 +backpack_size: 3 +mlg: enabled: false - time: 0 - sek: '00' - min: '00' - hrs: 0 + killall: false + maxtime: 600 +timertime: 0 Saved_Locations: {} World_Name: world -World_Reset: false \ No newline at end of file +World_Reset: false +event: false \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 5799110..d4693c9 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,87 +1,49 @@ name: Challenges -main: net.brennholz.challenges.Challenges -version: 2.0 -api-version: 1.13 +main: ${mainClass} +version: ${project.version} load: STARTUP -author: Brennholz3000 +api-version: 1.16 +author: ${project.author} +depend: [CubesideUtils] commands: hp: description: Verwalte die HP eines Spielers usage: Benutze /hp get/add/remove/set/max [Spieler] [Wert] - permission: challenges.hp coords: description: Teile oder speichere deine Position! usage: Benutze /coords share/get/save/delete [Name] - permission: challenges.coords settings: description: Verwalte die Plugineinstellungen usage: Benutze /settings Get/Crafting/Trading/DeathFall/DMGOnSneak/Respawn/OneLife/ChatDMG [True/False] - permission: challenges.settings revive: description: Wiederbelebe einen gestorbenen Spieler! usage: Benutze /revive [world] [x] [y] [z] - permission: challenges.revive timer: description: Verwalte den Timer usage: Benutze /timer resume/pause/reset/set [Zeit in Sekunden] - permission: challenges.timer challenges: description: Main Command usage: Benutze /Challenges - permission: challenges.challenges backpack: description: Oeffne ein Backpack usage: Benutze /backpack oder /bp - permission: challenges.backpack aliases: [bp] reset: description: Setzte die Welt zurueck usage: Benutze /Reset - permission: challenges.reset - -permissions: - challenges.*: - description: Voller Zugriff auf das Challenge Plugin - default: op - children: - challenges.hp: true - challenges.coords: true - challenges.settings: true - challenges.revive: true - challenges.timer: true - challenges.challenges: true - challenges.reset: true - challenges.hp: - description: Verwalte die HP eines Spielers - default: op - challenges.coords: - description: Teile oder speichere deine Position! - default: op - children: - challenges.coords.view: true - challenges.coords.share: true - challenges.coords.get: true - challenges.coords.save: true - challenges.coords.delete: true - challenges.settings: - description: Verwalte die Plugineinstellungen - default: op - children: - challenges.settings.view: true - challenges.settings.get: true - challenges.settings.modify: true - challenges.revive: - description: Wiederbelebe einen gestorbenen Spieler! - default: op - challenges.timer: - description: Verwalte den Timer - default: op - challenges.challenges: - description: Main Command - default: op - challenges.backpack: - description: Oeffne ein Backpack - default: op - challenges.reset: - description: Setze die Welt zurueck - default: op \ No newline at end of file + forcemlg: + description: Triggert einen MLG + usage: Use /forcemlg + editor: + description: Editor Befehl + usage: Use /editor + leave: + description: Spiel verlassen + usage: Use /leave + aliases: [l] + kick: + description: Spieler Kicken + usage: Use /kick + event: + description: Event + usage: Use /event \ No newline at end of file