2011-10-09 21:57:43 +02:00
|
|
|
package com.massivecraft.factions.cmd;
|
2011-03-22 15:45:41 +01:00
|
|
|
|
2012-03-13 13:58:51 +01:00
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
|
2011-07-18 22:06:02 +02:00
|
|
|
import com.massivecraft.factions.Board;
|
|
|
|
import com.massivecraft.factions.Conf;
|
2012-03-13 13:58:51 +01:00
|
|
|
import com.massivecraft.factions.event.LandUnclaimEvent;
|
2011-10-05 12:13:54 +02:00
|
|
|
import com.massivecraft.factions.integration.Econ;
|
2011-10-23 16:03:28 +02:00
|
|
|
import com.massivecraft.factions.integration.SpoutFeatures;
|
2011-07-18 22:06:02 +02:00
|
|
|
import com.massivecraft.factions.FLocation;
|
|
|
|
import com.massivecraft.factions.Faction;
|
Additional logging, with new conf.json settings to enable/disable logging of specific events:
"logFactionCreate": true, - log faction creation
"logFactionDisband": true, - log factions being disbanded, by command or by circumstance
"logFactionJoin": true, - log player joining a faction
"logFactionKick": true, - log player being kicked from a faction
"logFactionLeave": true, - log player leaving a faction
"logLandClaims": true, - log land being claimed (including safe zone and war zone)
"logLandUnclaims": true, - log land being unclaimed (including safe zone and war zone)
"logMoneyTransactions": true, - log money being deposited, withdrawn, and otherwise transferred in relation to faction banks
Also a fix for a potential NPE from players logging out and Spout appearance handler referencing them afterwards
2011-10-23 19:50:02 +02:00
|
|
|
import com.massivecraft.factions.P;
|
2011-10-09 18:35:39 +02:00
|
|
|
import com.massivecraft.factions.struct.Permission;
|
2011-07-18 22:06:02 +02:00
|
|
|
import com.massivecraft.factions.struct.Role;
|
2011-03-22 15:45:41 +01:00
|
|
|
|
2011-10-09 20:10:19 +02:00
|
|
|
public class CmdUnclaim extends FCommand
|
2011-10-09 18:35:39 +02:00
|
|
|
{
|
2011-10-09 20:10:19 +02:00
|
|
|
public CmdUnclaim()
|
2011-10-09 18:35:39 +02:00
|
|
|
{
|
|
|
|
this.aliases.add("unclaim");
|
|
|
|
this.aliases.add("declaim");
|
|
|
|
|
|
|
|
//this.requiredArgs.add("");
|
|
|
|
//this.optionalArgs.put("", "");
|
|
|
|
|
2011-10-09 21:57:43 +02:00
|
|
|
this.permission = Permission.UNCLAIM.node;
|
|
|
|
this.disableOnLock = true;
|
2011-03-22 18:48:09 +01:00
|
|
|
|
2011-10-09 18:35:39 +02:00
|
|
|
senderMustBePlayer = true;
|
|
|
|
senderMustBeMember = false;
|
|
|
|
senderMustBeModerator = false;
|
|
|
|
senderMustBeAdmin = false;
|
2011-03-22 15:45:41 +01:00
|
|
|
}
|
|
|
|
|
2011-06-21 07:38:31 +02:00
|
|
|
@Override
|
2011-10-09 18:35:39 +02:00
|
|
|
public void perform()
|
|
|
|
{
|
2011-10-09 14:53:38 +02:00
|
|
|
FLocation flocation = new FLocation(fme);
|
2011-03-23 17:39:56 +01:00
|
|
|
Faction otherFaction = Board.getFactionAt(flocation);
|
|
|
|
|
2011-10-09 18:35:39 +02:00
|
|
|
if (otherFaction.isSafeZone())
|
|
|
|
{
|
|
|
|
if (Permission.MANAGE_SAFE_ZONE.has(sender))
|
|
|
|
{
|
2011-03-23 17:39:56 +01:00
|
|
|
Board.removeAt(flocation);
|
2011-10-23 16:03:28 +02:00
|
|
|
SpoutFeatures.updateTerritoryDisplayLoc(flocation);
|
2011-10-10 13:40:24 +02:00
|
|
|
msg("<i>Safe zone was unclaimed.");
|
Additional logging, with new conf.json settings to enable/disable logging of specific events:
"logFactionCreate": true, - log faction creation
"logFactionDisband": true, - log factions being disbanded, by command or by circumstance
"logFactionJoin": true, - log player joining a faction
"logFactionKick": true, - log player being kicked from a faction
"logFactionLeave": true, - log player leaving a faction
"logLandClaims": true, - log land being claimed (including safe zone and war zone)
"logLandUnclaims": true, - log land being unclaimed (including safe zone and war zone)
"logMoneyTransactions": true, - log money being deposited, withdrawn, and otherwise transferred in relation to faction banks
Also a fix for a potential NPE from players logging out and Spout appearance handler referencing them afterwards
2011-10-23 19:50:02 +02:00
|
|
|
|
|
|
|
if (Conf.logLandUnclaims)
|
|
|
|
P.p.log(fme.getName()+" unclaimed land at ("+flocation.getCoordString()+") from the faction: "+otherFaction.getTag());
|
2011-10-09 18:35:39 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2011-10-10 13:40:24 +02:00
|
|
|
msg("<b>This is a safe zone. You lack permissions to unclaim.");
|
2011-03-23 17:39:56 +01:00
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
2011-10-09 18:35:39 +02:00
|
|
|
else if (otherFaction.isWarZone())
|
|
|
|
{
|
|
|
|
if (Permission.MANAGE_WAR_ZONE.has(sender))
|
|
|
|
{
|
2011-05-29 23:28:29 +02:00
|
|
|
Board.removeAt(flocation);
|
2011-10-23 16:03:28 +02:00
|
|
|
SpoutFeatures.updateTerritoryDisplayLoc(flocation);
|
2011-10-10 13:40:24 +02:00
|
|
|
msg("<i>War zone was unclaimed.");
|
Additional logging, with new conf.json settings to enable/disable logging of specific events:
"logFactionCreate": true, - log faction creation
"logFactionDisband": true, - log factions being disbanded, by command or by circumstance
"logFactionJoin": true, - log player joining a faction
"logFactionKick": true, - log player being kicked from a faction
"logFactionLeave": true, - log player leaving a faction
"logLandClaims": true, - log land being claimed (including safe zone and war zone)
"logLandUnclaims": true, - log land being unclaimed (including safe zone and war zone)
"logMoneyTransactions": true, - log money being deposited, withdrawn, and otherwise transferred in relation to faction banks
Also a fix for a potential NPE from players logging out and Spout appearance handler referencing them afterwards
2011-10-23 19:50:02 +02:00
|
|
|
|
|
|
|
if (Conf.logLandUnclaims)
|
|
|
|
P.p.log(fme.getName()+" unclaimed land at ("+flocation.getCoordString()+") from the faction: "+otherFaction.getTag());
|
2011-10-09 18:35:39 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2011-10-10 13:40:24 +02:00
|
|
|
msg("<b>This is a war zone. You lack permissions to unclaim.");
|
2011-05-29 23:28:29 +02:00
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2011-10-09 18:35:39 +02:00
|
|
|
if (fme.isAdminBypassing())
|
|
|
|
{
|
2011-05-29 23:28:29 +02:00
|
|
|
Board.removeAt(flocation);
|
2011-10-23 16:03:28 +02:00
|
|
|
SpoutFeatures.updateTerritoryDisplayLoc(flocation);
|
2011-05-29 23:28:29 +02:00
|
|
|
|
2011-10-21 19:20:33 +02:00
|
|
|
otherFaction.msg("%s<i> unclaimed some of your land.", fme.describeTo(otherFaction, true));
|
2011-10-10 13:40:24 +02:00
|
|
|
msg("<i>You unclaimed this land.");
|
Additional logging, with new conf.json settings to enable/disable logging of specific events:
"logFactionCreate": true, - log faction creation
"logFactionDisband": true, - log factions being disbanded, by command or by circumstance
"logFactionJoin": true, - log player joining a faction
"logFactionKick": true, - log player being kicked from a faction
"logFactionLeave": true, - log player leaving a faction
"logLandClaims": true, - log land being claimed (including safe zone and war zone)
"logLandUnclaims": true, - log land being unclaimed (including safe zone and war zone)
"logMoneyTransactions": true, - log money being deposited, withdrawn, and otherwise transferred in relation to faction banks
Also a fix for a potential NPE from players logging out and Spout appearance handler referencing them afterwards
2011-10-23 19:50:02 +02:00
|
|
|
|
|
|
|
if (Conf.logLandUnclaims)
|
|
|
|
P.p.log(fme.getName()+" unclaimed land at ("+flocation.getCoordString()+") from the faction: "+otherFaction.getTag());
|
|
|
|
|
2011-05-29 23:28:29 +02:00
|
|
|
return;
|
|
|
|
}
|
2011-03-23 17:39:56 +01:00
|
|
|
|
2011-10-09 18:35:39 +02:00
|
|
|
if ( ! assertHasFaction())
|
|
|
|
{
|
2011-03-22 15:45:41 +01:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2011-10-09 18:35:39 +02:00
|
|
|
if ( ! assertMinRole(Role.MODERATOR))
|
|
|
|
{
|
2011-03-22 15:45:41 +01:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2011-10-09 18:35:39 +02:00
|
|
|
if ( myFaction != otherFaction)
|
|
|
|
{
|
2011-10-10 13:40:24 +02:00
|
|
|
msg("<b>You don't own this land.");
|
2011-03-22 15:45:41 +01:00
|
|
|
return;
|
|
|
|
}
|
Added basic support for iConomy, where most Factions commands can be made to cost (or give) money. For claiming land, there are some extra features. Each additional land claimed by default costs more than the last, with the multiplier being configurable. For example, the first claim might cost $30, the 2nd $45, the third $60, and so forth. When land is claimed from a weakened faction, there is a configurable bonus amount of money deducted from the cost of claiming the land, as an incentive; this number can be changed to a negative value to instead make it cost more to claim such land. When land is unclaimed, a configurable percentage of the cost of claiming the land can be refunded (defaults to 70% of the cost). The total value of a faction's claimed land is now shown in the info given by /f who [faction tag], along with the depreciated (refund) value.
2011-08-02 01:05:01 +02:00
|
|
|
|
2012-03-13 15:48:31 +01:00
|
|
|
LandUnclaimEvent unclaimEvent = new LandUnclaimEvent(flocation, otherFaction, fme);
|
|
|
|
Bukkit.getServer().getPluginManager().callEvent(unclaimEvent);
|
|
|
|
if(unclaimEvent.isCancelled()) return;
|
|
|
|
|
2011-10-12 18:48:47 +02:00
|
|
|
if (Econ.shouldBeUsed())
|
2011-10-09 18:35:39 +02:00
|
|
|
{
|
Added basic support for iConomy, where most Factions commands can be made to cost (or give) money. For claiming land, there are some extra features. Each additional land claimed by default costs more than the last, with the multiplier being configurable. For example, the first claim might cost $30, the 2nd $45, the third $60, and so forth. When land is claimed from a weakened faction, there is a configurable bonus amount of money deducted from the cost of claiming the land, as an incentive; this number can be changed to a negative value to instead make it cost more to claim such land. When land is unclaimed, a configurable percentage of the cost of claiming the land can be refunded (defaults to 70% of the cost). The total value of a faction's claimed land is now shown in the info given by /f who [faction tag], along with the depreciated (refund) value.
2011-08-02 01:05:01 +02:00
|
|
|
double refund = Econ.calculateClaimRefund(myFaction.getLandRounded());
|
2011-10-12 18:48:47 +02:00
|
|
|
|
2011-12-18 08:33:34 +01:00
|
|
|
if(Conf.bankEnabled && Conf.bankFactionPaysLandCosts)
|
2011-10-12 18:48:47 +02:00
|
|
|
{
|
|
|
|
if ( ! Econ.modifyMoney(myFaction, refund, "to unclaim this land", "for unclaiming this land")) return;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if ( ! Econ.modifyMoney(fme , refund, "to unclaim this land", "for unclaiming this land")) return;
|
|
|
|
}
|
Added basic support for iConomy, where most Factions commands can be made to cost (or give) money. For claiming land, there are some extra features. Each additional land claimed by default costs more than the last, with the multiplier being configurable. For example, the first claim might cost $30, the 2nd $45, the third $60, and so forth. When land is claimed from a weakened faction, there is a configurable bonus amount of money deducted from the cost of claiming the land, as an incentive; this number can be changed to a negative value to instead make it cost more to claim such land. When land is unclaimed, a configurable percentage of the cost of claiming the land can be refunded (defaults to 70% of the cost). The total value of a faction's claimed land is now shown in the info given by /f who [faction tag], along with the depreciated (refund) value.
2011-08-02 01:05:01 +02:00
|
|
|
}
|
|
|
|
|
2011-03-22 15:45:41 +01:00
|
|
|
Board.removeAt(flocation);
|
2011-10-23 16:03:28 +02:00
|
|
|
SpoutFeatures.updateTerritoryDisplayLoc(flocation);
|
2011-10-21 19:20:33 +02:00
|
|
|
myFaction.msg("%s<i> unclaimed some land.", fme.describeTo(myFaction, true));
|
Additional logging, with new conf.json settings to enable/disable logging of specific events:
"logFactionCreate": true, - log faction creation
"logFactionDisband": true, - log factions being disbanded, by command or by circumstance
"logFactionJoin": true, - log player joining a faction
"logFactionKick": true, - log player being kicked from a faction
"logFactionLeave": true, - log player leaving a faction
"logLandClaims": true, - log land being claimed (including safe zone and war zone)
"logLandUnclaims": true, - log land being unclaimed (including safe zone and war zone)
"logMoneyTransactions": true, - log money being deposited, withdrawn, and otherwise transferred in relation to faction banks
Also a fix for a potential NPE from players logging out and Spout appearance handler referencing them afterwards
2011-10-23 19:50:02 +02:00
|
|
|
|
|
|
|
if (Conf.logLandUnclaims)
|
|
|
|
P.p.log(fme.getName()+" unclaimed land at ("+flocation.getCoordString()+") from the faction: "+otherFaction.getTag());
|
2011-03-22 15:45:41 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|