Carts with no player can now go through gates.
You can set gates to send their cost to their owner. Cleaned up the iConomy code a bit, messages should only be shown on actual deduction now. Created separate 'stargate.free.{use/create/destroy}' permissions.
This commit is contained in:
parent
91bf4e25ef
commit
2d97b497d8
14
README
14
README
@ -9,7 +9,7 @@ iConomy support added back in, only costs are create, destroy and use.
|
||||
=============
|
||||
Known Issues
|
||||
=============
|
||||
- There are many bugs with portal material not showing properly. This is a bug I can not track down, and have no fix for at the moment.
|
||||
Hmm.. None?
|
||||
|
||||
=============
|
||||
Permissions
|
||||
@ -17,12 +17,13 @@ Known Issues
|
||||
- stargate.use - Allow this player/group to use 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.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.hidden - Allow this player/group to see all hidden stargates.
|
||||
- stargate.private - Allow this player/group to use all private stargates.
|
||||
- stargate.free - This player/group is not charged to use gates even if the gate has a cost.
|
||||
- stargate.free.use - This player/group is not charged to use gates even if the gate has a cost.
|
||||
- stargate.free.create - This player/group is not charged to create gates even if the gate has a cost.
|
||||
- stargate.free.destroy - This player/group is not charged to destroy gates even if the gate has a cost.
|
||||
- stargate.world.{worldname} - Allow this user/group access to gates on the world {worldname}
|
||||
- stargate.network.{networkname} - Allow this user/group access to the network {networkname}
|
||||
|
||||
@ -115,10 +116,17 @@ usecost - The cost to use a stargate
|
||||
not-enough-money-message - The message displayed if a player lacks money to do something
|
||||
networkfilter - Whether or not to disallow users access to a network if they don't have the 'stargate.network.{networkname}' permission.
|
||||
worldfilter - Whether or not to disallow users access to a network if they don't have the 'stargate.world.{worldname}' permission.
|
||||
toowner - Whether the money from gate-use goes to the owner or nobody
|
||||
|
||||
=============
|
||||
Changes
|
||||
=============
|
||||
[Version 0.4.0]
|
||||
- Carts with no player can now go through gates.
|
||||
- You can set gates to send their cost to their owner.
|
||||
- Per-gate layout option for "toOwner".
|
||||
- Cleaned up the iConomy code a bit, messages should only be shown on actual deduction now.
|
||||
- Created separate 'stargate.free.{use/create/destroy}' permissions.
|
||||
[Version 0.3.5]
|
||||
- Added 'stargate.world.*' permissions
|
||||
- Added 'stargate.network.*' permissions
|
||||
|
@ -24,6 +24,8 @@ import org.bukkit.material.Button;
|
||||
import org.bukkit.material.MaterialData;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.nijiko.coelho.iConomy.iConomy;
|
||||
|
||||
/**
|
||||
* Portal.java - Plug-in for hey0's minecraft mod.
|
||||
* @author Shaun (sturmeh)
|
||||
@ -244,10 +246,10 @@ public class Portal {
|
||||
newVelocity.multiply(velocity);
|
||||
|
||||
final Entity passenger = vehicle.getPassenger();
|
||||
if (passenger != null) {
|
||||
vehicle.eject();
|
||||
vehicle.remove();
|
||||
final Minecart mc = exit.getWorld().spawnMinecart(exit);
|
||||
if (passenger != null) {
|
||||
passenger.teleport(exit);
|
||||
Stargate.server.getScheduler().scheduleSyncDelayedTask(Stargate.stargate, new Runnable() {
|
||||
public void run() {
|
||||
@ -256,7 +258,8 @@ public class Portal {
|
||||
}
|
||||
}, 1);
|
||||
} else {
|
||||
mc.setVelocity(newVelocity);
|
||||
vehicle.teleport(exit);
|
||||
vehicle.setVelocity(newVelocity);
|
||||
}
|
||||
}
|
||||
|
||||
@ -641,12 +644,16 @@ public class Portal {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (iConomyHandler.useiConomy() && !Stargate.hasPerm(player, "stargate.free", player.isOp()) && !iConomyHandler.chargePlayer(player.getName(), null, gate.getCreateCost())) {
|
||||
if (iConomyHandler.useiConomy() && !Stargate.hasPerm(player, "stargate.free.create", player.isOp())) {
|
||||
if (!iConomyHandler.chargePlayer(player.getName(), null, gate.getCreateCost())) {
|
||||
if (!iConomyHandler.inFundMsg.isEmpty()) {
|
||||
player.sendMessage(ChatColor.RED + iConomyHandler.inFundMsg);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
if (gate.getCreateCost() > 0)
|
||||
player.sendMessage(ChatColor.GREEN + "Deducted " + iConomy.getBank().format(gate.getCreateCost()));
|
||||
}
|
||||
|
||||
Portal portal = null;
|
||||
|
||||
|
@ -119,9 +119,6 @@ public class Stargate extends JavaPlugin {
|
||||
|
||||
pm.registerEvent(Event.Type.PLAYER_MOVE, playerListener, Priority.Normal, this);
|
||||
|
||||
//pm.registerEvent(Event.Type.BLOCK_RIGHTCLICKED, blockListener, Priority.Normal, this);
|
||||
//pm.registerEvent(Event.Type.BLOCK_PLACED, blockListener, Priority.Normal, this);
|
||||
//pm.registerEvent(Event.Type.BLOCK_DAMAGED, blockListener, Priority.Normal, this);
|
||||
pm.registerEvent(Event.Type.PLAYER_INTERACT, playerListener, Priority.Normal, this);
|
||||
pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Normal, this);
|
||||
pm.registerEvent(Event.Type.VEHICLE_MOVE, vehicleListener, Priority.Normal, this);
|
||||
@ -131,7 +128,7 @@ public class Stargate extends JavaPlugin {
|
||||
|
||||
pm.registerEvent(Event.Type.ENTITY_EXPLODE, entityListener, Priority.Normal, this);
|
||||
|
||||
// iConomy Loading
|
||||
// Dependency Loading
|
||||
pm.registerEvent(Event.Type.PLUGIN_ENABLE, serverListener, Priority.Monitor, this);
|
||||
pm.registerEvent(Event.Type.PLUGIN_DISABLE, serverListener, Priority.Monitor, this);
|
||||
|
||||
@ -158,6 +155,7 @@ public class Stargate extends JavaPlugin {
|
||||
iConomyHandler.destroyCost = config.getInt("destroycost", iConomyHandler.destroyCost);
|
||||
iConomyHandler.useCost = config.getInt("usecost", iConomyHandler.useCost);
|
||||
iConomyHandler.inFundMsg = config.getString("not-enough-money-message", iConomyHandler.inFundMsg);
|
||||
iConomyHandler.toOwner = config.getBoolean("toowner", iConomyHandler.toOwner);
|
||||
|
||||
saveConfig();
|
||||
}
|
||||
@ -181,6 +179,7 @@ public class Stargate extends JavaPlugin {
|
||||
config.setProperty("destroycost", iConomyHandler.destroyCost);
|
||||
config.setProperty("usecost", iConomyHandler.useCost);
|
||||
config.setProperty("not-enough-money-message", iConomyHandler.inFundMsg);
|
||||
config.setProperty("toowner", iConomyHandler.toOwner);
|
||||
|
||||
config.save();
|
||||
}
|
||||
@ -238,7 +237,7 @@ public class Stargate extends JavaPlugin {
|
||||
Portal destination = gate.getDestination();
|
||||
|
||||
if (!gate.isOpen()) {
|
||||
if (!gate.isFree() && !hasPerm(player, "stargate.free", player.isOp()) &&
|
||||
if (!gate.isFree() && !hasPerm(player, "stargate.free.use", player.isOp()) &&
|
||||
iConomyHandler.useiConomy() && iConomyHandler.getBalance(player.getName()) < gate.getGate().getUseCost()) {
|
||||
player.sendMessage(ChatColor.RED + iConomyHandler.inFundMsg);
|
||||
} else if ((!gate.isFixed()) && gate.isActive() && (gate.getActivePlayer() != player)) {
|
||||
@ -311,10 +310,15 @@ public class Stargate extends JavaPlugin {
|
||||
Portal dest = portal.getDestination();
|
||||
if (dest == null) return;
|
||||
|
||||
if (portal.isFree() || !iConomyHandler.useiConomy() || hasPerm(player, "stargate.free", player.isOp()) ||
|
||||
iConomyHandler.chargePlayer(player.getName(), null, portal.getGate().getUseCost())) {
|
||||
if (!portal.isFree() && iConomyHandler.useiConomy()) {
|
||||
boolean iConCharge = (iConomyHandler.useiConomy() && !portal.isFree() && !hasPerm(player, "stargate.free.use", player.isOp()));
|
||||
|
||||
if (!iConCharge || iConomyHandler.chargePlayer(player.getName(), portal.getOwner(), portal.getGate().getUseCost())) {
|
||||
if (iConCharge && portal.getGate().getUseCost() > 0) {
|
||||
player.sendMessage(ChatColor.GREEN + "Deducted " + iConomy.getBank().format(portal.getGate().getUseCost()));
|
||||
|
||||
Player p = server.getPlayer(portal.getOwner());
|
||||
if (iConomyHandler.toOwner && p != null && !portal.getOwner().equals(player.getName()))
|
||||
p.sendMessage(ChatColor.GREEN + "Obtained " + iConomy.getBank().format(portal.getGate().getUseCost()) + " from Stargate " + portal.getName());
|
||||
}
|
||||
if (!teleMsg.isEmpty()) {
|
||||
player.sendMessage(ChatColor.BLUE + teleMsg);
|
||||
@ -326,6 +330,10 @@ public class Stargate extends JavaPlugin {
|
||||
}
|
||||
}
|
||||
portal.close(false);
|
||||
} else {
|
||||
Portal dest = portal.getDestination();
|
||||
if (dest == null) return;
|
||||
dest.teleport(vehicle, portal);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -337,14 +345,26 @@ public class Stargate extends JavaPlugin {
|
||||
Portal portal = Portal.getByEntrance(event.getTo());
|
||||
|
||||
if ((portal != null) && (portal.isOpen())) {
|
||||
if (portal.isOpenFor(player)) {
|
||||
Portal destination = portal.getDestination();
|
||||
if (!portal.isOpenFor(player)) {
|
||||
if (!denyMsg.isEmpty()) {
|
||||
player.sendMessage(ChatColor.RED + denyMsg);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (destination != null) {
|
||||
if (portal.isFree() || !iConomyHandler.useiConomy() || hasPerm(player, "stargate.free", player.isOp()) ||
|
||||
iConomyHandler.chargePlayer(player.getName(), null, portal.getGate().getUseCost())) {
|
||||
if (!portal.isFree() && iConomyHandler.useiConomy()) {
|
||||
Portal destination = portal.getDestination();
|
||||
if (destination == null) return;
|
||||
|
||||
boolean iConCharge = (iConomyHandler.useiConomy() && !portal.isFree() && !hasPerm(player, "stargate.free.use", player.isOp()));
|
||||
|
||||
if (!iConCharge || iConomyHandler.chargePlayer(player.getName(), portal.getOwner(), portal.getGate().getUseCost())) {
|
||||
if (iConCharge && portal.getGate().getUseCost() > 0) {
|
||||
player.sendMessage(ChatColor.GREEN + "Deducted " + iConomy.getBank().format(portal.getGate().getUseCost()));
|
||||
|
||||
Player p = server.getPlayer(portal.getOwner());
|
||||
if (iConomyHandler.toOwner && p != null && !portal.getOwner().equals(player.getName())) {
|
||||
p.sendMessage(ChatColor.GREEN + "Obtained " + iConomy.getBank().format(portal.getGate().getUseCost()) + " from Stargate " + portal.getName());
|
||||
}
|
||||
}
|
||||
if (!teleMsg.isEmpty()) {
|
||||
player.sendMessage(ChatColor.BLUE + teleMsg);
|
||||
@ -358,12 +378,6 @@ public class Stargate extends JavaPlugin {
|
||||
}
|
||||
portal.close(false);
|
||||
}
|
||||
} else {
|
||||
if (!denyMsg.isEmpty()) {
|
||||
player.sendMessage(ChatColor.RED + denyMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -446,9 +460,6 @@ public class Stargate extends JavaPlugin {
|
||||
Portal portal = Portal.createPortal(sign, player);
|
||||
if (portal == null) return;
|
||||
|
||||
if (iConomyHandler.useiConomy()) {
|
||||
player.sendMessage(ChatColor.GREEN + "Deducted " + iConomy.getBank().format(portal.getGate().getCreateCost()));
|
||||
}
|
||||
if (!regMsg.isEmpty()) {
|
||||
player.sendMessage(ChatColor.GREEN + regMsg);
|
||||
}
|
||||
@ -476,15 +487,15 @@ public class Stargate extends JavaPlugin {
|
||||
if (hasPerm(player, "stargate.destroy", player.isOp()) || hasPerm(player, "stargate.destroy.all", player.isOp()) ||
|
||||
( portal.getOwner().equalsIgnoreCase(player.getName()) && hasPerm(player, "stargate.destroy.owner", false) )) {
|
||||
// Can't afford
|
||||
if (iConomyHandler.useiConomy()) {
|
||||
if(iConomyHandler.getBalance(player.getName()) < portal.getGate().getDestroyCost()) {
|
||||
if (iConomyHandler.useiConomy() && !hasPerm(player, "stargate.free.destroy", player.isOp())) {
|
||||
if (!iConomyHandler.chargePlayer(player.getName(), null, portal.getGate().getDestroyCost())) {
|
||||
if (!iConomyHandler.inFundMsg.isEmpty()) {
|
||||
player.sendMessage(ChatColor.RED + iConomyHandler.inFundMsg);
|
||||
}
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
iConomyHandler.chargePlayer(player.getName(), null, portal.getGate().getDestroyCost());
|
||||
|
||||
if (portal.getGate().getDestroyCost() > 0) {
|
||||
player.sendMessage(ChatColor.GREEN + "Deducted " + iConomy.getBank().format(portal.getGate().getDestroyCost()));
|
||||
} else if (portal.getGate().getDestroyCost() < 0) {
|
||||
|
@ -11,6 +11,7 @@ public class iConomyHandler {
|
||||
public static int createCost = 0;
|
||||
public static int destroyCost = 0;
|
||||
public static String inFundMsg = "Insufficient Funds.";
|
||||
public static boolean toOwner = false;
|
||||
|
||||
public static double getBalance(String player) {
|
||||
if (useiConomy && iconomy != null) {
|
||||
@ -36,7 +37,7 @@ public class iConomyHandler {
|
||||
if (balance < amount) return false;
|
||||
acc.setBalance(balance - amount);
|
||||
|
||||
if (target != null) {
|
||||
if (toOwner && target != null && !player.equals(target)) {
|
||||
Account tAcc = iConomy.getBank().getAccount(target);
|
||||
if (tAcc != null) {
|
||||
balance = tAcc.getBalance();
|
||||
|
@ -1,6 +1,6 @@
|
||||
name: Stargate
|
||||
main: net.TheDgtl.Stargate.Stargate
|
||||
version: 0.3.5
|
||||
version: 0.4.0
|
||||
description: Stargate mod for Bukkit
|
||||
author: Drakia
|
||||
website: http://www.thedgtl.net
|
Loading…
Reference in New Issue
Block a user