From 3595742da1498ffb79dc30bfb6c48399378ed7c6 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 20 Apr 2021 09:24:15 +0200 Subject: [PATCH] Add TestblockCommand --- .../features/region/TestblockCommand.java | 15 ++++---- .../de/steamwar/bausystem/region/Region.java | 36 ++++++++++++++++++- 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/region/TestblockCommand.java b/BauSystem_Main/src/de/steamwar/bausystem/features/region/TestblockCommand.java index 35f42266..b2145d12 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/region/TestblockCommand.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/region/TestblockCommand.java @@ -11,12 +11,15 @@ 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 { @@ -41,15 +44,13 @@ public class TestblockCommand extends SWCommand { if (!permissionCheck(p)) return; Region region = regionCheck(p); if (region == null) return; - // TODO: implement this - /* try { - region.resetTestblock(null, regionExtensionType == RegionExtensionType.EXTENSION); + 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); - }*/ + } } @@ -73,15 +74,13 @@ public class TestblockCommand extends SWCommand { p.sendMessage(BauSystem.PREFIX + "§cSchematic nicht gefunden"); return; } - // TODO: implement this - /* try { - region.resetTestblock(schem, regionExtensionType == RegionExtensionType.EXTENSION); + 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) diff --git a/BauSystem_Main/src/de/steamwar/bausystem/region/Region.java b/BauSystem_Main/src/de/steamwar/bausystem/region/Region.java index f26916c7..3395ae60 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/region/Region.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/region/Region.java @@ -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(); }