diff --git a/README b/README index 22191da..5d20493 100644 --- a/README +++ b/README @@ -156,6 +156,8 @@ maxgates - If non-zero, will define the maximum amount of gates allowed on any n ============= Changes ============= +[Version 0.6.4] + - Fixed iConomy handling [Version 0.6.3] - Fixed (Not Connected) showing on inter-world gate loading - Added the ability to negate Network/World permissions (Use, Create and Destroy) diff --git a/src/net/TheDgtl/Stargate/Portal.java b/src/net/TheDgtl/Stargate/Portal.java index 14cecf2..ed45556 100644 --- a/src/net/TheDgtl/Stargate/Portal.java +++ b/src/net/TheDgtl/Stargate/Portal.java @@ -816,9 +816,13 @@ public class Portal { } } - if (!Stargate.chargePlayer(player, null, "create", gate.getCreateCost())) { - Stargate.debug("createPortal", "Insufficient Funds"); - return null; + int cost = Stargate.getCreateCost(player, gate); + if (cost > 0) { + if (!Stargate.chargePlayer(player, null, gate.getCreateCost())) { + Stargate.sendMessage(player, "Insufficient Funds"); + Stargate.debug("createPortal", "Insufficient Funds"); + return null; + } } Portal portal = null; diff --git a/src/net/TheDgtl/Stargate/Stargate.java b/src/net/TheDgtl/Stargate/Stargate.java index a9139ec..fce2adb 100644 --- a/src/net/TheDgtl/Stargate/Stargate.java +++ b/src/net/TheDgtl/Stargate/Stargate.java @@ -486,13 +486,11 @@ public class Stargate extends JavaPlugin { /* * Charge player for {action} if required, true on success, false if can't afford */ - public static boolean chargePlayer(Player player, String target, String action, int cost) { + public static boolean chargePlayer(Player player, String target, int cost) { // If cost is 0 - if (cost <= 0) return true; + if (cost == 0) return true; // iConomy is disabled if (!iConomyHandler.useiConomy()) return true; - // Player gets free {action} - if (hasPerm(player, "stargate.free") || hasPerm(player, "stargate.free." + action)) return true; // Charge player return iConomyHandler.chargePlayer(player.getName(), target, cost); } @@ -509,10 +507,36 @@ public class Stargate extends JavaPlugin { if (!iConomyHandler.chargeFreeDestination && dest.isFree()) return 0; // Cost is 0 if the player owns this gate and funds go to the owner if (src.getGate().getToOwner() && src.getOwner().equalsIgnoreCase(player.getName())) return 0; + // Player gets free gate use + if (hasPerm(player, "stargate.free") || hasPerm(player, "stargate.free.use")) return 0; return src.getGate().getUseCost(); } + /* + * Determine the cost to create the gate + */ + public static int getCreateCost(Player player, Gate gate) { + // Not using iConomy + if (!iConomyHandler.useiConomy()) return 0; + // Player gets free gate destruction + if (hasPerm(player, "stargate.free") || hasPerm(player, "stargate.free.create")) return 0; + + return gate.getDestroyCost(); + } + + /* + * Determine the cost to destroy the gate + */ + public static int getDestroyCost(Player player, Gate gate) { + // Not using iConomy + if (!iConomyHandler.useiConomy()) return 0; + // Player gets free gate destruction + if (hasPerm(player, "stargate.free") || hasPerm(player, "stargate.free.destroy")) return 0; + + return gate.getDestroyCost(); + } + /* * Check if a plugin is loaded/enabled already. Returns the plugin if so, null otherwise */ @@ -564,7 +588,7 @@ public class Stargate extends JavaPlugin { int cost = Stargate.getUseCost(player, portal, dest); if (cost > 0) { String target = portal.getGate().getToOwner() ? portal.getOwner() : null; - if (!Stargate.chargePlayer(player, target, "use", cost)) { + if (!Stargate.chargePlayer(player, target, cost)) { // Insufficient Funds Stargate.sendMessage(player, "Insufficient Funds"); portal.close(false); @@ -654,7 +678,7 @@ public class Stargate extends JavaPlugin { int cost = Stargate.getUseCost(player, portal, destination); if (cost > 0) { String target = portal.getGate().getToOwner() ? portal.getOwner() : null; - if (!Stargate.chargePlayer(player, target, "use", cost)) { + if (!Stargate.chargePlayer(player, target, cost)) { // Insufficient Funds Stargate.sendMessage(player, "Insufficient Funds"); portal.close(false); @@ -783,17 +807,21 @@ public class Stargate extends JavaPlugin { return; } - if (!Stargate.chargePlayer(player, null, "destroy", portal.getGate().getDestroyCost())) { - Stargate.debug("onBlockBreak", "Insufficient Funds"); - Stargate.sendMessage(player, iConomyHandler.inFundMsg); - event.setCancelled(true); - return; - } + int cost = Stargate.getDestroyCost(player, portal.getGate()); - if (portal.getGate().getDestroyCost() > 0) { - Stargate.sendMessage(player, "Deducted " + iConomyHandler.format(portal.getGate().getDestroyCost()), false); - } else if (portal.getGate().getDestroyCost() < 0) { - Stargate.sendMessage(player, "Refunded " + iConomyHandler.format(-portal.getGate().getDestroyCost()), false); + if (cost != 0) { + if (!Stargate.chargePlayer(player, null, cost)) { + Stargate.debug("onBlockBreak", "Insufficient Funds"); + Stargate.sendMessage(player, iConomyHandler.inFundMsg); + event.setCancelled(true); + return; + } + + if (cost > 0) { + Stargate.sendMessage(player, "Deducted " + iConomyHandler.format(cost), false); + } else if (cost < 0) { + Stargate.sendMessage(player, "Refunded " + iConomyHandler.format(-cost), false); + } } portal.unregister(true); diff --git a/src/plugin.yml b/src/plugin.yml index a5707ec..bb93d55 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,6 +1,6 @@ name: Stargate main: net.TheDgtl.Stargate.Stargate -version: 0.6.3 +version: 0.6.4 description: Stargate mod for Bukkit author: Drakia website: http://www.thedgtl.net