Merge pull request 'Add SimulatorCommand.rename' (#38) from BauSystem/SimulatorRename into main

Reviewed-on: https://steamwar.de/devlabs/SteamWar/SteamWar/pulls/38
Reviewed-by: Lixfel <lixfel@steamwar.de>
This commit is contained in:
2024-08-29 12:55:43 +02:00
3 changed files with 31 additions and 10 deletions
@@ -20,7 +20,6 @@
package de.steamwar.bausystem.features.simulator;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.SWUtils;
import de.steamwar.bausystem.features.simulator.data.Simulator;
import de.steamwar.bausystem.features.simulator.execute.SimulatorExecutor;
@@ -63,15 +62,7 @@ public class SimulatorCommand extends SWCommand {
}
@Register(value = "copy", description = "SIMULATOR_COPY_HELP")
public void copy(@Validator Player p, @ErrorMessage("SIMULATOR_NOT_EXISTS") Simulator simulator, String name) {
if (SimulatorStorage.getSimulator(name) != null) {
BauSystem.MESSAGE.send("SIMULATOR_NAME_ALREADY_EXISTS", p);
return;
}
if (!name.matches("[a-zA-Z_0-9-]+")) {
BauSystem.MESSAGE.send("SIMULATOR_NAME_INVALID", p);
return;
}
public void copy(@Validator Player p, @ErrorMessage("SIMULATOR_NOT_EXISTS") Simulator simulator, @Validator("simulatorName") String name) {
if (!SimulatorStorage.copy(simulator, name)) {
BauSystem.MESSAGE.send("SIMULATOR_ERROR_COPY", p);
}
@@ -88,6 +79,17 @@ public class SimulatorCommand extends SWCommand {
SimulatorExecutor.run(simulator);
}
@Register(value = "rename", description = "SIMULATOR_RENAME_HELP")
public void rename(@Validator Player p, @ErrorMessage("SIMULATOR_NOT_EXISTS") Simulator simulator, @Validator("simulatorName") String name) {
String oldName = simulator.getName();
if (SimulatorStorage.copy(simulator, name)) {
SimulatorStorage.delete(simulator);
BauSystem.MESSAGE.send("SIMULATOR_RENAMED", p, oldName, name);
} else {
BauSystem.MESSAGE.send("SIMULATOR_ERROR_COPY", p);
}
}
@ClassMapper(value = Simulator.class, local = true)
public TypeMapper<Simulator> allSimulators() {
return new TypeMapper<>() {
@@ -102,4 +104,19 @@ public class SimulatorCommand extends SWCommand {
}
};
}
@Validator(value = "simulatorName", local = true)
public TypeValidator<String> simulatorName() {
return (commandSender, name, messageSender) -> {
if (SimulatorStorage.getSimulator(name) != null) {
messageSender.send("SIMULATOR_NAME_ALREADY_EXISTS");
return false;
}
if (!name.matches("[a-zA-Z_0-9-]+")) {
messageSender.send("SIMULATOR_NAME_INVALID");
return false;
}
return true;
};
}
}