SteamWar/BauSystem2.0
Archiviert
12
0

Merge remote-tracking branch 'origin/master'

Dieser Commit ist enthalten in:
Chaoscaot 2021-04-20 09:28:39 +02:00
Commit 0c532069db
2 geänderte Dateien mit 150 neuen und 1 gelöschten Zeilen

Datei anzeigen

@ -0,0 +1,115 @@
package de.steamwar.bausystem.features.region;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.region.Region;
import de.steamwar.bausystem.region.utils.RegionExtensionType;
import de.steamwar.bausystem.region.utils.RegionType;
import de.steamwar.command.SWCommand;
import de.steamwar.command.SWCommandUtils;
import de.steamwar.command.TypeMapper;
import de.steamwar.sql.Schematic;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
@Linked(LinkageType.COMMAND)
public class TestblockCommand extends SWCommand {
public TestblockCommand() {
super("testblock", "tb");
}
@Register(help = true)
public void genericHelp(Player p, String... args) {
p.sendMessage("§8/§etestblock §8- §7Setzte den Testblock zurück");
p.sendMessage("§8/§etestblock §8[§7Schematic§8] §8- §7Setzte den Testblock mit einer Schematic zurück");
}
@Register
public void genericTestblockCommand(Player p) {
genericTestblockCommand(p, RegionExtensionType.NORMAL);
}
@Register
public void genericTestblockCommand(Player p, RegionExtensionType regionExtensionType) {
if (!permissionCheck(p)) return;
Region region = regionCheck(p);
if (region == null) return;
try {
region.reset(RegionType.TESTBLOCK, regionExtensionType);
p.sendMessage(BauSystem.PREFIX + "§7Testblock zurückgesetzt");
} catch (IOException e) {
p.sendMessage(BauSystem.PREFIX + "§cFehler beim Zurücksetzen des Testblocks");
Bukkit.getLogger().log(Level.WARNING, "Failed testblock", e);
}
}
@Register
public void schematicTestblockCommand(Player p, String s) {
schematicTestblockCommand(p, s, RegionExtensionType.NORMAL);
}
@Register
public void schematicTestblockCommand(Player p, RegionExtensionType regionExtensionType, String s) {
schematicTestblockCommand(p, s, regionExtensionType);
}
@Register
public void schematicTestblockCommand(Player p, String s, RegionExtensionType regionExtensionType) {
if (!permissionCheck(p)) return;
Region region = regionCheck(p);
if (region == null) return;
Schematic schem = Schematic.getSchemFromDB(s, p.getUniqueId());
if (schem == null) {
p.sendMessage(BauSystem.PREFIX + "§cSchematic nicht gefunden");
return;
}
try {
region.reset(schem, RegionType.TESTBLOCK, regionExtensionType);
p.sendMessage(BauSystem.PREFIX + "§7Testblock zurückgesetzt");
} catch (IOException e) {
p.sendMessage(BauSystem.PREFIX + "§cFehler beim Zurücksetzen des Testblocks");
Bukkit.getLogger().log(Level.WARNING, "Failed testblock", e);
}
}
@ClassMapper(value = RegionExtensionType.class, local = true)
private TypeMapper<RegionExtensionType> regionExtensionTypeTypeMapper() {
Map<String, RegionExtensionType> showModeParameterTypesMap = new HashMap<>();
showModeParameterTypesMap.put("-normal", RegionExtensionType.NORMAL);
showModeParameterTypesMap.put("-n", RegionExtensionType.NORMAL);
showModeParameterTypesMap.put("-extension", RegionExtensionType.EXTENSION);
showModeParameterTypesMap.put("-e", RegionExtensionType.EXTENSION);
List<String> tabCompletes = new ArrayList<>(showModeParameterTypesMap.keySet());
return SWCommandUtils.createMapper(s -> showModeParameterTypesMap.getOrDefault(s, null), s -> tabCompletes);
}
private boolean permissionCheck(Player player) {
if (Permission.hasPermission(player, Permission.WORLDEDIT)) {
return true;
}
player.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht den Testblock zurücksetzen");
return false;
}
private Region regionCheck(Player player) {
Region region = Region.getRegion(player.getLocation());
if (!region.hasType(RegionType.TESTBLOCK)) {
player.sendMessage(BauSystem.PREFIX + "§cDu befindest dich derzeit in keiner Region");
return null;
}
return region;
}
}

Datei anzeigen

@ -26,6 +26,7 @@ import de.steamwar.bausystem.region.loader.RegionLoader;
import de.steamwar.bausystem.region.utils.RegionExtensionType;
import de.steamwar.bausystem.region.utils.RegionType;
import de.steamwar.bausystem.shared.SizedStack;
import de.steamwar.sql.Schematic;
import lombok.Getter;
import lombok.NonNull;
import org.bukkit.Location;
@ -33,6 +34,7 @@ import yapion.hierarchy.types.YAPIONObject;
import yapion.hierarchy.types.YAPIONType;
import yapion.hierarchy.types.YAPIONValue;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@ -298,19 +300,51 @@ public class Region {
}
}
public void reset(RegionType regionType) {
boolean hasReset(RegionType regionType) {
if (!hasType(regionType)) {
return false;
}
switch (regionType) {
case TESTBLOCK:
return prototype.getTestblock().getSchematicFile() != null;
case BUILD:
return prototype.getBuild().getSchematicFile() != null;
default:
case NORMAL:
return prototype.getSchematicFile() != null;
}
}
public void reset(RegionType regionType) throws IOException {
reset(null, regionType);
}
public void reset(Schematic schematic, RegionType regionType) throws IOException {
reset(schematic, regionType, RegionExtensionType.NORMAL);
}
public void reset(RegionType regionType, RegionExtensionType regionExtensionType) throws IOException {
reset(null, regionType, regionExtensionType);
}
public void reset(Schematic schematic, RegionType regionType, RegionExtensionType regionExtensionType) throws IOException {
if (!hasReset(regionType)) {
return;
}
if (regionExtensionType == RegionExtensionType.EXTENSION && !hasExtensionType(regionType)) {
regionExtensionType = RegionExtensionType.NORMAL;
}
switch (regionType) {
case BUILD:
case TESTBLOCK:
default:
case NORMAL:
}
}
public boolean isGlobal() {
return this == GlobalRegion.getInstance();
}