mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-22 21:26:45 +01:00
Implement setup steps
This commit is contained in:
parent
c5bfde330f
commit
b15c48e074
@ -29,6 +29,7 @@ import com.plotsquared.core.PlotSquared;
|
|||||||
import com.plotsquared.core.configuration.Captions;
|
import com.plotsquared.core.configuration.Captions;
|
||||||
import com.plotsquared.core.configuration.ConfigurationNode;
|
import com.plotsquared.core.configuration.ConfigurationNode;
|
||||||
import com.plotsquared.core.configuration.ConfigurationUtil;
|
import com.plotsquared.core.configuration.ConfigurationUtil;
|
||||||
|
import com.plotsquared.core.configuration.StaticCaption;
|
||||||
import com.plotsquared.core.events.TeleportCause;
|
import com.plotsquared.core.events.TeleportCause;
|
||||||
import com.plotsquared.core.generator.GeneratorWrapper;
|
import com.plotsquared.core.generator.GeneratorWrapper;
|
||||||
import com.plotsquared.core.player.PlotPlayer;
|
import com.plotsquared.core.player.PlotPlayer;
|
||||||
@ -38,6 +39,8 @@ import com.plotsquared.core.plot.PlotAreaType;
|
|||||||
import com.plotsquared.core.plot.PlotId;
|
import com.plotsquared.core.plot.PlotId;
|
||||||
import com.plotsquared.core.plot.SetupObject;
|
import com.plotsquared.core.plot.SetupObject;
|
||||||
import com.plotsquared.core.plot.message.PlotMessage;
|
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.MainUtil;
|
||||||
import com.plotsquared.core.util.SetupUtils;
|
import com.plotsquared.core.util.SetupUtils;
|
||||||
import com.plotsquared.core.util.StringMan;
|
import com.plotsquared.core.util.StringMan;
|
||||||
@ -91,6 +94,42 @@ public class Setup extends SubCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean onCommand(PlotPlayer<?> player, String[] args) {
|
@Override public boolean onCommand(PlotPlayer<?> player, String[] args) {
|
||||||
|
SetupProcess process = player.getMeta("setup");
|
||||||
|
if (process == null) {
|
||||||
|
if (args.length > 0) {
|
||||||
|
// TODO use old behaviour?
|
||||||
|
MainUtil.sendMessage(player, "Use /plot setup to start the setup");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
process = new SetupProcess();
|
||||||
|
player.setMeta("setup", process);
|
||||||
|
SetupUtils.manager.updateGenerators();
|
||||||
|
com.plotsquared.core.setup.SetupStep step = process.getCurrentStep();
|
||||||
|
// TODO generalize?
|
||||||
|
step.announce(player);
|
||||||
|
displayGenerators(player);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (args.length == 1) {
|
||||||
|
if ("back".equalsIgnoreCase(args[0])) {
|
||||||
|
process.back();
|
||||||
|
process.getCurrentStep().announce(player);
|
||||||
|
} else if ("cancel".equalsIgnoreCase(args[0])) {
|
||||||
|
player.deleteMeta("setup");
|
||||||
|
} else {
|
||||||
|
process.handleInput(player, args[0]);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
process.getCurrentStep().announce(player);
|
||||||
|
// TODO return only
|
||||||
|
if (true) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// going through setup
|
// going through setup
|
||||||
SetupObject object = player.getMeta("setup");
|
SetupObject object = player.getMeta("setup");
|
||||||
if (object == null) {
|
if (object == null) {
|
||||||
@ -354,7 +393,7 @@ public class Setup extends SubCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static final class StepPickGenerator extends SetupStep {
|
/*private static final class StepPickGenerator extends SetupStep {
|
||||||
|
|
||||||
@Getter private String generator;
|
@Getter private String generator;
|
||||||
|
|
||||||
@ -481,6 +520,6 @@ public class Setup extends SubCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -319,6 +319,7 @@ public enum Captions implements Caption {
|
|||||||
REMOVED_GRANTED_PLOT("$2You used %s0 plot grant(s), you've got $1%s1 $2left", "Economy"),
|
REMOVED_GRANTED_PLOT("$2You used %s0 plot grant(s), you've got $1%s1 $2left", "Economy"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
//<editor-fold desc="Setup">
|
//<editor-fold desc="Setup">
|
||||||
|
SETUP_NOT_STARTED("$7No setup started. Use $2/plot setup $7to start a setup process.", "Setup"),
|
||||||
SETUP_INIT("$1Usage: $2/plot setup <value>", "Setup"),
|
SETUP_INIT("$1Usage: $2/plot setup <value>", "Setup"),
|
||||||
SETUP_STEP("$3[$1Step %s0$3] $1%s1 $2- $1Expecting: $2%s2 $1Default: $2%s3", "Setup"),
|
SETUP_STEP("$3[$1Step %s0$3] $1%s1 $2- $1Expecting: $2%s2 $1Default: $2%s3", "Setup"),
|
||||||
SETUP_INVALID_ARG("$2%s0 is not a valid argument for step %s1. To cancel setup use: $1/plot setup cancel", "Setup"),
|
SETUP_INVALID_ARG("$2%s0 is not a valid argument for step %s1. To cancel setup use: $1/plot setup cancel", "Setup"),
|
||||||
@ -357,6 +358,11 @@ public enum Captions implements Caption {
|
|||||||
SETUP_AREA_MAX_PLOT_ID_ERROR("$7You must choose a valid maximum Plot Id!", "Setup"),
|
SETUP_AREA_MAX_PLOT_ID_ERROR("$7You must choose a valid maximum Plot Id!", "Setup"),
|
||||||
SETUP_AREA_PLOT_ID_GREATER_THAN_MINIMUM("$7The max PlotId must be greater than the minimum!", "Setup"),
|
SETUP_AREA_PLOT_ID_GREATER_THAN_MINIMUM("$7The max PlotId must be greater than the minimum!", "Setup"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
|
//<editor-fold desc=PlotAreaType>
|
||||||
|
PLOT_AREA_TYPE_NORMAL("Standard plot generation", "PlotAreaType"),
|
||||||
|
PLOT_AREA_TYPE_AUGMENTED("Plot generation with vanilla terrain", "PlotAreaType"),
|
||||||
|
PLOT_AREA_TYPE_PARTIAL("Vanilla with clusters of plots", "PlotAreaType"),
|
||||||
|
//</editor-fold>
|
||||||
//<editor-fold desc="Schematic">
|
//<editor-fold desc="Schematic">
|
||||||
SCHEMATIC_TOO_LARGE("$2The plot is too large for this action!", "Schematics"),
|
SCHEMATIC_TOO_LARGE("$2The plot is too large for this action!", "Schematics"),
|
||||||
SCHEMATIC_MISSING_ARG("$2You need to specify an argument. Possible values: $1save$2, $1paste $2, $1exportall$2, $1list", "Schematics"),
|
SCHEMATIC_MISSING_ARG("$2You need to specify an argument. Possible values: $1save$2, $1paste $2, $1exportall$2, $1list", "Schematics"),
|
||||||
|
@ -4,13 +4,17 @@ import com.plotsquared.core.PlotSquared;
|
|||||||
import com.plotsquared.core.configuration.Caption;
|
import com.plotsquared.core.configuration.Caption;
|
||||||
import com.plotsquared.core.configuration.Captions;
|
import com.plotsquared.core.configuration.Captions;
|
||||||
import com.plotsquared.core.configuration.ConfigurationNode;
|
import com.plotsquared.core.configuration.ConfigurationNode;
|
||||||
|
import com.plotsquared.core.events.TeleportCause;
|
||||||
import com.plotsquared.core.generator.GeneratorWrapper;
|
import com.plotsquared.core.generator.GeneratorWrapper;
|
||||||
import com.plotsquared.core.player.PlotPlayer;
|
import com.plotsquared.core.player.PlotPlayer;
|
||||||
|
import com.plotsquared.core.plot.PlotArea;
|
||||||
import com.plotsquared.core.plot.PlotAreaTerrainType;
|
import com.plotsquared.core.plot.PlotAreaTerrainType;
|
||||||
import com.plotsquared.core.plot.PlotAreaType;
|
import com.plotsquared.core.plot.PlotAreaType;
|
||||||
|
import com.plotsquared.core.plot.PlotId;
|
||||||
import com.plotsquared.core.util.MainUtil;
|
import com.plotsquared.core.util.MainUtil;
|
||||||
import com.plotsquared.core.util.SetupUtils;
|
import com.plotsquared.core.util.SetupUtils;
|
||||||
import com.plotsquared.core.util.StringMan;
|
import com.plotsquared.core.util.StringMan;
|
||||||
|
import com.plotsquared.core.util.WorldUtil;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@ -24,7 +28,7 @@ import java.util.stream.Collectors;
|
|||||||
import static com.plotsquared.core.util.MainUtil.sendMessage;
|
import static com.plotsquared.core.util.MainUtil.sendMessage;
|
||||||
|
|
||||||
public enum CommonSetupSteps implements SetupStep {
|
public enum CommonSetupSteps implements SetupStep {
|
||||||
GENERATOR(Captions.SETUP_INIT) {
|
CHOOSE_GENERATOR(Captions.SETUP_INIT) {
|
||||||
|
|
||||||
@Override public SetupStep handleInput(PlotPlayer plotPlayer, PlotAreaBuilder builder, String arg) {
|
@Override public SetupStep handleInput(PlotPlayer plotPlayer, PlotAreaBuilder builder, String arg) {
|
||||||
if (!SetupUtils.generators.containsKey(arg)) {
|
if (!SetupUtils.generators.containsKey(arg)) {
|
||||||
@ -38,18 +42,19 @@ public enum CommonSetupSteps implements SetupStep {
|
|||||||
}
|
}
|
||||||
builder.generatorName(arg);
|
builder.generatorName(arg);
|
||||||
sendMessage(plotPlayer, Captions.SETUP_WORLD_TYPE);
|
sendMessage(plotPlayer, Captions.SETUP_WORLD_TYPE);
|
||||||
return CommonSetupSteps.PLOT_AREA_TYPE; // proceed with next step
|
return CommonSetupSteps.CHOOSE_PLOT_AREA_TYPE; // proceed with next step
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public @NotNull Collection<String> getSuggestions() {
|
@NotNull @Override public Collection<String> getSuggestions() {
|
||||||
return Collections.unmodifiableSet(SetupUtils.generators.keySet());
|
return Collections.unmodifiableSet(SetupUtils.generators.keySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override @Nullable public String getDefaultValue() {
|
@Nullable @Override public String getDefaultValue() {
|
||||||
return PlotSquared.imp().getPluginName();
|
return PlotSquared.imp().getPluginName();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
PLOT_AREA_TYPE(PlotAreaType.class, Captions.SETUP_WORLD_TYPE) {
|
CHOOSE_PLOT_AREA_TYPE(PlotAreaType.class, Captions.SETUP_WORLD_TYPE) {
|
||||||
|
|
||||||
@Override public SetupStep handleInput(PlotPlayer plotPlayer, PlotAreaBuilder builder, String arg) {
|
@Override public SetupStep handleInput(PlotPlayer plotPlayer, PlotAreaBuilder builder, String arg) {
|
||||||
boolean withNormal = SetupUtils.generators.get(builder.generatorName()).isFull();
|
boolean withNormal = SetupUtils.generators.get(builder.generatorName()).isFull();
|
||||||
Optional<PlotAreaType> plotAreaType = PlotAreaType.fromString(arg);
|
Optional<PlotAreaType> plotAreaType = PlotAreaType.fromString(arg);
|
||||||
@ -78,7 +83,7 @@ public enum CommonSetupSteps implements SetupStep {
|
|||||||
if (!builder.settingsNodesWrapper().hasNext()) {
|
if (!builder.settingsNodesWrapper().hasNext()) {
|
||||||
// MainUtil.sendMessage(plotPlayer, Captions.SETUP_WORLD_NAME);
|
// MainUtil.sendMessage(plotPlayer, Captions.SETUP_WORLD_NAME);
|
||||||
// object.setup_index = 0; TODO what did that do?
|
// object.setup_index = 0; TODO what did that do?
|
||||||
return WORLD_NAME; // skip
|
return CHOOSE_WORLD_NAME; // skip
|
||||||
}
|
}
|
||||||
SettingsNodeStep next = builder.settingsNodesWrapper().next();
|
SettingsNodeStep next = builder.settingsNodesWrapper().next();
|
||||||
ConfigurationNode step = next.getConfigurationNode();
|
ConfigurationNode step = next.getConfigurationNode();
|
||||||
@ -105,7 +110,7 @@ public enum CommonSetupSteps implements SetupStep {
|
|||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
// MainUtil.sendMessage(plotPlayer, Captions.SETUP_PARTIAL_AREA);
|
// MainUtil.sendMessage(plotPlayer, Captions.SETUP_PARTIAL_AREA);
|
||||||
return TERRAIN_TYPE;
|
return CHOOSE_TERRAIN_TYPE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -114,19 +119,116 @@ public enum CommonSetupSteps implements SetupStep {
|
|||||||
return PlotAreaType.NORMAL.toString(); // TODO toLowerCase here?
|
return PlotAreaType.NORMAL.toString(); // TODO toLowerCase here?
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
TERRAIN_TYPE(PlotAreaTerrainType.class, Captions.SETUP_PARTIAL_AREA) {
|
CHOOSE_AREA_ID(Captions.SETUP_AREA_NAME) {
|
||||||
@Override
|
|
||||||
public SetupStep handleInput(PlotPlayer plotPlayer, PlotAreaBuilder builder, String argument) {
|
@Override public SetupStep handleInput(PlotPlayer plotPlayer, PlotAreaBuilder builder, String argument) {
|
||||||
return null;
|
if (!StringMan.isAlphanumericUnd(argument)) {
|
||||||
|
MainUtil.sendMessage(plotPlayer, Captions.SETUP_AREA_NON_ALPHANUMERICAL);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
for (PlotArea area : PlotSquared.get().getPlotAreas()) {
|
||||||
|
if (area.getId() != null && area.getId().equalsIgnoreCase(argument)) {
|
||||||
|
MainUtil.sendMessage(plotPlayer, Captions.SETUP_AREA_INVALID_ID);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
builder.areaName(argument);
|
||||||
|
return CHOOSE_MINIMUM_PLOT_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Nullable @Override public String getDefaultValue() {
|
||||||
public @Nullable String getDefaultValue() {
|
return null;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
CHOOSE_MINIMUM_PLOT_ID(Captions.SETUP_AREA_MIN_PLOT_ID) {
|
||||||
|
|
||||||
|
@Override public SetupStep handleInput(PlotPlayer plotPlayer, PlotAreaBuilder builder, String argument) {
|
||||||
|
try {
|
||||||
|
builder.minimumId(PlotId.fromString(argument));
|
||||||
|
} catch (IllegalArgumentException ignored) {
|
||||||
|
MainUtil.sendMessage(plotPlayer, Captions.SETUP_AREA_MIN_PLOT_ID_ERROR);
|
||||||
|
return this;
|
||||||
|
} catch (IllegalStateException ignored) {
|
||||||
|
MainUtil.sendMessage(plotPlayer, Captions.SETUP_AREA_PLOT_ID_GREATER_THAN_MINIMUM);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
return CHOOSE_MAXIMUM_PLOT_ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public String getDefaultValue() {
|
||||||
|
return "0;0";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
CHOOSE_MAXIMUM_PLOT_ID(Captions.SETUP_AREA_MAX_PLOT_ID) {
|
||||||
|
|
||||||
|
@Override public SetupStep handleInput(PlotPlayer plotPlayer, PlotAreaBuilder builder, String argument) {
|
||||||
|
try {
|
||||||
|
builder.maximumId(PlotId.fromString(argument));
|
||||||
|
} catch (IllegalArgumentException ignored) {
|
||||||
|
MainUtil.sendMessage(plotPlayer, Captions.SETUP_AREA_MAX_PLOT_ID_ERROR);
|
||||||
|
return this;
|
||||||
|
} catch (IllegalStateException ignored) {
|
||||||
|
MainUtil.sendMessage(plotPlayer, Captions.SETUP_AREA_PLOT_ID_GREATER_THAN_MINIMUM);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
return CHOOSE_TERRAIN_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public String getDefaultValue() {
|
||||||
|
return "0;0";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
CHOOSE_TERRAIN_TYPE(PlotAreaTerrainType.class, Captions.SETUP_PARTIAL_AREA) {
|
||||||
|
|
||||||
|
@Override public SetupStep handleInput(PlotPlayer plotPlayer, PlotAreaBuilder builder, String argument) {
|
||||||
|
Optional<PlotAreaTerrainType> optTerrain;
|
||||||
|
if (!(optTerrain = PlotAreaTerrainType.fromString(argument))
|
||||||
|
.isPresent()) {
|
||||||
|
MainUtil.sendMessage(plotPlayer, Captions.SETUP_PARTIAL_AREA_ERROR, Captions.SETUP_PARTIAL_AREA);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
builder.terrainType(optTerrain.get());
|
||||||
|
if (builder.settingsNodesWrapper() == null) {
|
||||||
|
builder.settingsNodesWrapper(CommonSetupSteps.wrap(builder.plotManager()));
|
||||||
|
}
|
||||||
|
SettingsNodesWrapper wrapper = builder.settingsNodesWrapper();
|
||||||
|
// TODO return CHOOSE_WORLD_NAME if !hasNext
|
||||||
|
return wrapper.hasNext() ? wrapper.next() : wrapper.getAfterwards();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable @Override public String getDefaultValue() {
|
||||||
return PlotAreaTerrainType.NONE.toString(); // TODO toLowerCase here?
|
return PlotAreaTerrainType.NONE.toString(); // TODO toLowerCase here?
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
WORLD_NAME(Captions.SETUP_WORLD_NAME) {
|
CHOOSE_WORLD_NAME(Captions.SETUP_WORLD_NAME) {
|
||||||
|
|
||||||
@Override public SetupStep handleInput(PlotPlayer plotPlayer, PlotAreaBuilder builder, String argument) {
|
@Override public SetupStep handleInput(PlotPlayer plotPlayer, PlotAreaBuilder builder, String argument) {
|
||||||
|
if (!isValidWorldName(argument)) {
|
||||||
|
MainUtil.sendMessage(plotPlayer, Captions.SETUP_WORLD_NAME_FORMAT + argument);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
if (WorldUtil.IMP.isWorld(argument)) {
|
||||||
|
if (PlotSquared.get().hasPlotArea(argument)) {
|
||||||
|
MainUtil.sendMessage(plotPlayer, Captions.SETUP_WORLD_NAME_TAKEN);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
MainUtil.sendMessage(plotPlayer, Captions.SETUP_WORLD_APPLY_PLOTSQUARED);
|
||||||
|
}
|
||||||
|
builder.worldName(argument);
|
||||||
|
plotPlayer.deleteMeta("setup");
|
||||||
|
String world;
|
||||||
|
if (builder.setupManager() == null) {
|
||||||
|
world = SetupUtils.manager.setupWorld(builder);
|
||||||
|
} else {
|
||||||
|
world = builder.setupManager().setupWorld(builder);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
plotPlayer.teleport(WorldUtil.IMP.getSpawn(world), TeleportCause.COMMAND);
|
||||||
|
} catch (Exception e) {
|
||||||
|
plotPlayer.sendMessage("&cAn error occurred. See console for more information");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
sendMessage(plotPlayer, Captions.SETUP_FINISHED, builder.worldName());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,21 +245,24 @@ public enum CommonSetupSteps implements SetupStep {
|
|||||||
* @param suggestions the input suggestions for this step
|
* @param suggestions the input suggestions for this step
|
||||||
* @param description the caption describing this step
|
* @param description the caption describing this step
|
||||||
*/
|
*/
|
||||||
CommonSetupSteps(@NotNull Collection<String> suggestions, Caption description) {
|
CommonSetupSteps(@NotNull Collection<String> suggestions, @NotNull Caption description) {
|
||||||
this.suggestions = suggestions;
|
this.suggestions = suggestions;
|
||||||
this.description = description;
|
this.description = description;
|
||||||
}
|
}
|
||||||
|
|
||||||
CommonSetupSteps(Caption description) {
|
CommonSetupSteps(@NotNull Caption description) {
|
||||||
this.description = description;
|
this.description = description;
|
||||||
this.suggestions = Collections.emptyList();
|
this.suggestions = Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
<E extends Enum<E>> CommonSetupSteps(Class<E> argumentType, Caption description) {
|
<E extends Enum<E>> CommonSetupSteps(@NotNull Class<E> argumentType, Caption description) {
|
||||||
this(enumToStrings(argumentType), description);
|
this(enumToStrings(argumentType), description);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void announce(PlotPlayer plotPlayer) {
|
||||||
|
MainUtil.sendMessage(plotPlayer, this.description);
|
||||||
|
}
|
||||||
|
|
||||||
private static <E extends Enum<E>> Collection<String> enumToStrings(Class<E> type) {
|
private static <E extends Enum<E>> Collection<String> enumToStrings(Class<E> type) {
|
||||||
return Arrays.stream(type.getEnumConstants()).map(e -> e.toString().toLowerCase()).collect(Collectors.toList());
|
return Arrays.stream(type.getEnumConstants()).map(e -> e.toString().toLowerCase()).collect(Collectors.toList());
|
||||||
@ -166,11 +271,12 @@ public enum CommonSetupSteps implements SetupStep {
|
|||||||
private static SettingsNodesWrapper wrap(String plotManager) {
|
private static SettingsNodesWrapper wrap(String plotManager) {
|
||||||
return new SettingsNodesWrapper(SetupUtils.generators.get(plotManager).getPlotGenerator()
|
return new SettingsNodesWrapper(SetupUtils.generators.get(plotManager).getPlotGenerator()
|
||||||
.getNewPlotArea("CheckingPlotSquaredGenerator", null, null, null)
|
.getNewPlotArea("CheckingPlotSquaredGenerator", null, null, null)
|
||||||
.getSettingNodes());
|
.getSettingNodes(), CHOOSE_WORLD_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private static boolean isValidWorldName(String s) {
|
||||||
public void announce(PlotPlayer plotPlayer) {
|
return s.chars().allMatch((i) -> {
|
||||||
MainUtil.sendMessage(plotPlayer, this.description);
|
return i == 95 || i == 45 || i >= 97 && i <= 122 || i >= 48 && i <= 57 || i == 46;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,8 @@ package com.plotsquared.core.setup;
|
|||||||
|
|
||||||
import com.plotsquared.core.plot.PlotAreaTerrainType;
|
import com.plotsquared.core.plot.PlotAreaTerrainType;
|
||||||
import com.plotsquared.core.plot.PlotAreaType;
|
import com.plotsquared.core.plot.PlotAreaType;
|
||||||
|
import com.plotsquared.core.plot.PlotId;
|
||||||
|
import com.plotsquared.core.util.SetupUtils;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
@ -15,6 +17,25 @@ public class PlotAreaBuilder {
|
|||||||
@Getter @Setter private PlotAreaTerrainType terrainType;
|
@Getter @Setter private PlotAreaTerrainType terrainType;
|
||||||
@Getter @Setter private String worldName;
|
@Getter @Setter private String worldName;
|
||||||
@Getter @Setter private String areaName;
|
@Getter @Setter private String areaName;
|
||||||
|
@Getter private PlotId minimumId;
|
||||||
|
@Getter private PlotId maximumId;
|
||||||
@Getter @Setter private SettingsNodesWrapper settingsNodesWrapper;
|
@Getter @Setter private SettingsNodesWrapper settingsNodesWrapper;
|
||||||
|
@Getter @Setter private SetupUtils setupManager;
|
||||||
|
|
||||||
|
public void minimumId(PlotId minimumId) {
|
||||||
|
if (this.maximumId != null
|
||||||
|
&& (minimumId.getX() >= this.maximumId.getX() || minimumId.getY() >= this.maximumId.getY())) {
|
||||||
|
throw new IllegalStateException("minId >= maxId");
|
||||||
|
}
|
||||||
|
this.minimumId = minimumId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void maximumId(PlotId maximumId) {
|
||||||
|
if (this.minimumId != null
|
||||||
|
&& (this.minimumId.getX() <= maximumId.getX() || this.minimumId.getY() <= maximumId.getY())) {
|
||||||
|
throw new IllegalStateException("maxId <= minId");
|
||||||
|
}
|
||||||
|
this.maximumId = maximumId;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ public class SettingsNodeStep implements SetupStep {
|
|||||||
if (this.configurationNode.isValid(argument)) {
|
if (this.configurationNode.isValid(argument)) {
|
||||||
this.configurationNode.setValue(argument);
|
this.configurationNode.setValue(argument);
|
||||||
}
|
}
|
||||||
return wrapper.next();
|
return this.wrapper.hasNext() ? wrapper.next() : wrapper.getAfterwards();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull @Override public Collection<String> getSuggestions() {
|
@NotNull @Override public Collection<String> getSuggestions() {
|
||||||
|
@ -1,13 +1,16 @@
|
|||||||
package com.plotsquared.core.setup;
|
package com.plotsquared.core.setup;
|
||||||
|
|
||||||
import com.plotsquared.core.configuration.ConfigurationNode;
|
import com.plotsquared.core.configuration.ConfigurationNode;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
public class SettingsNodesWrapper {
|
public class SettingsNodesWrapper {
|
||||||
private final ConfigurationNode[] settingsNodes;
|
@Getter private final ConfigurationNode[] settingsNodes;
|
||||||
|
@Getter private final SetupStep afterwards;
|
||||||
private int current;
|
private int current;
|
||||||
|
|
||||||
public SettingsNodesWrapper(ConfigurationNode[] settingsNodes) {
|
public SettingsNodesWrapper(ConfigurationNode[] settingsNodes, SetupStep afterwards) {
|
||||||
this.settingsNodes = settingsNodes;
|
this.settingsNodes = settingsNodes;
|
||||||
|
this.afterwards = afterwards;
|
||||||
this.current = 0;
|
this.current = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,18 +2,17 @@ package com.plotsquared.core.setup;
|
|||||||
|
|
||||||
import com.plotsquared.core.player.PlotPlayer;
|
import com.plotsquared.core.player.PlotPlayer;
|
||||||
|
|
||||||
import java.util.ArrayDeque;
|
import java.util.Stack;
|
||||||
import java.util.Queue;
|
|
||||||
|
|
||||||
public class SetupProcess {
|
public class SetupProcess {
|
||||||
private final PlotAreaBuilder builder;
|
private final PlotAreaBuilder builder;
|
||||||
private final Queue<SetupStep> history;
|
private final Stack<SetupStep> history;
|
||||||
private SetupStep current;
|
private SetupStep current;
|
||||||
|
|
||||||
public SetupProcess() {
|
public SetupProcess() {
|
||||||
this.builder = new PlotAreaBuilder();
|
this.builder = new PlotAreaBuilder();
|
||||||
this.history = new ArrayDeque<>();
|
this.history = new Stack<>();
|
||||||
this.current = CommonSetupSteps.GENERATOR;
|
this.current = CommonSetupSteps.CHOOSE_GENERATOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SetupStep getCurrentStep() {
|
public SetupStep getCurrentStep() {
|
||||||
@ -21,14 +20,19 @@ public class SetupProcess {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void handleInput(PlotPlayer plotPlayer, String argument) {
|
public void handleInput(PlotPlayer plotPlayer, String argument) {
|
||||||
|
SetupStep previous = this.current;
|
||||||
// TODO null check?
|
// TODO null check?
|
||||||
this.current = this.current.handleInput(plotPlayer, this.builder, argument);
|
this.current = this.current.handleInput(plotPlayer, this.builder, argument);
|
||||||
|
// push previous step into history
|
||||||
|
if (this.current != previous && this.current != null) {
|
||||||
|
this.history.push(previous);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void back() {
|
public void back() {
|
||||||
if (!this.history.isEmpty()) {
|
if (!this.history.isEmpty()) {
|
||||||
this.current.onBack(this.builder);
|
this.current.onBack(this.builder);
|
||||||
this.current = this.history.poll();
|
this.current = this.history.pop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ public interface SetupStep {
|
|||||||
* @param argument the argument given as input
|
* @param argument the argument given as input
|
||||||
* @return the next step if input was valid, this setup step otherwise
|
* @return the next step if input was valid, this setup step otherwise
|
||||||
*/
|
*/
|
||||||
SetupStep handleInput(PlotPlayer plotPlayer, PlotAreaBuilder builder, String argument);
|
SetupStep handleInput(final PlotPlayer plotPlayer, PlotAreaBuilder builder, String argument);
|
||||||
|
|
||||||
@NotNull Collection<String> getSuggestions();
|
@NotNull Collection<String> getSuggestions();
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ package com.plotsquared.core.util;
|
|||||||
import com.plotsquared.core.generator.GeneratorWrapper;
|
import com.plotsquared.core.generator.GeneratorWrapper;
|
||||||
import com.plotsquared.core.plot.PlotArea;
|
import com.plotsquared.core.plot.PlotArea;
|
||||||
import com.plotsquared.core.plot.SetupObject;
|
import com.plotsquared.core.plot.SetupObject;
|
||||||
|
import com.plotsquared.core.setup.PlotAreaBuilder;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
@ -43,5 +44,7 @@ public abstract class SetupUtils {
|
|||||||
|
|
||||||
public abstract String setupWorld(final SetupObject object);
|
public abstract String setupWorld(final SetupObject object);
|
||||||
|
|
||||||
|
public abstract String setupWorld(final PlotAreaBuilder builder);
|
||||||
|
|
||||||
public abstract void unload(String world, boolean save);
|
public abstract void unload(String world, boolean save);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user