|
33 | 33 |
|
34 | 34 | public class MVSPPlayerListener implements Listener { |
35 | 35 |
|
36 | | - private MultiverseSignPortals plugin; |
37 | | - private MVPermissions permissions; |
38 | | - private PortalDetector pd; |
| 36 | + private static final String USE_PERMISSION = "multiverse.signportal.use"; |
| 37 | + private final MultiverseSignPortals plugin; |
| 38 | + private final MVPermissions permissions; |
| 39 | + private final PortalDetector pd; |
39 | 40 |
|
40 | 41 | public MVSPPlayerListener(MultiverseSignPortals plugin) { |
41 | 42 | this.plugin = plugin; |
42 | 43 | this.permissions = this.plugin.getCore().getMVPerms(); |
43 | 44 | this.permissions.addPermission("multiverse.signportal.validate", PermissionDefault.OP); |
| 45 | + this.permissions.addPermission(USE_PERMISSION, PermissionDefault.TRUE); |
44 | 46 | this.pd = new PortalDetector(this.plugin); |
45 | 47 | } |
46 | 48 |
|
@@ -83,28 +85,50 @@ public void playerPortal(PlayerPortalEvent event) { |
83 | 85 | */ |
84 | 86 | @EventHandler |
85 | 87 | public void playerInteract(PlayerInteractEvent event) { |
| 88 | + Player player = event.getPlayer(); |
| 89 | + |
| 90 | + // The event must not be canceled... |
86 | 91 | if (event.isCancelled()) { |
87 | 92 | return; |
88 | 93 | } |
89 | | - if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { |
90 | | - if (event.getClickedBlock().getState() instanceof Sign) { |
91 | | - Logging.finer("Found a Sign!"); |
92 | | - Sign s = (Sign) event.getClickedBlock().getState(); |
93 | | - SignStatus status = this.pd.getSignStatus(s); |
94 | | - if (status == SignStatus.SignPortal) { |
| 94 | + |
| 95 | + // We must be right-clicking... |
| 96 | + if (event.getAction() != Action.RIGHT_CLICK_BLOCK) { |
| 97 | + return; |
| 98 | + } |
| 99 | + |
| 100 | + // And it must be a sign |
| 101 | + if (!(event.getClickedBlock().getState() instanceof Sign)) { |
| 102 | + return; |
| 103 | + } |
| 104 | + |
| 105 | + Logging.finer("Found a Sign!"); |
| 106 | + Sign s = (Sign) event.getClickedBlock().getState(); |
| 107 | + SignStatus status = this.pd.getSignStatus(s); |
| 108 | + |
| 109 | + switch (status) { |
| 110 | + case SignPortal: |
| 111 | + if (permissions.hasPermission(player, USE_PERMISSION, false)) { |
95 | 112 | String destString = this.pd.processSign(s); |
96 | 113 | this.takePlayerToDestination(event.getPlayer(), destString); |
97 | | - event.setCancelled(true); |
98 | | - } else if (status == SignStatus.Disabled) { |
99 | | - this.pd.activateSignPortal(event.getPlayer(), ChatColor.RED + "Disabled", s); |
100 | | - event.setCancelled(true); |
101 | | - } else if (status == SignStatus.Legacy) { |
102 | | - this.pd.activateSignPortal(event.getPlayer(), ChatColor.AQUA + "Legacy", s); |
103 | | - event.setCancelled(true); |
104 | | - } else if (status == SignStatus.NetherPortalSign) { |
105 | | - event.setCancelled(true); |
| 114 | + } else { |
| 115 | + player.sendMessage(ChatColor.RED + "You do not have the required permission to use SignPortals (" + USE_PERMISSION + ")"); |
106 | 116 | } |
107 | | - } |
| 117 | + event.setCancelled(true); |
| 118 | + break; |
| 119 | + case Legacy: |
| 120 | + this.pd.activateSignPortal(event.getPlayer(), ChatColor.AQUA + "Legacy", s); |
| 121 | + event.setCancelled(true); |
| 122 | + break; |
| 123 | + case Disabled: |
| 124 | + this.pd.activateSignPortal(event.getPlayer(), ChatColor.RED + "Disabled", s); |
| 125 | + event.setCancelled(true); |
| 126 | + break; |
| 127 | + case NetherPortalSign: |
| 128 | + event.setCancelled(true); |
| 129 | + break; |
| 130 | + case NotASignPortal: // We shouldn't bother with other people's stuff |
| 131 | + event.setCancelled(false); |
108 | 132 | } |
109 | 133 | } |
110 | 134 |
|
|
0 commit comments