diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java index ca6cf1b..6a62aa7 100644 --- a/src/main/java/de/fanta/challenges/Challenges.java +++ b/src/main/java/de/fanta/challenges/Challenges.java @@ -116,6 +116,7 @@ World world = Bukkit.getWorld("world"); world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); MLGChallenge.checkMLGWorld(); + setPvP(getConfig().getBoolean("pvp")); if (Bukkit.getMotd().equalsIgnoreCase("Challenge")) { plugin.getSBManager().initScoreboard(); } @@ -336,6 +337,15 @@ } } + public void setPvP(Boolean value) { + for (World w : plugin.getServer().getWorlds()) { + if (w != null) { + w.setPVP(value); + } + + } + } + public Timer getTimer() { return timer; } diff --git a/src/main/java/de/fanta/challenges/challenges/BedrockWallChallenge.java b/src/main/java/de/fanta/challenges/challenges/BedrockWallChallenge.java new file mode 100644 index 0000000..87c9509 --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/BedrockWallChallenge.java @@ -0,0 +1,44 @@ +package de.fanta.challenges.challenges; + +import de.fanta.challenges.Challenges; +import org.bukkit.Bukkit; +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.player.PlayerMoveEvent; + +public class BedrockWallChallenge implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onMove(PlayerMoveEvent e) { + Player p = e.getPlayer(); + if (plugin.getConfig().getBoolean("bedrockwall") && plugin.getTimer().isRunning()) { + if (!e.getTo().equals(e.getFrom())) { + Location loc = p.getLocation(); + setWall(loc); + } + } + + } + + private void setWall(Location loc) { + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + World world = loc.getWorld(); + int height = world.getMaxHeight() - world.getMinHeight(); + for (int y = 0; y < height; y++) { + for (int x = 0; x < 1; x++) { + Block block = loc.clone().add(x, y, 0).getBlock(); + if (!block.isSolid()) { + block.setType(Material.BEDROCK); + } + } + } + }, 20 * 10L); + } +} diff --git a/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java b/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java index b535229..cfda7a2 100644 --- a/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java +++ b/src/main/java/de/fanta/challenges/challenges/DeathrunChallengeEvent.java @@ -2,6 +2,7 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.events.TimerChangedEvent; +import de.fanta.challenges.scoreboard.ScoreManager; import de.fanta.challenges.utils.ChatSkullAPI.ChatSkull; import de.fanta.challenges.utils.ChatUtil; import org.bukkit.Bukkit; @@ -11,6 +12,9 @@ import org.bukkit.OfflinePlayer; import org.bukkit.World; import org.bukkit.block.Block; +import org.bukkit.boss.BarColor; +import org.bukkit.boss.BarStyle; +import org.bukkit.boss.BossBar; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -18,6 +22,7 @@ import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.event.player.PlayerPortalEvent; import java.util.ArrayList; import java.util.HashMap; @@ -30,19 +35,34 @@ private final Challenges plugin = Challenges.getPlugin(); - private final List deadPlayer = new ArrayList<>(); + private final List deadPlayer = new ArrayList<>(); + private final Map bossBarMap = new HashMap<>(); public static Location spawnLocation; private final Map> currentBarrier = new HashMap<>(); + private static final Material barrierBlock = Material.GLASS; @EventHandler public void onMove(PlayerMoveEvent e) { Player p = e.getPlayer(); World world = p.getWorld(); if (Objects.equals(plugin.getConfig().getString("event.type"), "deathrun") && plugin.getTimer().isRunning() && !plugin.getVanish().isVanish(p)) { - if (!deadPlayer.contains(p)) { - int distance = (int) p.getLocation().toVector().subtract(p.getWorld().getSpawnLocation().toVector()).length(); - plugin.getScoreManager().setScore(p, distance); + if (!deadPlayer.contains(p.getUniqueId().toString())) { + if (!e.getTo().equals(e.getFrom())) { + int distance = (int) p.getLocation().toVector().subtract(p.getWorld().getSpawnLocation().toVector()).length(); + ScoreManager scoreManager = plugin.getScoreManager(); + scoreManager.setScore(p, distance); + + BossBar bossBar = bossBarMap.computeIfAbsent(p, player -> { + BossBar newBossBar = Bukkit.createBossBar(ChatUtil.GREEN + "Position: " + ChatUtil.BLUE + (scoreManager.getPlayerPosition(p) + 1) + ChatUtil.RED + " | " + ChatUtil.GREEN + " Distanz zum Spawn: " + ChatUtil.BLUE + distance + " Blöcke", BarColor.GREEN, BarStyle.SOLID); + newBossBar.setVisible(true); + newBossBar.addPlayer(p); + return newBossBar; + }); + + bossBar.setTitle(ChatUtil.GREEN + "Position: " + ChatUtil.BLUE + (scoreManager.getPlayerPosition(p) + 1) + ChatUtil.RED + " | " + ChatUtil.GREEN + " Distanz zum Spawn: " + ChatUtil.BLUE + distance + " Blöcke"); + + } Location playerLoc = p.getLocation(); double posRelatedToCenter = playerLoc.getZ() - spawnLocation.getZ(); @@ -65,7 +85,7 @@ Location blockLoc = loc.clone().add(x, y, 0); if (!world.getBlockAt(blockLoc).isSolid()) { barrierLocations.add(blockLoc); - p.sendBlockChange(blockLoc, Bukkit.createBlockData(Material.BLUE_STAINED_GLASS)); + p.sendBlockChange(blockLoc, Bukkit.createBlockData(barrierBlock)); } } } @@ -76,13 +96,6 @@ } } - private void resetBarrier(Player p, World world, List locations) { - for (Location location : locations) { - p.sendBlockChange(location, world.getBlockAt(location).getBlockData()); - } - locations.clear(); - } - @EventHandler public void onDamage(EntityDamageEvent e) { if (e.getEntity() instanceof Player p) { @@ -99,7 +112,7 @@ public void onDeath(PlayerDeathEvent e) { Player p = e.getEntity(); if (Objects.equals(plugin.getConfig().getString("event.type"), "deathrun") && plugin.getTimer().isRunning()) { - deadPlayer.add(p); + deadPlayer.add(p.getUniqueId().toString()); plugin.getSBManager().removeScoreboard(p); } if (plugin.getSBManager().countScoreboardPlayers() == 0) { @@ -109,6 +122,13 @@ } @EventHandler + public void onPortalUse(PlayerPortalEvent e) { + if (Objects.equals(plugin.getConfig().getString("event.type"), "deathrun")) { + e.setCancelled(true); + } + } + + @EventHandler public void onTimerChange(TimerChangedEvent e) { if (Objects.equals(plugin.getConfig().getString("event.type"), "deathrun")) { if (!e.isRunning()) { @@ -165,7 +185,7 @@ for (int z = 0; z < width; z++) { Block block = loc.clone().add(0, y, z).getBlock(); if (!block.isSolid()) { - block.setType(Material.BLUE_STAINED_GLASS); + block.setType(barrierBlock); } } } @@ -174,6 +194,13 @@ } + private void resetBarrier(Player p, World world, List locations) { + for (Location location : locations) { + p.sendBlockChange(location, world.getBlockAt(location).getBlockData()); + } + locations.clear(); + } + private static void mexico(int startPos, World world) { int height = world.getMaxHeight() - world.getMinHeight(); int width = 30; @@ -183,7 +210,7 @@ for (int x = 0; x < width; x++) { Block block = loc.clone().add(x, y, 0).getBlock(); if (!block.isSolid()) { - block.setType(Material.BLUE_STAINED_GLASS); + block.setType(barrierBlock); } } } diff --git a/src/main/java/de/fanta/challenges/challenges/RandomMobChallenge.java b/src/main/java/de/fanta/challenges/challenges/RandomMobChallenge.java new file mode 100644 index 0000000..06ee68d --- /dev/null +++ b/src/main/java/de/fanta/challenges/challenges/RandomMobChallenge.java @@ -0,0 +1,39 @@ +package de.fanta.challenges.challenges; + +import de.fanta.challenges.Challenges; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.entity.Animals; +import org.bukkit.entity.Boss; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Mob; +import org.bukkit.entity.WaterMob; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDeathEvent; + +import java.util.Arrays; +import java.util.Random; + +public class RandomMobChallenge implements Listener { + + private final Challenges plugin = Challenges.getPlugin(); + + @EventHandler + public void onEntityDeath(EntityDeathEvent e) { + if (plugin.getConfig().getBoolean("randommobs") && plugin.getTimer().isRunning()) { + Entity entity = e.getEntity(); + Location entityloc = entity.getLocation(); + World entityworld = entityloc.getWorld(); + if (entity instanceof Animals || entity instanceof WaterMob) { + Random random = new Random(); + EntityType[] entityValues = Arrays.stream(EntityType.values()).filter(entityType -> (entityType.getEntityClass() != null && Mob.class.isAssignableFrom(entityType.getEntityClass()) && !Boss.class.isAssignableFrom(entityType.getEntityClass()))).toArray(EntityType[]::new); + int randomid = random.nextInt(entityValues.length); + EntityType randomEntity = entityValues[randomid]; + entityworld.spawnEntity(entityloc, randomEntity); + } + } + + } +} diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java index bbf36b6..5b85464 100644 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java @@ -67,7 +67,7 @@ } else { OTHER_SETTINGS_GUI.setItem(DIREKT_SMLET_INDEX, GUIUtils.createGuiItem(Material.IRON_INGOT, ChatColor.RED + "Abgebaute Erze droppen Barren deaktiviert")); } - if (plugin.getConfig().getBoolean("speedfurnace.enabled")) { + if (plugin.getConfig().getBoolean("speedfurnace")) { OTHER_SETTINGS_GUI.setItem(FAST_FURNACE_INDEX, GUIUtils.createGuiItem(Material.FURNACE, ChatColor.GREEN + "Schneller Ofen aktiviert", true)); } else { OTHER_SETTINGS_GUI.setItem(FAST_FURNACE_INDEX, GUIUtils.createGuiItem(Material.FURNACE, ChatColor.RED + "Schneller Ofen deaktiviert")); @@ -140,12 +140,12 @@ } break; case FAST_FURNACE_INDEX: - if (plugin.getConfig().getBoolean("speedfurnace.enabled")) { + if (plugin.getConfig().getBoolean("speedfurnace")) { GUIUtils.sendTitleToAll("Einstellungen", "Schneller Ofen deaktiviert", ChatColor.RED); - GUIUtils.setConfig("speedfurnace.enabled", false); + GUIUtils.setConfig("speedfurnace", false); } else { GUIUtils.sendTitleToAll("Einstellungen", "Schneller Ofen aktiviert", ChatColor.GREEN); - GUIUtils.setConfig("speedfurnace.enabled", true); + GUIUtils.setConfig("speedfurnace", true); } break; } diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java index ccdf9ef..b4642d6 100644 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java @@ -112,14 +112,12 @@ break; case PVP_INDEX: if (plugin.getServer().getWorld("world").getPVP()) { - plugin.getServer().getWorld("world").setPVP(false); - plugin.getServer().getWorld("world_nether").setPVP(false); - plugin.getServer().getWorld("world_the_end").setPVP(false); + plugin.setPvP(false); + GUIUtils.setConfig("pvp", false); GUIUtils.sendTitleToAll("Server Einstellungen", "PVP deaktiviert", ChatColor.RED); } else { - plugin.getServer().getWorld("world").setPVP(true); - plugin.getServer().getWorld("world_nether").setPVP(true); - plugin.getServer().getWorld("world_the_end").setPVP(true); + plugin.setPvP(true); + GUIUtils.setConfig("pvp", true); GUIUtils.sendTitleToAll("Server Einstellungen", "PVP aktiviert", ChatColor.GREEN); } break; diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java index 1dd4f1f..9f73200 100644 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java @@ -30,7 +30,7 @@ private static final int DEATH_ON_SPRINT_INDEX = 39; private static final int DEATH_ON_JUMP_INDEX = 40; private static final int CLEANR_INV_BY_DAMAGE_INDEX = 41; - private static final int MLG_INDEX = 31; + private static final int MLG_INDEX = 32; private static final int RANDOM_DROP_INDEX = 8; private static final int SHUFFLE_RANDOM_DROP_INDEX = 17; private static final int TARGET_INDEX = 4; @@ -38,15 +38,17 @@ private static final int LAVA_FLOOR_INDEX = 29; private static final int CHUNK_RANDOM_EFFEKT_INDEX = 30; - private static final int TIED_TOGETHER_INDEX = 42; - private static final int RANGE_ON_TIED_TOGETHER_ADD_INDEX = 33; - private static final int RANGE_ON_TIED_TOGETHER_REMOVE_INDEX = 51; + private static final int TIED_TOGETHER_INDEX = 16; + private static final int RANGE_ON_TIED_TOGETHER_ADD_INDEX = 7; + private static final int RANGE_ON_TIED_TOGETHER_REMOVE_INDEX = 25; - private static final int DMG_ON_SNEAK_INDEX = 43; - private static final int DMG_ON_SNEAK_ADD_INDEX = 34; - private static final int DMG_ON_SNEAK_REMOVE_INDEX = 52; + private static final int DMG_ON_SNEAK_INDEX = 15; + private static final int DMG_ON_SNEAK_ADD_INDEX = 6; + private static final int DMG_ON_SNEAK_REMOVE_INDEX = 24; - private static final int ICE_RUNNER_INDEX = 32; + private static final int ICE_RUNNER_INDEX = 42; + private static final int RANDOM_MOB_INDEX = 43; + private static final int BEDROCK_WALL_INDEX = 31; public static void createSettingsGUI(Player p) { if (plugin.getConfig().getBoolean("craftingtable")) { @@ -132,11 +134,22 @@ SETTINGS_GUI.setItem(TIED_TOGETHER_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatColor.RED + "Zusammengebunden deaktiviert")); SETTINGS_GUI.setItem(RANGE_ON_TIED_TOGETHER_ADD_INDEX, GUIUtils.EMPTY_ICON); SETTINGS_GUI.setItem(RANGE_ON_TIED_TOGETHER_REMOVE_INDEX, GUIUtils.EMPTY_ICON); - } if (plugin.getConfig().getBoolean("icerunner")) { + } + if (plugin.getConfig().getBoolean("icerunner")) { SETTINGS_GUI.setItem(ICE_RUNNER_INDEX, GUIUtils.createGuiItem(Material.BLUE_ICE, ChatColor.GREEN + "Ice-Runner aktiviert", true)); } else { SETTINGS_GUI.setItem(ICE_RUNNER_INDEX, GUIUtils.createGuiItem(Material.BLUE_ICE, ChatColor.RED + "Ice-Runner deaktiviert")); } + if (plugin.getConfig().getBoolean("randommobs")) { + SETTINGS_GUI.setItem(RANDOM_MOB_INDEX, GUIUtils.createGuiItem(Material.PARROT_SPAWN_EGG, ChatColor.GREEN + "Random Mobs aktiviert", true)); + } else { + SETTINGS_GUI.setItem(RANDOM_MOB_INDEX, GUIUtils.createGuiItem(Material.PARROT_SPAWN_EGG, ChatColor.RED + "Random Mobs deaktiviert")); + } + if (plugin.getConfig().getBoolean("bedrockwall")) { + SETTINGS_GUI.setItem(BEDROCK_WALL_INDEX, GUIUtils.createGuiItem(Material.BEDROCK, ChatColor.GREEN + "Bedrock Wand aktiviert", true)); + } else { + SETTINGS_GUI.setItem(BEDROCK_WALL_INDEX, GUIUtils.createGuiItem(Material.BEDROCK, ChatColor.RED + "Bedrock Wand deaktiviert")); + } SETTINGS_GUI.setItem(SHUFFLE_RANDOM_DROP_INDEX, GUIUtils.createGuiItem(Material.CHORUS_FLOWER, ChatColor.GREEN + "Zufällige Drops neu mischen")); SETTINGS_GUI.setItem(CLOSE_GUI_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.RED + "Menü verlassen!")); SETTINGS_GUI.setItem(BACK_BUTTON_INDEX, GUIUtils.createGuiItem(Material.ARROW, ChatColor.GREEN + "Zurück")); @@ -322,6 +335,24 @@ GUIUtils.sendTitleToAll("Challenge", "Ice-Runner aktiviert", ChatColor.GREEN); } break; + case RANDOM_MOB_INDEX: + if (plugin.getConfig().getBoolean("randommobs")) { + GUIUtils.setConfig("randommobs", false); + GUIUtils.sendTitleToAll("Challenge", "Random Mobs deaktiviert", ChatColor.RED); + } else { + GUIUtils.setConfig("randommobs", true); + GUIUtils.sendTitleToAll("Challenge", "Random Mobs aktiviert", ChatColor.GREEN); + } + break; + case BEDROCK_WALL_INDEX: + if (plugin.getConfig().getBoolean("bedrockwall")) { + GUIUtils.setConfig("bedrockwall", false); + GUIUtils.sendTitleToAll("Challenge", "Bedrock Wand deaktiviert", ChatColor.RED); + } else { + GUIUtils.setConfig("bedrockwall", true); + GUIUtils.sendTitleToAll("Challenge", "Bedrock Wand aktiviert", ChatColor.GREEN); + } + break; default: break; } diff --git a/src/main/java/de/fanta/challenges/listeners/DeathListener.java b/src/main/java/de/fanta/challenges/listeners/DeathListener.java index d057768..91a13a6 100644 --- a/src/main/java/de/fanta/challenges/listeners/DeathListener.java +++ b/src/main/java/de/fanta/challenges/listeners/DeathListener.java @@ -32,9 +32,9 @@ ChatUtil.sendBrodcastMessage("Um alle wiederzubeleben benutze §c/revive ALL"); } else { if (plugin.getConfig().getBoolean("event.enabled")) { - e.setDeathMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + e.getEntity().getName() + ChatUtil.GREEN + " ist gestorben!"); + e.setDeathMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + e.getDeathMessage()); } else { - e.setDeathMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + e.getEntity().getName() + ChatUtil.GREEN + " ist gestorben!" + ChatUtil.ORANGE + " (" + e.getEntity().getLocation().getBlockX() + "/" + e.getEntity().getLocation().getBlockY() + "/" + e.getEntity().getLocation().getBlockZ() + ")"); + e.setDeathMessage(Challenges.PREFIX + " " + ChatUtil.BLUE + e.getDeathMessage() + ChatUtil.ORANGE + " (" + e.getEntity().getLocation().getBlockX() + "/" + e.getEntity().getLocation().getBlockY() + "/" + e.getEntity().getLocation().getBlockZ() + ")"); } if (!plugin.getConfig().getBoolean("respawn")) { Player editor = plugin.getCurrentEditor(); diff --git a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java index 77439ef..1aad649 100644 --- a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java +++ b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java @@ -54,5 +54,7 @@ pM.registerEvents(new BingoChallengeEvent(), plugin); pM.registerEvents(new DeathrunChallengeEvent(), plugin); pM.registerEvents(new IceRunnerChallenge(), plugin); + pM.registerEvents(new RandomMobChallenge(), plugin); + pM.registerEvents(new BedrockWallChallenge(), plugin); } } diff --git a/src/main/java/de/fanta/challenges/listeners/FurnaceListener.java b/src/main/java/de/fanta/challenges/listeners/FurnaceListener.java index dcca253..17d7ca1 100644 --- a/src/main/java/de/fanta/challenges/listeners/FurnaceListener.java +++ b/src/main/java/de/fanta/challenges/listeners/FurnaceListener.java @@ -3,13 +3,13 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.utils.ChatUtil; import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; import org.bukkit.block.Block; import org.bukkit.block.BlockState; import org.bukkit.block.Furnace; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.inventory.FurnaceStartSmeltEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.MetadataValue; @@ -27,15 +27,23 @@ public void onFurnacePlace(BlockPlaceEvent e) { BlockState state = e.getBlockPlaced().getState(); if(state instanceof Furnace furnace) { - if (plugin.getConfig().getBoolean("speedfurnace.enabled")) { + /*if (plugin.getConfig().getBoolean("speedfurnace")) { furnace.setCookSpeedMultiplier(10.0); - } + }*/ furnace.setMetadata(META_PLACED_BY_PLAYER, new FixedMetadataValue(plugin, e.getPlayer().getUniqueId().toString())); furnace.update(); } } @EventHandler + public void onFurnaceStartSmelt(FurnaceStartSmeltEvent e) { + if (plugin.getConfig().getBoolean("speedfurnace")) { + e.setTotalCookTime(e.getTotalCookTime()/10); + } + } + + + @EventHandler public void onInteract(PlayerInteractEvent e) { if (plugin.getConfig().getBoolean("event.enabled")) { Block block = e.getClickedBlock(); @@ -53,6 +61,5 @@ } } } - } } diff --git a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java index 56f13c8..cd22a73 100644 --- a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java +++ b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java @@ -10,7 +10,6 @@ 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.EntityRegainHealthEvent; import org.bukkit.event.entity.EntityTargetLivingEntityEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; @@ -149,7 +148,9 @@ @EventHandler public void onHealing(EntityRegainHealthEvent e) { if (plugin.getConfig().getBoolean("ultrahardcore")) { - e.setCancelled(true); + if (e.getEntity() instanceof Player p) { + e.setCancelled(true); + } } } diff --git a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java index c36e86e..7325b0b 100644 --- a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java +++ b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java @@ -73,7 +73,7 @@ } else { ChatUtil.sendNormalMessage(p, "Du bist im Vanish, niemand weiß, dass du in der Lobby bist."); } - }, 1L); + }, 10L); Bukkit.getPluginManager().callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers())); diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java index d1f7137..41121c9 100644 --- a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java @@ -1,16 +1,22 @@ package de.fanta.challenges.scoreboard; +import com.google.gson.internal.LinkedHashTreeMap; import de.fanta.challenges.Challenges; import de.fanta.challenges.utils.ChatUtil; import de.iani.cubesideutils.HastebinUtil; import org.bukkit.entity.Player; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.LinkedHashSet; +import java.util.List; import java.util.Map; import java.util.Set; +import java.util.SortedMap; import java.util.logging.Level; import java.util.stream.Collectors; @@ -41,6 +47,11 @@ return scores.getOrDefault(player.getName(), 0); } + public int getPlayerPosition(Player player) { + List indexes = scores.entrySet().stream().sorted(Map.Entry.comparingByValue((o1, o2) -> Integer.compare(o1, o2) * -1)).map(Map.Entry::getKey).toList(); + return indexes.indexOf(player.getName()); + } + public void saveScores() { saveScores(null); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 26a82f3..0212183 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -2,6 +2,7 @@ allowtrading: true deathonfall: false damageonsneak: false +randommobs: false sneakdmg: 2 randomeffect: false rnddrops: false @@ -20,6 +21,7 @@ tiedtogether: false playerrange: 30 icerunner: false +bedrockwall: false #Mögliche werte: 1-6 backpack_size: 3 mlg: @@ -35,9 +37,8 @@ 1-18-datapack: false silkore: false ultrahardcore: false -speedfurnace: - enabled: false - multiplier: 10.0 +speedfurnace: false +pvp: false event: enabled: false type: nix