diff --git a/.gradle/6.1/executionHistory/executionHistory.bin b/.gradle/6.1/executionHistory/executionHistory.bin index 9ec4f60..496648f 100644 Binary files a/.gradle/6.1/executionHistory/executionHistory.bin and b/.gradle/6.1/executionHistory/executionHistory.bin differ diff --git a/.gradle/6.1/executionHistory/executionHistory.lock b/.gradle/6.1/executionHistory/executionHistory.lock index 92d938e..384c2b3 100644 Binary files a/.gradle/6.1/executionHistory/executionHistory.lock and b/.gradle/6.1/executionHistory/executionHistory.lock differ diff --git a/.gradle/6.1/fileHashes/fileHashes.bin b/.gradle/6.1/fileHashes/fileHashes.bin index e387b49..79ec2cf 100644 Binary files a/.gradle/6.1/fileHashes/fileHashes.bin and b/.gradle/6.1/fileHashes/fileHashes.bin differ diff --git a/.gradle/6.1/fileHashes/fileHashes.lock b/.gradle/6.1/fileHashes/fileHashes.lock index c7bdd9c..ad0e16a 100644 Binary files a/.gradle/6.1/fileHashes/fileHashes.lock and b/.gradle/6.1/fileHashes/fileHashes.lock differ diff --git a/.gradle/6.1/javaCompile/classAnalysis.bin b/.gradle/6.1/javaCompile/classAnalysis.bin index 7614ed9..98c1614 100644 Binary files a/.gradle/6.1/javaCompile/classAnalysis.bin and b/.gradle/6.1/javaCompile/classAnalysis.bin differ diff --git a/.gradle/6.1/javaCompile/javaCompile.lock b/.gradle/6.1/javaCompile/javaCompile.lock index 629e572..0457051 100644 Binary files a/.gradle/6.1/javaCompile/javaCompile.lock and b/.gradle/6.1/javaCompile/javaCompile.lock differ diff --git a/.gradle/6.1/javaCompile/taskHistory.bin b/.gradle/6.1/javaCompile/taskHistory.bin index 7d39aaa..c1d5b1b 100644 Binary files a/.gradle/6.1/javaCompile/taskHistory.bin and b/.gradle/6.1/javaCompile/taskHistory.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index cfd447a..800f23b 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/checksums/checksums.lock b/.gradle/checksums/checksums.lock index e80120d..328a477 100644 Binary files a/.gradle/checksums/checksums.lock and b/.gradle/checksums/checksums.lock differ diff --git a/.gradle/checksums/sha1-checksums.bin b/.gradle/checksums/sha1-checksums.bin index 4f96765..44f5da2 100644 Binary files a/.gradle/checksums/sha1-checksums.bin and b/.gradle/checksums/sha1-checksums.bin differ diff --git a/src/main/java/top/iseason/steelSafe/BreakingProtection.java b/src/main/java/top/iseason/steelSafe/BreakingProtection.java index ad0f5f9..1e80d06 100644 --- a/src/main/java/top/iseason/steelSafe/BreakingProtection.java +++ b/src/main/java/top/iseason/steelSafe/BreakingProtection.java @@ -10,7 +10,6 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockBurnEvent; import org.bukkit.event.block.BlockExplodeEvent; import org.bukkit.event.entity.EntityChangeBlockEvent; import org.bukkit.event.entity.EntityExplodeEvent; diff --git a/src/main/java/top/iseason/steelSafe/CreateCommand.java b/src/main/java/top/iseason/steelSafe/CreateCommand.java index 1757513..c979b18 100644 --- a/src/main/java/top/iseason/steelSafe/CreateCommand.java +++ b/src/main/java/top/iseason/steelSafe/CreateCommand.java @@ -10,18 +10,13 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; - - -import org.bukkit.util.BlockIterator; - +import org.bukkit.entity.*; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; - -import static org.bukkit.Material.*; import static top.iseason.steelSafe.OpenWithKey.isLocked; +import static top.iseason.steelSafe.OpenWithKey.targetCheck; public class CreateCommand implements CommandExecutor, TabExecutor { @@ -46,22 +41,13 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String sender.sendMessage(ChatColor.DARK_RED + "获取玩家" + Name + "失败,请确认玩家是否在线!"); return false; } - Block targetBlock = getLookingAtBlock((Player) sender); - if (targetBlock.getType() != CHEST && targetBlock.getType() != TRAPPED_CHEST) { - String message = Main.getInstance().getConfig().getString("NotChest"); - sender.sendMessage(ChatColor.translateAlternateColorCodes('&',message)); - return true; - } - if (!Dependency.pluginCheck(targetBlock, ((Player) sender).getPlayer())) { - String Message = Main.getInstance().getConfig().getString("HaveNoPermission"); - sender.sendMessage(ChatColor.translateAlternateColorCodes('&',Message)); + Block targetBlock = ((Player) sender).getTargetBlock(null,5); + if(targetCheck(targetBlock,(Player)sender)){ return true; } String World = targetBlock.getWorld().getName(); BlockFace chestface = OpenCheck.getRelativeChestFace(targetBlock); FileConfiguration steelSafeList = Main.getSteelSafesList(); - - if (chestface != null) { Block relativechest = targetBlock.getRelative(chestface); String data1 = World + "," + targetBlock.getLocation().getBlockX() + "," + targetBlock.getLocation().getBlockY() + "," + targetBlock.getLocation().getBlockZ(); @@ -188,7 +174,7 @@ private boolean createCheck(CommandSender sender, String arg, String data, Strin return true; } - + /*todo:检查可用性,如果必须则启用。 public static Block getLookingAtBlock(Player event) { //获取玩家所看的方块 BlockIterator iter = new BlockIterator(event, 5); Block lastBlock = iter.next(); @@ -197,9 +183,9 @@ public static Block getLookingAtBlock(Player event) { //获取玩家所看的 if (lastBlock.getType() == AIR || lastBlock.isLiquid()) //忽略空气和液体 continue; break; - } + }; return lastBlock; - } + }*/ } diff --git a/src/main/java/top/iseason/steelSafe/Dependency.java b/src/main/java/top/iseason/steelSafe/Dependency.java index 71075e8..b21699d 100644 --- a/src/main/java/top/iseason/steelSafe/Dependency.java +++ b/src/main/java/top/iseason/steelSafe/Dependency.java @@ -9,7 +9,6 @@ import com.sk89q.worldguard.bukkit.WorldGuardPlugin; - import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -62,6 +61,8 @@ public static boolean pluginCheck(Block block, Player player) { if (!(plot.isOwner(uuid) || plot.getTrusted().contains(uuid) || plot.getMembers().contains(uuid))) { return false; } + }else{ + return false; } } if (worldguard != null) { diff --git a/src/main/java/top/iseason/steelSafe/Main.java b/src/main/java/top/iseason/steelSafe/Main.java index da62206..3c57c03 100644 --- a/src/main/java/top/iseason/steelSafe/Main.java +++ b/src/main/java/top/iseason/steelSafe/Main.java @@ -1,6 +1,5 @@ package top.iseason.steelSafe; -import com.plotsquared.core.command.Chat; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.configuration.file.FileConfiguration; diff --git a/src/main/java/top/iseason/steelSafe/OpenCheck.java b/src/main/java/top/iseason/steelSafe/OpenCheck.java index c2755ee..9c92957 100644 --- a/src/main/java/top/iseason/steelSafe/OpenCheck.java +++ b/src/main/java/top/iseason/steelSafe/OpenCheck.java @@ -12,12 +12,10 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractEvent; - import static org.bukkit.Material.CHEST; import static org.bukkit.Material.TRAPPED_CHEST; import static org.bukkit.event.block.Action.RIGHT_CLICK_BLOCK; import static top.iseason.steelSafe.OpenWithKey.isLocked; -import static top.iseason.steelSafe.CreateCommand.getLookingAtBlock; public class OpenCheck implements Listener { @@ -25,7 +23,7 @@ public class OpenCheck implements Listener { public void openChestCheck(PlayerInteractEvent e) { //todo:在打开的瞬间移开可能会绕过取消事件,待解决。 if (e.getAction() == RIGHT_CLICK_BLOCK && ((e.getClickedBlock().getType() == CHEST) || (e.getClickedBlock().getType() == TRAPPED_CHEST))) { FileConfiguration steelSafeList = Main.getSteelSafesList(); - Block targetBlock = getLookingAtBlock(e.getPlayer()); + Block targetBlock = e.getClickedBlock(); if (targetBlock.getType() != CHEST && targetBlock.getType() != TRAPPED_CHEST) { e.getPlayer().closeInventory(); e.setCancelled(true); @@ -41,8 +39,8 @@ public void openChestCheck(PlayerInteractEvent e) { //todo:在打开的瞬间 } e.getPlayer().closeInventory(); e.setCancelled(true); - String message = Message.replace(Main.getInstance().getConfig().getString("TryToOpen"),"%player%",steelSafeList.getString(data1.concat(".owner"))) ; - e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&',message)); + String message = Message.replace(Main.getInstance().getConfig().getString("TryToOpen"), "%player%", steelSafeList.getString(data1.concat(".owner"))); + e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', message)); return; } return; @@ -54,8 +52,8 @@ public void openChestCheck(PlayerInteractEvent e) { //todo:在打开的瞬间 } e.getPlayer().closeInventory(); e.setCancelled(true); - String message = Message.replace(Main.getInstance().getConfig().getString("TryToOpen"),"%player%",steelSafeList.getString(data1.concat(".owner"))) ; - e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&',message)); + String message = Message.replace(Main.getInstance().getConfig().getString("TryToOpen"), "%player%", steelSafeList.getString(data1.concat(".owner"))); + e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', message)); return; } else if (isLocked(relativechest)) { if (Main.getInstance().getConfig().getBoolean("OpOpen")) { @@ -64,8 +62,8 @@ public void openChestCheck(PlayerInteractEvent e) { //todo:在打开的瞬间 e.getPlayer().closeInventory(); e.setCancelled(true); String data2 = World + "," + relativechest.getLocation().getBlockX() + "," + relativechest.getLocation().getBlockY() + "," + relativechest.getLocation().getBlockZ(); - String message = Message.replace(Main.getInstance().getConfig().getString("TryToOpen"),"%player%",steelSafeList.getString(data2.concat(".owner"))) ; - e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&',message)); + String message = Message.replace(Main.getInstance().getConfig().getString("TryToOpen"), "%player%", steelSafeList.getString(data2.concat(".owner"))); + e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', message)); return; } } diff --git a/src/main/java/top/iseason/steelSafe/OpenWithKey.java b/src/main/java/top/iseason/steelSafe/OpenWithKey.java index 0605d88..1cc5a52 100644 --- a/src/main/java/top/iseason/steelSafe/OpenWithKey.java +++ b/src/main/java/top/iseason/steelSafe/OpenWithKey.java @@ -24,21 +24,13 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String if (args.length != 1) { return false; } - Block targetBlock = CreateCommand.getLookingAtBlock((Player) sender); - if (targetBlock.getType() != CHEST && targetBlock.getType() != TRAPPED_CHEST) { - String message = Main.getInstance().getConfig().getString("NotChest"); - sender.sendMessage(ChatColor.translateAlternateColorCodes('&',message)); - return true; - } - if (!Dependency.pluginCheck(targetBlock, ((Player) sender).getPlayer())) { - String message = Main.getInstance().getConfig().getString("HaveNoPermission"); - sender.sendMessage(ChatColor.translateAlternateColorCodes('&',message)); - + Block targetBlock = ((Player) sender).getTargetBlock(null, 5); + if (targetCheck(targetBlock, (Player) sender)) { return true; } BlockFace chestface = OpenCheck.getRelativeChestFace(targetBlock); if (!isLocked(targetBlock)) { - String unLocked = ChatColor.translateAlternateColorCodes('&',Main.getInstance().getConfig().getString("UnLocked")); + String unLocked = ChatColor.translateAlternateColorCodes('&', Main.getInstance().getConfig().getString("UnLocked")); if (chestface == null) { sender.sendMessage(unLocked); @@ -53,7 +45,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String return removeChestWithCommand(sender, relative); } else { String message = Main.getInstance().getConfig().getString("PassWordError"); - sender.sendMessage(ChatColor.translateAlternateColorCodes('&',message)); + sender.sendMessage(ChatColor.translateAlternateColorCodes('&', message)); return true; } } @@ -62,7 +54,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String return removeChestWithCommand(sender, targetBlock); } else { String message = Main.getInstance().getConfig().getString("PassWordError"); - sender.sendMessage(ChatColor.translateAlternateColorCodes('&',message)); + sender.sendMessage(ChatColor.translateAlternateColorCodes('&', message)); return true; } } @@ -76,7 +68,7 @@ public static boolean removeChestWithCommand(CommandSender sender, Block targetB return true; } String message = Main.getInstance().getConfig().getString("PassWordCorrect"); - sender.sendMessage(ChatColor.translateAlternateColorCodes('&',message)); + sender.sendMessage(ChatColor.translateAlternateColorCodes('&', message)); return true; } @@ -120,4 +112,19 @@ public static boolean isLocked(Block block) { return steelSafeList.contains(key); } + + public static boolean targetCheck(Block targetBlock, Player player) {//检查是否具有目标的权限 + if (targetBlock.getType() != CHEST && targetBlock.getType() != TRAPPED_CHEST) { + String message = Main.getInstance().getConfig().getString("NotChest"); + player.sendMessage(ChatColor.translateAlternateColorCodes('&', message)); + return true; + } + if (!Dependency.pluginCheck(targetBlock, player)) { + String message = Main.getInstance().getConfig().getString("HaveNoPermission"); + player.sendMessage(ChatColor.translateAlternateColorCodes('&', message)); + + return true; + } + return false; + } } diff --git a/src/main/java/top/iseason/steelSafe/RemoveCommand.java b/src/main/java/top/iseason/steelSafe/RemoveCommand.java index d6da234..8a68a54 100644 --- a/src/main/java/top/iseason/steelSafe/RemoveCommand.java +++ b/src/main/java/top/iseason/steelSafe/RemoveCommand.java @@ -17,7 +17,7 @@ public class RemoveCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (sender.isOp() | sender.hasPermission("steelsafe.admin")) { - Block targetBlock = CreateCommand.getLookingAtBlock((Player) sender); + Block targetBlock = ((Player) sender).getTargetBlock(null,5); if (targetBlock.getType() == CHEST || targetBlock.getType() == TRAPPED_CHEST) { if (isLocked(targetBlock)) { return removeChestWithCommand(sender, targetBlock); @@ -51,4 +51,5 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String return true; } } + }