diff --git a/.gitignore b/.gitignore index dce34a1..bdb1ada 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ .classpath .project .idea/ +.settings dependency-reduced-pom.xml diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index abdea9a..0000000 --- a/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,4 +0,0 @@ -eclipse.preferences.version=1 -encoding//src/main/java=UTF-8 -encoding//src/main/resources=UTF-8 -encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index b5490a0..0000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,8 +0,0 @@ -eclipse.preferences.version=1 -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=enabled -org.eclipse.jdt.core.compiler.source=11 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index f897a7f..0000000 --- a/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/pom.xml b/pom.xml index bdec56c..8028759 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 de.fanta.challenges Challenges - 1.17.1-DEV + 1.18-DEV UTF-8 UTF-8 @@ -36,7 +36,7 @@ io.papermc.paper paper-api - 1.17.1-R0.1-SNAPSHOT + 1.18-R0.1-SNAPSHOT provided @@ -82,9 +82,14 @@ compile + de.tr7zw + item-nbt-api + 2.9.0-SNAPSHOT + + commons-io commons-io - 2.6 + 2.11.0 diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java index 3b7ae1d..ef08ab2 100644 --- a/src/main/java/de/fanta/challenges/Challenges.java +++ b/src/main/java/de/fanta/challenges/Challenges.java @@ -21,7 +21,6 @@ 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; @@ -42,7 +41,6 @@ import java.util.stream.Collectors; public class Challenges extends JavaPlugin { - public Boolean CavesAndCliffs; public static Logger LOGGER; @@ -120,7 +118,9 @@ Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> { World world = Bukkit.getWorld("world"); - world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); + if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) { + world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); + } MLGChallenge.checkMLGWorld(); setPvP(getConfig().getBoolean("pvp")); if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) { @@ -128,8 +128,6 @@ } }, 1L); - CavesAndCliffs = getConfig().getBoolean("1-18-datapack"); - if (getConfig().getBoolean("World_Reset")) { if (!getConfig().getBoolean("firsttimerstart")) { timer.setTime(0); diff --git a/src/main/java/de/fanta/challenges/challenges/AllItemsChallenge.java b/src/main/java/de/fanta/challenges/challenges/AllItemsChallenge.java index bb11c3b..5020040 100644 --- a/src/main/java/de/fanta/challenges/challenges/AllItemsChallenge.java +++ b/src/main/java/de/fanta/challenges/challenges/AllItemsChallenge.java @@ -28,7 +28,6 @@ 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")); } diff --git a/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java b/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java index f6cb070..8096621 100644 --- a/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java +++ b/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java @@ -117,10 +117,10 @@ if (Objects.equals(plugin.getConfig().getString("event.type"), "deathrun") && plugin.getTimer().isRunning()) { deadPlayer.add(p.getUniqueId().toString()); plugin.getSBManager().removeScoreboard(p); - } - if (plugin.getSBManager().countScoreboardPlayers() == 0) { - plugin.getTimer().stopTimer(); - ChatUtil.sendBrodcastMessage("Das Event wurde beendet, da alle Spieler gestorben sind!"); + if (plugin.getSBManager().countScoreboardPlayers() == 0) { + plugin.getTimer().stopTimer(); + ChatUtil.sendBrodcastMessage("Das Event wurde beendet, da alle Spieler gestorben sind!"); + } } } @@ -168,7 +168,7 @@ int distanceX = spawnX - x; if (distanceX > -15 && (Math.abs(distanceX) >= 15 || Math.abs(spawnZ - z) >= 15)) { - ChatUtil.sendWarningMessage(e.getPlayer(), "Keiner hat vor eine Mauer abzubauen!"); + ChatUtil.sendWarningMessage(e.getPlayer(), "Niemand hat die Absicht, eine Mauer zu errichten!"); e.setCancelled(true); } } diff --git a/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java b/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java index 432258a..8efb79b 100644 --- a/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java +++ b/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java @@ -2,6 +2,7 @@ import com.github.yannicklamprecht.worldborder.api.WorldBorderApi; import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ChatUtil; import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.Location; @@ -16,6 +17,7 @@ import org.bukkit.event.player.PlayerExpChangeEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerLevelChangeEvent; +import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerPortalEvent; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.world.SpawnChangeEvent; @@ -157,7 +159,7 @@ Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { for (Player player : Bukkit.getOnlinePlayers()) { if (level > 0) { - worldBorderAPI.getProvider().setBorder(player, level, player.getWorld().getSpawnLocation()); + worldBorderAPI.getProvider().setBorder(player, level * 2, player.getWorld().getSpawnLocation()); } else { worldBorderAPI.getProvider().setBorder(player, 1, player.getWorld().getSpawnLocation()); } diff --git a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesCommand.java b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesCommand.java index 4e7c522..2a9b176 100644 --- a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesCommand.java +++ b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesCommand.java @@ -1,13 +1,20 @@ package de.fanta.challenges.commands.challenges; import de.fanta.challenges.Challenges; -import de.fanta.challenges.utils.ChatSkullAPI.ChatSkull; import de.fanta.challenges.utils.ChatUtil; import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; +import de.tr7zw.changeme.nbtapi.NBTCompound; +import de.tr7zw.changeme.nbtapi.NBTCompoundList; +import de.tr7zw.changeme.nbtapi.NBTItem; +import de.tr7zw.changeme.nbtapi.NBTListCompound; +import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import java.util.List; public class ChallengesCommand extends SubCommand { 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 bbc24e2..ebe7ea9 100644 --- a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java +++ b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java @@ -35,6 +35,7 @@ ChatUtil.sendNormalMessage(sender, "Welt wird gespeichert!"); try { SaveWorldUtils.saveWorld(uuid.toString()); + //ChatUtil.sendWarningMessage(sender, "Das ist nur ein Testserver hier kannst du aktuell keine Maps speichern!"); } catch (Exception ex) { Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex); ChatUtil.sendErrorMessage(sender, "Welt konnte nicht gespeichert werden!"); @@ -59,6 +60,7 @@ ChatUtil.sendNormalMessage(sender, "Welt wird gespeichert!"); try { SaveWorldUtils.saveWorld(next.toLowerCase()); + //ChatUtil.sendWarningMessage(sender, "Das ist nur ein Testserver hier kannst du aktuell keine Maps speichern!"); } catch (Exception ex) { Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex); ChatUtil.sendErrorMessage(sender, "Welt konnte nicht gespeichert werden!"); diff --git a/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java index ca5eca2..68cb201 100644 --- a/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java +++ b/src/main/java/de/fanta/challenges/commands/event/EventStartCommand.java @@ -42,7 +42,9 @@ if(j <= 0){ bukkitTask.cancel(); World world = Bukkit.getWorld("world"); - world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, true); + if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) { + world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, true); + } plugin.getTimer().startTimer(); Bukkit.getOnlinePlayers().forEach(p -> plugin.getScoreManager().updateScore(p, 0)); diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerPauseCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerPauseCommand.java index 6b66814..19ef7bc 100644 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerPauseCommand.java +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerPauseCommand.java @@ -28,7 +28,9 @@ 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); + if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) { + world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); + } plugin.getTimer().stopTimer(); ChatUtil.sendBrodcastMessage(ChatUtil.RED + "Der Timer wurde angehalten"); } else { diff --git a/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java b/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java index 080b494..b862381 100644 --- a/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java +++ b/src/main/java/de/fanta/challenges/commands/timer/TimerStartCommand.java @@ -29,7 +29,9 @@ 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); + if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) { + world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, true); + } plugin.getTimer().startTimer(); ChatUtil.sendBrodcastMessage(ChatUtil.GREEN + "Der Timer wird fortgesetzt!"); } else { diff --git a/src/main/java/de/fanta/challenges/guis/ResetGui.java b/src/main/java/de/fanta/challenges/guis/ResetGui.java index 2793c31..4eb6789 100644 --- a/src/main/java/de/fanta/challenges/guis/ResetGui.java +++ b/src/main/java/de/fanta/challenges/guis/ResetGui.java @@ -18,7 +18,6 @@ private static final Challenges plugin = Challenges.getPlugin(); - private static final int CAVES_AND_CLIFF_INDEX = 0; private static final int RESET_INDEX = 2; private static final int SEED_INDEX = 4; @@ -30,11 +29,6 @@ public static void createResetGUI(Player p) { RESET_GUI.setItem(RESET_INDEX, GUIUtils.createGuiItem(Material.REPEATING_COMMAND_BLOCK, ChatColor.DARK_RED + "Server resetten", ChatUtil.RED + "Wenn du denn Server resettest wird", ChatUtil.RED + "der Server komplett zurückgesetzt", ChatUtil.RED + "und du musst von vorne beginnen!")); - if (plugin.getConfig().getBoolean("1-18-datapack")) { - RESET_GUI.setItem(CAVES_AND_CLIFF_INDEX, GUIUtils.createGuiItem(Material.POINTED_DRIPSTONE, ChatUtil.GREEN + "Caves and Cliff Welt (1.18)", true)); - } else { - RESET_GUI.setItem(CAVES_AND_CLIFF_INDEX, GUIUtils.createGuiItem(Material.POINTED_DRIPSTONE, ChatUtil.RED + "Caves and Cliff Welt (1.18)", false)); - } RESET_GUI.setItem(SEED_INDEX, GUIUtils.createGuiItem(Material.FILLED_MAP, ChatUtil.GREEN + "Seed: " + seed)); for (int i = 0; i < INVENTORY_SIZE; i++) { ItemStack item = RESET_GUI.getItem(i); @@ -48,19 +42,9 @@ @EventHandler public void onInventoryClick(InventoryClickEvent e) { int slot = e.getRawSlot(); - Player p = (Player) e.getWhoClicked(); if (RESET_GUI.equals(e.getClickedInventory())) { - switch (slot) { - case RESET_INDEX -> Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "reset confirm " + plugin.getConfig().getBoolean("1-18-datapack") + " " + seed); - case CAVES_AND_CLIFF_INDEX -> { - if (plugin.getConfig().getBoolean("1-18-datapack")) { - plugin.getConfig().set("1-18-datapack", false); - } else { - plugin.getConfig().set("1-18-datapack", true); - } - plugin.saveConfig(); - createResetGUI(p); - } + if (slot == RESET_INDEX) { + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "reset confirm " + plugin.getConfig().getBoolean("1-18-datapack") + " " + seed); } e.setCancelled(true); } diff --git a/src/main/java/de/fanta/challenges/guis/TimerGui.java b/src/main/java/de/fanta/challenges/guis/TimerGui.java index e4b4ba4..6675ab8 100644 --- a/src/main/java/de/fanta/challenges/guis/TimerGui.java +++ b/src/main/java/de/fanta/challenges/guis/TimerGui.java @@ -60,14 +60,18 @@ 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); + if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) { + world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); + } pp.sendTitle(ChatColor.of("#0ddead") + "Timer", ChatUtil.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); + if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) { + world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, true); + } pp.sendTitle(ChatColor.of("#0ddead") + "Timer", ChatUtil.GREEN + "Der Timer wurde gestartet.", 10, 60, 10); } } 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 6ec4574..4342c90 100644 --- a/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java +++ b/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java @@ -124,7 +124,7 @@ switch (slot) { case BINGO_ITEMS_INDEX -> EventItemsGui.openEventGUI(p); - case SAMMEL_FIEBER_SETTINGS_INDEX -> SammelFieberSettingsGui.createSettingsGUI(p); + case SAMMEL_FIEBER_SETTINGS_INDEX -> SammelFieberSettingsGui.createSammelFieberSettingsGUI(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 index 7b26bd3..40cf7d8 100644 --- a/src/main/java/de/fanta/challenges/guis/eventgui/SammelFieberSettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/eventgui/SammelFieberSettingsGui.java @@ -19,51 +19,43 @@ 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 final Inventory SAMMEL_FIEBER_SETTINGS_GUI = Bukkit.createInventory(null, InventoryType.DISPENSER, Challenges.GUIPREFIX + " >> Sammel Fieber 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")); - } + public static void createSammelFieberSettingsGUI(Player p) { + SAMMEL_FIEBER_SETTINGS_GUI.setItem(MONEY_INDEX, GUIUtils.createGuiItem(Material.GOLD_INGOT, ChatUtil.GREEN + "Money: " + MONEY)); + SAMMEL_FIEBER_SETTINGS_GUI.setItem(ADD_MONEY_INDEX, CustomHeads.QUARTZ_ARROW_UP.getHead()); + SAMMEL_FIEBER_SETTINGS_GUI.setItem(REMOVE_MONEY_INDEX, CustomHeads.QUARTZ_ARROW_DOWN.getHead()); + SAMMEL_FIEBER_SETTINGS_GUI.setItem(BACK_INDEX, CustomHeads.QUARTZ_ARROW_LEFT.getHead()); 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); + if (SAMMEL_FIEBER_SETTINGS_GUI.getItem(i) == null || SAMMEL_FIEBER_SETTINGS_GUI.getItem(i).getType() == Material.AIR) { + SAMMEL_FIEBER_SETTINGS_GUI.setItem(i, GUIUtils.EMPTY_ICON); } } - p.openInventory(SETTINGS_GUI); + p.openInventory(SAMMEL_FIEBER_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 (SAMMEL_FIEBER_SETTINGS_GUI.equals(e.getClickedInventory())) { if (plugin.getConfig().getBoolean("event.enabled")) { switch (slot) { case ADD_MONEY_INDEX -> MONEY = MONEY + 10; case REMOVE_MONEY_INDEX -> { - if (MONEY > 0) { + if (MONEY > 10) { MONEY = MONEY - 10; } } } - createSettingsGUI(p); - ChatUtil.sendDebugMessage(p, "Click2"); + createSammelFieberSettingsGUI(p); if (slot == BACK_INDEX) { EventGui.createEventGUI(p); } diff --git a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java index 95a72d2..c15ac11 100644 --- a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java +++ b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java @@ -3,10 +3,23 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.events.PlayerCountChangedEvent; import de.fanta.challenges.utils.ChatUtil; +import de.iani.cubesideutils.commands.ArgsParser; +import de.tr7zw.changeme.nbtapi.NBTCompound; +import de.tr7zw.changeme.nbtapi.NBTCompoundList; +import de.tr7zw.changeme.nbtapi.NBTItem; +import de.tr7zw.changeme.nbtapi.NBTListCompound; +import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.Particle; +import org.bukkit.Vibration; +import org.bukkit.block.data.type.Bed; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Boss; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Mob; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -14,6 +27,7 @@ import org.bukkit.event.entity.EntityTargetLivingEntityEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.inventory.InventoryOpenEvent; import org.bukkit.event.player.PlayerAttemptPickupItemEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerItemConsumeEvent; @@ -21,11 +35,18 @@ import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerPortalEvent; import org.bukkit.event.player.PlayerRespawnEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.util.Vector; +import org.jetbrains.annotations.Debug; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.kitteh.vanish.event.VanishStatusChangeEvent; import org.spigotmc.event.player.PlayerSpawnLocationEvent; -import java.util.Objects; +import java.util.*; +import java.util.regex.Pattern; +import static org.bukkit.Bukkit.getBukkitVersion; import static org.bukkit.Bukkit.getServer; public class PlayerListener implements Listener { @@ -171,4 +192,102 @@ } } } + + @EventHandler + public void onOpenChest(InventoryOpenEvent e) { + if (plugin.getServer().getPluginManager().getPlugin("NBTAPI") == null) { + return; + } + ItemStack[] storage = e.getInventory().getStorageContents(); + for (int i = 0; i < storage.length; i++) { + ItemStack itemStack = storage[i]; + if (itemStack == null) { + return; + } + if (itemStack.hasItemMeta()) { + if (itemStack.getItemMeta().hasLore()) { + List lorelist = itemStack.getItemMeta().getLore(); + if (lorelist == null) { + return; + } + for (String coloredlore : lorelist) { + String lore = ChatColor.stripColor(coloredlore); + if (lore.endsWith("I") || lore.endsWith("V") || lore.endsWith("X")) { + NBTItem nbti = new NBTItem(itemStack); + + ArgsParser argsParser = new ArgsParser(lore.split(" ")); + + String enchant = argsParser.getNext().toLowerCase(); + int level = romanToDecimal(argsParser.getNext()); + + NBTCompoundList customEnchantments = nbti.getCompoundList("CustomEnchantments"); + customEnchantments.clear(); + NBTListCompound customEnchantment = customEnchantments.addCompound(); + customEnchantment.setString("id", enchant); + customEnchantment.setInteger("lvl", level); + itemStack = nbti.getItem(); + e.getInventory().setItem(i, itemStack); + } + } + } + } + } + } + + public static int romanToDecimal(String romanNumber) { + int decimal = 0; + int lastNumber = 0; + String romanNumeral = romanNumber.toUpperCase(); + for (int x = romanNumeral.length() - 1; x >= 0; x--) { + char convertToDecimal = romanNumeral.charAt(x); + + switch (convertToDecimal) { + case 'M' -> { + decimal = processDecimal(1000, lastNumber, decimal); + lastNumber = 1000; + } + case 'D' -> { + decimal = processDecimal(500, lastNumber, decimal); + lastNumber = 500; + } + case 'C' -> { + decimal = processDecimal(100, lastNumber, decimal); + lastNumber = 100; + } + case 'L' -> { + decimal = processDecimal(50, lastNumber, decimal); + lastNumber = 50; + } + case 'X' -> { + decimal = processDecimal(10, lastNumber, decimal); + lastNumber = 10; + } + case 'V' -> { + decimal = processDecimal(5, lastNumber, decimal); + lastNumber = 5; + } + case 'I' -> { + decimal = processDecimal(1, lastNumber, decimal); + lastNumber = 1; + } + } + } + return decimal; + } + + public static int processDecimal(int decimal, int lastNumber, int lastDecimal) { + if (lastNumber > decimal) { + return lastDecimal - decimal; + } else { + return lastDecimal + decimal; + } + } + + /*@EventHandler + public void move(PlayerMoveEvent e) { + Player p = e.getPlayer(); + int distance = (int) p.getLocation().toVector().subtract(p.getWorld().getSpawnLocation().toVector()).length(); + Vibration vibration = new Vibration(p.getLocation(), new Vibration.Destination.BlockDestination(p.getWorld().getSpawnLocation().getBlock()), 10 + distance); + p.getWorld().spawnParticle(Particle.VIBRATION, p.getLocation(), 1, vibration); + }*/ } diff --git a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java index 57ce33b..d709dfd 100644 --- a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java +++ b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java @@ -25,18 +25,6 @@ public void onPlayerJoin(PlayerJoinEvent e) { Player p = e.getPlayer(); - //Wenn CavesandCliffs Aktiv dürfen nur Spieler ab 1.17 Joinen - System.out.println(Via.getAPI().getPlayerVersion(e.getPlayer().getUniqueId())); - System.out.println(plugin.CavesAndCliffs); - - if (plugin.CavesAndCliffs) { - if (Via.getAPI().getPlayerVersion(p.getUniqueId()) < 755) { - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { - p.kickPlayer("Du musst mit Minecraft " + Bukkit.getServer().getMinecraftVersion() + " Joinen"); - }, 3L); - } - } - if (plugin.resetTaskId > 0) { plugin.stopResetTask(); } diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java index 9883123..7c226ca 100644 --- a/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java @@ -66,6 +66,9 @@ } public void updateTabHP() { + if (!Bukkit.getMotd().equalsIgnoreCase("Challenge")) { + return; + } if (plugin.getConfig().getBoolean("tabhp")) { if (this.tabHP == null) { tabHP = scoreboard.registerNewObjective("hp", "health", "§6Challenges"); @@ -90,6 +93,9 @@ } public void updateEventScoreboard() { + if (!Bukkit.getMotd().equalsIgnoreCase("Challenge")) { + return; + } if (plugin.getConfig().getBoolean("event.enabled")) { this.team.setColor(ChatColor.BLUE); this.team.setDisplayName("Event"); @@ -116,6 +122,9 @@ } void updateEventScore(Player player, int difference) { + if (!Bukkit.getMotd().equalsIgnoreCase("Challenge")) { + return; + } if (this.event != null) { Score score = event.getScore(player.getName()); score.setScore(score.getScore() + difference); @@ -123,6 +132,9 @@ } void setEventScore(Player player, int newScore) { + if (!Bukkit.getMotd().equalsIgnoreCase("Challenge")) { + return; + } if (this.event != null) { Score score = event.getScore(player.getName()); score.setScore(newScore); diff --git a/src/main/java/de/fanta/challenges/utils/ChatUtil.java b/src/main/java/de/fanta/challenges/utils/ChatUtil.java index 6b35e47..f4aa554 100644 --- a/src/main/java/de/fanta/challenges/utils/ChatUtil.java +++ b/src/main/java/de/fanta/challenges/utils/ChatUtil.java @@ -37,7 +37,9 @@ public static void sendDebugMessage(CommandSender sender, Object... messageParts) { if (sender.hasPermission("fanta.debug")) { - sendMessage(sender, ChatColor.of("#FF04F7").toString(), messageParts); + if (sender != null) { + sendMessage(sender, ChatColor.of("#FF04F7").toString(), messageParts); + } } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 66999e8..18b6d4f 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -39,7 +39,6 @@ Saved_Locations: {} World_Name: world World_Reset: false -1-18-datapack: false silkore: false ultrahardcore: false speedfurnace: false diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 74cfcba..9605a2d 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,9 +1,10 @@ name: ${artifactId} main: ${mainClass} version: ${project.version} -api-version: 1.17 +api-version: 1.18 author: ${project.author} depend: [CubesideUtils, VanishNoPacket, GlobalPort, CubesideNMSUtils, WorldBorderAPI] +softdepend: [NBTAPI] commands: hp: description: Verwalte die HP eines Spielers diff --git a/todo.txt b/todo.txt new file mode 100644 index 0000000..4c93f1e --- /dev/null +++ b/todo.txt @@ -0,0 +1,6 @@ +Rucksack abspeichern Fixen. +TexturePack laden Fixen. +Welten abspeichern überarbeiten. (Ohne VIP ein Slot + Autosave - mit VIP 3 Slots + Autosave). (Maps die mit namen abgespeichert werden in eine Admin GUI Packen.) +Eigene Plugin config für Server info. +für Adventure eigene Configs in dennen alle Map infos Stehen (Spawnpoint, Gamemode, Map Name, Map Typ, Map Icon...) +Autovanish Fixen.. wie auch immer xD \ No newline at end of file