diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/countdown/Countdown.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/countdown/Countdown.java index c9d171a..b955cc1 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/countdown/Countdown.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/countdown/Countdown.java @@ -9,18 +9,16 @@ import eu.mhsl.craftattack.spawn.appliances.countdown.command.ProjectStartResetC import eu.mhsl.craftattack.spawn.appliances.countdown.listener.PlayerInvincibleListener; import eu.mhsl.craftattack.spawn.config.Configuration; import eu.mhsl.craftattack.spawn.util.ComponentUtil; +import eu.mhsl.craftattack.spawn.util.IteratorUtil; import net.kyori.adventure.sound.Sound; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.*; -import org.bukkit.block.Block; import org.bukkit.event.Listener; import org.jetbrains.annotations.NotNull; import java.util.List; import java.util.Map; -import java.util.function.Consumer; -import java.util.function.Function; import static java.util.Map.entry; @@ -121,8 +119,8 @@ public class Countdown extends Appliance { public void projectStart() { setEnabled(false); - worldIterator(World::getWorldBorder, worldBorder -> worldBorder.setSize(worldBorder.getMaxSize())); - worldIterator(world -> world, world -> setGamerules(gamerulesAfterStart, false)); + IteratorUtil.worlds(World::getWorldBorder, worldBorder -> worldBorder.setSize(worldBorder.getMaxSize())); + IteratorUtil.worlds(world -> setGamerules(gamerulesAfterStart, false)); Bukkit.getOnlinePlayers().forEach(player -> { player.setFoodLevel(20); @@ -151,23 +149,19 @@ public class Countdown extends Appliance { public void restoreBeforeStart() { setEnabled(true); - worldIterator(World::getWorldBorder, worldBorder -> { + IteratorUtil.worlds(World::getWorldBorder, worldBorder -> { worldBorder.setSize(localConfig().getLong("worldborder-before")); worldBorder.setWarningDistance(0); worldBorder.setDamageAmount(0); }); - worldIterator(world -> world, world -> setGamerules(gamerulesAfterStart, true)); + IteratorUtil.worlds(world -> world, world -> setGamerules(gamerulesAfterStart, true)); glassLocation.getBlock().setType(defaultGlassColor); } private void setGamerules(Map, Boolean> rules, boolean inverse) { - rules.forEach((gameRule, value) -> worldIterator(world -> world, world -> world.setGameRule(gameRule, value ^ inverse))); - } - - private void worldIterator(Function selector, Consumer worldBorder) { - Bukkit.getWorlds().forEach(world -> worldBorder.accept(selector.apply(world))); + rules.forEach((gameRule, value) -> IteratorUtil.worlds(world -> world.setGameRule(gameRule, value ^ inverse))); } public boolean isRunning() { diff --git a/src/main/java/eu/mhsl/craftattack/spawn/util/IteratorUtil.java b/src/main/java/eu/mhsl/craftattack/spawn/util/IteratorUtil.java new file mode 100644 index 0000000..a5100ba --- /dev/null +++ b/src/main/java/eu/mhsl/craftattack/spawn/util/IteratorUtil.java @@ -0,0 +1,22 @@ +package eu.mhsl.craftattack.spawn.util; + +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.entity.Player; + +import java.util.function.Consumer; +import java.util.function.Function; + +public class IteratorUtil { + public static void worlds(Consumer world) { + worlds(w -> w, world); + } + + public static void worlds(Function selector, Consumer selected) { + Bukkit.getWorlds().forEach(world -> selected.accept(selector.apply(world))); + } + + public static void onlinePlayers(Consumer player) { + Bukkit.getOnlinePlayers().forEach(player); + } +}