From 73aa65c01af74fce4061abdb76fcfd022042878a Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 20 Apr 2021 09:39:52 +0200 Subject: [PATCH] Add ResetCommand --- .../features/region/ResetCommand.java | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 BauSystem_Main/src/de/steamwar/bausystem/features/region/ResetCommand.java diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/region/ResetCommand.java b/BauSystem_Main/src/de/steamwar/bausystem/features/region/ResetCommand.java new file mode 100644 index 00000000..0790938a --- /dev/null +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/region/ResetCommand.java @@ -0,0 +1,80 @@ +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.GlobalRegion; +import de.steamwar.bausystem.region.Region; +import de.steamwar.bausystem.region.utils.RegionType; +import de.steamwar.command.SWCommand; +import de.steamwar.sql.Schematic; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import java.io.IOException; +import java.util.logging.Level; + +@Linked(LinkageType.COMMAND) +public class ResetCommand extends SWCommand { + + public ResetCommand() { + super("reset"); + } + + @Register(help = true) + public void genericHelp(Player p, String... args) { + p.sendMessage("§8/§ereset §8- §7Setzte die Region zurück"); + p.sendMessage("§8/§ereset §8[§7Schematic§8] §8- §7Setzte die Region mit einer Schematic zurück"); + } + + @Register + public void genericResetCommand(Player p) { + if (!permissionCheck(p)) return; + Region region = regionCheck(p); + if (region == null) return; + try { + region.reset(null, RegionType.NORMAL); + p.sendMessage(BauSystem.PREFIX + "§7Region zurückgesetzt"); + } catch (IOException e) { + p.sendMessage(BauSystem.PREFIX + "§cFehler beim Zurücksetzen der Region"); + Bukkit.getLogger().log(Level.WARNING, "Failed testblock", e); + } + } + + @Register + public void schematicResetCommand(Player p, String s) { + 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.NORMAL); + p.sendMessage(BauSystem.PREFIX + "§7Region zurückgesetzt"); + } catch (IOException e) { + p.sendMessage(BauSystem.PREFIX + "§cFehler beim Zurücksetzen der Region"); + Bukkit.getLogger().log(Level.WARNING, "Failed reset", e); + } + } + + private boolean permissionCheck(Player player) { + if (Permission.hasPermission(player, Permission.WORLD)) { + return true; + } + player.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht die Region zurücksetzen"); + return false; + } + + private Region regionCheck(Player player) { + Region region = Region.getRegion(player.getLocation()); + if (region == GlobalRegion.getInstance()) { + player.sendMessage(BauSystem.PREFIX + "§cDu befindest dich derzeit in keiner Region"); + return null; + } + return region; + } +}