diff --git a/TowerRun/src/de/steamwar/towerrun/generator/TowerGenerator.java b/TowerRun/src/de/steamwar/towerrun/generator/TowerGenerator.java index 4f379547..63cd94ee 100644 --- a/TowerRun/src/de/steamwar/towerrun/generator/TowerGenerator.java +++ b/TowerRun/src/de/steamwar/towerrun/generator/TowerGenerator.java @@ -140,8 +140,10 @@ public class TowerGenerator { noKeyFloors--; if (!chestBlocks.isEmpty() && noKeyFloors < 0 && random.nextDouble() < config.keyChance) { noKeyFloors = random.nextInt(config.maxNoKeyFloors - config.minNoKeyFloors) + config.minNoKeyFloors; - Container container = chestBlocks.get(random.nextInt(chestBlocks.size())); - keys.add(container.getLocation()); + for (int i = 0; i < 2; i++) { + Container container = chestBlocks.get(random.nextInt(chestBlocks.size())); + keys.add(container.getLocation()); + } for (WorldConfig.TowerGeneratorDoorBlock doorBlock : config.doorBlocks) { int x = doorBlock.getX(); diff --git a/TowerRun/src/de/steamwar/towerrun/listener/IngameListener.java b/TowerRun/src/de/steamwar/towerrun/listener/IngameListener.java index 26b8b045..eb7c3c1c 100644 --- a/TowerRun/src/de/steamwar/towerrun/listener/IngameListener.java +++ b/TowerRun/src/de/steamwar/towerrun/listener/IngameListener.java @@ -20,6 +20,7 @@ package de.steamwar.towerrun.listener; import de.steamwar.inventory.SWItem; +import de.steamwar.network.packets.server.BaumemberUpdatePacket; import de.steamwar.towerrun.TowerRun; import de.steamwar.towerrun.config.Config; import de.steamwar.towerrun.config.WorldConfig; @@ -84,16 +85,16 @@ public class IngameListener extends GameStateBukkitListener { @Override public void run() { double minY = TowerRunGame.PLAYERS_ALIVE.stream() - .map(p -> p.player().getLocation().getY()) - .min(Comparator.comparing(Function.identity())) + .mapToDouble(p -> p.player().getLocation().getY()) + .average() .orElse(0.0); List toDamage = new ArrayList<>(); TowerRunGame.PLAYERS_ALIVE.forEach(towerRunPlayer -> { - if (towerRunPlayer.player().getLocation().getY() - minY > 20) { - towerRunPlayer.player().sendTitle("§a", TowerRun.getMessage().parse("CATCH_UP_WARNING", towerRunPlayer.player()), 5, 30, 5); - } if (towerRunPlayer.player().getLocation().getY() - minY > 30) { + towerRunPlayer.player().sendTitle("", TowerRun.getMessage().parse("CATCH_UP_WARNING", towerRunPlayer.player()), 5, 30, 5); + } + if (towerRunPlayer.player().getLocation().getY() - minY > 50) { toDamage.add(towerRunPlayer.player()); } }); @@ -119,12 +120,12 @@ public class IngameListener extends GameStateBukkitListener { public void onPlayerDeath(PlayerDeathEvent event) { event.setDeathMessage(null); Bukkit.getScheduler().runTaskLater(TowerRun.getInstance(), () -> { - if (TowerRun.getTowerGenerator() != null) { - event.getEntity().teleport(TowerRun.getTowerGenerator().getSpawn()); - } else { - event.getEntity().teleport(WorldConfig.SPAWN); - } - }, 5 + if (TowerRun.getTowerGenerator() != null) { + event.getEntity().teleport(TowerRun.getTowerGenerator().getSpawn()); + } else { + event.getEntity().teleport(WorldConfig.SPAWN); + } + }, 5 ); event.getEntity().setGameMode(GameMode.SPECTATOR); Bukkit.getOnlinePlayers().forEach(player -> { @@ -185,10 +186,12 @@ public class IngameListener extends GameStateBukkitListener { } event.getPlayer().getInventory().addItem(new SWItem(Material.LEVER, TowerRun.getMessage().parse("KEY_NAME", event.getPlayer())).getItemStack()); - event.getClickedBlock().setType(Material.ENDER_CHEST); - event.getPlayer().playSound(event.getPlayer().getLocation(), Sound.BLOCK_ENDER_CHEST_OPEN, 1, 1); - TowerRun.getMessage().broadcast("KEY_FOUND", event.getPlayer().getName()); + + Bukkit.getOnlinePlayers().forEach(player -> { + player.playSound(event.getPlayer().getLocation(), Sound.BLOCK_ENDER_CHEST_OPEN, 1, 1); + player.sendTitle("", TowerRun.getMessage().parse("KEY_FOUND", player, event.getPlayer().getName()), 10, 70, 20); + }); } @EventHandler @@ -211,6 +214,44 @@ public class IngameListener extends GameStateBukkitListener { private void shouldMelt(Block block) { if (block.getType().isBurnable()) return; int meltingTime = (int) (block.getType().getHardness() * 48 * 20); + switch (block.getType()) { + case TINTED_GLASS: + case WHITE_STAINED_GLASS: + case ORANGE_STAINED_GLASS: + case MAGENTA_STAINED_GLASS: + case LIGHT_BLUE_STAINED_GLASS: + case YELLOW_STAINED_GLASS: + case LIME_STAINED_GLASS: + case PINK_STAINED_GLASS: + case GRAY_STAINED_GLASS: + case LIGHT_GRAY_STAINED_GLASS: + case CYAN_STAINED_GLASS: + case PURPLE_STAINED_GLASS: + case BLUE_STAINED_GLASS: + case BROWN_STAINED_GLASS: + case GREEN_STAINED_GLASS: + case RED_STAINED_GLASS: + case BLACK_STAINED_GLASS: + case WHITE_STAINED_GLASS_PANE: + case ORANGE_STAINED_GLASS_PANE: + case MAGENTA_STAINED_GLASS_PANE: + case LIGHT_BLUE_STAINED_GLASS_PANE: + case YELLOW_STAINED_GLASS_PANE: + case LIME_STAINED_GLASS_PANE: + case PINK_STAINED_GLASS_PANE: + case GRAY_STAINED_GLASS_PANE: + case LIGHT_GRAY_STAINED_GLASS_PANE: + case CYAN_STAINED_GLASS_PANE: + case PURPLE_STAINED_GLASS_PANE: + case BLUE_STAINED_GLASS_PANE: + case BROWN_STAINED_GLASS_PANE: + case GREEN_STAINED_GLASS_PANE: + case RED_STAINED_GLASS_PANE: + case BLACK_STAINED_GLASS_PANE: + meltingTime = meltingTime * 10; + default: + break; + } blocksToMelt.computeIfAbsent(time + meltingTime, integer -> new ArrayList<>()).add(block); }