use of org.spongepowered.api.world.storage.WorldProperties in project Nucleus by NucleusPowered.
the class CreateWorldCommand method executeCommand.
@Override
public CommandResult executeCommand(final CommandSource src, CommandContext args) throws Exception {
String nameInput = args.<String>getOne(name).get();
Optional<DimensionType> dimensionInput = args.getOne(dimension);
Optional<GeneratorType> generatorInput = args.getOne(generator);
Optional<GameMode> gamemodeInput = args.getOne(gamemode);
Optional<Difficulty> difficultyInput = args.getOne(difficulty);
Collection<WorldGeneratorModifier> modifiers = args.getAll(modifier);
Optional<Long> seedInput = args.getOne(seed);
boolean genStructures = !args.hasAny("n");
boolean loadOnStartup = !args.hasAny("l") || args.<Boolean>getOne("l").orElse(true);
boolean keepSpawnLoaded = !args.hasAny("k") || args.<Boolean>getOne("k").orElse(true);
boolean allowCommands = !args.hasAny("c") || args.<Boolean>getOne("c").orElse(true);
boolean bonusChest = !args.hasAny("b") || args.<Boolean>getOne("b").orElse(true);
if (Sponge.getServer().getAllWorldProperties().stream().anyMatch(x -> x.getWorldName().equalsIgnoreCase(nameInput))) {
throw new ReturnMessageException(plugin.getMessageProvider().getTextMessageWithFormat("command.world.create.exists", nameInput));
}
// Does the world exist?
Path worldPath = Sponge.getGame().getGameDirectory().resolve("world");
Path worldDir = worldPath.resolve(nameInput);
if (!args.hasAny("i") && Files.exists(worldDir)) {
throw new ReturnMessageException(plugin.getMessageProvider().getTextMessageWithFormat("command.world.import.noexist", nameInput));
}
if (args.hasAny("i") && Files.exists(worldDir)) {
onImport(worldDir, nameInput);
}
WorldArchetype.Builder worldSettingsBuilder = WorldArchetype.builder().enabled(true);
if (args.hasAny(preset)) {
WorldArchetype preset1 = args.<WorldArchetype>getOne(preset).get();
worldSettingsBuilder.from(preset1);
dimensionInput.ifPresent(worldSettingsBuilder::dimension);
generatorInput.ifPresent(worldSettingsBuilder::generator);
gamemodeInput.ifPresent(worldSettingsBuilder::gameMode);
difficultyInput.ifPresent(worldSettingsBuilder::difficulty);
if (!modifiers.isEmpty()) {
modifiers.addAll(preset1.getGeneratorModifiers());
worldSettingsBuilder.generatorModifiers(modifiers.toArray(new WorldGeneratorModifier[modifiers.size()]));
}
} else {
worldSettingsBuilder.dimension(dimensionInput.orElse(DimensionTypes.OVERWORLD)).generator(generatorInput.orElse(GeneratorTypes.DEFAULT)).gameMode(gamemodeInput.orElse(GameModes.SURVIVAL)).difficulty(difficultyInput.orElse(Difficulties.NORMAL));
if (!modifiers.isEmpty()) {
worldSettingsBuilder.generatorModifiers(modifiers.toArray(new WorldGeneratorModifier[modifiers.size()]));
}
}
worldSettingsBuilder.loadsOnStartup(loadOnStartup).keepsSpawnLoaded(keepSpawnLoaded).usesMapFeatures(genStructures).commandsAllowed(allowCommands).generateBonusChest(bonusChest);
seedInput.ifPresent(worldSettingsBuilder::seed);
WorldArchetype wa = worldSettingsBuilder.build(nameInput.toLowerCase(), nameInput);
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.world.create.begin", nameInput));
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.world.create.newparams", wa.getDimensionType().getName(), wa.getGeneratorType().getName(), modifierString(modifiers), wa.getGameMode().getName(), wa.getDifficulty().getName()));
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.world.create.newparams2", String.valueOf(loadOnStartup), String.valueOf(keepSpawnLoaded), String.valueOf(genStructures), String.valueOf(allowCommands), String.valueOf(bonusChest)));
WorldProperties worldProperties = Sponge.getGame().getServer().createWorldProperties(nameInput, wa);
if (this.worldBorderDefault != null && this.worldBorderDefault > 0) {
worldProperties.setWorldBorderDiameter(this.worldBorderDefault);
}
worldProperties.setDifficulty(wa.getDifficulty());
if (!Sponge.getServer().saveWorldProperties(worldProperties)) {
throw ReturnMessageException.fromKey("command.world.create.couldnotsave", nameInput);
}
Optional<World> world = Sponge.getGame().getServer().loadWorld(worldProperties);
if (world.isPresent()) {
world.get().getProperties().setDifficulty(wa.getDifficulty());
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.world.create.success", nameInput));
return CommandResult.success();
} else {
throw ReturnMessageException.fromKey("command.world.create.worldfailedtoload", nameInput);
}
}
use of org.spongepowered.api.world.storage.WorldProperties in project Nucleus by NucleusPowered.
the class DeleteWorldCommand method executeCommand.
@Override
public CommandResult executeCommand(CommandSource src, CommandContext args) throws Exception {
WorldProperties properties = args.<WorldProperties>getOne(world).get();
if (!properties.isEnabled()) {
throw ReturnMessageException.fromKey("args.worldproperties.noexistdisabled", properties.getWorldName());
}
if (confirm != null && confirm.getFirst().isAfter(Instant.now()) && confirm.getSecond().equals(Util.getUUID(src)) && confirm.getThird().getUniqueId().equals(properties.getUniqueId())) {
try {
completeDeletion(src);
} finally {
confirm = null;
}
return CommandResult.success();
}
confirm = null;
runChecks(properties);
// Scary warning.
Path path = plugin.getDataPath().getParent().resolve("world").resolve(properties.getWorldName());
if (Files.exists(path)) {
confirm = Tuples.of(Instant.now().plus(30, ChronoUnit.SECONDS), Util.getUUID(src), properties, path);
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.world.delete.warning1", properties.getWorldName()));
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.world.delete.warning2", path.toAbsolutePath().toString()));
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.world.delete.warning3", properties.getWorldName()));
return CommandResult.success();
} else {
throw new ReturnMessageException(Nucleus.getNucleus().getMessageProvider().getTextMessageWithFormat("command.world.delete.notfound", properties.getWorldName()));
}
}
use of org.spongepowered.api.world.storage.WorldProperties in project Nucleus by NucleusPowered.
the class DisableWorldCommand method executeCommand.
@Override
public CommandResult executeCommand(CommandSource src, CommandContext args) throws Exception {
WorldProperties worldProperties = args.<WorldProperties>getOne(worldKey).get();
if (!worldProperties.isEnabled()) {
throw new ReturnMessageException(plugin.getMessageProvider().getTextMessageWithFormat("command.world.disable.alreadydisabled", worldProperties.getWorldName()));
}
if (Sponge.getServer().getWorld(worldProperties.getUniqueId()).isPresent()) {
throw new ReturnMessageException(plugin.getMessageProvider().getTextMessageWithFormat("command.world.disable.warnloaded", worldProperties.getWorldName()));
}
worldProperties.setEnabled(false);
if (worldProperties.isEnabled()) {
throw new ReturnMessageException(plugin.getMessageProvider().getTextMessageWithFormat("command.world.disable.couldnotdisable", worldProperties.getWorldName()));
}
src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.world.disable.success", worldProperties.getWorldName()));
return CommandResult.success();
}
use of org.spongepowered.api.world.storage.WorldProperties in project Nucleus by NucleusPowered.
the class GameruleCommand method executeCommand.
@Override
public CommandResult executeCommand(CommandSource src, CommandContext args) throws Exception {
WorldProperties worldProperties = getWorldFromUserOrArgs(src, worldKey, args);
Map<String, String> gameRules = worldProperties.getGameRules();
String message = plugin.getMessageProvider().getMessageWithFormat("command.world.gamerule.key");
List<Text> text = gameRules.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getKey)).map(x -> Text.of(TextActions.suggestCommand(String.format("/world gamerule set %s %s ", worldProperties.getWorldName(), x.getKey())), TextSerializers.FORMATTING_CODE.deserialize(MessageFormat.format(message, x.getKey(), x.getValue())))).collect(Collectors.toList());
Util.getPaginationBuilder(src).title(plugin.getMessageProvider().getTextMessageWithFormat("command.world.gamerule.header", worldProperties.getWorldName())).contents(text).sendTo(src);
return CommandResult.success();
}
use of org.spongepowered.api.world.storage.WorldProperties in project Nucleus by NucleusPowered.
the class RenameWorldCommand method executeCommand.
@Override
protected CommandResult executeCommand(CommandSource src, CommandContext args) throws Exception {
WorldProperties worldProperties = args.<WorldProperties>getOne(this.worldKey).get();
String oldName = worldProperties.getWorldName();
String newName = args.<String>getOne(this.newNameKey).get();
if (Sponge.getServer().renameWorld(worldProperties, newName).isPresent()) {
src.sendMessage(this.plugin.getMessageProvider().getTextMessageWithFormat("command.world.rename.success", oldName, newName));
return CommandResult.success();
}
throw ReturnMessageException.fromKey("command.world.rename.failed", worldProperties.getWorldName(), newName);
}
Aggregations