Optimize TNTCommand TabComplete
Signed-off-by: yoyosource <yoyosource@nidido.de>
Dieser Commit ist enthalten in:
Ursprung
0f1f8c055c
Commit
70becaa751
@ -31,6 +31,7 @@ import de.steamwar.bausystem.region.utils.RegionType;
|
|||||||
import de.steamwar.command.SWCommand;
|
import de.steamwar.command.SWCommand;
|
||||||
import de.steamwar.command.SWCommandUtils;
|
import de.steamwar.command.SWCommandUtils;
|
||||||
import de.steamwar.command.TypeMapper;
|
import de.steamwar.command.TypeMapper;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -81,15 +82,37 @@ public class TNTCommand extends SWCommand {
|
|||||||
|
|
||||||
@ClassMapper(value = TNTMode.class, local = true)
|
@ClassMapper(value = TNTMode.class, local = true)
|
||||||
public TypeMapper<TNTMode> tntModeTypeMapper() {
|
public TypeMapper<TNTMode> tntModeTypeMapper() {
|
||||||
Map<String, TNTMode> tntModeMap = new HashMap<>();
|
Map<String, TNTMode> tntModeMapReduced = new HashMap<>();
|
||||||
tntModeMap.put("an", TNTMode.ALLOW);
|
tntModeMapReduced.put("an", TNTMode.ALLOW);
|
||||||
tntModeMap.put("on", TNTMode.ALLOW);
|
tntModeMapReduced.put("on", TNTMode.ALLOW);
|
||||||
tntModeMap.put("aus", TNTMode.DENY);
|
tntModeMapReduced.put("aus", TNTMode.DENY);
|
||||||
tntModeMap.put("off", TNTMode.DENY);
|
tntModeMapReduced.put("off", TNTMode.DENY);
|
||||||
|
|
||||||
|
Map<String, TNTMode> tntModeMap = new HashMap<>(tntModeMapReduced);
|
||||||
tntModeMap.put("testblock", TNTMode.ONLY_TB);
|
tntModeMap.put("testblock", TNTMode.ONLY_TB);
|
||||||
tntModeMap.put("tb", TNTMode.ONLY_TB);
|
tntModeMap.put("tb", TNTMode.ONLY_TB);
|
||||||
List<String> tabCompletes = new ArrayList<>(tntModeMap.keySet());
|
|
||||||
return SWCommandUtils.createMapper(s -> tntModeMap.getOrDefault(s, null), s -> tabCompletes);
|
return new TypeMapper<TNTMode>() {
|
||||||
|
@Override
|
||||||
|
public List<String> tabCompletes(CommandSender sender, String[] strings, String s) {
|
||||||
|
Region region = Region.getRegion(((Player) sender).getLocation());
|
||||||
|
if (region.hasType(RegionType.TESTBLOCK) && region.hasType(RegionType.BUILD)) {
|
||||||
|
return new ArrayList<>(tntModeMap.keySet());
|
||||||
|
} else {
|
||||||
|
return new ArrayList<>(tntModeMapReduced.keySet());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TNTMode map(CommandSender sender, String[] previousArguments, String s) {
|
||||||
|
Region region = Region.getRegion(((Player) sender).getLocation());
|
||||||
|
if (region.hasType(RegionType.TESTBLOCK) && region.hasType(RegionType.BUILD)) {
|
||||||
|
return tntModeMap.getOrDefault(s, null);
|
||||||
|
} else {
|
||||||
|
return tntModeMapReduced.getOrDefault(s, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getEnableMessage() {
|
private String getEnableMessage() {
|
||||||
@ -105,7 +128,7 @@ public class TNTCommand extends SWCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void tntToggle(Region region, TNTMode requestedMode, String requestedMessage) {
|
private void tntToggle(Region region, TNTMode requestedMode, String requestedMessage) {
|
||||||
if (requestedMode != null && region.hasType(RegionType.TESTBLOCK)) {
|
if (requestedMode != null && region.hasType(RegionType.TESTBLOCK) && region.hasType(RegionType.BUILD)) {
|
||||||
region.set(Flag.TNT, requestedMode);
|
region.set(Flag.TNT, requestedMode);
|
||||||
RegionUtils.actionBar(region, requestedMessage);
|
RegionUtils.actionBar(region, requestedMessage);
|
||||||
return;
|
return;
|
||||||
@ -117,7 +140,7 @@ public class TNTCommand extends SWCommand {
|
|||||||
RegionUtils.actionBar(region, getDisableMessage());
|
RegionUtils.actionBar(region, getDisableMessage());
|
||||||
break;
|
break;
|
||||||
case DENY:
|
case DENY:
|
||||||
if (region.hasType(RegionType.TESTBLOCK)) {
|
if (region.hasType(RegionType.TESTBLOCK) && region.hasType(RegionType.BUILD)) {
|
||||||
region.set(Flag.TNT, TNTMode.ONLY_TB);
|
region.set(Flag.TNT, TNTMode.ONLY_TB);
|
||||||
RegionUtils.actionBar(region, getTestblockEnableMessage());
|
RegionUtils.actionBar(region, getTestblockEnableMessage());
|
||||||
} else {
|
} else {
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
}
|
}
|
||||||
mwg{
|
mwg{
|
||||||
displayName(MiniWarGear)
|
displayName(MiniWarGear)
|
||||||
protection(sections3/MWGProtection.schem)
|
|
||||||
schematic(sections3/MWGArena.schem)
|
schematic(sections3/MWGArena.schem)
|
||||||
sizeX(63)
|
sizeX(63)
|
||||||
sizeY(256)
|
sizeY(256)
|
||||||
@ -34,7 +33,6 @@
|
|||||||
}
|
}
|
||||||
wg{
|
wg{
|
||||||
displayName(WarGear)
|
displayName(WarGear)
|
||||||
protection(sections3/WGProtection.schem)
|
|
||||||
schematic(sections3/WGArena.schem)
|
schematic(sections3/WGArena.schem)
|
||||||
sizeX(133)
|
sizeX(133)
|
||||||
sizeY(255)
|
sizeY(255)
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren