diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java index ebf8a81..ca6cf1b 100644 --- a/src/main/java/de/fanta/challenges/Challenges.java +++ b/src/main/java/de/fanta/challenges/Challenges.java @@ -1,9 +1,9 @@ package de.fanta.challenges; import de.cubeside.nmsutils.NMSUtils; -import de.fanta.challenges.challenges.Bingo; -import de.fanta.challenges.challenges.RandomDrops; -import de.fanta.challenges.challenges.TiedTogether; +import de.fanta.challenges.challenges.BingoChallengeEvent; +import de.fanta.challenges.challenges.MLGChallenge; +import de.fanta.challenges.challenges.RandomDropsChallenge; import de.fanta.challenges.commands.CommandRegistration; import de.fanta.challenges.events.PlayerCountChangedEvent; import de.fanta.challenges.events.ServerStatusChangedEvent; @@ -22,8 +22,6 @@ 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; @@ -59,10 +57,6 @@ private Timer timer; - private Bingo bingo; - - private TiedTogether tiedTogether; - private VanishUtils vanish; private BackpackGui backpack; @@ -70,7 +64,7 @@ private ScoreBoardManager sbManager; private ScoreManager scoreManager; - public RandomDrops rndDrops; + public RandomDropsChallenge rndDrops; public NMSUtils nmsUtils; @@ -99,9 +93,7 @@ nmsUtils = getServer().getServicesManager().load(NMSUtils.class); this.timer = new Timer(this); - this.rndDrops = new RandomDrops(); - this.bingo = new Bingo(); - this.tiedTogether = new TiedTogether(); + this.rndDrops = new RandomDropsChallenge(); this.scoreManager = new ScoreManager(this); this.vanish = new VanishUtils(this); @@ -123,7 +115,7 @@ Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> { World world = Bukkit.getWorld("world"); world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); - checkMLGWorld(); + MLGChallenge.checkMLGWorld(); if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) { plugin.getSBManager().initScoreboard(); } @@ -221,7 +213,7 @@ getLogger().info("Plugin unloaded"); } - public RandomDrops getRandomDropsManager() { + public RandomDropsChallenge getRandomDropsManager() { return this.rndDrops; } @@ -265,18 +257,6 @@ 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(); @@ -360,14 +340,6 @@ return timer; } - public Bingo getBingo() { - return bingo; - } - - public TiedTogether getTiedTogether() { - return tiedTogether; - } - public VanishUtils getVanish() { return vanish; } diff --git a/src/main/java/de/fanta/challenges/Timer.java b/src/main/java/de/fanta/challenges/Timer.java index 382e625..9ce83a3 100644 --- a/src/main/java/de/fanta/challenges/Timer.java +++ b/src/main/java/de/fanta/challenges/Timer.java @@ -1,5 +1,6 @@ package de.fanta.challenges; +import de.fanta.challenges.challenges.MLGChallenge; import de.fanta.challenges.events.TimerChangedEvent; import de.fanta.challenges.utils.ChatUtil; import de.fanta.challenges.utils.guiutils.GUIUtils; @@ -28,16 +29,12 @@ private int idleActionBarTaskId; private long time; // milliseconds - private int timeSinceMLG; // seconds - private int maxMLGTime; // seconds - private boolean mlgActive; private TimerMode mode; private long countingSinceTimestamp; public Timer(Challenges plugin) { this.plugin = plugin; this.random = new Random(); - this.maxMLGTime = plugin.getConfig().getInt("mlg.maxtime"); this.mode = TimerMode.UP; if (!isRunning()) { @@ -53,9 +50,9 @@ } actionBarTaskId = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> { int random = this.random.nextInt(750); - timeSinceMLG++; - if (random == 638 || timeSinceMLG >= maxMLGTime) { - triggerMLG(); + MLGChallenge.timeSinceMLG++; + if (random == 638 || MLGChallenge.timeSinceMLG >= MLGChallenge.maxMLGTime) { + MLGChallenge.triggerMLG(); } if (mode == TimerMode.DOWN) { @@ -122,21 +119,6 @@ }, 20L, 20L); } - public boolean triggerMLG() { - if (plugin.getConfig().getBoolean("mlg.enabled") && !mlgActive && Bukkit.getOnlinePlayers().size() >= 1) { - mlgActive = true; - ChatUtil.sendBrodcastMessage("Zeit für einen MLG! Viel 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()) { if (!plugin.getVanish().isVanish(p)) { @@ -167,49 +149,6 @@ } } - 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); - int rndX = random.nextInt(50); - int rndZ = random.nextInt(50); - Location oldloc = p.getLocation(); - - Location newloc = new Location(Bukkit.getWorld("mlg_challenge"), p.getLocation().getBlockX() + rndX, (50 + rndY), p.getLocation().getBlockZ() + rndZ); - 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; } diff --git a/src/main/java/de/fanta/challenges/challenges/Bingo.java b/src/main/java/de/fanta/challenges/challenges/Bingo.java deleted file mode 100644 index c4b71d7..0000000 --- a/src/main/java/de/fanta/challenges/challenges/Bingo.java +++ /dev/null @@ -1,82 +0,0 @@ -package de.fanta.challenges.challenges; - -import de.fanta.challenges.Challenges; -import de.fanta.challenges.utils.ChatSkullAPI.ChatSkull; -import de.fanta.challenges.utils.ChatUtil; -import de.fanta.challenges.utils.guiutils.GUIUtils; -import org.bukkit.Bukkit; -import org.bukkit.GameMode; -import org.bukkit.Material; -import org.bukkit.Sound; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -public class Bingo { - - private Challenges plugin = Challenges.getPlugin(); - - private boolean running; - - private List materials; - private Map> playerMaterials; - - public Bingo() { - this.materials = new ArrayList(); - this.playerMaterials = new HashMap<>(); - } - - public void setMaterials(List materials) { - this.materials = materials; - } - - public List getMaterials() { - return materials; - } - - public Map> getPlayerMaterials() { - return playerMaterials; - } - - public boolean isRunning() { - return running; - } - - public void setRunning(boolean running) { - this.running = running; - } - - public void addDiscoveredItem(Player player, ItemStack itemStack) { - UUID uuid = player.getUniqueId(); - Material material = itemStack.getType(); - if (this.materials.contains(material)) { - List items = new ArrayList<>(); - if (playerMaterials.get(uuid) != null) { - items = playerMaterials.get(uuid); - } - if (!items.contains(material)) { - items.add(material); - playerMaterials.put(uuid, items); - plugin.getScoreManager().updateScore(player, 1); - ChatUtil.sendNormalMessage(player, "Item: " + ChatUtil.BLUE + itemStack.getI18NDisplayName() + ChatUtil.GREEN + " wurde Registriert"); - player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F); - - if(plugin.getScoreManager().getScore(player) == materials.size()){ - plugin.getTimer().stopTimer(); - GUIUtils.sendTitleToAll("Event", ChatUtil.BLUE + player.getName() + ChatUtil.GREEN + " hat alle Items gefunden!", ChatUtil.BLUE); - String[] lines = {"","",""," " + ChatUtil.BLUE + player.getName(),ChatUtil.GREEN + " hat alle Items gefunden!","","",""}; - ChatSkull.sendAll(player, lines); - for (Player pp : Bukkit.getOnlinePlayers()) { - pp.setGameMode(GameMode.SPECTATOR); - } - } - } - } - } - -} diff --git a/src/main/java/de/fanta/challenges/challenges/BingoChallengeEvent.java b/src/main/java/de/fanta/challenges/challenges/BingoChallengeEvent.java new file mode 100644 index 0000000..6bb4716 --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/BingoChallengeEvent.java @@ -0,0 +1,158 @@ +package de.fanta.challenges.challenges; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.events.TimerChangedEvent; +import de.fanta.challenges.guis.eventgui.EventItemsGui; +import de.fanta.challenges.utils.ChatSkullAPI.ChatSkull; +import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.utils.guiutils.GUIUtils; +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.Material; +import org.bukkit.Sound; +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.player.PlayerAttemptPickupItemEvent; +import org.bukkit.event.player.PlayerBucketEmptyEvent; +import org.bukkit.event.player.PlayerBucketEntityEvent; +import org.bukkit.event.player.PlayerBucketFillEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.UUID; + +public class BingoChallengeEvent implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + private static boolean running; + + private static List materials = new ArrayList<>(); + private static final Map> playerMaterials = new HashMap<>(); + + @EventHandler + public void onInventoryClick(InventoryClickEvent e) { + Player player = (Player) e.getWhoClicked(); + Inventory playerInv = EventItemsGui.getPlayerInvs().get(player.getUniqueId()); + if (e.getClickedInventory() == null) { + return; + } + if (!isRunning()) { + return; + } + if (playerInv != null && playerInv.equals(e.getClickedInventory())) { + return; + } + ItemStack itemStack = e.getCurrentItem(); + if (itemStack != null && itemStack.getType() != Material.AIR) { + addDiscoveredItem(player, itemStack); + } + } + + @EventHandler + public void onPickUpItem(PlayerAttemptPickupItemEvent e) { + ItemStack itemStack = e.getItem().getItemStack(); + Player player = e.getPlayer(); + if (isRunning()) { + addDiscoveredItem(player, itemStack); + } + } + + @EventHandler + public void onBucketFill(PlayerBucketFillEvent e) { + ItemStack itemStack = e.getItemStack(); + Player player = e.getPlayer(); + if (isRunning()) { + if (itemStack != null) { + addDiscoveredItem(player, itemStack); + } + } + } + + @EventHandler + public void onBucketChatchFish(PlayerBucketEntityEvent e) { + ItemStack itemStack = e.getEntityBucket(); + if (isRunning()) { + addDiscoveredItem(e.getPlayer(), itemStack); + } + } + + @EventHandler + public void onBucketEmpty(PlayerBucketEmptyEvent e) { + ItemStack itemStack = e.getItemStack(); + Player player = e.getPlayer(); + if (isRunning()) { + if (itemStack != null) { + addDiscoveredItem(player, itemStack); + } + } + } + + @EventHandler + public void onActivation(TimerChangedEvent event){ + if (Objects.equals(plugin.getConfig().getString("event.type"), "bingo")) { + if (event.isRunning()) { + setMaterials(EventItemsGui.getEventItems()); + setRunning(true); + } else { + setRunning(false); + } + } + } + + public void setMaterials(List materials) { + BingoChallengeEvent.materials = materials; + } + + public static List getMaterials() { + return materials; + } + + public static Map> getPlayerMaterials() { + return playerMaterials; + } + + public static boolean isRunning() { + return running; + } + + public void setRunning(boolean running) { + BingoChallengeEvent.running = running; + } + + public void addDiscoveredItem(Player player, ItemStack itemStack) { + UUID uuid = player.getUniqueId(); + Material material = itemStack.getType(); + if (materials.contains(material)) { + List items = new ArrayList<>(); + if (playerMaterials.get(uuid) != null) { + items = playerMaterials.get(uuid); + } + if (!items.contains(material)) { + items.add(material); + playerMaterials.put(uuid, items); + plugin.getScoreManager().updateScore(player, 1); + ChatUtil.sendNormalMessage(player, "Item: " + ChatUtil.BLUE + itemStack.getI18NDisplayName() + ChatUtil.GREEN + " wurde Registriert"); + player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F); + + if(plugin.getScoreManager().getScore(player) == materials.size()){ + plugin.getTimer().stopTimer(); + GUIUtils.sendTitleToAll("Event", ChatUtil.BLUE + player.getName() + ChatUtil.GREEN + " hat alle Items gefunden!", ChatUtil.BLUE); + String[] lines = {"","",""," " + ChatUtil.BLUE + player.getName(),ChatUtil.GREEN + " hat alle Items gefunden!","","",""}; + ChatSkull.sendAll(player, lines); + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.setGameMode(GameMode.SPECTATOR); + } + } + } + } + } + +} diff --git a/src/main/java/de/fanta/challenges/challenges/ChallengeGoals.java b/src/main/java/de/fanta/challenges/challenges/ChallengeGoals.java new file mode 100644 index 0000000..e1ae707 --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/ChallengeGoals.java @@ -0,0 +1,38 @@ +package de.fanta.challenges.challenges; + +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.entity.EnderDragon; +import org.bukkit.entity.Wither; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDeathEvent; + +import java.util.Objects; + +public class ChallengeGoals implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void GoalDeath(EntityDeathEvent e) { + if (Objects.equals(plugin.getConfig().getString("event.type"), "nix")) { + if ((e.getEntity() instanceof EnderDragon && plugin.getConfig().getBoolean("target")) || (e.getEntity() instanceof Wither && !plugin.getConfig().getBoolean("target"))) { + plugin.getTimer().stopTimer(); + ChatUtil.sendBrodcastMessage("" + ChatColor.GREEN + ChatColor.BOLD + ChatColor.MAGIC + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); + ChatUtil.sendBrodcastMessage(""); + ChatUtil.sendBrodcastMessage(""); + ChatUtil.sendBrodcastMessage(""); + ChatUtil.sendBrodcastMessage(" §8>> §7Der §2§l" + e.getEntity().getName().toLowerCase() + " §7wurde besiegt."); + ChatUtil.sendBrodcastMessage(" §8>> §7Benötigte Zeit: §2§l" + plugin.getTimer().formatTime(ChatColor.GREEN) + "§7!"); + ChatUtil.sendBrodcastMessage(" §8>> §7Seed: §2§l" + Bukkit.getWorlds().get(0).getSeed()); + ChatUtil.sendBrodcastMessage(""); + ChatUtil.sendBrodcastMessage(""); + ChatUtil.sendBrodcastMessage(""); + ChatUtil.sendBrodcastMessage("" + ChatColor.GREEN + ChatColor.BOLD + ChatColor.MAGIC + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); + } + } + } +} diff --git a/src/main/java/de/fanta/challenges/challenges/ClearInventoryByDamageChallenge.java b/src/main/java/de/fanta/challenges/challenges/ClearInventoryByDamageChallenge.java new file mode 100644 index 0000000..03e252e --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/ClearInventoryByDamageChallenge.java @@ -0,0 +1,29 @@ +package de.fanta.challenges.challenges; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ChatUtil; +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageEvent; + +public class ClearInventoryByDamageChallenge implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onDamageclear(EntityDamageEvent e) { + if (e.getEntity() instanceof Player p) { + if (plugin.getConfig().getBoolean("clinvdmg")) { + if (plugin.getTimer().isRunning() && p.getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) { + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.getInventory().clear(); + ChatUtil.sendNormalMessage(pp, ChatUtil.BLUE + p.getName() + ChatUtil.ORANGE + " hat Schaden bekommen! Alle Inventare wurden geleert!"); + } + } + } + } + } +} diff --git a/src/main/java/de/fanta/challenges/challenges/CraftingTableChallenge.java b/src/main/java/de/fanta/challenges/challenges/CraftingTableChallenge.java new file mode 100644 index 0000000..e5e1bae --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/CraftingTableChallenge.java @@ -0,0 +1,28 @@ +package de.fanta.challenges.challenges; + +import de.fanta.challenges.Challenges; +import org.bukkit.Material; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; + +public class CraftingTableChallenge implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onInteractWorlkbench(PlayerInteractEvent e) { + if (e.getAction() == Action.RIGHT_CLICK_BLOCK) { + if (plugin.getTimer().isRunning()) { + if (e.getClickedBlock() != null) { + if (e.getClickedBlock().getType() == Material.CRAFTING_TABLE) { + if (!plugin.getConfig().getBoolean("craftingtable")) { + e.setCancelled(true); + } + } + } + } + } + } +} diff --git a/src/main/java/de/fanta/challenges/challenges/FloorIsLavaChallenge.java b/src/main/java/de/fanta/challenges/challenges/FloorIsLavaChallenge.java new file mode 100644 index 0000000..e320f64 --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/FloorIsLavaChallenge.java @@ -0,0 +1,83 @@ +package de.fanta.challenges.challenges; + +import de.fanta.challenges.Challenges; +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.scheduler.BukkitRunnable; + +import java.util.ArrayList; + +public class FloorIsLavaChallenge implements Listener { + private static final Challenges plugin = Challenges.getPlugin(); + public static ArrayList LAVA_BLOCKS = new ArrayList<>(); + + @EventHandler + public void onPlayerMove(PlayerMoveEvent e) { + Player p = e.getPlayer(); + if (plugin.getTimer().isRunning() && p.getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) { + if (plugin.getConfig().getBoolean("lavafloor")) { + Location oldLoc = e.getFrom(); + Location newLoc = e.getTo(); + int oldx = oldLoc.getBlockX(); + int oldy = oldLoc.getBlockY(); + int oldz = oldLoc.getBlockZ(); + int newx = newLoc.getBlockX(); + int newy = newLoc.getBlockY(); + int newz = newLoc.getBlockZ(); + if (newx != oldx || newy != oldy || newz != oldz) { + new BukkitRunnable() { + @Override + public void run() { + Block b = p.getLocation().subtract(0, 1, 0).getBlock(); + if (!b.isPassable() && !LAVA_BLOCKS.contains(b)) { + LAVA_BLOCKS.add(b); + setMagma(b, b.getType()); + } + } + }.runTaskLater(plugin, 1L); + } + } + } + } + + public static void setMagma(Block b, Material old) { + new BukkitRunnable() { + + @Override + public void run() { + b.setType(Material.MAGMA_BLOCK); + setLava(b, old); + } + }.runTaskLater(plugin, 20L); + } + + public static void setLava(Block b, Material old) { + new BukkitRunnable() { + + @Override + public void run() { + b.setType(Material.LAVA); + setOld(b, old); + } + }.runTaskLater(plugin, 60L); + } + + public static void setOld(Block b, Material old) { + new BukkitRunnable() { + + @Override + public void run() { + if (b.getType() == Material.LAVA || b.getType() == Material.OBSIDIAN || b.getType() == Material.COBBLESTONE || b.getType() == Material.STONE) { + b.setType(old); + } + LAVA_BLOCKS.remove(b); + } + }.runTaskLater(plugin, 200L); + } +} diff --git a/src/main/java/de/fanta/challenges/challenges/MLGChallenge.java b/src/main/java/de/fanta/challenges/challenges/MLGChallenge.java new file mode 100644 index 0000000..f2d765a --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/MLGChallenge.java @@ -0,0 +1,104 @@ +package de.fanta.challenges.challenges; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ChatUtil; +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.GameRule; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.WorldCreator; +import org.bukkit.WorldType; +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 MLGChallenge { + + private static Challenges plugin; + private static Random random; + private static boolean mlgActive; + + public static int timeSinceMLG; // seconds + public static int maxMLGTime; // seconds + + public MLGChallenge(Challenges plugin) { + MLGChallenge.plugin = plugin; + random = new Random(); + maxMLGTime = plugin.getConfig().getInt("mlg.maxtime"); + } + + public static 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 static boolean triggerMLG() { + if (plugin.getConfig().getBoolean("mlg.enabled") && !mlgActive && Bukkit.getOnlinePlayers().size() >= 1) { + mlgActive = true; + ChatUtil.sendBrodcastMessage("Zeit für einen MLG! Viel Glück!"); + timeSinceMLG = 0; + for (Player p : Bukkit.getOnlinePlayers()) { + if (p.getGameMode() == GameMode.SURVIVAL && !p.isDead()) { + tpMLG(p); + } + } + return true; + } + return false; + } + + public static 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); + int rndX = random.nextInt(50); + int rndZ = random.nextInt(50); + Location oldloc = p.getLocation(); + + Location newloc = new Location(Bukkit.getWorld("mlg_challenge"), p.getLocation().getBlockX() + rndX, (50 + rndY), p.getLocation().getBlockZ() + rndZ); + p.teleport(newloc); + mlgResult(p, oldloc, inv); + } + + public static 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 static 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 static void setMlgActive(boolean mlgActive) { + MLGChallenge.mlgActive = mlgActive; + } +} diff --git a/src/main/java/de/fanta/challenges/challenges/NoFallDamageChallenge.java b/src/main/java/de/fanta/challenges/challenges/NoFallDamageChallenge.java new file mode 100644 index 0000000..11f0033 --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/NoFallDamageChallenge.java @@ -0,0 +1,24 @@ +package de.fanta.challenges.challenges; + +import de.fanta.challenges.Challenges; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageEvent; + +public class NoFallDamageChallenge implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onDamage(EntityDamageEvent e) { + if (e.getEntity() instanceof Player p) { + if (e.getCause() == EntityDamageEvent.DamageCause.FALL) { + if (plugin.getConfig().getBoolean("deathonfall") && plugin.getTimer().isRunning()) { + //Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> p.setHealth(0), 1); + p.setHealth(0); + } + } + } + } +} diff --git a/src/main/java/de/fanta/challenges/challenges/NoJumpChallenge.java b/src/main/java/de/fanta/challenges/challenges/NoJumpChallenge.java new file mode 100644 index 0000000..977ce40 --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/NoJumpChallenge.java @@ -0,0 +1,24 @@ +package de.fanta.challenges.challenges; + +import com.destroystokyo.paper.event.player.PlayerJumpEvent; +import de.fanta.challenges.Challenges; +import org.bukkit.GameMode; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +public class NoJumpChallenge implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onPlayerJump(PlayerJumpEvent e) { + Player p = e.getPlayer(); + if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) { + if (plugin.getConfig().getBoolean("deathonjump")) { + p.setHealth(0); + } + } + } +} + diff --git a/src/main/java/de/fanta/challenges/challenges/NoSneakChallenge.java b/src/main/java/de/fanta/challenges/challenges/NoSneakChallenge.java new file mode 100644 index 0000000..ed31629 --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/NoSneakChallenge.java @@ -0,0 +1,25 @@ +package de.fanta.challenges.challenges; + +import de.fanta.challenges.Challenges; +import org.bukkit.GameMode; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerToggleSneakEvent; + +public class NoSneakChallenge implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onPlayerSneak(PlayerToggleSneakEvent e) { + Player p = e.getPlayer(); + if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) { + if (!p.isSneaking()) { + if (plugin.getConfig().getBoolean("damageonsneak")) { + p.damage(plugin.getConfig().getDouble("sneakdmg")); + } + } + } + } +} diff --git a/src/main/java/de/fanta/challenges/challenges/NoSprintChallenge.java b/src/main/java/de/fanta/challenges/challenges/NoSprintChallenge.java new file mode 100644 index 0000000..b3c73d2 --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/NoSprintChallenge.java @@ -0,0 +1,25 @@ +package de.fanta.challenges.challenges; + +import de.fanta.challenges.Challenges; +import org.bukkit.GameMode; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerToggleSprintEvent; + +public class NoSprintChallenge implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onPlayerSprint(PlayerToggleSprintEvent e) { + Player p = e.getPlayer(); + if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) { + if (!p.isSprinting()) { + if (plugin.getConfig().getBoolean("deathonsprint")) { + p.setHealth(0); + } + } + } + } +} diff --git a/src/main/java/de/fanta/challenges/challenges/NoTradingChallenge.java b/src/main/java/de/fanta/challenges/challenges/NoTradingChallenge.java new file mode 100644 index 0000000..0bc6658 --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/NoTradingChallenge.java @@ -0,0 +1,21 @@ +package de.fanta.challenges.challenges; + +import de.fanta.challenges.Challenges; +import org.bukkit.entity.EntityType; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerInteractEntityEvent; + +public class NoTradingChallenge implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onEntityClick(PlayerInteractEntityEvent e) { + if (e.getRightClicked().getType() == EntityType.VILLAGER) { + if (!plugin.getConfig().getBoolean("allowtrading") && plugin.getTimer().isRunning()) { + e.setCancelled(true); + } + } + } +} diff --git a/src/main/java/de/fanta/challenges/challenges/RIPBoden.java b/src/main/java/de/fanta/challenges/challenges/RIPBoden.java deleted file mode 100644 index 3f0526e..0000000 --- a/src/main/java/de/fanta/challenges/challenges/RIPBoden.java +++ /dev/null @@ -1,48 +0,0 @@ -package de.fanta.challenges.challenges; - -import de.fanta.challenges.Challenges; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.scheduler.BukkitRunnable; - -import java.util.ArrayList; - -public class RIPBoden { - private static final Challenges plugin = Challenges.getPlugin(); - public static ArrayList LAVA_BLOCKS = new ArrayList<>(); - - public static void setMagma(Block b, Material old) { - new BukkitRunnable() { - - @Override - public void run() { - b.setType(Material.MAGMA_BLOCK); - setLava(b, old); - } - }.runTaskLater(plugin, 20L); - } - - public static void setLava(Block b, Material old) { - new BukkitRunnable() { - - @Override - public void run() { - b.setType(Material.LAVA); - setOld(b, old); - } - }.runTaskLater(plugin, 60L); - } - - public static void setOld(Block b, Material old) { - new BukkitRunnable() { - - @Override - public void run() { - if (b.getType() == Material.LAVA || b.getType() == Material.OBSIDIAN || b.getType() == Material.COBBLESTONE || b.getType() == Material.STONE) { - b.setType(old); - } - LAVA_BLOCKS.remove(b); - } - }.runTaskLater(plugin, 200L); - } -} diff --git a/src/main/java/de/fanta/challenges/challenges/RandomDrops.java b/src/main/java/de/fanta/challenges/challenges/RandomDrops.java deleted file mode 100644 index 4a2ea8e..0000000 --- a/src/main/java/de/fanta/challenges/challenges/RandomDrops.java +++ /dev/null @@ -1,65 +0,0 @@ -package de.fanta.challenges.challenges; - -import java.io.IOException; -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 final HashMap drops = new HashMap<>(); - - public RandomDrops() { - this.BLOCKS = (ArrayList) Arrays.stream(Material.values()).filter(mat -> (mat.isBlock() && mat != Material.AIR && mat != Material.CAVE_AIR && mat != Material.VOID_AIR)).collect(Collectors.toList()); - this.ITEM_DROPS = (ArrayList) Arrays.stream(Material.values()).filter(mat -> (mat.isItem() && mat != Material.FILLED_MAP)).collect(Collectors.toList()); - } - - public void shuffleItems() { - Collections.shuffle(this.ITEM_DROPS); - ArrayList itemDropsCopy = new ArrayList<>(this.ITEM_DROPS); - 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 -> entry.getKey() + ":" + entry.getValue()).collect(Collectors.toList())); - try { - Challenges.getPlugin().RndDropsConfig.save(Challenges.getPlugin().RndDropsConfigFile); - } catch (IOException e) { - e.printStackTrace(); - } - } - - 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/challenges/RandomDropsChallenge.java b/src/main/java/de/fanta/challenges/challenges/RandomDropsChallenge.java new file mode 100644 index 0000000..4df7d58 --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/RandomDropsChallenge.java @@ -0,0 +1,107 @@ +package de.fanta.challenges.challenges; + +import java.io.IOException; +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; +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 RandomDropsChallenge implements Listener { + private final ArrayList BLOCKS; + + private final ArrayList ITEM_DROPS; + + private final HashMap drops = new HashMap<>(); + + private final Challenges plugin = Challenges.getPlugin(); + + public RandomDropsChallenge() { + this.BLOCKS = (ArrayList) Arrays.stream(Material.values()).filter(mat -> (mat.isBlock() && mat != Material.AIR && mat != Material.CAVE_AIR && mat != Material.VOID_AIR)).collect(Collectors.toList()); + this.ITEM_DROPS = (ArrayList) Arrays.stream(Material.values()).filter(mat -> (mat.isItem() && mat != Material.FILLED_MAP)).collect(Collectors.toList()); + } + + @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()))); + } + } + + @EventHandler + public void onBlockExplode(BlockExplodeEvent e) { + if (this.plugin.getConfig().getBoolean("rnddrops") && plugin.getTimer().isRunning()) { + 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") && plugin.getTimer().isRunning()) { + 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(); + } + } + + public void shuffleItems() { + Collections.shuffle(this.ITEM_DROPS); + ArrayList itemDropsCopy = new ArrayList<>(this.ITEM_DROPS); + 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 -> entry.getKey() + ":" + entry.getValue()).collect(Collectors.toList())); + try { + Challenges.getPlugin().RndDropsConfig.save(Challenges.getPlugin().RndDropsConfigFile); + } catch (IOException e) { + e.printStackTrace(); + } + } + + 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/challenges/RandomEffectChallenge.java b/src/main/java/de/fanta/challenges/challenges/RandomEffectChallenge.java index 113bf8a..16c992d 100644 --- a/src/main/java/de/fanta/challenges/challenges/RandomEffectChallenge.java +++ b/src/main/java/de/fanta/challenges/challenges/RandomEffectChallenge.java @@ -21,25 +21,22 @@ @EventHandler public void onPlayerMove(PlayerMoveEvent e) { - if (plugin.getConfig().getBoolean("randomeffect")) { - if (plugin.getTimer().isRunning()) { - Player p = e.getPlayer(); - long chunkkey = p.getLocation().getChunk().getChunkKey(); - Random random = new Random(); - PotionEffectType[] values = Arrays.stream(PotionEffectType.values()).filter(effect -> (!effect.equals(PotionEffectType.HARM))).toArray(PotionEffectType[]::new); - PotionEffect randomEffect = new PotionEffect(values[random.nextInt((int) Arrays.stream(values).count())], 999999, random.nextInt(1 + 4) + 1 - 1); - if (!chunkPotionEffectMap.containsKey(chunkkey)) { - chunkPotionEffectMap.put(chunkkey, randomEffect); - } - if (chunkPotionEffectMap.get(chunkkey) != playerPotionEffectMap.get(p)) { - if (playerPotionEffectMap.get(p) != null) { + if (plugin.getConfig().getBoolean("randomeffect") && plugin.getTimer().isRunning()) { + Player p = e.getPlayer(); + long chunkkey = p.getLocation().getChunk().getChunkKey(); + Random random = new Random(); + PotionEffectType[] values = Arrays.stream(PotionEffectType.values()).filter(effect -> (!effect.equals(PotionEffectType.HARM))).toArray(PotionEffectType[]::new); + PotionEffect randomEffect = new PotionEffect(values[random.nextInt((int) Arrays.stream(values).count())], 999999, random.nextInt(5)); + if (!chunkPotionEffectMap.containsKey(chunkkey)) { + chunkPotionEffectMap.put(chunkkey, randomEffect); + } + if (chunkPotionEffectMap.get(chunkkey) != playerPotionEffectMap.get(p)) { + if (playerPotionEffectMap.get(p) != null) { p.removePotionEffect(playerPotionEffectMap.get(p).getType()); } p.addPotionEffect(chunkPotionEffectMap.get(chunkkey)); playerPotionEffectMap.put(p, chunkPotionEffectMap.get(chunkkey)); } - - } } } } diff --git a/src/main/java/de/fanta/challenges/challenges/ShareDamageChallenge.java b/src/main/java/de/fanta/challenges/challenges/ShareDamageChallenge.java new file mode 100644 index 0000000..24b9ac1 --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/ShareDamageChallenge.java @@ -0,0 +1,52 @@ +package de.fanta.challenges.challenges; + +import de.fanta.challenges.Challenges; +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageEvent; + +import java.util.Random; + +public class ShareDamageChallenge implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onDamage(EntityDamageEvent e) { + if (e.getEntity() instanceof Player p) { + + if (!plugin.getVanish().isVanish(p)) { + if (plugin.getConfig().getBoolean("sharedmg") && plugin.getTimer().isRunning()) { + int rnd = new Random().nextInt(Bukkit.getOnlinePlayers().size()); + Player rp = (Player) Bukkit.getServer().getOnlinePlayers().toArray()[rnd]; + p.setHealth(rp.getHealth()); + } + } + + if (plugin.getConfig().getBoolean("sharedmg") && plugin.getTimer().isRunning()) { + for (Player pp : Bukkit.getOnlinePlayers()) { + if (pp != p) { + if (!plugin.getVanish().isVanish(pp)) { + 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); + } + + } + + } + } + } + } + } + + } +} diff --git a/src/main/java/de/fanta/challenges/challenges/TiedTogether.java b/src/main/java/de/fanta/challenges/challenges/TiedTogether.java deleted file mode 100644 index 0999456..0000000 --- a/src/main/java/de/fanta/challenges/challenges/TiedTogether.java +++ /dev/null @@ -1,58 +0,0 @@ -package de.fanta.challenges.challenges; - -import de.fanta.challenges.Challenges; -import org.bukkit.Bukkit; -import org.bukkit.GameMode; -import org.bukkit.Location; -import org.bukkit.entity.Player; - -public class TiedTogether { - - private static final Challenges plugin = Challenges.getPlugin(); - - public void calculateDistances() { - Player minXPlayer = plugin.getCurrentEditor(); - Player maxXPlayer = plugin.getCurrentEditor(); - - Player minYPlayer = plugin.getCurrentEditor(); - Player maxYPlayer = plugin.getCurrentEditor(); - - Player minZPlayer = plugin.getCurrentEditor(); - Player maxZPlayer = plugin.getCurrentEditor(); - - for (Player p : Bukkit.getOnlinePlayers()) { - if (plugin.getVanish().isVanish(p) || p.getGameMode() != GameMode.SURVIVAL) { - continue; - } - if (p.getLocation().getX() < minXPlayer.getLocation().getX()) { - minXPlayer = p; - } - if (p.getLocation().getX() > maxXPlayer.getLocation().getX()) { - maxXPlayer = p; - } - if (p.getLocation().getY() < minYPlayer.getLocation().getY()) { - minYPlayer = p; - } - if (p.getLocation().getY() > maxYPlayer.getLocation().getY()) { - maxYPlayer = p; - } - if (p.getLocation().getZ() < minZPlayer.getLocation().getZ()) { - minZPlayer = p; - } - if (p.getLocation().getZ() > maxZPlayer.getLocation().getZ()) { - maxZPlayer = p; - } - double xCenter = (maxXPlayer.getLocation().getX() + minXPlayer.getLocation().getX()) / 2; - double yCenter = (maxYPlayer.getLocation().getY() + minYPlayer.getLocation().getY()) / 2; - double zCenter = (maxZPlayer.getLocation().getZ() + minZPlayer.getLocation().getZ()) / 2; - Location center = new Location(plugin.getCurrentEditor().getWorld(), xCenter, yCenter, zCenter); - - if (p.getLocation().distanceSquared(center) > (plugin.getConfig().getDouble("playerrange") / 2) * (plugin.getConfig().getDouble("playerrange") / 2)) { - for (Player player : Bukkit.getOnlinePlayers()) { - player.damage(4); - } - } - } - } -} - diff --git a/src/main/java/de/fanta/challenges/challenges/TiedTogetherChallenge.java b/src/main/java/de/fanta/challenges/challenges/TiedTogetherChallenge.java new file mode 100644 index 0000000..9e6ed9d --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/TiedTogetherChallenge.java @@ -0,0 +1,85 @@ +package de.fanta.challenges.challenges; + +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.Location; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.PlayerMoveEvent; + +public class TiedTogetherChallenge implements Listener { + + private static final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onDeath(PlayerDeathEvent e) { + if (plugin.getConfig().getBoolean("tiedtogether")) { + plugin.getTimer().stopTimer(); + for (Player p : Bukkit.getOnlinePlayers()) { + p.setGameMode(GameMode.SPECTATOR); + } + ChatUtil.sendBrodcastMessage("Ein Spieler hat sich zu weit entfernt! Die Challenge ist verloren!"); + ChatUtil.sendBrodcastMessage("Verschwendete Zeit: " + plugin.getTimer().formatTime(ChatColor.GOLD)); + ChatUtil.sendBrodcastMessage("Welt Seed: " + Bukkit.getWorlds().get(0).getSeed()); + ChatUtil.sendBrodcastMessage("Um alle wiederzubeleben benutze /revive ALL"); + } + } + + @EventHandler + public void onMove(PlayerMoveEvent e) { + if (plugin.getConfig().getBoolean("tiedtogether") && plugin.getTimer().isRunning()) { + calculateDistances(); + } + } + + private void calculateDistances() { + Player minXPlayer = plugin.getCurrentEditor(); + Player maxXPlayer = plugin.getCurrentEditor(); + + Player minYPlayer = plugin.getCurrentEditor(); + Player maxYPlayer = plugin.getCurrentEditor(); + + Player minZPlayer = plugin.getCurrentEditor(); + Player maxZPlayer = plugin.getCurrentEditor(); + + for (Player p : Bukkit.getOnlinePlayers()) { + if (plugin.getVanish().isVanish(p) || p.getGameMode() != GameMode.SURVIVAL) { + continue; + } + if (p.getLocation().getX() < minXPlayer.getLocation().getX()) { + minXPlayer = p; + } + if (p.getLocation().getX() > maxXPlayer.getLocation().getX()) { + maxXPlayer = p; + } + if (p.getLocation().getY() < minYPlayer.getLocation().getY()) { + minYPlayer = p; + } + if (p.getLocation().getY() > maxYPlayer.getLocation().getY()) { + maxYPlayer = p; + } + if (p.getLocation().getZ() < minZPlayer.getLocation().getZ()) { + minZPlayer = p; + } + if (p.getLocation().getZ() > maxZPlayer.getLocation().getZ()) { + maxZPlayer = p; + } + double xCenter = (maxXPlayer.getLocation().getX() + minXPlayer.getLocation().getX()) / 2; + double yCenter = (maxYPlayer.getLocation().getY() + minYPlayer.getLocation().getY()) / 2; + double zCenter = (maxZPlayer.getLocation().getZ() + minZPlayer.getLocation().getZ()) / 2; + Location center = new Location(plugin.getCurrentEditor().getWorld(), xCenter, yCenter, zCenter); + + if (p.getLocation().distanceSquared(center) > (plugin.getConfig().getDouble("playerrange") / 2) * (plugin.getConfig().getDouble("playerrange") / 2)) { + for (Player player : Bukkit.getOnlinePlayers()) { + player.damage(4); + } + } + } + } +} + diff --git a/src/main/java/de/fanta/challenges/challenges/XPChallenge.java b/src/main/java/de/fanta/challenges/challenges/XPChallenge.java new file mode 100644 index 0000000..c14f657 --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/XPChallenge.java @@ -0,0 +1,25 @@ +package de.fanta.challenges.challenges; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.utils.ChatUtil; +import org.bukkit.GameMode; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerExpChangeEvent; + +public class XPChallenge implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onPlayerGetXP(PlayerExpChangeEvent e) { + Player p = e.getPlayer(); + if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) { + if (plugin.getConfig().getBoolean("xpdeath")) { + p.setHealth(0); + } + ChatUtil.sendBrodcastMessage(e.getPlayer() + " hat XP eingesammelt!"); + } + } +} diff --git a/src/main/java/de/fanta/challenges/commands/BackpackCommand.java b/src/main/java/de/fanta/challenges/commands/BackpackCommand.java index 747f7dc..f780264 100644 --- a/src/main/java/de/fanta/challenges/commands/BackpackCommand.java +++ b/src/main/java/de/fanta/challenges/commands/BackpackCommand.java @@ -1,6 +1,7 @@ package de.fanta.challenges.commands; import de.fanta.challenges.Challenges; +import de.fanta.challenges.challenges.BingoChallengeEvent; import de.fanta.challenges.utils.ChatUtil; import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; @@ -21,7 +22,7 @@ ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); return true; } - if (!plugin.getBingo().isRunning()) { + if (!BingoChallengeEvent.isRunning()) { plugin.getBackpack().open(p); } else { ChatUtil.sendWarningMessage(p, "Bei einem Bingo Event kannst du den Backpack nicht Nutzen!"); diff --git a/src/main/java/de/fanta/challenges/commands/ForceMLGCommand.java b/src/main/java/de/fanta/challenges/commands/ForceMLGCommand.java index dfd7d21..8033068 100644 --- a/src/main/java/de/fanta/challenges/commands/ForceMLGCommand.java +++ b/src/main/java/de/fanta/challenges/commands/ForceMLGCommand.java @@ -1,6 +1,7 @@ package de.fanta.challenges.commands; import de.fanta.challenges.Challenges; +import de.fanta.challenges.challenges.MLGChallenge; import de.fanta.challenges.utils.ChatUtil; import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; @@ -23,7 +24,7 @@ return true; } if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { - if (!plugin.getTimer().triggerMLG()) { + if (!MLGChallenge.triggerMLG()) { ChatUtil.sendWarningMessage(sender, "Ein MLG findet bereits statt! Oder MLGs sind nicht aktiv."); } } else if (plugin.getCurrentEditor() != null) { diff --git a/src/main/java/de/fanta/challenges/commands/revive/ReviveCommand.java b/src/main/java/de/fanta/challenges/commands/revive/ReviveCommand.java index e4f4a8a..a82eeac 100644 --- a/src/main/java/de/fanta/challenges/commands/revive/ReviveCommand.java +++ b/src/main/java/de/fanta/challenges/commands/revive/ReviveCommand.java @@ -1,6 +1,7 @@ package de.fanta.challenges.commands.revive; import de.fanta.challenges.Challenges; +import de.fanta.challenges.challenges.MLGChallenge; import de.fanta.challenges.utils.ChatUtil; import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; @@ -30,7 +31,7 @@ String next = args.next(); if (next.equalsIgnoreCase("all")) { - plugin.getTimer().setMlgActive(false); + MLGChallenge.setMlgActive(false); for (Player p : Bukkit.getOnlinePlayers()) { p.setHealth(p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()); p.setGameMode(GameMode.SURVIVAL); diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/EventItemsGui.java b/src/main/java/de/fanta/challenges/guis/eventgui/EventItemsGui.java index a1cd5e5..683f2cc 100644 --- a/src/main/java/de/fanta/challenges/guis/eventgui/EventItemsGui.java +++ b/src/main/java/de/fanta/challenges/guis/eventgui/EventItemsGui.java @@ -1,6 +1,6 @@ package de.fanta.challenges.guis.eventgui; -import de.fanta.challenges.challenges.Bingo; +import de.fanta.challenges.challenges.BingoChallengeEvent; import de.fanta.challenges.Challenges; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -46,9 +46,8 @@ public static void openPlayerInv(Player player, Player sender) { Inventory inventory = Bukkit.createInventory(player, InventoryType.DISPENSER, Challenges.GUIPREFIX + " >> Bingo"); - Bingo bingo = plugin.getBingo(); - List playerMaterials = bingo.getPlayerMaterials().getOrDefault(player.getUniqueId(), new ArrayList<>()); - bingo.getMaterials().forEach(material -> { + List playerMaterials = BingoChallengeEvent.getPlayerMaterials().getOrDefault(player.getUniqueId(), new ArrayList<>()); + BingoChallengeEvent.getMaterials().forEach(material -> { ItemStack itemStack = new ItemStack(material); if (playerMaterials.contains(material)) { ItemMeta itemMeta = itemStack.getItemMeta(); diff --git a/src/main/java/de/fanta/challenges/listeners/BingoListener.java b/src/main/java/de/fanta/challenges/listeners/BingoListener.java deleted file mode 100644 index aac7a1a..0000000 --- a/src/main/java/de/fanta/challenges/listeners/BingoListener.java +++ /dev/null @@ -1,28 +0,0 @@ -package de.fanta.challenges.listeners; - -import de.fanta.challenges.challenges.Bingo; -import de.fanta.challenges.Challenges; -import de.fanta.challenges.events.TimerChangedEvent; -import de.fanta.challenges.guis.eventgui.EventItemsGui; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; - -import java.util.Objects; - -public class BingoListener implements Listener { - - private final Challenges plugin = Challenges.getPlugin(); - - @EventHandler - public void onActivation(TimerChangedEvent event){ - if (Objects.equals(plugin.getConfig().getString("event.type"), "bingo")) { - Bingo bingo = plugin.getBingo(); - if (event.isRunning()) { - bingo.setMaterials(EventItemsGui.getEventItems()); - bingo.setRunning(true); - } else { - bingo.setRunning(false); - } - } - } -} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java b/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java index 2bc69b6..ba49676 100644 --- a/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java +++ b/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java @@ -10,8 +10,6 @@ import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockDropItemEvent; -import org.bukkit.event.block.BlockExplodeEvent; -import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.inventory.ItemStack; public class BlockDestroyListener implements Listener { @@ -20,10 +18,6 @@ @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); } @@ -52,30 +46,8 @@ } } - @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 index 45f9d4a..3a5e70c 100644 --- a/src/main/java/de/fanta/challenges/listeners/DamageListener.java +++ b/src/main/java/de/fanta/challenges/listeners/DamageListener.java @@ -1,23 +1,13 @@ package de.fanta.challenges.listeners; -import com.destroystokyo.paper.event.player.PlayerJumpEvent; 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.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; import java.text.DecimalFormat; @@ -27,88 +17,29 @@ @EventHandler public void onDamage(EntityDamageEvent e) { - if (!plugin.getTimer().isRunning()) { - e.setCancelled(true); - return; - } if (e.getEntity() instanceof Player p) { - if (plugin.getVanish().isVanish(p)) { - return; - } - } - - if (e.getEntity() instanceof Player p) { - String dmg = new DecimalFormat("#.##").format(e.getFinalDamage()); - if ((e.getFinalDamage() > 0) && (e.getFinalDamage() < 10000)) { - if (e.getCause() == DamageCause.FALL) { - if (plugin.getConfig().getBoolean("deathonfall")) { - if (plugin.getConfig().getBoolean("dmginchat")) { - if (!e.getCause().name().startsWith("ENTITY_")) { + if (plugin.getTimer().isRunning() && plugin.getVanish().isVanish(p)) { + String dmg = new DecimalFormat("#.##").format(e.getFinalDamage()); + if (plugin.getConfig().getBoolean("dmginchat")) { + if ((e.getFinalDamage() > 0) && (e.getFinalDamage() < 10000)) { + if (!e.getCause().name().startsWith("ENTITY_")) { + if (e.getCause() == DamageCause.FALL) { + ChatUtil.sendBrodcastMessage(ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + dmg + ChatUtil.GREEN + " HP Schaden genommen durch " + ChatUtil.ORANGE + e.getCause()); + } else if (e.getCause() == DamageCause.CUSTOM) { + ChatUtil.sendBrodcastMessage(ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + plugin.getConfig().getDouble("sneakdmg") + ChatUtil.GREEN + " HP Schaden genommen durch" + ChatUtil.ORANGE + " Server"); + } else { ChatUtil.sendBrodcastMessage(ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + dmg + ChatUtil.GREEN + " HP Schaden genommen durch " + ChatUtil.ORANGE + e.getCause()); } } - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> p.setHealth(0), 1); - } else if (plugin.getConfig().getBoolean("dmginchat")) { - if (!e.getCause().name().startsWith("ENTITY_")) { - ChatUtil.sendBrodcastMessage(ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + dmg + ChatUtil.GREEN + " HP Schaden genommen durch " + ChatUtil.ORANGE + e.getCause()); - } - - } - } else if (e.getCause() == DamageCause.CUSTOM) { - if (!p.isSneaking() && (plugin.getConfig().getBoolean("dmginchat"))) { - ChatUtil.sendBrodcastMessage(ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + plugin.getConfig().getDouble("sneakdmg") + ChatUtil.GREEN + " HP Schaden genommen durch" + ChatUtil.ORANGE + " Server"); - } - } else if (plugin.getConfig().getBoolean("dmginchat")) { - if (!e.getCause().name().startsWith("ENTITY_")) { - ChatUtil.sendBrodcastMessage(ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + dmg + ChatUtil.GREEN + " HP Schaden genommen durch " + ChatUtil.ORANGE + e.getCause()); - } - - } - if (plugin.getConfig().getBoolean("sharedmg")) { - for (Player pp : Bukkit.getOnlinePlayers()) { - if (pp != p) { - if (!plugin.getVanish().isVanish(pp)) { - 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 (!plugin.getTimer().isRunning()) { - e.setCancelled(true); - return; - } - if (e.getEntity() instanceof Player p) { - if (plugin.getVanish().isVanish(p)) { - return; - } - } - - if (e.getDamager() instanceof Player p) { - if (plugin.getVanish().isVanish(p)) { - return; - } - } - - if ((e.getEntity() instanceof Player p) && (e.getFinalDamage() > 0) && (plugin.getTimer().isRunning())) { + if ((e.getEntity() instanceof Player p) && (e.getFinalDamage() > 0) && (plugin.getTimer().isRunning()) && !plugin.getVanish().isVanish(p)) { String dmg = new DecimalFormat("#.##").format(e.getFinalDamage()); if ((e.getCause() == DamageCause.ENTITY_ATTACK || e.getCause() == DamageCause.ENTITY_EXPLOSION) && plugin.getConfig().getBoolean("dmginchat")) { ChatUtil.sendBrodcastMessage(ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat " + ChatUtil.ORANGE + dmg + ChatUtil.GREEN + " HP Schaden genommen durch " + ChatUtil.ORANGE + e.getDamager().getName()); @@ -116,121 +47,5 @@ } } } - - @EventHandler - public void onPlayerSneak(PlayerToggleSneakEvent e) { - Player p = e.getPlayer(); - if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) { - 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 && !plugin.getVanish().isVanish(p)) { - 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 && !plugin.getVanish().isVanish(p)) { - 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 (!plugin.getTimer().isRunning()) { - e.setCancelled(true); - return; - } - if (e.getEntity() instanceof Player p) { - if (e.getEntity() instanceof Player) { - if (plugin.getConfig().getBoolean("clinvdmg")) { - if (plugin.getTimer().isRunning() && p.getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) { - for (Player pp : Bukkit.getOnlinePlayers()) { - pp.getInventory().clear(); - ChatUtil.sendNormalMessage(pp, ChatUtil.BLUE + p.getName() + ChatUtil.ORANGE + " 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 && !plugin.getVanish().isVanish(p)) { - 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 index 7172a48..d057768 100644 --- a/src/main/java/de/fanta/challenges/listeners/DeathListener.java +++ b/src/main/java/de/fanta/challenges/listeners/DeathListener.java @@ -41,36 +41,5 @@ ChatUtil.sendNormalMessage(editor, "§6Benutze §c/revive " + e.getEntity().getName() + " [world] [x] [y] [z] §6um ihn wiederzubeleben!"); } } - - if (plugin.getConfig().getBoolean("tiedtogether")) { - plugin.getTimer().stopTimer(); - for (Player p : Bukkit.getOnlinePlayers()) { - p.setGameMode(GameMode.SPECTATOR); - } - ChatUtil.sendBrodcastMessage("Ein Spieler hat sich zu weit entfernt! Die Challenge ist verloren!"); - ChatUtil.sendBrodcastMessage("Verschwendete Zeit: " + plugin.getTimer().formatTime(ChatColor.GOLD)); - ChatUtil.sendBrodcastMessage("Welt Seed: " + Bukkit.getWorlds().get(0).getSeed()); - ChatUtil.sendBrodcastMessage("Um alle wiederzubeleben benutze /revive ALL"); - } - } - - @EventHandler - public void DragonDeath(EntityDeathEvent e) { - if (Objects.equals(plugin.getConfig().getString("event.type"), "nix")) { - if ((e.getEntity() instanceof EnderDragon && plugin.getConfig().getBoolean("target")) || (e.getEntity() instanceof Wither && !plugin.getConfig().getBoolean("target"))) { - plugin.getTimer().stopTimer(); - ChatUtil.sendBrodcastMessage("" + ChatColor.GREEN + ChatColor.BOLD + ChatColor.MAGIC + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); - ChatUtil.sendBrodcastMessage(""); - ChatUtil.sendBrodcastMessage(""); - ChatUtil.sendBrodcastMessage(""); - ChatUtil.sendBrodcastMessage(" §8>> §7Der §2§l" + e.getEntity().getName().toLowerCase() + " §7wurde besiegt."); - ChatUtil.sendBrodcastMessage(" §8>> §7Benötigte Zeit: §2§l" + plugin.getTimer().formatTime(ChatColor.GREEN) + "§7!"); - ChatUtil.sendBrodcastMessage(" §8>> §7Seed: §2§l" + Bukkit.getWorlds().get(0).getSeed()); - ChatUtil.sendBrodcastMessage(""); - ChatUtil.sendBrodcastMessage(""); - ChatUtil.sendBrodcastMessage(""); - ChatUtil.sendBrodcastMessage("" + ChatColor.GREEN + ChatColor.BOLD + ChatColor.MAGIC + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); - } - } } } diff --git a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java index 43e8e75..578677e 100644 --- a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java +++ b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java @@ -1,7 +1,20 @@ package de.fanta.challenges.listeners; import de.fanta.challenges.Challenges; +import de.fanta.challenges.challenges.ChallengeGoals; +import de.fanta.challenges.challenges.ClearInventoryByDamageChallenge; +import de.fanta.challenges.challenges.CraftingTableChallenge; +import de.fanta.challenges.challenges.FloorIsLavaChallenge; +import de.fanta.challenges.challenges.NoFallDamageChallenge; +import de.fanta.challenges.challenges.NoJumpChallenge; +import de.fanta.challenges.challenges.NoSneakChallenge; +import de.fanta.challenges.challenges.NoSprintChallenge; +import de.fanta.challenges.challenges.NoTradingChallenge; +import de.fanta.challenges.challenges.RandomDropsChallenge; import de.fanta.challenges.challenges.RandomEffectChallenge; +import de.fanta.challenges.challenges.ShareDamageChallenge; +import de.fanta.challenges.challenges.TiedTogetherChallenge; +import de.fanta.challenges.challenges.XPChallenge; import de.fanta.challenges.guis.ResetGui; import de.fanta.challenges.guis.TimerGui; import de.fanta.challenges.guis.eventgui.EventGui; @@ -32,10 +45,24 @@ pM.registerEvents(new ServerSettingsGui(), plugin); pM.registerEvents(new OtherSettingsGui(), plugin); pM.registerEvents(new EventGui(), plugin); - pM.registerEvents(new BingoListener(), plugin); pM.registerEvents(new EventItemsGui(), plugin); pM.registerEvents(new FurnaceListener(), plugin); pM.registerEvents(new CommandBlockListener(), plugin); + + pM.registerEvents(new ChallengeGoals(), plugin); + pM.registerEvents(new RandomEffectChallenge(), plugin); + pM.registerEvents(new CraftingTableChallenge(), plugin); + pM.registerEvents(new RandomDropsChallenge(), plugin); + pM.registerEvents(new NoTradingChallenge(), plugin); + pM.registerEvents(new ShareDamageChallenge(), plugin); + pM.registerEvents(new FloorIsLavaChallenge(), plugin); + pM.registerEvents(new XPChallenge(), plugin); + pM.registerEvents(new NoFallDamageChallenge(), plugin); + pM.registerEvents(new NoSprintChallenge(), plugin); + pM.registerEvents(new NoJumpChallenge(), plugin); + pM.registerEvents(new ClearInventoryByDamageChallenge(), plugin); + pM.registerEvents(new TiedTogetherChallenge(), plugin); + pM.registerEvents(new NoSneakChallenge(), plugin); } } diff --git a/src/main/java/de/fanta/challenges/listeners/InteractListener.java b/src/main/java/de/fanta/challenges/listeners/InteractListener.java index 4944bfa..861fe79 100644 --- a/src/main/java/de/fanta/challenges/listeners/InteractListener.java +++ b/src/main/java/de/fanta/challenges/listeners/InteractListener.java @@ -1,10 +1,7 @@ package de.fanta.challenges.listeners; import de.fanta.challenges.Challenges; -import de.fanta.challenges.utils.ChatUtil; 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; @@ -18,11 +15,6 @@ @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); } @@ -31,11 +23,6 @@ @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/PlayerListener.java b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java index 61bb190..a7673e8 100644 --- a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java +++ b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java @@ -1,33 +1,26 @@ package de.fanta.challenges.listeners; import de.fanta.challenges.Challenges; -import de.fanta.challenges.challenges.Bingo; -import de.fanta.challenges.challenges.RIPBoden; import de.fanta.challenges.events.PlayerCountChangedEvent; -import de.fanta.challenges.guis.eventgui.EventItemsGui; import de.fanta.challenges.utils.ChatUtil; 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.World; -import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.EntityPotionEffectEvent; import org.bukkit.event.entity.EntityRegainHealthEvent; import org.bukkit.event.entity.EntityTargetLivingEntityEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.player.*; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; -import org.bukkit.potion.PotionEffect; -import org.bukkit.scheduler.BukkitRunnable; +import org.bukkit.event.player.PlayerAttemptPickupItemEvent; +import org.bukkit.event.player.PlayerDropItemEvent; +import org.bukkit.event.player.PlayerItemConsumeEvent; +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.kitteh.vanish.event.VanishStatusChangeEvent; import org.spigotmc.event.player.PlayerSpawnLocationEvent; @@ -62,25 +55,11 @@ @EventHandler public void onPickUpItem(PlayerAttemptPickupItemEvent e) { - ItemStack itemStack = e.getItem().getItemStack(); - Player player = e.getPlayer(); - Bingo bingo = plugin.getBingo(); - if (bingo.isRunning()) { - bingo.addDiscoveredItem(player, itemStack); - } if (!plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { e.setCancelled(true); } } -/* @SuppressWarnings("deprecation") //TODO Geht das jetzt auch ohne ? - @EventHandler - public void onPickItem(PlayerPickupItemEvent e) { - if (!plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { - e.setCancelled(true); - } - }*/ - @EventHandler public void onDropItem(PlayerDropItemEvent e) { Player p = e.getPlayer(); @@ -90,23 +69,6 @@ } @EventHandler - public void onInventoryClick(InventoryClickEvent e) { - if (e.getClickedInventory() == null) - return; - Bingo bingo = plugin.getBingo(); - Player player = (Player) e.getWhoClicked(); - Inventory playerInv = EventItemsGui.getPlayerInvs().get(player.getUniqueId()); - if (playerInv != null && playerInv.equals(e.getClickedInventory())) - return; - if (!bingo.isRunning()) - return; - ItemStack itemStack = e.getCurrentItem(); - if (itemStack != null && itemStack.getType() != Material.AIR) { - bingo.addDiscoveredItem(player, itemStack); - } - } - - @EventHandler public void onPayerMove(PlayerMoveEvent e) { Player player = e.getPlayer(); Location playerloc = player.getLocation(); @@ -119,66 +81,6 @@ } } } - if (plugin.getTimer().isRunning() && player.getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(player)) { - if (plugin.getConfig().getBoolean("lavafloor")) { - Location oldLoc = e.getFrom(); - Location newLoc = e.getTo(); - int oldx = oldLoc.getBlockX(); - int oldy = oldLoc.getBlockY(); - int oldz = oldLoc.getBlockZ(); - int newx = newLoc.getBlockX(); - int newy = newLoc.getBlockY(); - int newz = newLoc.getBlockZ(); - if (newx != oldx || newy != oldy || newz != oldz) { - new BukkitRunnable() { - @Override - public void run() { - Block b = player.getLocation().subtract(0, 1, 0).getBlock(); - if (!b.isPassable() && !RIPBoden.LAVA_BLOCKS.contains(b)) { - RIPBoden.LAVA_BLOCKS.add(b); - RIPBoden.setMagma(b, b.getType()); - } - } - }.runTaskLater(plugin, 1L); - } - } - } - if (plugin.getConfig().getBoolean("tiedtogether")) { - plugin.getTiedTogether().calculateDistances(); - } - } - - @EventHandler - public void onBucketFill(PlayerBucketFillEvent e) { - ItemStack itemStack = e.getItemStack(); - Player player = e.getPlayer(); - Bingo bingo = plugin.getBingo(); - if (bingo.isRunning()) { - if (itemStack != null) { - bingo.addDiscoveredItem(player, itemStack); - } - } - } - - @EventHandler - public void onBucketChatchFish(PlayerBucketEntityEvent e) { - ItemStack itemStack = e.getEntityBucket(); - Bingo bingo = plugin.getBingo(); - if (bingo.isRunning()) { - bingo.addDiscoveredItem(e.getPlayer(), itemStack); - } - } - - @EventHandler - public void onBucketEmpty(PlayerBucketEmptyEvent e) { - ItemStack itemStack = e.getItemStack(); - Player player = e.getPlayer(); - Bingo bingo = plugin.getBingo(); - if (bingo.isRunning()) { - if (itemStack != null) { - bingo.addDiscoveredItem(player, itemStack); - } - } } @EventHandler @@ -191,7 +93,6 @@ Location spawn = Bukkit.getWorlds().get(1).getSpawnLocation(); e.setRespawnLocation(spawn); } - if (!e.isBedSpawn() && !e.isAnchorSpawn()) { e.setRespawnLocation(getServer().getWorlds().get(0).getSpawnLocation().add(0.5, 0.0, 0.5)); } @@ -273,8 +174,4 @@ } } } - - @EventHandler - public void onEffekt(EntityPotionEffectEvent e) { - } } diff --git a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java index e3f6ff7..c36e86e 100644 --- a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java +++ b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java @@ -54,11 +54,6 @@ if (!plugin.getVanish().isVanish(p)) { ChatUtil.sendBrodcastMessage(ChatUtil.BLUE + p.getName() + ChatUtil.GREEN + " hat die Lobby betreten! " + ChatColor.of("#E4E737") + "[" + (Bukkit.getServer().getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers()) + "/" + 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()); - } if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) { plugin.getSBManager().setScoreboard(p); } diff --git a/src/main/java/de/fanta/challenges/listeners/VoidListener.java b/src/main/java/de/fanta/challenges/listeners/VoidListener.java index 7efb540..300a460 100644 --- a/src/main/java/de/fanta/challenges/listeners/VoidListener.java +++ b/src/main/java/de/fanta/challenges/listeners/VoidListener.java @@ -35,8 +35,9 @@ ItemStack randomItem = new ItemStack(materials.get(random.nextInt(materials.size()))); World world = Bukkit.getWorld("VOID"); Location loc = new Location(world, 0.5, 61, 0.5); - world.dropItem(loc, randomItem); - + if (world != null) { + world.dropItem(loc, randomItem); + } }, 10 * 20, 10 * 20); } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index c55bd4b..51fc368 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -24,7 +24,7 @@ mlg: enabled: false killall: false - maxtime: 600 + maxtime: 380 timertime: 0 firsttimerstart: false showtimer: true