Add RegionCommand.changeTypeCommand
Signed-off-by: yoyosource <yoyosource@nidido.de>
Dieser Commit ist enthalten in:
Ursprung
705dfa0945
Commit
5d8ca09271
@ -430,6 +430,10 @@ REGION_REGION_NO_SCHEM=§cSchematic nicht gefunden
|
|||||||
REGION_REGION_TP_COPY=§7Zum Kopierpunkt teleportiert
|
REGION_REGION_TP_COPY=§7Zum Kopierpunkt teleportiert
|
||||||
REGION_REGION_NO_REGION=§cDu bist in keiner Region
|
REGION_REGION_NO_REGION=§cDu bist in keiner Region
|
||||||
REGION_REGION_NO_PERMS=§cDu darfst hier nicht die Region verändern
|
REGION_REGION_NO_PERMS=§cDu darfst hier nicht die Region verändern
|
||||||
|
REGION_REGION_CHANGETYPE_INFO=§7Regions Type ist {0}
|
||||||
|
REGION_REGION_CHANGETYPE_UNKNOWN=§cRegions Type ist nicht valide
|
||||||
|
REGION_REGION_CHANGETYPE_INVALID=§cRegions Type ist nicht erlaubt hier
|
||||||
|
REGION_REGION_CHANGETYPE_CHANGE=§aRegions Type ist auf {0} geändert
|
||||||
REGION_RESET_HELP_1=§8/§ereset §8- §7Setzte die Region zurück
|
REGION_RESET_HELP_1=§8/§ereset §8- §7Setzte die Region zurück
|
||||||
REGION_RESET_HELP_2=§8/§ereset §8[§7Schematic§8] §8- §7Setzte die Region mit einer Schematic zurück
|
REGION_RESET_HELP_2=§8/§ereset §8[§7Schematic§8] §8- §7Setzte die Region mit einer Schematic zurück
|
||||||
REGION_RESET_RESETED=§7Region zurückgesetzt
|
REGION_RESET_RESETED=§7Region zurückgesetzt
|
||||||
|
@ -25,19 +25,26 @@ import de.steamwar.bausystem.features.util.SelectCommand;
|
|||||||
import de.steamwar.bausystem.linkage.LinkageType;
|
import de.steamwar.bausystem.linkage.LinkageType;
|
||||||
import de.steamwar.bausystem.linkage.Linked;
|
import de.steamwar.bausystem.linkage.Linked;
|
||||||
import de.steamwar.bausystem.linkage.LinkedInstance;
|
import de.steamwar.bausystem.linkage.LinkedInstance;
|
||||||
|
import de.steamwar.bausystem.region.Prototype;
|
||||||
import de.steamwar.bausystem.region.Region;
|
import de.steamwar.bausystem.region.Region;
|
||||||
import de.steamwar.bausystem.region.RegionUtils;
|
import de.steamwar.bausystem.region.RegionUtils;
|
||||||
import de.steamwar.bausystem.region.flags.flagvalues.ColorMode;
|
import de.steamwar.bausystem.region.flags.flagvalues.ColorMode;
|
||||||
import de.steamwar.bausystem.region.utils.RegionExtensionType;
|
import de.steamwar.bausystem.region.utils.RegionExtensionType;
|
||||||
import de.steamwar.bausystem.region.utils.RegionType;
|
import de.steamwar.bausystem.region.utils.RegionType;
|
||||||
import de.steamwar.command.SWCommand;
|
import de.steamwar.command.SWCommand;
|
||||||
|
import de.steamwar.command.TypeMapper;
|
||||||
import de.steamwar.sql.Schematic;
|
import de.steamwar.sql.Schematic;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Linked(LinkageType.COMMAND)
|
@Linked(LinkageType.COMMAND)
|
||||||
public class RegionCommand extends SWCommand {
|
public class RegionCommand extends SWCommand {
|
||||||
@ -167,6 +174,55 @@ public class RegionCommand extends SWCommand {
|
|||||||
BauSystem.MESSAGE.send("REGION_REGION_TP_COPY", p);
|
BauSystem.MESSAGE.send("REGION_REGION_TP_COPY", p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Register("changetype")
|
||||||
|
@Register("type")
|
||||||
|
public void changeTypeCommand(Player p) {
|
||||||
|
Region region = Region.getRegion(p.getLocation());
|
||||||
|
if (checkGlobalRegion(region, p)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
BauSystem.MESSAGE.send("REGION_REGION_CHANGETYPE_INFO", p, region.getPrototype().getDisplayName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Register("changetype")
|
||||||
|
@Register("type")
|
||||||
|
public void changeTypeCommand(Player p, @Mapper("regionTypeMapper") String s) {
|
||||||
|
Region region = Region.getRegion(p.getLocation());
|
||||||
|
if (checkGlobalRegion(region, p)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Prototype prototype = Prototype.getByDisplayName(s);
|
||||||
|
if (prototype == null) {
|
||||||
|
BauSystem.MESSAGE.send("REGION_REGION_CHANGETYPE_UNKNOWN", p);
|
||||||
|
} else {
|
||||||
|
if (region.setPrototype(prototype)) {
|
||||||
|
BauSystem.MESSAGE.send("REGION_REGION_CHANGETYPE_CHANGE", p, s);
|
||||||
|
} else {
|
||||||
|
BauSystem.MESSAGE.send("REGION_REGION_CHANGETYPE_INVALID", p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Mapper(value = "regionTypeMapper", local = true)
|
||||||
|
private TypeMapper<String> regionTypeMapper() {
|
||||||
|
return new TypeMapper<String>() {
|
||||||
|
@Override
|
||||||
|
public List<String> tabCompletes(CommandSender commandSender, String[] strings, String s) {
|
||||||
|
Player p = (Player) commandSender;
|
||||||
|
Region region = Region.getRegion(p.getLocation());
|
||||||
|
if (checkGlobalRegion(region, p)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return region.getPrototypes().stream().map(Prototype::getByName).map(Prototype::getDisplayName).map(c -> c.replace(' ', '_')).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String map(CommandSender commandSender, String[] previousArguments, String s) {
|
||||||
|
return s.replace('_', ' ');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private boolean permissionCheck(Player player) {
|
private boolean permissionCheck(Player player) {
|
||||||
if (Permission.hasPermission(player, Permission.WORLDEDIT)) {
|
if (Permission.hasPermission(player, Permission.WORLDEDIT)) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -32,6 +32,14 @@ public class Prototype {
|
|||||||
|
|
||||||
static final Map<String, Prototype> PROTOTYPE_MAP = new HashMap<>();
|
static final Map<String, Prototype> PROTOTYPE_MAP = new HashMap<>();
|
||||||
|
|
||||||
|
public static Prototype getByName(String name) {
|
||||||
|
return PROTOTYPE_MAP.get(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Prototype getByDisplayName(String name) {
|
||||||
|
return PROTOTYPE_MAP.values().stream().filter(prototype -> prototype.getDisplayName().equals(name)).findFirst().orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
private final String displayName;
|
private final String displayName;
|
||||||
|
|
||||||
|
@ -262,9 +262,9 @@ public class Region {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPrototype(@NonNull Prototype prototype) {
|
public boolean setPrototype(@NonNull Prototype prototype) {
|
||||||
if (!prototypes.contains(prototype.getName()) && !prototypes.isEmpty()) {
|
if (!prototypes.contains(prototype.getName()) && !prototypes.isEmpty()) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
generatePrototypeData(prototype, minPoint);
|
generatePrototypeData(prototype, minPoint);
|
||||||
RegionUtils.save(this);
|
RegionUtils.save(this);
|
||||||
@ -272,6 +272,7 @@ public class Region {
|
|||||||
region.generatePrototypeData(prototype, region.minPoint);
|
region.generatePrototypeData(prototype, region.minPoint);
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void set(Flag flagType, Flag.Value<?> value) {
|
public void set(Flag flagType, Flag.Value<?> value) {
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren