Added IteratorUtil
This commit is contained in:
parent
40d0950d22
commit
33e9e749a0
@ -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<GameRule<Boolean>, Boolean> rules, boolean inverse) {
|
||||
rules.forEach((gameRule, value) -> worldIterator(world -> world, world -> world.setGameRule(gameRule, value ^ inverse)));
|
||||
}
|
||||
|
||||
private <T> void worldIterator(Function<World, T> selector, Consumer<T> 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() {
|
||||
|
@ -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> world) {
|
||||
worlds(w -> w, world);
|
||||
}
|
||||
|
||||
public static <T> void worlds(Function<World, T> selector, Consumer<T> selected) {
|
||||
Bukkit.getWorlds().forEach(world -> selected.accept(selector.apply(world)));
|
||||
}
|
||||
|
||||
public static void onlinePlayers(Consumer<Player> player) {
|
||||
Bukkit.getOnlinePlayers().forEach(player);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user