[Version 0.7.9.6]

- Actually remove the player from the BungeeQueue when they connect. Oops :)
- Implement stargate.server nodes
- Improve the use of negation. You can now negate networks/worlds/servers while using stargate.use permissions.
This commit is contained in:
Steven Scott 2013-02-12 21:32:44 -08:00
parent cf5c4849b9
commit 30fe7f4414
3 changed files with 41 additions and 20 deletions

4
README
View File

@ -215,6 +215,10 @@ Bukkit Issue: Stargate will randomly NPE when drawing a sign. Long-standing Bukk
============= =============
Changes Changes
============= =============
[Version 0.7.9.6]
- Actually remove the player from the BungeeQueue when they connect. Oops :)
- Implement stargate.server nodes
- Improve the use of negation. You can now negate networks/worlds/servers while using stargate.use permissions.
[Version 0.7.9.5] [Version 0.7.9.5]
- Fixed an issue with portal material not showing up (Oh, that code WAS useful) - Fixed an issue with portal material not showing up (Oh, that code WAS useful)
[Version 0.7.9.4] [Version 0.7.9.4]

View File

@ -418,10 +418,8 @@ public class Stargate extends JavaPlugin {
* Check whether player can teleport to dest world * Check whether player can teleport to dest world
*/ */
public static boolean canAccessWorld(Player player, String world) { public static boolean canAccessWorld(Player player, String world) {
// Can use all Stargate player features // Can use all Stargate player features or access all worlds
if (hasPerm(player, "stargate.use")) return true; if (hasPerm(player, "stargate.use") || hasPerm(player, "stargate.world")) {
// Can access all worlds
if (hasPerm(player, "stargate.world")) {
// Do a deep check to see if the player lacks this specific world node // Do a deep check to see if the player lacks this specific world node
if (!hasPermDeep(player, "stargate.world." + world)) return false; if (!hasPermDeep(player, "stargate.world." + world)) return false;
return true; return true;
@ -435,10 +433,8 @@ public class Stargate extends JavaPlugin {
* Check whether player can use network * Check whether player can use network
*/ */
public static boolean canAccessNetwork(Player player, String network) { public static boolean canAccessNetwork(Player player, String network) {
// Can use all Stargate player features // Can user all Stargate player features, or access all networks
if (hasPerm(player, "stargate.use")) return true; if (hasPerm(player, "stargate.use") || hasPerm(player, "stargate.network")) {
// Can access all networks
if (hasPerm(player, "stargate.network")) {
// Do a deep check to see if the player lacks this specific network node // Do a deep check to see if the player lacks this specific network node
if (!hasPermDeep(player, "stargate.network." + network)) return false; if (!hasPermDeep(player, "stargate.network." + network)) return false;
return true; return true;
@ -446,12 +442,27 @@ public class Stargate extends JavaPlugin {
// Can access this network // Can access this network
if (hasPerm(player, "stargate.network." + network)) return true; if (hasPerm(player, "stargate.network." + network)) return true;
// Is able to create personal gates (Assumption is made they can also access them) // Is able to create personal gates (Assumption is made they can also access them)
String playerName = player.getName(); String playerName = player.getName().toLowerCase();
if (playerName.length() > 11) playerName = playerName.substring(0, 11); if (playerName.length() > 11) playerName = playerName.substring(0, 11);
if (network.equals(playerName) && hasPerm(player, "stargate.create.personal")) return true; if (network.equals(playerName) && hasPerm(player, "stargate.create.personal")) return true;
return false; return false;
} }
/*
* Check whether the player can access this server
*/
public static boolean canAccessServer(Player player, String server) {
// Can user all Stargate player features, or access all servers
if (hasPerm(player, "stargate.use") || hasPerm(player, "stargate.servers")) {
// Do a deep check to see if the player lacks this specific server node
if (!hasPermDeep(player, "stargate.server." + server)) return false;
return true;
}
// Can access this server
if (hasPerm(player, "stargate.server." + server)) return true;
return false;
}
/* /*
* Call the StargateAccessPortal event, used for other plugins to bypass Permissions checks * Call the StargateAccessPortal event, used for other plugins to bypass Permissions checks
*/ */
@ -736,7 +747,7 @@ public class Stargate extends JavaPlugin {
if (!enableBungee) return; if (!enableBungee) return;
Player player = event.getPlayer(); Player player = event.getPlayer();
String destination = bungeeQueue.get(player.getName().toLowerCase()); String destination = bungeeQueue.remove(player.getName().toLowerCase());
if (destination == null) return; if (destination == null) return;
Portal portal = Portal.getBungeeGate(destination); Portal portal = Portal.getBungeeGate(destination);
@ -802,16 +813,22 @@ public class Stargate extends JavaPlugin {
if (!portal.isBungee() && destination == null) return; if (!portal.isBungee() && destination == null) return;
boolean deny = false; boolean deny = false;
// Check if player has access to this server for Bungee gates
if (portal.isBungee()) {
if (!canAccessServer(player, portal.getNetwork())) {
deny = true;
}
} else {
// Check if player has access to this network // Check if player has access to this network
// For Bungee gates this will be the target server name
if (!canAccessNetwork(player, portal.getNetwork())) { if (!canAccessNetwork(player, portal.getNetwork())) {
deny = true; deny = true;
} }
// Check if player has access to destination world // Check if player has access to destination world
if (!portal.isBungee() && !canAccessWorld(player, destination.getWorld().getName())) { if (!canAccessWorld(player, destination.getWorld().getName())) {
deny = true; deny = true;
} }
}
if (!canAccessPortal(player, portal, deny)) { if (!canAccessPortal(player, portal, deny)) {
Stargate.sendMessage(player, Stargate.getString("denyMsg")); Stargate.sendMessage(player, Stargate.getString("denyMsg"));

View File

@ -1,6 +1,6 @@
name: Stargate name: Stargate
main: net.TheDgtl.Stargate.Stargate main: net.TheDgtl.Stargate.Stargate
version: 0.7.9.5 version: 0.7.9.6
description: Stargate mod for Bukkit description: Stargate mod for Bukkit
author: Drakia author: Drakia
website: http://www.thedgtl.net website: http://www.thedgtl.net