Fixed portal count on load

Added stargate.create.personal for personal stargate networks
Fixed a bug with destroying stargates by removing sign/button
This commit is contained in:
Drakia 2011-03-14 12:13:04 -07:00
parent 432ab3bbc8
commit ec8c308651
4 changed files with 35 additions and 24 deletions

6
README
View File

@ -21,6 +21,7 @@ Known Issues
============= =============
- stargate.use - Allow this player/group to use stargates. - stargate.use - Allow this player/group to use stargates.
- stargate.create - Allow this player/group to create new stargates. - stargate.create - Allow this player/group to create new stargates.
- stargate.create.personal - Allow this player/group to create new stargates on a network defined as their name.
- stargate.destroy - Allow this player/group to destroy existing stargates. (Deprecated) - stargate.destroy - Allow this player/group to destroy existing stargates. (Deprecated)
- stargate.destroy.all - Allow this player/group to destroy any existing stargate (Replaces stargate.destroy) - stargate.destroy.all - Allow this player/group to destroy any existing stargate (Replaces stargate.destroy)
- stargate.destroy.owner - Allow this player/group to destroy any stargate that they are the owner of. - stargate.destroy.owner - Allow this player/group to destroy any stargate that they are the owner of.
@ -85,6 +86,11 @@ destroyexplosion - Whether to destroy a stargate with explosions, or stop an exp
============= =============
Changes Changes
============= =============
[Version 0.27]
- Fixed portal count on load
[Version 0.26]
- Added stargate.create.personal for personal stargate networks
- Fixed a bug with destroying stargates by removing sign/button
[Version 0.25] [Version 0.25]
- Fixed a bug with worlds in subfolders - Fixed a bug with worlds in subfolders
- Fixed gates being destroyed with explosions - Fixed gates being destroyed with explosions

View File

@ -320,7 +320,7 @@ public class Portal {
return owner; return owner;
} }
public void activate(Player player, Stargate stargate) { public void activate(Player player) {
destinations.clear(); destinations.clear();
destination = ""; destination = "";
drawSign(); drawSign();
@ -331,7 +331,7 @@ public class Portal {
// Not fixed, not this portal, and visible to this player. // Not fixed, not this portal, and visible to this player.
if ( (!portal.isFixed()) && if ( (!portal.isFixed()) &&
(!dest.equalsIgnoreCase(getName())) && // Not this portal (!dest.equalsIgnoreCase(getName())) && // Not this portal
(!portal.isHidden() || stargate.hasPerm(player, "stargate.hidden", player.isOp()) || portal.getOwner().equals(player.getName())) (!portal.isHidden() || Stargate.hasPerm(player, "stargate.hidden", player.isOp()) || portal.getOwner().equals(player.getName()))
) { ) {
destinations.add(portal.getName()); destinations.add(portal.getName());
} }
@ -365,9 +365,9 @@ public class Portal {
return openTime; return openTime;
} }
public void cycleDestination(Player player, Stargate stargate) { public void cycleDestination(Player player) {
if (!isActive() || getActivePlayer() != player) { if (!isActive() || getActivePlayer() != player) {
activate(player, stargate); activate(player);
} }
if (destinations.size() > 0) { if (destinations.size() > 0) {
@ -537,6 +537,13 @@ public class Portal {
boolean alwaysOn = (options.indexOf('a') != -1 || options.indexOf('A') != -1); boolean alwaysOn = (options.indexOf('a') != -1 || options.indexOf('A') != -1);
boolean priv = (options.indexOf('p') != -1 || options.indexOf('P') != -1); boolean priv = (options.indexOf('p') != -1 || options.indexOf('P') != -1);
// Check if the user can only create personal gates, set network if so
if (Stargate.hasPerm(player, "stargate.create.personal", false) &&
!Stargate.hasPerm(player, "stargate.create", player.isOp()) ) {
network = player.getName();
if (network.length() > 11) network = network.substring(0, 11);
}
// Can not create a non-fixed always-on gate. // Can not create a non-fixed always-on gate.
if (alwaysOn && destName.length() == 0) { if (alwaysOn && destName.length() == 0) {
alwaysOn = false; alwaysOn = false;
@ -773,6 +780,7 @@ public class Portal {
if (portal == null) continue; if (portal == null) continue;
// Verify portal integrity/register portal // Verify portal integrity/register portal
if (!portal.wasVerified()) {
if (!portal.isVerified() || !portal.checkIntegrity()) { if (!portal.isVerified() || !portal.checkIntegrity()) {
portal.unregister(); portal.unregister();
Stargate.log.info("[Stargate] Destroying stargate at " + portal.toString()); Stargate.log.info("[Stargate] Destroying stargate at " + portal.toString());
@ -781,6 +789,7 @@ public class Portal {
portal.drawSign(); portal.drawSign();
portalCount++; portalCount++;
} }
}
if (!portal.isAlwaysOn()) continue; if (!portal.isAlwaysOn()) continue;

View File

@ -47,10 +47,10 @@ import com.nijikokun.bukkit.Permissions.Permissions;
*/ */
public class Stargate extends JavaPlugin { public class Stargate extends JavaPlugin {
// Permissions // Permissions
private Permissions permissions = null; private static Permissions permissions = null;
private double permVersion = 0; private double permVersion = 0;
private final bListener blockListener = new bListener(this); private final bListener blockListener = new bListener();
private final pListener playerListener = new pListener(); private final pListener playerListener = new pListener();
private final vListener vehicleListener = new vListener(); private final vListener vehicleListener = new vListener();
private final wListener worldListener = new wListener(); private final wListener worldListener = new wListener();
@ -259,7 +259,7 @@ public class Stargate extends JavaPlugin {
/* /*
* Check whether the player has the given permissions. * Check whether the player has the given permissions.
*/ */
public boolean hasPerm(Player player, String perm, boolean def) { public static boolean hasPerm(Player player, String perm, boolean def) {
if (permissions != null) { if (permissions != null) {
return permissions.getHandler().has(player, perm); return permissions.getHandler().has(player, perm);
} else { } else {
@ -323,12 +323,6 @@ public class Stargate extends JavaPlugin {
} }
private class bListener extends BlockListener { private class bListener extends BlockListener {
Stargate stargate;
bListener(Stargate stargate) {
this.stargate = stargate;
}
@Override @Override
public void onBlockPlace(BlockPlaceEvent event) { public void onBlockPlace(BlockPlaceEvent event) {
// Stop player from placing a block touching a portals controls // Stop player from placing a block touching a portals controls
@ -346,7 +340,8 @@ public class Stargate extends JavaPlugin {
if (block.getType() != Material.WALL_SIGN) return; if (block.getType() != Material.WALL_SIGN) return;
// Initialize a stargate // Initialize a stargate
if (hasPerm(player, "stargate.create", player.isOp())) { if (hasPerm(player, "stargate.create", player.isOp()) ||
hasPerm(player, "stargate.create.personal", false)) {
SignPost sign = new SignPost(new Blox(block)); SignPost sign = new SignPost(new Blox(block));
// Set sign text so we can create a gate with it. // Set sign text so we can create a gate with it.
sign.setText(0, event.getLine(0)); sign.setText(0, event.getLine(0));
@ -379,7 +374,7 @@ public class Stargate extends JavaPlugin {
if (portal != null) { if (portal != null) {
if (hasPerm(player, "stargate.use", true)) { if (hasPerm(player, "stargate.use", true)) {
if ((!portal.isOpen()) && (!portal.isFixed())) { if ((!portal.isOpen()) && (!portal.isFixed())) {
portal.cycleDestination(player, stargate); portal.cycleDestination(player);
} }
} else { } else {
if (!denyMsg.isEmpty()) { if (!denyMsg.isEmpty()) {
@ -432,6 +427,7 @@ public class Stargate extends JavaPlugin {
if (!dmgMsg.isEmpty()) { if (!dmgMsg.isEmpty()) {
player.sendMessage(ChatColor.RED + dmgMsg); player.sendMessage(ChatColor.RED + dmgMsg);
} }
return;
} }
event.setCancelled(true); event.setCancelled(true);

View File

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