Skip to content

Commit c0a382d

Browse files
committed
Clean up code and implement permission for using SignPortals
1 parent fca61f5 commit c0a382d

File tree

1 file changed

+43
-19
lines changed

1 file changed

+43
-19
lines changed

src/main/java/com/onarandombox/MultiverseSignPortals/listeners/MVSPPlayerListener.java

Lines changed: 43 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,16 @@
3333

3434
public class MVSPPlayerListener implements Listener {
3535

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;
3940

4041
public MVSPPlayerListener(MultiverseSignPortals plugin) {
4142
this.plugin = plugin;
4243
this.permissions = this.plugin.getCore().getMVPerms();
4344
this.permissions.addPermission("multiverse.signportal.validate", PermissionDefault.OP);
45+
this.permissions.addPermission(USE_PERMISSION, PermissionDefault.TRUE);
4446
this.pd = new PortalDetector(this.plugin);
4547
}
4648

@@ -83,28 +85,50 @@ public void playerPortal(PlayerPortalEvent event) {
8385
*/
8486
@EventHandler
8587
public void playerInteract(PlayerInteractEvent event) {
88+
Player player = event.getPlayer();
89+
90+
// The event must not be canceled...
8691
if (event.isCancelled()) {
8792
return;
8893
}
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)) {
95112
String destString = this.pd.processSign(s);
96113
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 + ")");
106116
}
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);
108132
}
109133
}
110134

0 commit comments

Comments
 (0)