mirror of
https://github.com/TotalFreedomMC/TF-PlotSquared.git
synced 2024-12-23 00:15:06 +00:00
Remove usage of SetupObject
This commit is contained in:
parent
5165c439fc
commit
ae1427b189
10 changed files with 114 additions and 507 deletions
|
@ -81,12 +81,13 @@ import com.plotsquared.core.plot.PlotArea;
|
|||
import com.plotsquared.core.plot.PlotAreaTerrainType;
|
||||
import com.plotsquared.core.plot.PlotAreaType;
|
||||
import com.plotsquared.core.plot.PlotId;
|
||||
import com.plotsquared.core.plot.SetupObject;
|
||||
import com.plotsquared.core.plot.message.PlainChatManager;
|
||||
import com.plotsquared.core.plot.world.PlotAreaManager;
|
||||
import com.plotsquared.core.plot.world.SinglePlotArea;
|
||||
import com.plotsquared.core.plot.world.SinglePlotAreaManager;
|
||||
import com.plotsquared.core.queue.QueueProvider;
|
||||
import com.plotsquared.core.setup.PlotAreaBuilder;
|
||||
import com.plotsquared.core.setup.SettingsNodesWrapper;
|
||||
import com.plotsquared.core.util.ChatManager;
|
||||
import com.plotsquared.core.util.ChunkManager;
|
||||
import com.plotsquared.core.util.ConsoleColors;
|
||||
|
@ -992,14 +993,14 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain<
|
|||
ConfigurationSection worldConfig =
|
||||
PlotSquared.get().worlds.getConfigurationSection("worlds." + worldName);
|
||||
String manager = worldConfig.getString("generator.plugin", getPluginName());
|
||||
SetupObject setup = new SetupObject();
|
||||
setup.plotManager = manager;
|
||||
setup.setupGenerator = worldConfig.getString("generator.init", manager);
|
||||
setup.type = MainUtil.getType(worldConfig);
|
||||
setup.terrain = MainUtil.getTerrain(worldConfig);
|
||||
setup.step = new ConfigurationNode[0];
|
||||
setup.world = worldName;
|
||||
SetupUtils.manager.setupWorld(setup);
|
||||
PlotAreaBuilder builder = new PlotAreaBuilder()
|
||||
.plotManager(manager)
|
||||
.generatorName(worldConfig.getString("generator.init", manager))
|
||||
.plotAreaType(MainUtil.getType(worldConfig))
|
||||
.terrainType(MainUtil.getTerrain(worldConfig))
|
||||
.settingsNodesWrapper(new SettingsNodesWrapper(new ConfigurationNode[0], null))
|
||||
.worldName(worldName);
|
||||
SetupUtils.manager.setupWorld(builder);
|
||||
world = Bukkit.getWorld(worldName);
|
||||
} else {
|
||||
try {
|
||||
|
|
|
@ -39,8 +39,8 @@ import com.plotsquared.core.plot.PlotArea;
|
|||
import com.plotsquared.core.plot.PlotAreaTerrainType;
|
||||
import com.plotsquared.core.plot.PlotAreaType;
|
||||
import com.plotsquared.core.plot.PlotId;
|
||||
import com.plotsquared.core.plot.SetupObject;
|
||||
import com.plotsquared.core.plot.message.PlotMessage;
|
||||
import com.plotsquared.core.setup.PlotAreaBuilder;
|
||||
import com.plotsquared.core.util.MainUtil;
|
||||
import com.plotsquared.core.util.MathMan;
|
||||
import com.plotsquared.core.util.Permissions;
|
||||
|
@ -186,20 +186,15 @@ public class Area extends SubCommand {
|
|||
final BlockVector3 singlePos1 = selectedRegion.getMinimumPoint();
|
||||
|
||||
// Now the schematic is saved, which is wonderful!
|
||||
final SetupObject singleSetup = new SetupObject();
|
||||
singleSetup.world = hybridPlotWorld.getWorldName();
|
||||
singleSetup.id = hybridPlotWorld.getId();
|
||||
singleSetup.terrain = hybridPlotWorld.getTerrain();
|
||||
singleSetup.type = hybridPlotWorld.getType();
|
||||
singleSetup.plotManager = PlotSquared.imp().getPluginName();
|
||||
singleSetup.setupGenerator = PlotSquared.imp().getPluginName();
|
||||
singleSetup.step = hybridPlotWorld.getSettingNodes();
|
||||
singleSetup.max = plotId;
|
||||
singleSetup.min = plotId;
|
||||
PlotAreaBuilder singleBuilder = PlotAreaBuilder.ofPlotArea(hybridPlotWorld)
|
||||
.plotManager(PlotSquared.imp().getPluginName())
|
||||
.generatorName(PlotSquared.imp().getPluginName())
|
||||
.maximumId(plotId)
|
||||
.minimumId(plotId); // TODO will throw exception right now
|
||||
Runnable singleRun = () -> {
|
||||
final String path =
|
||||
"worlds." + hybridPlotWorld.getWorldName() + ".areas." + hybridPlotWorld.getId() + '-'
|
||||
+ singleSetup.min + '-' + singleSetup.max;
|
||||
+ singleBuilder.minimumId() + '-' + singleBuilder.maximumId();
|
||||
final int offsetX = singlePos1.getX();
|
||||
final int offsetZ = singlePos1.getZ();
|
||||
if (offsetX != 0) {
|
||||
|
@ -210,7 +205,7 @@ public class Area extends SubCommand {
|
|||
PlotSquared.get().worlds
|
||||
.set(path + ".road.offset.z", offsetZ);
|
||||
}
|
||||
final String world = SetupUtils.manager.setupWorld(singleSetup);
|
||||
final String world = SetupUtils.manager.setupWorld(singleBuilder);
|
||||
if (WorldUtil.IMP.isWorld(world)) {
|
||||
PlotSquared.get().loadWorld(world, null);
|
||||
MainUtil.sendMessage(player, Captions.SINGLE_AREA_CREATED);
|
||||
|
@ -286,19 +281,14 @@ public class Area extends SubCommand {
|
|||
.send(player, areas.iterator().next().toString());
|
||||
return false;
|
||||
}
|
||||
final SetupObject object = new SetupObject();
|
||||
object.world = area.getWorldName();
|
||||
object.id = area.getId();
|
||||
object.terrain = area.getTerrain();
|
||||
object.type = area.getType();
|
||||
object.min = new PlotId(1, 1);
|
||||
object.max = new PlotId(numX, numZ);
|
||||
object.plotManager = PlotSquared.imp().getPluginName();
|
||||
object.setupGenerator = PlotSquared.imp().getPluginName();
|
||||
object.step = area.getSettingNodes();
|
||||
PlotAreaBuilder builder = PlotAreaBuilder.ofPlotArea(area)
|
||||
.plotManager(PlotSquared.imp().getPluginName())
|
||||
.generatorName(PlotSquared.imp().getPluginName())
|
||||
.minimumId(new PlotId(1, 1))
|
||||
.maximumId(new PlotId(numX, numZ));
|
||||
final String path =
|
||||
"worlds." + area.getWorldName() + ".areas." + area.getId() + '-'
|
||||
+ object.min + '-' + object.max;
|
||||
+ builder.minimumId() + '-' + builder.maximumId();
|
||||
Runnable run = () -> {
|
||||
if (offsetX != 0) {
|
||||
PlotSquared.get().worlds
|
||||
|
@ -308,7 +298,7 @@ public class Area extends SubCommand {
|
|||
PlotSquared.get().worlds
|
||||
.set(path + ".road.offset.z", offsetZ);
|
||||
}
|
||||
final String world = SetupUtils.manager.setupWorld(object);
|
||||
final String world = SetupUtils.manager.setupWorld(builder);
|
||||
if (WorldUtil.IMP.isWorld(world)) {
|
||||
PlotSquared.get().loadWorld(world, null);
|
||||
Captions.SETUP_FINISHED.send(player);
|
||||
|
@ -346,9 +336,9 @@ public class Area extends SubCommand {
|
|||
} else {
|
||||
id = null;
|
||||
}
|
||||
final SetupObject object = new SetupObject();
|
||||
object.world = split[0];
|
||||
final HybridPlotWorld pa = new HybridPlotWorld(object.world, id,
|
||||
PlotAreaBuilder builder = new PlotAreaBuilder();
|
||||
builder.worldName(split[0]);
|
||||
final HybridPlotWorld pa = new HybridPlotWorld(builder.worldName(), id,
|
||||
PlotSquared.get().IMP.getDefaultGenerator(), null, null);
|
||||
PlotArea other = PlotSquared.get().getPlotArea(pa.getWorldName(), id);
|
||||
if (other != null && Objects.equals(pa.getId(), other.getId())) {
|
||||
|
@ -410,13 +400,13 @@ public class Area extends SubCommand {
|
|||
pa.setTerrain(PlotAreaTerrainType.fromString(pair[1])
|
||||
.orElseThrow(() -> new IllegalArgumentException(
|
||||
pair[1] + " is not a valid terrain.")));
|
||||
object.terrain = pa.getTerrain();
|
||||
builder.terrainType(pa.getTerrain());
|
||||
break;
|
||||
case "type":
|
||||
pa.setType(PlotAreaType.fromString(pair[1]).orElseThrow(
|
||||
() -> new IllegalArgumentException(
|
||||
pair[1] + " is not a valid type.")));
|
||||
object.type = pa.getType();
|
||||
builder.plotAreaType(pa.getType());
|
||||
break;
|
||||
default:
|
||||
Captions.COMMAND_SYNTAX.send(player, getCommandString()
|
||||
|
@ -438,9 +428,9 @@ public class Area extends SubCommand {
|
|||
PlotSquared.get().worlds.getConfigurationSection(path);
|
||||
pa.saveConfiguration(section);
|
||||
pa.loadConfiguration(section);
|
||||
object.plotManager = PlotSquared.imp().getPluginName();
|
||||
object.setupGenerator = PlotSquared.imp().getPluginName();
|
||||
String world = SetupUtils.manager.setupWorld(object);
|
||||
builder.plotManager(PlotSquared.imp().getPluginName());
|
||||
builder.generatorName(PlotSquared.imp().getPluginName());
|
||||
String world = SetupUtils.manager.setupWorld(builder);
|
||||
if (WorldUtil.IMP.isWorld(world)) {
|
||||
Captions.SETUP_FINISHED.send(player);
|
||||
player.teleport(WorldUtil.IMP.getSpawn(world),
|
||||
|
@ -475,9 +465,9 @@ public class Area extends SubCommand {
|
|||
TeleportCause.COMMAND);
|
||||
}
|
||||
} else {
|
||||
object.terrain = PlotAreaTerrainType.NONE;
|
||||
object.type = PlotAreaType.NORMAL;
|
||||
SetupUtils.manager.setupWorld(object);
|
||||
builder.terrainType(PlotAreaTerrainType.NONE);
|
||||
builder.plotAreaType(PlotAreaType.NORMAL);
|
||||
SetupUtils.manager.setupWorld(builder);
|
||||
player.teleport(WorldUtil.IMP.getSpawn(pa.getWorldName()),
|
||||
TeleportCause.COMMAND);
|
||||
}
|
||||
|
|
|
@ -27,43 +27,19 @@ package com.plotsquared.core.command;
|
|||
|
||||
import com.plotsquared.core.PlotSquared;
|
||||
import com.plotsquared.core.configuration.Captions;
|
||||
import com.plotsquared.core.configuration.ConfigurationNode;
|
||||
import com.plotsquared.core.configuration.ConfigurationUtil;
|
||||
import com.plotsquared.core.configuration.StaticCaption;
|
||||
import com.plotsquared.core.events.TeleportCause;
|
||||
import com.plotsquared.core.generator.GeneratorWrapper;
|
||||
import com.plotsquared.core.player.PlotPlayer;
|
||||
import com.plotsquared.core.plot.PlotArea;
|
||||
import com.plotsquared.core.plot.PlotAreaTerrainType;
|
||||
import com.plotsquared.core.plot.PlotAreaType;
|
||||
import com.plotsquared.core.plot.PlotId;
|
||||
import com.plotsquared.core.plot.SetupObject;
|
||||
import com.plotsquared.core.plot.message.PlotMessage;
|
||||
import com.plotsquared.core.setup.SetupProcess;
|
||||
import com.plotsquared.core.setup.SetupStep;
|
||||
import com.plotsquared.core.util.MainUtil;
|
||||
import com.plotsquared.core.util.SetupUtils;
|
||||
import com.plotsquared.core.util.StringMan;
|
||||
import com.plotsquared.core.util.WorldUtil;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.ToString;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
@CommandDeclaration(command = "setup",
|
||||
permission = "plots.admin.command.setup",
|
||||
|
@ -72,14 +48,12 @@ import java.util.UUID;
|
|||
aliases = {"create"},
|
||||
category = CommandCategory.ADMINISTRATION)
|
||||
public class Setup extends SubCommand {
|
||||
private static final Collection<Command> specialCommands = Arrays.asList(
|
||||
new Command(null, false, "back", "", RequiredType.NONE, null) {},
|
||||
new Command(null, false, "cancel", "", RequiredType.NONE, null) {});
|
||||
|
||||
private static boolean d(String s) {
|
||||
return s.chars().allMatch((i) -> {
|
||||
return i == 95 || i == 45 || i >= 97 && i <= 122 || i >= 48 && i <= 57 || i == 46;
|
||||
});
|
||||
}
|
||||
|
||||
public void displayGenerators(PlotPlayer player) {
|
||||
public void displayGenerators(PlotPlayer<?> player) {
|
||||
StringBuilder message = new StringBuilder();
|
||||
message.append("&6What generator do you want?");
|
||||
for (Entry<String, GeneratorWrapper<?>> entry : SetupUtils.generators.entrySet()) {
|
||||
|
@ -105,7 +79,7 @@ public class Setup extends SubCommand {
|
|||
process = new SetupProcess();
|
||||
player.setMeta("setup", process);
|
||||
SetupUtils.manager.updateGenerators();
|
||||
com.plotsquared.core.setup.SetupStep step = process.getCurrentStep();
|
||||
SetupStep step = process.getCurrentStep();
|
||||
step.announce(player);
|
||||
displayGenerators(player);
|
||||
return true;
|
||||
|
@ -123,277 +97,11 @@ public class Setup extends SubCommand {
|
|||
process.getCurrentStep().announce(player);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
process.getCurrentStep().announce(player);
|
||||
// TODO return only
|
||||
if (true) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
|
||||
|
||||
// going through setup
|
||||
SetupObject object = player.getMeta("setup");
|
||||
if (object == null) {
|
||||
object = new SetupObject();
|
||||
player.setMeta("setup", object);
|
||||
SetupUtils.manager.updateGenerators();
|
||||
sendMessage(player, Captions.SETUP_INIT);
|
||||
displayGenerators(player);
|
||||
return false;
|
||||
}
|
||||
if (args.length == 1) {
|
||||
if (args[0].equalsIgnoreCase("cancel")) {
|
||||
player.deleteMeta("setup");
|
||||
MainUtil.sendMessage(player, Captions.SETUP_CANCELLED);
|
||||
return false;
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("back")) {
|
||||
if (object.setup_index > 0) {
|
||||
object.setup_index--;
|
||||
ConfigurationNode node = object.step[object.setup_index];
|
||||
sendMessage(player, Captions.SETUP_STEP, object.setup_index + 1,
|
||||
node.getDescription(), node.getType().getType(),
|
||||
String.valueOf(node.getDefaultValue()));
|
||||
return false;
|
||||
} else if (object.current > 0) {
|
||||
object.current--;
|
||||
}
|
||||
}
|
||||
}
|
||||
int index = object.current;
|
||||
switch (index) {
|
||||
case 0: // choose generator
|
||||
if (args.length != 1 || !SetupUtils.generators.containsKey(args[0])) {
|
||||
String prefix = "\n&8 - &7";
|
||||
MainUtil.sendMessage(player,
|
||||
Captions.SETUP_WORLD_GENERATOR_ERROR + prefix + StringMan
|
||||
.join(SetupUtils.generators.keySet(), prefix)
|
||||
.replaceAll(PlotSquared.imp().getPluginName(),
|
||||
"&2" + PlotSquared.imp().getPluginName()));
|
||||
sendMessage(player, Captions.SETUP_INIT);
|
||||
return false;
|
||||
}
|
||||
object.setupGenerator = args[0];
|
||||
object.current++;
|
||||
MainUtil.sendMessage(player, Captions.SETUP_WORLD_TYPE);
|
||||
break;
|
||||
case 1: // choose world type
|
||||
List<String> allTypes = Arrays.asList("normal", "augmented", "partial");
|
||||
List<String> allDesc = Arrays
|
||||
.asList("Standard plot generation", "Plot generation with vanilla terrain",
|
||||
"Vanilla with clusters of plots");
|
||||
ArrayList<String> types = new ArrayList<>();
|
||||
if (SetupUtils.generators.get(object.setupGenerator).isFull()) {
|
||||
types.add("normal");
|
||||
}
|
||||
types.add("augmented");
|
||||
types.add("partial");
|
||||
Optional<PlotAreaType> plotAreaType;
|
||||
if (args.length != 1 || !(plotAreaType = PlotAreaType.fromString(args[0]))
|
||||
.isPresent()) {
|
||||
MainUtil.sendMessage(player, Captions.SETUP_WORLD_TYPE_ERROR);
|
||||
for (String type : types) {
|
||||
int i = allTypes.indexOf(type);
|
||||
if (type.equals("normal")) {
|
||||
MainUtil
|
||||
.sendMessage(player, "&8 - &2" + type + " &8-&7 " + allDesc.get(i));
|
||||
} else {
|
||||
MainUtil
|
||||
.sendMessage(player, "&8 - &7" + type + " &8-&7 " + allDesc.get(i));
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
object.type = plotAreaType.orElse(PlotAreaType.NORMAL);
|
||||
GeneratorWrapper<?> gen = SetupUtils.generators.get(object.setupGenerator);
|
||||
if (object.type == PlotAreaType.NORMAL) {
|
||||
object.current = 6;
|
||||
if (object.step == null) {
|
||||
object.plotManager = object.setupGenerator;
|
||||
object.step =
|
||||
SetupUtils.generators.get(object.plotManager).getPlotGenerator()
|
||||
.getNewPlotArea("CheckingPlotSquaredGenerator", null, null, null)
|
||||
.getSettingNodes();
|
||||
SetupUtils.generators.get(object.plotManager).getPlotGenerator()
|
||||
.processSetup(object);
|
||||
}
|
||||
if (object.step.length == 0) {
|
||||
MainUtil.sendMessage(player, Captions.SETUP_WORLD_NAME);
|
||||
object.setup_index = 0;
|
||||
return true;
|
||||
}
|
||||
ConfigurationNode step = object.step[object.setup_index];
|
||||
sendMessage(player, Captions.SETUP_STEP, object.setup_index + 1,
|
||||
step.getDescription(), step.getType().getType(),
|
||||
String.valueOf(step.getDefaultValue()));
|
||||
} else {
|
||||
if (gen.isFull()) {
|
||||
object.plotManager = object.setupGenerator;
|
||||
object.setupGenerator = null;
|
||||
object.step =
|
||||
SetupUtils.generators.get(object.plotManager).getPlotGenerator()
|
||||
.getNewPlotArea("CheckingPlotSquaredGenerator", null, null, null)
|
||||
.getSettingNodes();
|
||||
SetupUtils.generators.get(object.plotManager).getPlotGenerator()
|
||||
.processSetup(object);
|
||||
} else {
|
||||
object.plotManager = PlotSquared.imp().getPluginName();
|
||||
MainUtil.sendMessage(player, Captions.SETUP_WRONG_GENERATOR);
|
||||
object.step =
|
||||
SetupUtils.generators.get(object.plotManager).getPlotGenerator()
|
||||
.getNewPlotArea("CheckingPlotSquaredGenerator", null, null, null)
|
||||
.getSettingNodes();
|
||||
}
|
||||
if (object.type == PlotAreaType.PARTIAL) {
|
||||
MainUtil.sendMessage(player, Captions.SETUP_AREA_NAME);
|
||||
object.current++;
|
||||
} else {
|
||||
MainUtil.sendMessage(player, Captions.SETUP_PARTIAL_AREA);
|
||||
object.current = 5;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2: // area id
|
||||
if (!StringMan.isAlphanumericUnd(args[0])) {
|
||||
MainUtil.sendMessage(player, Captions.SETUP_AREA_NON_ALPHANUMERICAL);
|
||||
return false;
|
||||
}
|
||||
for (PlotArea area : PlotSquared.get().getPlotAreas()) {
|
||||
if (area.getId() != null && area.getId().equalsIgnoreCase(args[0])) {
|
||||
MainUtil.sendMessage(player, Captions.SETUP_AREA_INVALID_ID);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
object.id = args[0];
|
||||
object.current++;
|
||||
MainUtil.sendMessage(player, Captions.SETUP_AREA_MIN_PLOT_ID);
|
||||
break;
|
||||
case 3: // min
|
||||
try {
|
||||
object.min = PlotId.fromString(args[0]);
|
||||
} catch (IllegalArgumentException ignored) {
|
||||
MainUtil.sendMessage(player, Captions.SETUP_AREA_MIN_PLOT_ID_ERROR);
|
||||
return false;
|
||||
}
|
||||
object.current++;
|
||||
MainUtil.sendMessage(player, Captions.SETUP_AREA_MAX_PLOT_ID);
|
||||
break;
|
||||
case 4:
|
||||
// max
|
||||
PlotId id;
|
||||
try {
|
||||
id = PlotId.fromString(args[0]);
|
||||
} catch (IllegalArgumentException ignored) {
|
||||
MainUtil.sendMessage(player, Captions.SETUP_AREA_MAX_PLOT_ID_ERROR);
|
||||
return false;
|
||||
}
|
||||
if (id.x <= object.min.x || id.y <= object.min.y) {
|
||||
MainUtil.sendMessage(player, Captions.SETUP_AREA_PLOT_ID_GREATER_THAN_MINIMUM);
|
||||
return false;
|
||||
}
|
||||
object.max = id;
|
||||
object.current++;
|
||||
MainUtil.sendMessage(player, Captions.SETUP_PARTIAL_AREA);
|
||||
break;
|
||||
case 5: { // Choose terrain
|
||||
Optional<PlotAreaTerrainType> optTerrain;
|
||||
if (args.length != 1 || !(optTerrain = PlotAreaTerrainType.fromString(args[0]))
|
||||
.isPresent()) {
|
||||
MainUtil.sendMessage(player, Captions.SETUP_PARTIAL_AREA_ERROR,
|
||||
Captions.SETUP_PARTIAL_AREA);
|
||||
return false;
|
||||
}
|
||||
object.terrain = optTerrain.get();
|
||||
object.current++;
|
||||
if (object.step == null) {
|
||||
object.step = SetupUtils.generators.get(object.plotManager).getPlotGenerator()
|
||||
.getNewPlotArea("CheckingPlotSquaredGenerator", null, null, null)
|
||||
.getSettingNodes();
|
||||
}
|
||||
ConfigurationNode step = object.step[object.setup_index];
|
||||
sendMessage(player, Captions.SETUP_STEP, object.setup_index + 1,
|
||||
step.getDescription(), step.getType().getType(),
|
||||
String.valueOf(step.getDefaultValue()));
|
||||
break;
|
||||
}
|
||||
case 6: // world setup
|
||||
if (object.setup_index == object.step.length) {
|
||||
MainUtil.sendMessage(player, Captions.SETUP_WORLD_NAME);
|
||||
object.setup_index = 0;
|
||||
object.current++;
|
||||
return true;
|
||||
}
|
||||
ConfigurationNode step = object.step[object.setup_index];
|
||||
if (args.length < 1) {
|
||||
sendMessage(player, Captions.SETUP_STEP, object.setup_index + 1,
|
||||
step.getDescription(), step.getType().getType(),
|
||||
String.valueOf(step.getDefaultValue()));
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean valid = false;
|
||||
try {
|
||||
valid = step.isValid(args[0]);
|
||||
} catch (final ConfigurationUtil.UnsafeBlockException e) {
|
||||
Captions.NOT_ALLOWED_BLOCK.send(player, e.getUnsafeBlock().toString());
|
||||
}
|
||||
if (valid) {
|
||||
step.setValue(args[0]);
|
||||
Object value = step.getValue();
|
||||
sendMessage(player, Captions.SETUP_VALID_ARG, step.getConstant(), value);
|
||||
object.setup_index++;
|
||||
if (object.setup_index == object.step.length) {
|
||||
onCommand(player, args);
|
||||
return false;
|
||||
}
|
||||
step = object.step[object.setup_index];
|
||||
sendMessage(player, Captions.SETUP_STEP, object.setup_index + 1,
|
||||
step.getDescription(), step.getType().getType(),
|
||||
String.valueOf(step.getDefaultValue()));
|
||||
return false;
|
||||
} else {
|
||||
sendMessage(player, Captions.SETUP_INVALID_ARG, args[0], step.getConstant());
|
||||
sendMessage(player, Captions.SETUP_STEP, object.setup_index + 1,
|
||||
step.getDescription(), step.getType().getType(),
|
||||
String.valueOf(step.getDefaultValue()));
|
||||
return false;
|
||||
}
|
||||
case 7:
|
||||
if (args.length != 1) {
|
||||
MainUtil.sendMessage(player, Captions.SETUP_WORLD_NAME_ERROR);
|
||||
return false;
|
||||
}
|
||||
if (!d(args[0])) {
|
||||
MainUtil.sendMessage(player, Captions.SETUP_WORLD_NAME_FORMAT + args[0]);
|
||||
return false;
|
||||
}
|
||||
if (WorldUtil.IMP.isWorld(args[0])) {
|
||||
if (PlotSquared.get().hasPlotArea(args[0])) {
|
||||
MainUtil.sendMessage(player, Captions.SETUP_WORLD_NAME_TAKEN);
|
||||
return false;
|
||||
}
|
||||
MainUtil.sendMessage(player, Captions.SETUP_WORLD_APPLY_PLOTSQUARED);
|
||||
}
|
||||
object.world = args[0];
|
||||
player.deleteMeta("setup");
|
||||
String world;
|
||||
if (object.setupManager == null) {
|
||||
world = SetupUtils.manager.setupWorld(object);
|
||||
} else {
|
||||
world = object.setupManager.setupWorld(object);
|
||||
}
|
||||
try {
|
||||
player.teleport(WorldUtil.IMP.getSpawn(world), TeleportCause.COMMAND);
|
||||
} catch (Exception e) {
|
||||
player.sendMessage("&cAn error occurred. See console for more information");
|
||||
e.printStackTrace();
|
||||
}
|
||||
sendMessage(player, Captions.SETUP_FINISHED, object.world);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override public Collection<Command> tab(PlotPlayer player, String[] args, boolean space) {
|
||||
|
@ -406,136 +114,15 @@ public class Setup extends SubCommand {
|
|||
return Collections.emptyList();
|
||||
}
|
||||
SetupStep setupStep = process.getCurrentStep();
|
||||
return setupStep.createSuggestions(player, space ? "" : args[0]);
|
||||
List<Command> commands = new ArrayList<>(setupStep.createSuggestions(player, space ? "" : args[0]));
|
||||
tryAddSubCommand("back", args[0], commands);
|
||||
tryAddSubCommand("cancel", args[0], commands);
|
||||
return commands;
|
||||
}
|
||||
|
||||
/*private static final class StepPickGenerator extends SetupStep {
|
||||
|
||||
@Getter private String generator;
|
||||
|
||||
public StepPickGenerator() {
|
||||
super("generator");
|
||||
}
|
||||
|
||||
@Override public Collection<PlotMessage> showDescriptionMessage() {
|
||||
SetupUtils.manager.updateGenerators();
|
||||
final List<PlotMessage> messages = new ArrayList<>();
|
||||
messages.add(new PlotMessage("What generator do you want?").color("$6"));
|
||||
for (Entry<String, GeneratorWrapper<?>> entry : SetupUtils.generators.entrySet()) {
|
||||
final PlotMessage plotMessage = new PlotMessage(" - ").color("$8");
|
||||
if (entry.getKey().equals(PlotSquared.imp().getPluginName())) {
|
||||
plotMessage.text(entry.getKey()).color("$8").tooltip("Select this generator")
|
||||
.color("$2").command("/plot setup generator " + entry.getKey())
|
||||
.text(" (Default Generator)").color("$7");
|
||||
} else if (entry.getValue().isFull()) {
|
||||
plotMessage.text(entry.getKey()).color("$8").tooltip("Select this generator")
|
||||
.color("$7").command("/plot setup generator " + entry.getKey())
|
||||
.text(" (Plot Generator)").color("$7");
|
||||
} else {
|
||||
plotMessage.text(entry.getKey()).color("$8").tooltip("Select this generator")
|
||||
.color("$7").command("/plot setup generator " + entry.getKey())
|
||||
.text(" (Unknown Structure)").color("$7");
|
||||
}
|
||||
messages.add(plotMessage);
|
||||
}
|
||||
return messages;
|
||||
}
|
||||
|
||||
@Override public boolean parseInput(String input) {
|
||||
this.generator = input.toLowerCase();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Nullable @Override public String getDefault() {
|
||||
return null;
|
||||
private void tryAddSubCommand(String subCommand, String argument, List<Command> suggestions) {
|
||||
if (!argument.isEmpty() && subCommand.startsWith(argument)) {
|
||||
suggestions.add(new Command(null, false, subCommand, "", RequiredType.NONE, null) {});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static final class StepWorldType extends SetupStep {
|
||||
|
||||
private static final Map<String, String> WORLD_TYPES = new HashMap<>();
|
||||
|
||||
static {
|
||||
WORLD_TYPES.put("default", "Standard plot generation");
|
||||
WORLD_TYPES.put("augmented", "Plot generation with vanilla terrain");
|
||||
WORLD_TYPES.put("partial", "Vanilla clusters of plots");
|
||||
}
|
||||
|
||||
@Getter private String worldType;
|
||||
|
||||
public StepWorldType() {
|
||||
super("type");
|
||||
}
|
||||
|
||||
@Override public Collection<PlotMessage> showDescriptionMessage() {
|
||||
final List<PlotMessage> messages = new ArrayList<>();
|
||||
messages.add(new PlotMessage("What world type do you want?").color("$6"));
|
||||
for (final Map.Entry<String, String> worldType : WORLD_TYPES.entrySet()) {
|
||||
messages.add(new PlotMessage(" - ").color("$8").text(worldType.getKey())
|
||||
.color(worldType.getKey().equals(getDefault()) ? "$2" : "$7")
|
||||
.tooltip("Select this world type")
|
||||
.command("/plot setup type " + worldType.getKey())
|
||||
.text(" (" + worldType.getValue() + ")").color("$7"));
|
||||
}
|
||||
return messages;
|
||||
}
|
||||
|
||||
@Override public boolean parseInput(String input) {
|
||||
if (!WORLD_TYPES.containsKey(input.toLowerCase())) {
|
||||
return false;
|
||||
}
|
||||
this.worldType = input.toLowerCase();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override public String getDefault() {
|
||||
return "default";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ToString
|
||||
@EqualsAndHashCode(of = "uuid")
|
||||
@AllArgsConstructor
|
||||
private static class SetupContext {
|
||||
|
||||
private final UUID uuid;
|
||||
|
||||
@Getter private String step;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@RequiredArgsConstructor(access = AccessLevel.PROTECTED)
|
||||
private abstract static class SetupStep {
|
||||
|
||||
private final String stepName;
|
||||
|
||||
public abstract Collection<PlotMessage> showDescriptionMessage();
|
||||
|
||||
public abstract boolean parseInput(String input);
|
||||
|
||||
public final PlotMessage getUsage() {
|
||||
return new PlotMessage("Usage: ").color("$1")
|
||||
.text("/plot setup " + this.stepName + " <value>").color("$2").suggest(
|
||||
"/plot setup " + this.stepName + (this.getDefault() != null ?
|
||||
this.getDefault() :
|
||||
""));
|
||||
}
|
||||
|
||||
@Nullable public abstract String getDefault();
|
||||
|
||||
public void sendToPlayer(@NonNull final PlotPlayer plotPlayer) {
|
||||
new PlotMessage("Setup Step: ").color("$6").text(this.stepName).color("$7")
|
||||
.send(plotPlayer);
|
||||
this.getUsage().send(plotPlayer);
|
||||
this.showDescriptionMessage().forEach(plotMessage -> plotMessage.send(plotPlayer));
|
||||
if (this.getDefault() != null) {
|
||||
new PlotMessage("Default: ").color("$6").text(this.getDefault()).color("$7");
|
||||
}
|
||||
}
|
||||
|
||||
}*/
|
||||
|
||||
}
|
||||
|
|
|
@ -36,8 +36,9 @@ import com.plotsquared.core.events.TeleportCause;
|
|||
import com.plotsquared.core.player.PlotPlayer;
|
||||
import com.plotsquared.core.plot.PlotArea;
|
||||
import com.plotsquared.core.plot.PlotManager;
|
||||
import com.plotsquared.core.plot.SetupObject;
|
||||
import com.plotsquared.core.queue.GlobalBlockQueue;
|
||||
import com.plotsquared.core.setup.PlotAreaBuilder;
|
||||
import com.plotsquared.core.setup.SettingsNodesWrapper;
|
||||
import com.plotsquared.core.util.FileBytes;
|
||||
import com.plotsquared.core.util.MainUtil;
|
||||
import com.plotsquared.core.util.SetupUtils;
|
||||
|
@ -181,15 +182,15 @@ public class Template extends SubCommand {
|
|||
String manager =
|
||||
worldConfig.getString("generator.plugin", PlotSquared.imp().getPluginName());
|
||||
String generator = worldConfig.getString("generator.init", manager);
|
||||
SetupObject setup = new SetupObject();
|
||||
setup.type = MainUtil.getType(worldConfig);
|
||||
setup.terrain = MainUtil.getTerrain(worldConfig);
|
||||
PlotAreaBuilder builder = new PlotAreaBuilder()
|
||||
.plotAreaType(MainUtil.getType(worldConfig))
|
||||
.terrainType(MainUtil.getTerrain(worldConfig))
|
||||
.plotManager(manager)
|
||||
.generatorName(generator)
|
||||
.settingsNodesWrapper(new SettingsNodesWrapper(new ConfigurationNode[0], null))
|
||||
.worldName(world);
|
||||
|
||||
setup.plotManager = manager;
|
||||
setup.setupGenerator = generator;
|
||||
setup.step = new ConfigurationNode[0];
|
||||
setup.world = world;
|
||||
SetupUtils.manager.setupWorld(setup);
|
||||
SetupUtils.manager.setupWorld(builder);
|
||||
GlobalBlockQueue.IMP.addEmptyTask(() -> {
|
||||
MainUtil.sendMessage(player, "Done!");
|
||||
player.teleport(WorldUtil.IMP.getSpawn(world), TeleportCause.COMMAND);
|
||||
|
|
|
@ -38,8 +38,9 @@ import com.plotsquared.core.plot.PlotAreaType;
|
|||
import com.plotsquared.core.plot.PlotId;
|
||||
import com.plotsquared.core.plot.PlotManager;
|
||||
import com.plotsquared.core.plot.PlotSettings;
|
||||
import com.plotsquared.core.plot.SetupObject;
|
||||
import com.plotsquared.core.plot.flag.FlagContainer;
|
||||
import com.plotsquared.core.setup.PlotAreaBuilder;
|
||||
import com.plotsquared.core.setup.SettingsNodesWrapper;
|
||||
import com.plotsquared.core.util.SetupUtils;
|
||||
import com.plotsquared.core.util.WorldUtil;
|
||||
import com.plotsquared.core.util.task.RunnableVal;
|
||||
|
@ -78,13 +79,13 @@ public class SinglePlotArea extends GridPlotWorld {
|
|||
if (WorldUtil.IMP.isWorld(worldName)) {
|
||||
return;
|
||||
}
|
||||
SetupObject setup = new SetupObject();
|
||||
setup.plotManager = "PlotSquared:single";
|
||||
setup.setupGenerator = "PlotSquared:single";
|
||||
setup.type = getType();
|
||||
setup.terrain = getTerrain();
|
||||
setup.step = new ConfigurationNode[0];
|
||||
setup.world = worldName;
|
||||
PlotAreaBuilder builder = new PlotAreaBuilder()
|
||||
.plotManager("PlotSquared:single")
|
||||
.generatorName("PlotSquared:single")
|
||||
.plotAreaType(getType())
|
||||
.terrainType(getTerrain())
|
||||
.settingsNodesWrapper(new SettingsNodesWrapper(new ConfigurationNode[0], null))
|
||||
.worldName(worldName);
|
||||
|
||||
File container = PlotSquared.imp().getWorldContainer();
|
||||
File destination = new File(container, worldName);
|
||||
|
@ -96,7 +97,7 @@ public class SinglePlotArea extends GridPlotWorld {
|
|||
}
|
||||
}
|
||||
// Duplicate 0;0
|
||||
if (setup.type != PlotAreaType.NORMAL) {
|
||||
if (builder.plotAreaType() != PlotAreaType.NORMAL) {
|
||||
if (!destination.exists()) {
|
||||
File src = new File(container, "0.0");
|
||||
if (src.exists()) {
|
||||
|
@ -132,7 +133,7 @@ public class SinglePlotArea extends GridPlotWorld {
|
|||
return;
|
||||
}
|
||||
|
||||
SetupUtils.manager.setupWorld(setup);
|
||||
SetupUtils.manager.setupWorld(builder);
|
||||
}
|
||||
});
|
||||
// String worldName = plot.getWorldName();
|
||||
|
|
|
@ -76,11 +76,11 @@ public enum CommonSetupSteps implements SetupStep {
|
|||
// TODO reimplement SetupUtils.generators.get(object.plotManager).getPlotGenerator()
|
||||
// .processSetup(process);
|
||||
}
|
||||
if (!builder.settingsNodesWrapper().hasNext()) {
|
||||
if (!builder.settingsNodesWrapper().hasStep()) {
|
||||
// object.setup_index = 0; TODO what did that do?
|
||||
return builder.settingsNodesWrapper().getAfterwards(); // skip
|
||||
}
|
||||
return builder.settingsNodesWrapper().next();
|
||||
return builder.settingsNodesWrapper().first();
|
||||
} else {
|
||||
if (gen.isFull()) {
|
||||
builder.plotManager(builder.generatorName());
|
||||
|
@ -179,7 +179,7 @@ public enum CommonSetupSteps implements SetupStep {
|
|||
builder.settingsNodesWrapper(CommonSetupSteps.wrap(builder.plotManager()));
|
||||
}
|
||||
SettingsNodesWrapper wrapper = builder.settingsNodesWrapper();
|
||||
return wrapper.hasNext() ? wrapper.next() : wrapper.getAfterwards();
|
||||
return wrapper.hasStep() ? wrapper.first() : wrapper.getAfterwards();
|
||||
}
|
||||
|
||||
@Nullable @Override public String getDefaultValue() {
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package com.plotsquared.core.setup;
|
||||
|
||||
|
||||
import com.plotsquared.core.PlotSquared;
|
||||
import com.plotsquared.core.plot.PlotArea;
|
||||
import com.plotsquared.core.plot.PlotAreaTerrainType;
|
||||
import com.plotsquared.core.plot.PlotAreaType;
|
||||
import com.plotsquared.core.plot.PlotId;
|
||||
|
@ -22,20 +24,35 @@ public class PlotAreaBuilder {
|
|||
@Getter @Setter private SettingsNodesWrapper settingsNodesWrapper;
|
||||
@Getter @Setter private SetupUtils setupManager;
|
||||
|
||||
public void minimumId(PlotId minimumId) {
|
||||
public static PlotAreaBuilder ofPlotArea(PlotArea area) {
|
||||
return new PlotAreaBuilder()
|
||||
.worldName(area.getWorldName())
|
||||
.areaName(area.getId())
|
||||
.plotAreaType(area.getType())
|
||||
.terrainType(area.getTerrain())
|
||||
.generatorName(area.getGenerator().getName())
|
||||
.plotManager(PlotSquared.imp().getPluginName())
|
||||
.minimumId(area.getMin())
|
||||
.maximumId(area.getMax())
|
||||
.settingsNodesWrapper(new SettingsNodesWrapper(area.getSettingNodes(), null));
|
||||
}
|
||||
|
||||
public PlotAreaBuilder minimumId(PlotId minimumId) {
|
||||
if (this.maximumId != null
|
||||
&& (minimumId.getX() >= this.maximumId.getX() || minimumId.getY() >= this.maximumId.getY())) {
|
||||
&& (minimumId.getX() > this.maximumId.getX() || minimumId.getY() > this.maximumId.getY())) {
|
||||
throw new IllegalStateException("minId >= maxId");
|
||||
}
|
||||
this.minimumId = minimumId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void maximumId(PlotId maximumId) {
|
||||
public PlotAreaBuilder maximumId(PlotId maximumId) {
|
||||
if (this.minimumId != null
|
||||
&& (maximumId.getX() <= this.minimumId.getX() || maximumId.getY() <= this.minimumId.getY())) {
|
||||
&& (maximumId.getX() < this.minimumId.getX() || maximumId.getY() < this.minimumId.getY())) {
|
||||
throw new IllegalStateException("maxId <= minId");
|
||||
}
|
||||
this.maximumId = maximumId;
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ public class SettingsNodeStep implements SetupStep {
|
|||
if (this.configurationNode.isValid(argument)) {
|
||||
this.configurationNode.setValue(argument);
|
||||
}
|
||||
return this.wrapper.hasNext() ? wrapper.next() : wrapper.getAfterwards();
|
||||
return this.wrapper.hasNext(this.id) ? wrapper.next(this.id) : wrapper.getAfterwards();
|
||||
}
|
||||
|
||||
@NotNull @Override public Collection<String> getSuggestions() {
|
||||
|
|
|
@ -6,25 +6,34 @@ import lombok.Getter;
|
|||
public class SettingsNodesWrapper {
|
||||
@Getter private final ConfigurationNode[] settingsNodes;
|
||||
@Getter private final SetupStep afterwards;
|
||||
private int current;
|
||||
|
||||
public SettingsNodesWrapper(ConfigurationNode[] settingsNodes, SetupStep afterwards) {
|
||||
this.settingsNodes = settingsNodes;
|
||||
this.afterwards = afterwards;
|
||||
this.current = 0;
|
||||
}
|
||||
|
||||
|
||||
public SettingsNodeStep next() {
|
||||
if (this.settingsNodes.length <= this.current) {
|
||||
public SettingsNodeStep next(int current) {
|
||||
if (this.settingsNodes.length <= current + 1) {
|
||||
throw new IllegalStateException("No step left");
|
||||
} else {
|
||||
int temp = this.current;
|
||||
this.current++;
|
||||
return new SettingsNodeStep(this.settingsNodes[temp], temp, this);
|
||||
return new SettingsNodeStep(this.settingsNodes[current + 1], current + 1, this);
|
||||
}
|
||||
}
|
||||
public boolean hasNext() {
|
||||
return this.current < this.settingsNodes.length;
|
||||
|
||||
public SettingsNodeStep first() {
|
||||
if (this.settingsNodes.length == 0) {
|
||||
throw new IllegalStateException("No step left");
|
||||
} else {
|
||||
return new SettingsNodeStep(this.settingsNodes[0], 0, this);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean hasNext(int current) {
|
||||
return current + 1 < this.settingsNodes.length;
|
||||
}
|
||||
|
||||
public boolean hasStep() {
|
||||
return this.settingsNodes.length > 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ public abstract class SetupUtils {
|
|||
|
||||
public abstract String getGenerator(final PlotArea plotArea);
|
||||
|
||||
@Deprecated
|
||||
public abstract String setupWorld(final SetupObject object);
|
||||
|
||||
public abstract String setupWorld(final PlotAreaBuilder builder);
|
||||
|
|
Loading…
Reference in a new issue