diff --git a/src/main/java/xyz/soukup/ecoCraftCore/islands/IslandAdminCommand.java b/src/main/java/xyz/soukup/ecoCraftCore/islands/IslandAdminCommand.java index 5d7cd81..8af3232 100644 --- a/src/main/java/xyz/soukup/ecoCraftCore/islands/IslandAdminCommand.java +++ b/src/main/java/xyz/soukup/ecoCraftCore/islands/IslandAdminCommand.java @@ -9,8 +9,11 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import io.papermc.paper.command.brigadier.CommandSourceStack; import io.papermc.paper.command.brigadier.Commands; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.NamespacedKey; +import org.bukkit.Registry; +import org.bukkit.block.Biome; import org.bukkit.entity.Player; import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataType; @@ -101,6 +104,15 @@ public class IslandAdminCommand { })) .executes(IslandAdminCommand::loadTemplate)); + LiteralArgumentBuilder setBiome = Commands.literal("biome") + .then(Commands.argument("biome", StringArgumentType.string()) + .suggests(((context, builder) -> { + Registry biomeRegistry = Registry.BIOME; + biomeRegistry.stream().forEach(biome -> builder.suggest(biome.getKey().asString())); + return builder.buildFuture(); + })) + .executes(IslandAdminCommand::setBiome)); + LiteralArgumentBuilder template = Commands.literal("template") .then(Commands.argument("uuid", StringArgumentType.word()) .suggests((context, builder) -> { @@ -165,7 +177,8 @@ public class IslandAdminCommand { .then(spawn) .then(enviroment) .then(expand) - .then(setDefaultIsland); + .then(setDefaultIsland) + .then(setBiome); @@ -202,6 +215,16 @@ public class IslandAdminCommand { return 0; } + private static int setBiome(CommandContext context) { + if (!(context.getSource().getSender() instanceof Player player)) return 0; + IslandManager islandManager = new IslandManager(); + String uuid = player.getWorld().getName(); + islandManager.changeBiome(context.getArgument("biome", String.class), uuid); + Messages.send(player, "island.set-biome.success"); + + return 0; + } + private static int teleport(CommandContext context) { IslandManager islandManager = new IslandManager(); diff --git a/src/main/java/xyz/soukup/ecoCraftCore/islands/IslandManager.java b/src/main/java/xyz/soukup/ecoCraftCore/islands/IslandManager.java index 301594f..34e6594 100644 --- a/src/main/java/xyz/soukup/ecoCraftCore/islands/IslandManager.java +++ b/src/main/java/xyz/soukup/ecoCraftCore/islands/IslandManager.java @@ -270,6 +270,18 @@ public class IslandManager { } } + public void changeBiome(String biome, String uuid){ + SlimeWorld slimeWorld = asp.getLoadedWorld(uuid); + SlimePropertyMap slimePropertyMap = slimeWorld.getPropertyMap(); + slimePropertyMap.setValue(SlimeProperties.DEFAULT_BIOME, biome); + + try { + asp.saveWorld(slimeWorld); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + public void changeEnviroment( String environment, String uuid) { SlimeWorld slimeWorld = asp.getLoadedWorld(uuid); SlimePropertyMap slimePropertyMap = slimeWorld.getPropertyMap();