diff --git a/src/main/java/de/fanta/challenges/challenges/MLGChallenge.java b/src/main/java/de/fanta/challenges/challenges/MLGChallenge.java index ba7b3eb..5f309de 100644 --- a/src/main/java/de/fanta/challenges/challenges/MLGChallenge.java +++ b/src/main/java/de/fanta/challenges/challenges/MLGChallenge.java @@ -1,6 +1,7 @@ package de.fanta.challenges.challenges; import de.fanta.challenges.Challenges; +import de.fanta.challenges.gravestones.GravestoneUtils; import de.fanta.challenges.utils.ChatUtil; import de.fanta.challenges.utils.Config; import org.bukkit.Bukkit; @@ -35,6 +36,7 @@ mlgWorld.setGameRule(GameRule.DO_MOB_SPAWNING, false); mlgWorld.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); mlgWorld.setGameRule(GameRule.DO_WEATHER_CYCLE, false); + mlgWorld.setGameRule(GameRule.KEEP_INVENTORY, true); mlgWorld.setTime(6000L); } } @@ -45,7 +47,7 @@ ChatUtil.sendBrodcastMessage("Zeit für einen MLG! Viel Glück!"); timeSinceMLG = 0; for (Player p : Bukkit.getOnlinePlayers()) { - if (p.getGameMode() == GameMode.SURVIVAL && !p.isDead()) { + if (p.getGameMode() == GameMode.SURVIVAL && !p.isDead() && !plugin.getVanish().isVanish(p)) { tpMLG(p); } } @@ -60,12 +62,12 @@ 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); + int rndY = random.nextInt(40); + int rndX = random.nextInt(500); + int rndZ = random.nextInt(500); Location oldloc = p.getLocation(); - Location newloc = new Location(Bukkit.getWorld("mlg_challenge"), p.getLocation().getBlockX() + rndX, (oldloc.getWorld().getMinHeight() + 50 + rndY), p.getLocation().getBlockZ() + rndZ); + Location newloc = new Location(Bukkit.getWorld("mlg_challenge"), p.getLocation().getBlockX() + rndX, (oldloc.getWorld().getMinHeight() + 100 + rndY), p.getLocation().getBlockZ() + rndZ); p.teleport(newloc); mlgResult(p, oldloc, inv); } @@ -79,8 +81,20 @@ mlgBack(p, loc, inv); } else if (Bukkit.getWorlds().get(0).getGameRuleValue(GameRule.KEEP_INVENTORY)) { p.getInventory().setContents(inv.getContents()); + } else { + if (!Config.getBoolean("gravestone")) { + for (ItemStack stack : inv.getContents()) { + if (stack != null) { + loc.getWorld().dropItemNaturally(loc, stack); + } + } + } else { + String inventoryString = GravestoneUtils.createInventoryString(inv.getContents()); + GravestoneUtils.spawnAtBlock(loc.getBlock(), p, GravestoneUtils.compressString(inventoryString)); + } + } - }, 100L); + }, 140L); } public static void mlgBack(final Player p, Location loc, Inventory inv) { diff --git a/src/main/java/de/fanta/challenges/challenges/NoFallDamageChallenge.java b/src/main/java/de/fanta/challenges/challenges/NoFallDamageChallenge.java index 8ea11b8..d18b9aa 100644 --- a/src/main/java/de/fanta/challenges/challenges/NoFallDamageChallenge.java +++ b/src/main/java/de/fanta/challenges/challenges/NoFallDamageChallenge.java @@ -16,7 +16,6 @@ if (e.getEntity() instanceof Player p) { if (e.getCause() == EntityDamageEvent.DamageCause.FALL) { if (Config.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/commands/challenges/ChallengesSaveCommand.java b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java index e362e5f..7a20dd9 100644 --- a/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java +++ b/src/main/java/de/fanta/challenges/commands/challenges/ChallengesSaveCommand.java @@ -36,7 +36,6 @@ ChatUtil.sendNormalMessage(sender, "Welt wird gespeichert!"); try { SaveWorldUtils.saveWorld(uuid.toString(), false); - //ChatUtil.sendWarningMessage(sender, "Das ist nur ein Testserver hier kannst du aktuell keine Maps speichern!"); } catch (Exception ex) { Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex); ChatUtil.sendErrorMessage(sender, "Welt konnte nicht gespeichert werden!"); @@ -61,7 +60,6 @@ ChatUtil.sendNormalMessage(sender, "Welt wird gespeichert!"); try { SaveWorldUtils.saveWorld(next.toLowerCase(), false); - //ChatUtil.sendWarningMessage(sender, "Das ist nur ein Testserver hier kannst du aktuell keine Maps speichern!"); } catch (Exception ex) { Bukkit.getLogger().log(Level.SEVERE, "Could not save world ", ex); ChatUtil.sendErrorMessage(sender, "Welt konnte nicht gespeichert werden!"); diff --git a/src/main/java/de/fanta/challenges/gravestones/GravestoneListener.java b/src/main/java/de/fanta/challenges/gravestones/GravestoneListener.java index 358c615..89b08ed 100644 --- a/src/main/java/de/fanta/challenges/gravestones/GravestoneListener.java +++ b/src/main/java/de/fanta/challenges/gravestones/GravestoneListener.java @@ -46,7 +46,7 @@ if (!e.getDrops().isEmpty()) { e.getDrops().clear(); Block block = p.getLocation().subtract(0, 1, 0).getBlock(); - String inventoryString = GravestoneUtils.createInventoryString(p); + String inventoryString = GravestoneUtils.createInventoryString(p.getInventory().getContents()); byte[] inventoryByte = GravestoneUtils.compressString(inventoryString); GravestoneUtils.spawnAtBlock(block, p, inventoryByte); } diff --git a/src/main/java/de/fanta/challenges/gravestones/GravestoneUtils.java b/src/main/java/de/fanta/challenges/gravestones/GravestoneUtils.java index a967cc1..dac4c97 100644 --- a/src/main/java/de/fanta/challenges/gravestones/GravestoneUtils.java +++ b/src/main/java/de/fanta/challenges/gravestones/GravestoneUtils.java @@ -70,9 +70,8 @@ } } - public static String createInventoryString(Player player) { + public static String createInventoryString(ItemStack[] inventory) { YamlConfiguration conf = new YamlConfiguration(); - ItemStack[] inventory = player.getInventory().getContents(); for (int i = 0; i < inventory.length; i++) { ItemStack stack = inventory[i]; if (stack != null) {