diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java index 404f950..3b7ae1d 100644 --- a/src/main/java/de/fanta/challenges/Challenges.java +++ b/src/main/java/de/fanta/challenges/Challenges.java @@ -1,6 +1,7 @@ package de.fanta.challenges; import de.cubeside.nmsutils.NMSUtils; +import de.fanta.challenges.challenges.AllItemsChallenge; import de.fanta.challenges.challenges.MLGChallenge; import de.fanta.challenges.challenges.RandomDropsChallenge; import de.fanta.challenges.commands.CommandRegistration; @@ -20,6 +21,7 @@ import org.bukkit.Bukkit; import org.bukkit.GameRule; import org.bukkit.Material; +import org.bukkit.OfflinePlayer; import org.bukkit.World; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.FileConfiguration; @@ -52,8 +54,12 @@ public File RndDropsConfigFile; + private File AllItemsConfigFile; + public FileConfiguration RndDropsConfig; + public FileConfiguration AllItemsConfig; + private Timer timer; private VanishUtils vanish; @@ -105,6 +111,7 @@ saveDefaultConfig(); reloadConfig(); createRndDropsConfig(); + createAllItemsConfig(); createBackpackConfig(); this.backpack.loadInventoryFromConfig(); @@ -132,6 +139,7 @@ reloadConfig(); saveConfig(); this.backpack.clearConfig(); + AllItemsChallenge.clearConfig(); this.rndDrops.shuffleItems(); this.rndDrops.saveItems(); this.rndDrops.loadItems(); @@ -140,6 +148,7 @@ this.rndDrops.loadItems(); this.backpack.loadInventoryFromConfig(); timer.setTime(getConfig().getInt("timertime")); + AllItemsChallenge.loadItems(); } @@ -175,6 +184,10 @@ getConfig().set("showtimer", true); } + if (getConfig().getBoolean("allitems")) { + AllItemsChallenge.start(); + } + Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> { EventRegistration.pM.callEvent(new ServerStatusChangedEvent(true)); EventRegistration.pM.callEvent(new TimerChangedEvent(timer.isRunning())); @@ -191,16 +204,18 @@ getConfig().set("backpack_size", backpack.getSize() / 9); } else { this.backpack.clearConfig(); + AllItemsChallenge.clearConfig(); } try { this.RndDropsConfig.save(this.RndDropsConfigFile); + this.AllItemsConfig.save(this.getAllItemsConfigFile()); } catch (IOException e) { e.printStackTrace(); } getConfig().set("timertime", timer.getTime()); if (getConfig().getBoolean("event.enabled")) { GUIUtils.setConfig("event.enabled", false); - getScoreManager().saveScores(); + getScoreManager().saveScores(null); } if (texturepackid != null) { File temp = new File(texturepackid.toString()); @@ -239,6 +254,10 @@ return this.RndDropsConfig; } + public FileConfiguration getAllItemsConfig() { + return this.AllItemsConfig; + } + private void createRndDropsConfig() { this.RndDropsConfigFile = new File(getDataFolder(), "rnddrops.yml"); if (!this.RndDropsConfigFile.exists()) { @@ -253,6 +272,20 @@ } } + private void createAllItemsConfig() { + this.AllItemsConfigFile = new File(getDataFolder(), "allitems.yml"); + if (!this.getAllItemsConfigFile().exists()) { + this.getAllItemsConfigFile().getParentFile().mkdirs(); + saveResource("allitems.yml", false); + } + this.AllItemsConfig = new YamlConfiguration(); + try { + this.AllItemsConfig.load(this.getAllItemsConfigFile()); + } catch (IOException | org.bukkit.configuration.InvalidConfigurationException e) { + e.printStackTrace(); + } + } + public ScoreBoardManager getSBManager() { return this.sbManager; } @@ -376,4 +409,8 @@ public NMSUtils getNMSUtils() { return nmsUtils; } + + public File getAllItemsConfigFile() { + return AllItemsConfigFile; + } } diff --git a/src/main/java/de/fanta/challenges/Timer.java b/src/main/java/de/fanta/challenges/Timer.java index a8199c4..c258323 100644 --- a/src/main/java/de/fanta/challenges/Timer.java +++ b/src/main/java/de/fanta/challenges/Timer.java @@ -125,11 +125,19 @@ } public String formatTime(ChatColor color) { - return color + StringUtil.formatTimespan((time / 1000) * 1000, " Tag/e ", "", "", "", ":", ":", false, true); + String formattime = StringUtil.formatTimespan((time / 1000) * 1000, " Tage, ", ":", "", "", "", ":", false, true); + if (formattime.startsWith("1 Tage")) { + return color + StringUtil.formatTimespan((time / 1000) * 1000, " Tag, ", ":", "", "", "", ":", false, true); + } + return color + formattime; } public String formatTime() { - return StringUtil.formatTimespan((time / 1000) * 1000, " Tag/e ", "", "", "", ":", ":", false, true); + String formattime = StringUtil.formatTimespan((time / 1000) * 1000, "1 Tage, ", ":", "", "", "", ":", false, true); + if (formattime.startsWith("1 Tage")) { + return StringUtil.formatTimespan((time / 1000) * 1000, " Tag, ", ":", "", "", "", ":", false, true); + } + return formattime; } public void reverseTimer() { diff --git a/src/main/java/de/fanta/challenges/challenges/AllItemsChallenge.java b/src/main/java/de/fanta/challenges/challenges/AllItemsChallenge.java new file mode 100644 index 0000000..bb11c3b --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/AllItemsChallenge.java @@ -0,0 +1,122 @@ +package de.fanta.challenges.challenges; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ChatUtil; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.boss.BarColor; +import org.bukkit.boss.BarStyle; +import org.bukkit.boss.BossBar; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class AllItemsChallenge { + + public static int ItemScheduler; + public static BossBar bossBar; + public static Material item; + public static List items = new ArrayList<>(); + + public static void start() { + if (items.size() == 0) { + for (Material mat : Material.values()) { + items.add(mat.toString()); + ChatUtil.sendDebugMessage(Challenges.getPlugin().getCurrentEditor(), mat.toString()); + } + items.removeIf(str -> str.contains("WALL_") || str.contains("SPAWN_EGG") || str.equalsIgnoreCase("AIR") || str.equalsIgnoreCase("BEDROCK") || str.contains("PORTAL")); + } + if (item == null) { + Random r = new Random(); + item = Material.valueOf(items.get(r.nextInt((items.size() - 1) + 1))); + } + bossBar = Bukkit.createBossBar("", BarColor.GREEN, BarStyle.SOLID); + bossBar.setVisible(true); + for (Player pl : Bukkit.getOnlinePlayers()) { + bossBar.addPlayer(pl); + } + update(); + } + + public static void update() { + ItemScheduler = Bukkit.getScheduler().scheduleSyncRepeatingTask(Challenges.getPlugin(), () -> { + if (Challenges.getPlugin().getConfig().getBoolean("allitems") && Challenges.getPlugin().getTimer().isRunning()) { + if (items.size() != 0) { + for (Player pp : Bukkit.getOnlinePlayers()) { + bossBar.addPlayer(pp); + if (pp.getInventory().contains(item)) { + next(pp, false); + } + } + bossBar.setTitle(ChatUtil.GREEN + "Item » " + ChatUtil.BLUE + item.toString().replace("_", " ") + ChatUtil.BLUE + " (" + ChatUtil.GREEN + items.size() + ChatUtil.BLUE + ")"); + } else { + bossBar.setTitle(ChatUtil.GREEN + "Alle Items gesammelt!"); + ChatUtil.sendBrodcastMessage("Alle Items gesammelt!"); + Challenges.getPlugin().getTimer().stopTimer(); + for (Player pl : Bukkit.getOnlinePlayers()) { + pl.playSound(pl.getLocation(), Sound.UI_TOAST_CHALLENGE_COMPLETE, 0.2f, 1); + } + Bukkit.getScheduler().cancelTask(ItemScheduler); + } + } else { + bossBar.removeAll(); + } + }, 0, 10); + } + + public static void next(Player p, Boolean skipped) { + Material old = item; + items.remove(old.toString()); + if (items.size() != 0) { + Random r = new Random(); + item = Material.valueOf(items.get(r.nextInt((items.size() - 1) + 1))); + FileConfiguration config = Challenges.getPlugin().getAllItemsConfig(); + if (skipped) { + ChatUtil.sendBrodcastMessage("Item: " + ChatUtil.BLUE + old.toString().replace("_", " ") + ChatUtil.GREEN + " wurde von " + p.getName() + " übersprungen."); + config.set(old.toString(), new ItemStack(old)); + try { + config.save(Challenges.getPlugin().getAllItemsConfigFile()); + } catch (IOException e) { + e.printStackTrace(); + } + + } else { + ChatUtil.sendBrodcastMessage("Item: " + ChatUtil.BLUE + old.toString().replace("_", " ") + ChatUtil.GREEN + " wurde von " + p.getName() + " Registriert."); + } + + ChatUtil.sendBrodcastMessage("Neues Item: " + ChatUtil.BLUE + item.toString().replace("_", " ") + ChatUtil.GREEN + " (Es fehlen noch " + ChatUtil.BLUE + (items.size()) + ChatUtil.GREEN + " Items)"); + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.playSound(pp.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1, 1); + } + } + } + + public static void saveItems() { + clearConfig(); + FileConfiguration config = Challenges.getPlugin().getAllItemsConfig(); + config.set("items", items); + try { + Challenges.getPlugin().AllItemsConfig.save(Challenges.getPlugin().getAllItemsConfigFile()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void loadItems() { + items.clear(); + FileConfiguration config = Challenges.getPlugin().getAllItemsConfig(); + if (config.isList("items")) { + items.addAll(config.getStringList("items")); + } + } + + public static void clearConfig() { + Challenges.getPlugin().getAllItemsConfigFile().delete(); + } +} diff --git a/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java b/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java index 03fd77e..f6cb070 100644 --- a/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java +++ b/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java @@ -105,7 +105,6 @@ if (e.getEntity() instanceof Player p) { if (Objects.equals(plugin.getConfig().getString("event.type"), "deathrun") && plugin.getTimer().isRunning()) { Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { - ChatUtil.sendDebugMessage(p, (float) (p.getHealth() / 100f)); p.setWalkSpeed((float) (p.getHealth() / 100f)); }, 1L); } diff --git a/src/main/java/de/fanta/challenges/challenges/SammelFieberChallengeEvent.java b/src/main/java/de/fanta/challenges/challenges/SammelFieberChallengeEvent.java new file mode 100644 index 0000000..651e698 --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/SammelFieberChallengeEvent.java @@ -0,0 +1,9 @@ +package de.fanta.challenges.challenges; + +import org.bukkit.event.Listener; + +public class SammelFieberChallengeEvent implements Listener { + + public static String name = "Sammel Fieber"; + +} diff --git a/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java b/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java index 075b4ab..432258a 100644 --- a/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java +++ b/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java @@ -1,11 +1,13 @@ package de.fanta.challenges.challenges; -import com.github.yannicklamprecht.worldborder.api.BorderAPI; import com.github.yannicklamprecht.worldborder.api.WorldBorderApi; import de.fanta.challenges.Challenges; import org.bukkit.Bukkit; import org.bukkit.GameMode; +import org.bukkit.Location; import org.bukkit.Sound; +import org.bukkit.StructureType; +import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -17,6 +19,10 @@ import org.bukkit.event.player.PlayerPortalEvent; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.world.SpawnChangeEvent; +import org.bukkit.plugin.RegisteredServiceProvider; + +import java.util.Objects; +import java.util.logging.Level; public class WorldBorderLevelChallenge implements Listener { @@ -27,7 +33,11 @@ Player p = e.getPlayer(); if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) { if (plugin.getConfig().getBoolean("worldborderlevel")) { - xpSync(e.getPlayer(), false); + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + plugin.getConfig().set("worldborderlevelxp", e.getPlayer().getExp()); + plugin.saveConfig(); + xpSync(e.getPlayer(), false); + }, 1L); } } } @@ -37,7 +47,11 @@ Player p = e.getPlayer(); if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) { if (plugin.getConfig().getBoolean("worldborderlevel")) { + plugin.getConfig().set("worldborderlevellevel", e.getPlayer().getLevel()); + plugin.saveConfig(); xpSync(e.getPlayer(), true); + + if (e.getOldLevel() < e.getNewLevel()) { for (Player pp : Bukkit.getOnlinePlayers()) { pp.playSound(pp.getLocation(), Sound.UI_TOAST_CHALLENGE_COMPLETE, 0.03f, 1); @@ -58,10 +72,7 @@ @EventHandler public void onRespawn(PlayerRespawnEvent e) { if (plugin.getConfig().getBoolean("worldborderlevel")) { - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { borderSync(); - e.getPlayer().teleport(e.getPlayer().getWorld().getSpawnLocation()); - }, 10L); } } @@ -76,12 +87,13 @@ public void onJoin(PlayerJoinEvent e) { Player p = e.getPlayer(); if (plugin.getConfig().getBoolean("worldborderlevel")) { - if (p != plugin.getCurrentEditor()) { - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { - p.setLevel(plugin.getCurrentEditor().getLevel()); - p.setExp(plugin.getCurrentEditor().getExp()); - }, 10L); + if (e.getPlayer().getLevel() > 0 && plugin.getConfig().getInt("worldborderlevellevel") == 0) { + plugin.getConfig().set("worldborderlevellevel", e.getPlayer().getLevel()); + plugin.getConfig().set("worldborderlevelxp", e.getPlayer().getExp()); + plugin.saveConfig(); } + p.setLevel(plugin.getConfig().getInt("worldborderlevellevel")); + p.setExp((float) plugin.getConfig().getDouble("worldborderlevelxp")); borderSync(); } } @@ -90,14 +102,34 @@ public void onWorldChange(PlayerChangedWorldEvent e) { if (plugin.getConfig().getBoolean("worldborderlevel")) { e.getPlayer().getWorld().setSpawnLocation(Bukkit.getWorld("world").getSpawnLocation()); - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, this::borderSync, 10L); + borderSync(); } } @EventHandler public void onPortal(PlayerPortalEvent e) { - if (plugin.getConfig().getBoolean("worldborderlevel")) { - e.setTo(e.getTo().getWorld().getSpawnLocation()); + if (plugin.getConfig().getBoolean("worldborderlevel") && plugin.getTimer().isRunning()) { + World nether = Bukkit.getWorld("world_nether"); + if (nether != null) { + if (e.getTo().getWorld() == nether) { + if (!plugin.getConfig().getBoolean("worldborderlevelnether")) { + Location fortress = Objects.requireNonNull(nether.locateNearestStructure(nether.getSpawnLocation().set(e.getFrom().getX(), e.getFrom().getY(), e.getFrom().getZ()), StructureType.NETHER_FORTRESS, 10000, false)); + nether.setSpawnLocation(fortress); + plugin.getConfig().set("worldborderlevelnether", true); + plugin.saveConfig(); + } + Location spawnLocation = nether.getSpawnLocation(); + e.setTo(spawnLocation); + borderSync(); + } + } + World world = Bukkit.getWorld("world"); + if (world != null) { + if (e.getTo().getWorld() == world) { + Location spawnLocation = world.getSpawnLocation(); + e.setTo(spawnLocation); + } + } } } @@ -105,10 +137,8 @@ Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { for (Player player : Bukkit.getOnlinePlayers()) { if (player != p) { - if (p.getPlayer() != null) { - player.setLevel(p.getPlayer().getLevel()); - player.setExp(p.getPlayer().getExp()); - } + player.setLevel(plugin.getConfig().getInt("worldborderlevellevel")); + player.setExp((float) plugin.getConfig().getDouble("worldborderlevelxp")); } } if (borderupdate) { @@ -118,17 +148,20 @@ } private void borderSync() { + RegisteredServiceProvider worldBorderAPI = plugin.getServer().getServicesManager().getRegistration(WorldBorderApi.class); + int level = plugin.getConfig().getInt("worldborderlevellevel"); + if (worldBorderAPI == null) { + plugin.getLogger().log(Level.SEVERE, "WorldborderAPI null"); + return; + } Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { for (Player player : Bukkit.getOnlinePlayers()) { - int level = player.getLevel(); - WorldBorderApi worldBorderAPI = BorderAPI.getApi(); - if (level > 0) { - worldBorderAPI.setBorder(player, level, player.getWorld().getSpawnLocation()); - } else { - worldBorderAPI.setBorder(player, 1, player.getWorld().getSpawnLocation()); + if (level > 0) { + worldBorderAPI.getProvider().setBorder(player, level, player.getWorld().getSpawnLocation()); + } else { + worldBorderAPI.getProvider().setBorder(player, 1, player.getWorld().getSpawnLocation()); + } } - } - }, 1L); } } diff --git a/src/main/java/de/fanta/challenges/challenges/bringitemsChallengeEvent.java b/src/main/java/de/fanta/challenges/challenges/bringitemsChallengeEvent.java deleted file mode 100644 index 13dd424..0000000 --- a/src/main/java/de/fanta/challenges/challenges/bringitemsChallengeEvent.java +++ /dev/null @@ -1,9 +0,0 @@ -package de.fanta.challenges.challenges; - -import org.bukkit.event.Listener; - -public class bringitemsChallengeEvent implements Listener { - - public static String name = "Kommt noch"; - -} diff --git a/src/main/java/de/fanta/challenges/commands/CommandRegistration.java b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java index 76609de..c940ce5 100644 --- a/src/main/java/de/fanta/challenges/commands/CommandRegistration.java +++ b/src/main/java/de/fanta/challenges/commands/CommandRegistration.java @@ -116,5 +116,8 @@ CommandRouter reviveRouter = new CommandRouter(plugin.getCommand("revive")); reviveRouter.addCommandMapping(new ReviveCommand(plugin)); + + CommandRouter skipItemRouter = new CommandRouter(plugin.getCommand("skipitem")); + skipItemRouter.addCommandMapping(new SkipItemCommand(plugin)); } } diff --git a/src/main/java/de/fanta/challenges/commands/SkipItemCommand.java b/src/main/java/de/fanta/challenges/commands/SkipItemCommand.java new file mode 100644 index 0000000..193f18b --- /dev/null +++ b/src/main/java/de/fanta/challenges/commands/SkipItemCommand.java @@ -0,0 +1,43 @@ +package de.fanta.challenges.commands; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.challenges.AllItemsChallenge; +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 SkipItemCommand extends SubCommand { + + private final Challenges plugin; + + public SkipItemCommand(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (!(sender instanceof Player p)) { + ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); + return true; + } + if (plugin.getCurrentEditor() != null) { + if (!plugin.isEditor(p) || !p.hasPermission("Challenges.editor.override")) { + ChatUtil.sendErrorMessage(p, "Das kann nur der Editor!"); + return true; + } + } else { + ChatUtil.sendErrorMessage(p, "Aktuell gibt es keinen Editor!"); + } + + if (plugin.getConfig().getBoolean("allitems")) { + AllItemsChallenge.next(p, true); + } else { + ChatUtil.sendErrorMessage(p, "Dies geht nur wenn All Items Aktiv ist!"); + } + + return true; + } +} diff --git a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java index 517967e..bbc24e2 100644 --- a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java +++ b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java @@ -23,14 +23,14 @@ @Override public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { - if (!(sender instanceof Player)) { + if (!(sender instanceof Player p)) { ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); return true; } if (!args.hasNext()) { if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { - UUID uuid = plugin.getCurrentEditor().getUniqueId(); + UUID uuid = p.getUniqueId(); if (plugin.getConfig().getBoolean("firsttimerstart")) { ChatUtil.sendNormalMessage(sender, "Welt wird gespeichert!"); try { diff --git a/src/main/java/de/fanta/challenges/commands/event/EventSettingsCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventSettingsCommand.java index bb27523..2ca6e7f 100644 --- a/src/main/java/de/fanta/challenges/commands/event/EventSettingsCommand.java +++ b/src/main/java/de/fanta/challenges/commands/event/EventSettingsCommand.java @@ -2,7 +2,6 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.guis.eventgui.EventGui; -import de.fanta.challenges.guis.eventgui.bringitemsSettingsGui; import de.fanta.challenges.utils.ChatUtil; import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; diff --git a/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java b/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java index 4187aba..0a530ae 100644 --- a/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java +++ b/src/main/java/de/fanta/challenges/commands/reset/ResetConfirmCommand.java @@ -37,6 +37,7 @@ datapack = args.getNext(); if (datapack.equals("true")) { plugin.getConfig().set("1-18-datapack", true); + plugin.saveConfig(); ConsoleCommandSender console = Bukkit.getServer().getConsoleSender(); String consolen_command = "/datapack enable \"file/CavesAndCliffsPreview.zip\""; Bukkit.dispatchCommand(console, consolen_command); diff --git a/src/main/java/de/fanta/challenges/guis/ResetGui.java b/src/main/java/de/fanta/challenges/guis/ResetGui.java index e0f5217..2793c31 100644 --- a/src/main/java/de/fanta/challenges/guis/ResetGui.java +++ b/src/main/java/de/fanta/challenges/guis/ResetGui.java @@ -58,6 +58,7 @@ } else { plugin.getConfig().set("1-18-datapack", true); } + plugin.saveConfig(); createResetGUI(p); } } diff --git a/src/main/java/de/fanta/challenges/guis/TimerGui.java b/src/main/java/de/fanta/challenges/guis/TimerGui.java index 7f222a9..e4b4ba4 100644 --- a/src/main/java/de/fanta/challenges/guis/TimerGui.java +++ b/src/main/java/de/fanta/challenges/guis/TimerGui.java @@ -89,6 +89,7 @@ plugin.getConfig().set("showtimer", true); GUIUtils.sendTitleToAll("Timer", "Der Timer wird jetzt wieder angezeigt!", ChatUtil.GREEN); } + plugin.saveConfig(); createTimerGUI(p); } e.setCancelled(true); diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java b/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java index 06944d8..6ec4574 100644 --- a/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java +++ b/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java @@ -4,10 +4,8 @@ import de.fanta.challenges.challenges.DeathrunChallengeEvent; import de.fanta.challenges.utils.ChatUtil; 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.World; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -28,7 +26,10 @@ private static final int XP_EVENT_INDEX = 11; private static final int BUILD_EVENT_INDEX = 12; private static final int DEATHRUN_EVENT_INDEX = 13; + private static final int DEATH_COUNTER_INDEX = 14; + private static final int SAMMEL_FIEBER_INDEX = 15; private static final int BINGO_ITEMS_INDEX = 19; + private static final int SAMMEL_FIEBER_SETTINGS_INDEX = 24; private static final int CLOSE_IDEX = 26; public static void createEventGUI(Player p) { @@ -59,6 +60,18 @@ } else { EVENT_GUI.setItem(DEATHRUN_EVENT_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatUtil.RED + "Deathrun Event", ChatUtil.GREEN + "Laufe so weit wie möglich ohne zu sterben")); } + if (Objects.equals(plugin.getConfig().getString("event.type"), "deathcounter")) { + EVENT_GUI.setItem(DEATH_COUNTER_INDEX, GUIUtils.createGuiItem(Material.ANVIL, ChatUtil.GREEN + "Death Counter Event", true, ChatUtil.GREEN + "Zeigt Tode bei einem Event.", ChatUtil.GREEN + "Kann nicht mit anderen Events verbunden Werden.")); + } else { + EVENT_GUI.setItem(DEATH_COUNTER_INDEX, GUIUtils.createGuiItem(Material.ANVIL, ChatUtil.RED + "Death Counter Event", ChatUtil.GREEN + "Zeigt Tode bei einem Event.", ChatUtil.GREEN + "Kann nicht mit anderen Events verbunden Werden.")); + } + if (Objects.equals(plugin.getConfig().getString("event.type"), "sammelfieber")) { + EVENT_GUI.setItem(SAMMEL_FIEBER_INDEX, GUIUtils.createGuiItem(Material.HOPPER, ChatUtil.GREEN + "Sammel Fieber Event", true, ChatUtil.GREEN + "Sammle so viel Items wie möglich!")); + EVENT_GUI.setItem(SAMMEL_FIEBER_SETTINGS_INDEX, GUIUtils.createGuiItem(Material.NETHER_STAR, ChatUtil.GREEN + "Sammel Fieber Event Settings")); + } else { + EVENT_GUI.setItem(SAMMEL_FIEBER_INDEX, GUIUtils.createGuiItem(Material.HOPPER, ChatUtil.RED + "Sammel Fieber Event", ChatUtil.GREEN + "Sammle so viel Items wie möglich!")); + EVENT_GUI.setItem(SAMMEL_FIEBER_SETTINGS_INDEX, GUIUtils.EMPTY_ICON); + } EVENT_GUI.setItem(CLOSE_IDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Menü verlassen!")); for (int i = 0; i < INVENTORY_SIZE; i++) { if (EVENT_GUI.getItem(i) == null || EVENT_GUI.getItem(i).getType() == Material.AIR) { @@ -98,11 +111,20 @@ GUIUtils.sendTitleToAll("Event", "Laufe so weit wie möglich ohne zu sterben!", ChatUtil.GREEN); DeathrunChallengeEvent.load(); } + case DEATH_COUNTER_INDEX -> { + GUIUtils.setConfig("event.type", "deathcounter"); + GUIUtils.sendTitleToAll("Event", "Death Counter", ChatUtil.GREEN); + } + case SAMMEL_FIEBER_INDEX -> { + GUIUtils.setConfig("event.type", "sammelfieber"); + GUIUtils.sendTitleToAll("Event", "SammelFieber", ChatUtil.GREEN); + } } createEventGUI(p); switch (slot) { case BINGO_ITEMS_INDEX -> EventItemsGui.openEventGUI(p); + case SAMMEL_FIEBER_SETTINGS_INDEX -> SammelFieberSettingsGui.createSettingsGUI(p); case CLOSE_IDEX -> p.closeInventory(); } } diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/SammelFieberSettingsGui.java b/src/main/java/de/fanta/challenges/guis/eventgui/SammelFieberSettingsGui.java new file mode 100644 index 0000000..7b26bd3 --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/eventgui/SammelFieberSettingsGui.java @@ -0,0 +1,76 @@ +package de.fanta.challenges.guis.eventgui; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.utils.guiutils.GUIUtils; +import de.iani.cubesideutils.bukkit.items.CustomHeads; +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; +import org.bukkit.inventory.ItemStack; + +public class SammelFieberSettingsGui implements Listener { + + private static final Challenges plugin = Challenges.getPlugin(); + + public static final int INVENTORY_SIZE = 9; + public static final Inventory SETTINGS_GUI = Bukkit.createInventory(null, InventoryType.DROPPER, Challenges.GUIPREFIX + " >> Event Settings"); + + public static int MONEY = 100; + + private static final int ITEM_INDEX = 4; + private static final int MONEY_INDEX = 5; + private static final int ADD_MONEY_INDEX = 2; + private static final int REMOVE_MONEY_INDEX = 8; + private static final int BACK_INDEX = 6; + + public static final ItemStack ITEM = SETTINGS_GUI.getItem(ITEM_INDEX); + + public static void createSettingsGUI(Player p) { + SETTINGS_GUI.setItem(MONEY_INDEX, GUIUtils.createGuiItem(Material.GOLD_INGOT, ChatUtil.GREEN + "Money: " + MONEY)); + if (ITEM != null) { + SETTINGS_GUI.setItem(ADD_MONEY_INDEX, CustomHeads.QUARTZ_ARROW_UP.getHead()); + SETTINGS_GUI.setItem(REMOVE_MONEY_INDEX, CustomHeads.QUARTZ_ARROW_DOWN.getHead()); + SETTINGS_GUI.setItem(BACK_INDEX, CustomHeads.QUARTZ_ARROW_LEFT.getHead()); + SETTINGS_GUI.setItem(0, GUIUtils.createGuiItem(Material.EMERALD, ChatUtil.RED + "Test")); + } + 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) { + int slot = e.getRawSlot(); + Player p = (Player) e.getWhoClicked(); + if (e.getInventory() == SETTINGS_GUI) { + ChatUtil.sendDebugMessage(p, "Click"); + if (plugin.getConfig().getBoolean("event.enabled")) { + switch (slot) { + case ADD_MONEY_INDEX -> MONEY = MONEY + 10; + case REMOVE_MONEY_INDEX -> { + if (MONEY > 0) { + MONEY = MONEY - 10; + } + } + } + createSettingsGUI(p); + ChatUtil.sendDebugMessage(p, "Click2"); + if (slot == BACK_INDEX) { + EventGui.createEventGUI(p); + } + } + e.setCancelled(true); + } + } +} + + diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/bringitemsSettingsGui.java b/src/main/java/de/fanta/challenges/guis/eventgui/bringitemsSettingsGui.java deleted file mode 100644 index ed1e310..0000000 --- a/src/main/java/de/fanta/challenges/guis/eventgui/bringitemsSettingsGui.java +++ /dev/null @@ -1,71 +0,0 @@ -package de.fanta.challenges.guis.eventgui; - -import de.fanta.challenges.Challenges; -import de.fanta.challenges.utils.ChatUtil; -import de.fanta.challenges.utils.guiutils.GUIUtils; -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; -import org.bukkit.inventory.ItemStack; - -public class bringitemsSettingsGui implements Listener { - - private static final Challenges plugin = Challenges.getPlugin(); - - public static final int INVENTORY_SIZE = 9; - public static final Inventory SETTINGS_GUI = Bukkit.createInventory(null, InventoryType.DISPENSER, Challenges.GUIPREFIX + " >> Event Settings"); - - public static int MONEY = 100; - - private static final int ITEM_INDEX = 4; - private static final int MONEY_INDEX = 5; - private static final int ADD_MONEY_INDEX = 2; - private static final int REMOVE_MONEY_INDEX = 8; - private static final int BACK_INDEX = 6; - - public static final ItemStack ITEM = SETTINGS_GUI.getItem(ITEM_INDEX); - - public static void createSettingsGUI(Player p) { - SETTINGS_GUI.setItem(MONEY_INDEX, GUIUtils.createGuiItem(Material.GOLD_INGOT, ChatUtil.GREEN + "Money: " + MONEY)); - if (ITEM != null) { - SETTINGS_GUI.setItem(ITEM_INDEX, GUIUtils.createGuiItem(ITEM.getType(), "")); - } - 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) { - int slot = e.getRawSlot(); - Player p = (Player) e.getWhoClicked(); - if (e.getInventory() == SETTINGS_GUI) { - if (plugin.getConfig().getBoolean("event.enabled")) { - switch (slot) { - case ADD_MONEY_INDEX -> MONEY = MONEY + 10; - case REMOVE_MONEY_INDEX -> { - if (MONEY > 0) { - MONEY = MONEY - 10; - } - } - } - createSettingsGUI(p); - - if (slot == BACK_INDEX) { - EventGui.createEventGUI(p); - } - } - 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 index 8671cbf..f74c903 100644 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java @@ -24,6 +24,7 @@ private static final int TAB_HP_INDEX = 13; private static final int DIREKT_SMLET_INDEX = 14; private static final int FAST_FURNACE_INDEX = 15; + private static final int DISABLE_VILLAGER_TRADE_LIMITS_INDEX = 16; private static final int BACKPACK_ADD_INDEX = 1; private static final int BACKPACK_REMOVE_INDEX = 19; @@ -72,6 +73,11 @@ } else { OTHER_SETTINGS_GUI.setItem(FAST_FURNACE_INDEX, GUIUtils.createGuiItem(Material.FURNACE, ChatUtil.RED + "Schneller Ofen deaktiviert")); } + if (plugin.getConfig().getBoolean("disablevillagertradelimits")) { + OTHER_SETTINGS_GUI.setItem(DISABLE_VILLAGER_TRADE_LIMITS_INDEX, GUIUtils.createGuiItem(Material.EMERALD, ChatUtil.GREEN + "Villager Trade Limits aktiviert ", true)); + } else { + OTHER_SETTINGS_GUI.setItem(DISABLE_VILLAGER_TRADE_LIMITS_INDEX, GUIUtils.createGuiItem(Material.EMERALD, ChatUtil.RED + "Villager Trade Limits deaktiviert (Default)")); + } OTHER_SETTINGS_GUI.setItem(BACK_INDEX, GUIUtils.createGuiItem(Material.ARROW, ChatUtil.GREEN + "Zurück")); @@ -148,6 +154,15 @@ GUIUtils.setConfig("speedfurnace", true); } break; + case DISABLE_VILLAGER_TRADE_LIMITS_INDEX: + if (plugin.getConfig().getBoolean("disablevillagertradelimits")) { + GUIUtils.sendTitleToAll("Einstellungen", "Villager Trade Limits aktiviert", ChatUtil.RED); + GUIUtils.setConfig("disablevillagertradelimits", false); + } else { + GUIUtils.sendTitleToAll("Einstellungen", "Villager Trade Limits deaktiviert (Default)", ChatUtil.GREEN); + GUIUtils.setConfig("disablevillagertradelimits", true); + } + break; } createOtherSettingsGUI(p); switch (slot) { diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java index edcc0b7..495192b 100644 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java @@ -1,20 +1,19 @@ package de.fanta.challenges.guis.settingsgui; -import com.github.yannicklamprecht.worldborder.api.BorderAPI; import com.github.yannicklamprecht.worldborder.api.WorldBorderApi; import de.fanta.challenges.Challenges; +import de.fanta.challenges.challenges.AllItemsChallenge; import de.fanta.challenges.utils.ChatUtil; 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.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; +import org.bukkit.plugin.RegisteredServiceProvider; public class SettingsGui implements Listener { @@ -54,6 +53,7 @@ private static final int RANDOM_MOB_INDEX = 43; private static final int BEDROCK_WALL_INDEX = 31; private static final int WORLD_BORDER_LEVEL_INDEX = 33; + private static final int ALL_ITEMS_INDEX = 34; public static void createSettingsGUI(Player p) { if (plugin.getConfig().getBoolean("craftingtable")) { @@ -160,6 +160,11 @@ } else { SETTINGS_GUI.setItem(WORLD_BORDER_LEVEL_INDEX, GUIUtils.createGuiItem(Material.STRUCTURE_VOID, ChatUtil.RED + "World Border Level deaktiviert")); } + if (plugin.getConfig().getBoolean("allitems")) { + SETTINGS_GUI.setItem(ALL_ITEMS_INDEX, GUIUtils.createGuiItem(Material.ITEM_FRAME, ChatUtil.GREEN + "All Items aktiviert", true, ChatUtil.GREEN + "/skipitem um ein Item zu überspringen", ChatUtil.RED + "KANN AKTUELL NICHT GESPEICHERT WERDEN!")); + } else { + SETTINGS_GUI.setItem(ALL_ITEMS_INDEX, GUIUtils.createGuiItem(Material.ITEM_FRAME, ChatUtil.RED + "All Items deaktiviert", ChatUtil.GREEN + "/skipitem um ein Item zu überspringen", ChatUtil.RED + "KANN AKTUELL NICHT GESPEICHERT WERDEN!")); + } SETTINGS_GUI.setItem(SHUFFLE_RANDOM_DROP_INDEX, GUIUtils.createGuiItem(Material.CHORUS_FLOWER, ChatUtil.GREEN + "Zufällige Drops neu mischen")); SETTINGS_GUI.setItem(CLOSE_GUI_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Menü verlassen!")); SETTINGS_GUI.setItem(BACK_BUTTON_INDEX, GUIUtils.createGuiItem(Material.ARROW, ChatUtil.GREEN + "Zurück")); @@ -364,17 +369,21 @@ } break; case WORLD_BORDER_LEVEL_INDEX: - WorldBorderApi worldBorderAPI = BorderAPI.getApi(); + RegisteredServiceProvider worldBorderAPI = plugin.getServer().getServicesManager().getRegistration(WorldBorderApi.class); if (plugin.getConfig().getBoolean("worldborderlevel")) { GUIUtils.setConfig("worldborderlevel", false); for (Player pp : Bukkit.getOnlinePlayers()) { - worldBorderAPI.resetWorldBorderToGlobal(pp); + if (worldBorderAPI != null) { + worldBorderAPI.getProvider().resetWorldBorderToGlobal(pp); + } } GUIUtils.sendTitleToAll("Challenge", "World Border Level deaktiviert", ChatUtil.RED); } else { GUIUtils.setConfig("worldborderlevel", true); for (Player pp : Bukkit.getOnlinePlayers()) { - worldBorderAPI.setBorder(pp, 1, plugin.getServer().getWorld("world").getSpawnLocation()); + if (worldBorderAPI != null) { + worldBorderAPI.getProvider().setBorder(pp, 1, plugin.getServer().getWorld("world").getSpawnLocation()); + } } for (Player pp : Bukkit.getOnlinePlayers()) { @@ -383,6 +392,16 @@ GUIUtils.sendTitleToAll("Challenge", "World Border Level aktiviert", ChatUtil.GREEN); } break; + case ALL_ITEMS_INDEX: + if (plugin.getConfig().getBoolean("allitems")) { + GUIUtils.setConfig("allitems", false); + GUIUtils.sendTitleToAll("Challenge", "All Items deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("allitems", true); + GUIUtils.sendTitleToAll("Challenge", "All Items aktiviert", ChatUtil.GREEN); + AllItemsChallenge.start(); + } + break; default: break; } diff --git a/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java b/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java index c7517de..0e0f37d 100644 --- a/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java +++ b/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java @@ -23,7 +23,7 @@ } if (plugin.getConfig().getString("event.type").equals("build") && plugin.getTimer().isRunning()) { Material blockType = e.getBlock().getType(); - if (!ItemTypeListUtil.isInstaBreakBlock(blockType) && !ItemGroups.isDoubleBlockPlant(blockType) && !ItemGroups.isSingleBlockPlant(blockType)) { //TODO VOLLKORN :> + if (!ItemTypeListUtil.isInstaBreakBlock(blockType) && !ItemGroups.isDoubleBlockPlant(blockType) && !ItemGroups.isSingleBlockPlant(blockType)) { plugin.getScoreManager().updateScore(e.getPlayer(), 1); } } diff --git a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java index 610abfc..2e2dbf0 100644 --- a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java +++ b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java @@ -4,7 +4,8 @@ import de.fanta.challenges.challenges.*; import de.fanta.challenges.guis.ResetGui; import de.fanta.challenges.guis.TimerGui; -import de.fanta.challenges.guis.eventgui.bringitemsSettingsGui; +import de.fanta.challenges.guis.eventgui.EventGui; +import de.fanta.challenges.guis.eventgui.SammelFieberSettingsGui; import de.fanta.challenges.guis.eventgui.EventItemsGui; import de.fanta.challenges.guis.settingsgui.MainGui; import de.fanta.challenges.guis.settingsgui.OtherSettingsGui; @@ -31,8 +32,9 @@ pM.registerEvents(new SettingsGui(), plugin); pM.registerEvents(new ServerSettingsGui(), plugin); pM.registerEvents(new OtherSettingsGui(), plugin); - pM.registerEvents(new bringitemsSettingsGui(), plugin); + pM.registerEvents(new SammelFieberSettingsGui(), plugin); pM.registerEvents(new EventItemsGui(), plugin); + pM.registerEvents(new EventGui(), plugin); pM.registerEvents(new FurnaceListener(), plugin); pM.registerEvents(new CommandBlockListener(), plugin); @@ -57,6 +59,6 @@ pM.registerEvents(new RandomMobChallenge(), plugin); pM.registerEvents(new BedrockWallChallenge(), plugin); pM.registerEvents(new WorldBorderLevelChallenge(), plugin); - pM.registerEvents(new bringitemsChallengeEvent(), plugin); + pM.registerEvents(new SammelFieberChallengeEvent(), plugin); } } diff --git a/src/main/java/de/fanta/challenges/listeners/InteractListener.java b/src/main/java/de/fanta/challenges/listeners/InteractListener.java index 861fe79..c9bd02e 100644 --- a/src/main/java/de/fanta/challenges/listeners/InteractListener.java +++ b/src/main/java/de/fanta/challenges/listeners/InteractListener.java @@ -2,11 +2,14 @@ import de.fanta.challenges.Challenges; import org.bukkit.GameMode; +import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; +import org.bukkit.event.inventory.TradeSelectEvent; import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.MerchantRecipe; public class InteractListener implements Listener { @@ -26,6 +29,14 @@ if (!plugin.getTimer().isRunning() && e.getPlayer().getGameMode() != GameMode.CREATIVE) { e.setCancelled(true); } + + if (plugin.getConfig().getBoolean("disablevillagertradelimits")) { + if (e.getRightClicked() instanceof Villager villager) { + for (MerchantRecipe trade : villager.getRecipes()) { + trade.setMaxUses(Integer.MAX_VALUE); + } + } + } } } diff --git a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java index 6719346..95a72d2 100644 --- a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java +++ b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java @@ -13,6 +13,7 @@ import org.bukkit.event.entity.EntityRegainHealthEvent; import org.bukkit.event.entity.EntityTargetLivingEntityEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; +import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerAttemptPickupItemEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerItemConsumeEvent; @@ -39,6 +40,13 @@ } @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (Objects.equals(plugin.getConfig().getString("event.type"), "deathcounter") && plugin.getTimer().isRunning()) { + plugin.getScoreManager().updateScore(e.getEntity(), 1); + } + } + + @EventHandler public void onFoodChange(FoodLevelChangeEvent e) { if (!plugin.getTimer().isRunning()) { e.setCancelled(true); @@ -76,7 +84,7 @@ Location spawn = e.getPlayer().getWorld().getSpawnLocation(); if (playerloc.distance(spawn) > 20) { player.teleport(spawn); - ChatUtil.sendWarningMessage(player, "Du kommst erst vom Spawn weg, wenn die Map gestartet wurde!"); + ChatUtil.sendWarningMessage(player, "Du kommst erst vom Spawn weg, wenn der Timer gestartet wurde!"); } } } diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java index 41121c9..3e9d94f 100644 --- a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java @@ -52,10 +52,6 @@ return indexes.indexOf(player.getName()); } - public void saveScores() { - saveScores(null); - } - public void saveScores(Player player) { StringBuilder sb = new StringBuilder(); String ownerName = plugin.hasEditor() ? plugin.getCurrentEditor().getName() : "Console"; diff --git a/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java b/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java index ca34301..f527596 100644 --- a/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java +++ b/src/main/java/de/fanta/challenges/utils/SaveWorldUtils.java @@ -2,6 +2,7 @@ import de.cubeside.nmsutils.NMSUtils; import de.fanta.challenges.Challenges; +import de.fanta.challenges.challenges.AllItemsChallenge; import org.apache.commons.io.FileUtils; import org.bukkit.Bukkit; import org.bukkit.World; @@ -21,6 +22,7 @@ Challenges.getPlugin().getConfig().set("backpack_size", Challenges.getPlugin().getBackpack().getSize() / 9); Challenges.getPlugin().saveConfig(); Challenges.getPlugin().getBackpack().saveInventoryToConfig(); + AllItemsChallenge.saveItems(); World world_world = Bukkit.getWorlds().get(0); World world_nether = Bukkit.getWorlds().get(1); World world_end = Bukkit.getWorlds().get(2); @@ -47,7 +49,7 @@ File saveconfigs = new File(uuid + "/Challenges"); if (Bukkit.getMotd().equals("Challenge")) { File loaddir = new File("/home/minecraft/saves/" + uuid); - if (!loaddir.isDirectory()) { + if (loaddir.isDirectory()) { loaddir.delete(); } try { @@ -65,7 +67,7 @@ } } else if (Bukkit.getMotd().equals("Adventure")) { File loaddir = new File("/home/minecraft/Adventure-saves/" + uuid); - if (!loaddir.isDirectory()) { + if (loaddir.isDirectory()) { loaddir.delete(); } try { diff --git a/src/main/resources/allitems.yml b/src/main/resources/allitems.yml new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/main/resources/allitems.yml diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 714fbc3..66999e8 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -23,6 +23,10 @@ icerunner: false bedrockwall: false worldborderlevel: false +worldborderlevelnether: false +worldborderlevellevel: 0 +worldborderlevelxp: 0 +disablevillagertradelimits: false #Mögliche werte: 1-6 backpack_size: 3 mlg: diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index ba16618..74cfcba 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,12 +1,9 @@ -name: Challenges +name: ${artifactId} main: ${mainClass} version: ${project.version} -load: STARTUP api-version: 1.17 author: ${project.author} depend: [CubesideUtils, VanishNoPacket, GlobalPort, CubesideNMSUtils, WorldBorderAPI] -loadbefore: - - CubesideSettings commands: hp: description: Verwalte die HP eines Spielers @@ -71,4 +68,6 @@ description: Void Challenge usage: Use /void test: - description: test command \ No newline at end of file + description: test command + skipitem: + description: skip item in All Items Challenge! \ No newline at end of file