From a5086a4af5c6d4af2abdeb99cbbd83eb2733fb86 Mon Sep 17 00:00:00 2001 From: Shevchik Date: Mon, 16 Dec 2013 21:43:46 +0400 Subject: [PATCH] Refactor sit allowed check, remove ability to disable inverted check. --- src/com/cnaude/chairs/Chairs.java | 4 +- .../cnaude/chairs/TrySitEventListener.java | 108 +++++++++--------- src/config.yml | 2 - 3 files changed, 52 insertions(+), 62 deletions(-) diff --git a/src/com/cnaude/chairs/Chairs.java b/src/com/cnaude/chairs/Chairs.java index a09c8f5..06eefa2 100644 --- a/src/com/cnaude/chairs/Chairs.java +++ b/src/com/cnaude/chairs/Chairs.java @@ -31,7 +31,7 @@ public class Chairs extends JavaPlugin { public List allowedBlocks; public List validSigns; public boolean autoRotate, signCheck, notifyplayer; - public boolean invertedStairCheck, invertedStepCheck, ignoreIfBlockInHand; + public boolean ignoreIfBlockInHand; public boolean sitEffectsEnabled; public double distance; public HashSet disabledRegions = new HashSet(); @@ -231,8 +231,6 @@ public class Chairs extends JavaPlugin { distance = config.getDouble("distance"); maxChairWidth = config.getInt("max-chair-width"); notifyplayer = config.getBoolean("notify-player"); - invertedStairCheck = config.getBoolean("upside-down-check"); - invertedStepCheck = config.getBoolean("upper-step-check"); ignoreIfBlockInHand = config.getBoolean("ignore-if-item-in-hand"); disabledRegions = new HashSet(config.getStringList("disabledWGRegions")); diff --git a/src/com/cnaude/chairs/TrySitEventListener.java b/src/com/cnaude/chairs/TrySitEventListener.java index 0d22e9a..8dc1160 100644 --- a/src/com/cnaude/chairs/TrySitEventListener.java +++ b/src/com/cnaude/chairs/TrySitEventListener.java @@ -29,16 +29,9 @@ public class TrySitEventListener implements Listener { @EventHandler public void onPlayerInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); - if (isSitting(player)) { - return; - } - if (plugin.ignoreIfBlockInHand && event.getPlayer().getItemInHand().getType() != Material.AIR) { - return; - } if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { Block block = event.getClickedBlock(); - if (sitAllowed(player, block)) - { + if (sitAllowed(player, block)) { event.setCancelled(true); Location sitLocation = getSitLocation(block, player.getLocation().getYaw()); plugin.sitPlayer(player, sitLocation); @@ -48,30 +41,50 @@ public class TrySitEventListener implements Listener { private boolean sitAllowed(Player player, Block block) { + // Check for permissions + if (!player.hasPermission("chairs.sit")) { + return false; + } + + // Check for already sitting + if (isSitting(player)) { + return false; + } + + // Check for item in hand + if (plugin.ignoreIfBlockInHand && player.getItemInHand().getType() != Material.AIR) { + return false; + } + + // Check for sneaking + if (player.isSneaking()) { + return false; + } + + // Check for /chairs off + if (ignoreList.isIgnored(player.getName())) { + return false; + } + + // Sit occupied check + if (plugin.sitblock.containsKey(block)) { + player.sendMessage(plugin.msgOccupied.replace("%PLAYER%", plugin.sitblock.get(block))); + return false; + } + + // Region allowance check + if (!WGHook.isAllowedInRegion(plugin.disabledRegions, block.getLocation())) { + return false; + } + Stairs stairs = null; Step step = null; WoodenStep wStep = null; boolean blockOkay = false; - if (player.isSneaking()) { - return false; - } - - if (ignoreList.isIgnored(player.getName())) { - return false; - } - // Permissions Check - if (!player.hasPermission("chairs.sit")) { - return false; - } - + // Check for block is chair for (ChairBlock cb : plugin.allowedBlocks) { - if (cb.getMat().toString().contains("STAIRS")) { - if (cb.getMat().equals(block.getType())) { - blockOkay = true; - continue; - } - } else if (cb.getMat().equals(block.getType())) { + if (cb.getMat().equals(block.getType())) { blockOkay = true; continue; } @@ -110,24 +123,19 @@ public class TrySitEventListener implements Listener { return false; } - if (stairs != null) { - if (stairs.isInverted() && plugin.invertedStairCheck) { - return false; - } + // Check if block is inverted + if (stairs != null && stairs.isInverted()) { + return false; } - if (step != null) { - if (step.isInverted() && plugin.invertedStepCheck) { - return false; - } + if (step != null && step.isInverted()) { + return false; } - if (wStep != null) { - if (wStep.isInverted() && plugin.invertedStepCheck) { - return false; - } + if (wStep != null && wStep.isInverted()) { + return false; } - // Check for signs. - if (plugin.signCheck == true && stairs != null) { + // Check for signs (only for stairs) + if (plugin.signCheck && stairs != null) { boolean sign1 = false; boolean sign2 = false; @@ -139,12 +147,12 @@ public class TrySitEventListener implements Listener { sign2 = checkSign(block, BlockFace.SOUTH) || checkFrame(block, BlockFace.SOUTH, player); } - if (!(sign1 == true && sign2 == true)) { + if (!(sign1 && sign2)) { return false; } } - // Check for maximal chair width. + // Check for maximal chair width (only for stairs) if (plugin.maxChairWidth > 0 && stairs != null) { if (stairs.getDescendingDirection() == BlockFace.NORTH || stairs.getDescendingDirection() == BlockFace.SOUTH) { chairwidth += getChairWidth(block, BlockFace.EAST); @@ -158,21 +166,7 @@ public class TrySitEventListener implements Listener { return false; } } - - //Sit occupied check - if (plugin.sitblock.containsKey(block)) - { - if (!plugin.msgOccupied.isEmpty()) { - player.sendMessage(plugin.msgOccupied.replaceAll("%PLAYER%", plugin.sitblock.get(block))); - } - return false; - } - - //region allowance check - if (!WGHook.isAllowedInRegion(plugin.disabledRegions, block.getLocation())) - { - return false; - } + return true; } diff --git a/src/config.yml b/src/config.yml index 8058b88..20926f3 100644 --- a/src/config.yml +++ b/src/config.yml @@ -35,8 +35,6 @@ auto-rotate: true max-chair-width: 3 sign-check: false distance: 2 -upside-down-check: true -upper-step-check: true ignore-if-item-in-hand: false disabledWGRegions: - exampleregionname