Merge branch 'master' of github.com:MassiveCraft/Factions
This commit is contained in:
commit
61998f459d
BIN
lib/Register.jar
Normal file
BIN
lib/Register.jar
Normal file
Binary file not shown.
BIN
lib/SpoutAPI.jar
BIN
lib/SpoutAPI.jar
Binary file not shown.
Binary file not shown.
@ -1,12 +0,0 @@
|
|||||||
package com.earth2me.essentials.chat;
|
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.player.PlayerChatEvent;
|
|
||||||
|
|
||||||
|
|
||||||
public interface IEssentialsChatListener
|
|
||||||
{
|
|
||||||
boolean shouldHandleThisChat(PlayerChatEvent event);
|
|
||||||
|
|
||||||
String modifyMessage(PlayerChatEvent event, Player target, String message);
|
|
||||||
}
|
|
@ -28,6 +28,8 @@ public class Conf {
|
|||||||
public static double powerPerMinute = 0.2; // Default health rate... it takes 5 min to heal one power
|
public static double powerPerMinute = 0.2; // Default health rate... it takes 5 min to heal one power
|
||||||
public static double powerPerDeath = 4.0; // A death makes you lose 4 power
|
public static double powerPerDeath = 4.0; // A death makes you lose 4 power
|
||||||
public static boolean powerRegenOffline = false; // does player power regenerate even while they're offline?
|
public static boolean powerRegenOffline = false; // does player power regenerate even while they're offline?
|
||||||
|
public static double powerOfflineLossPerDay = 1.0; // players will lose this much power per day offline
|
||||||
|
public static double powerOfflineLossLimit = 0.0; // players will no longer lose power from being offline once their power drops to this amount or less
|
||||||
public static double powerFactionMax = 0.0; // if greater than 0, the cap on how much power a faction can have (additional power from players beyond that will act as a "buffer" of sorts)
|
public static double powerFactionMax = 0.0; // if greater than 0, the cap on how much power a faction can have (additional power from players beyond that will act as a "buffer" of sorts)
|
||||||
|
|
||||||
public static String prefixAdmin = "**";
|
public static String prefixAdmin = "**";
|
||||||
@ -63,6 +65,7 @@ public class Conf {
|
|||||||
public static boolean chatTagPadAfter = true;
|
public static boolean chatTagPadAfter = true;
|
||||||
public static String chatTagFormat = "%s"+ChatColor.WHITE;
|
public static String chatTagFormat = "%s"+ChatColor.WHITE;
|
||||||
public static String factionChatFormat = "%s"+ChatColor.WHITE+" %s";
|
public static String factionChatFormat = "%s"+ChatColor.WHITE+" %s";
|
||||||
|
public static String allianceChatFormat = "%s"+ChatColor.WHITE+" %s";
|
||||||
|
|
||||||
public static boolean allowNoSlashCommand = true;
|
public static boolean allowNoSlashCommand = true;
|
||||||
|
|
||||||
@ -126,11 +129,14 @@ public class Conf {
|
|||||||
public static boolean territoryBlockFireballsWhenOffline = false;
|
public static boolean territoryBlockFireballsWhenOffline = false;
|
||||||
public static boolean territoryBlockTNT = false;
|
public static boolean territoryBlockTNT = false;
|
||||||
public static boolean territoryBlockTNTWhenOffline = false;
|
public static boolean territoryBlockTNTWhenOffline = false;
|
||||||
|
public static boolean territoryDenyEndermanBlocks = true;
|
||||||
|
public static boolean territoryDenyEndermanBlocksWhenOffline = true;
|
||||||
|
|
||||||
public static boolean safeZoneDenyBuild = true;
|
public static boolean safeZoneDenyBuild = true;
|
||||||
public static boolean safeZoneDenyUseage = true;
|
public static boolean safeZoneDenyUseage = true;
|
||||||
public static boolean safeZoneBlockTNT = true;
|
public static boolean safeZoneBlockTNT = true;
|
||||||
public static boolean safeZonePreventAllDamageToPlayers = false;
|
public static boolean safeZonePreventAllDamageToPlayers = false;
|
||||||
|
public static boolean safeZoneDenyEndermanBlocks = true;
|
||||||
|
|
||||||
public static boolean warZoneDenyBuild = true;
|
public static boolean warZoneDenyBuild = true;
|
||||||
public static boolean warZoneDenyUseage = true;
|
public static boolean warZoneDenyUseage = true;
|
||||||
@ -139,6 +145,7 @@ public class Conf {
|
|||||||
public static boolean warZoneBlockTNT = true;
|
public static boolean warZoneBlockTNT = true;
|
||||||
public static boolean warZonePowerLoss = true;
|
public static boolean warZonePowerLoss = true;
|
||||||
public static boolean warZoneFriendlyFire = false;
|
public static boolean warZoneFriendlyFire = false;
|
||||||
|
public static boolean warZoneDenyEndermanBlocks = true;
|
||||||
|
|
||||||
public static boolean wildernessDenyBuild = false;
|
public static boolean wildernessDenyBuild = false;
|
||||||
public static boolean wildernessDenyUseage = false;
|
public static boolean wildernessDenyUseage = false;
|
||||||
@ -146,6 +153,7 @@ public class Conf {
|
|||||||
public static boolean wildernessBlockFireballs = false;
|
public static boolean wildernessBlockFireballs = false;
|
||||||
public static boolean wildernessBlockTNT = false;
|
public static boolean wildernessBlockTNT = false;
|
||||||
public static boolean wildernessPowerLoss = true;
|
public static boolean wildernessPowerLoss = true;
|
||||||
|
public static boolean wildernessDenyEndermanBlocks = false;
|
||||||
|
|
||||||
// for claimed areas where further faction-member ownership can be defined
|
// for claimed areas where further faction-member ownership can be defined
|
||||||
public static boolean ownedAreasEnabled = true;
|
public static boolean ownedAreasEnabled = true;
|
||||||
@ -177,6 +185,7 @@ public class Conf {
|
|||||||
public static boolean spoutFactionTitlesOverNames = true;
|
public static boolean spoutFactionTitlesOverNames = true;
|
||||||
public static boolean spoutFactionAdminCapes = true;
|
public static boolean spoutFactionAdminCapes = true;
|
||||||
public static boolean spoutFactionModeratorCapes = true;
|
public static boolean spoutFactionModeratorCapes = true;
|
||||||
|
public static int spoutTerritoryDisplayPosition = 3;
|
||||||
public static String capeAlly = "https://github.com/MassiveCraft/Factions/raw/master/capes/ally.png";
|
public static String capeAlly = "https://github.com/MassiveCraft/Factions/raw/master/capes/ally.png";
|
||||||
public static String capeEnemy = "https://github.com/MassiveCraft/Factions/raw/master/capes/enemy.png";
|
public static String capeEnemy = "https://github.com/MassiveCraft/Factions/raw/master/capes/enemy.png";
|
||||||
public static String capeMember = "https://github.com/MassiveCraft/Factions/raw/master/capes/member.png";
|
public static String capeMember = "https://github.com/MassiveCraft/Factions/raw/master/capes/member.png";
|
||||||
@ -184,6 +193,7 @@ public class Conf {
|
|||||||
public static String capePeaceful = "https://github.com/MassiveCraft/Factions/raw/master/capes/peaceful.png";
|
public static String capePeaceful = "https://github.com/MassiveCraft/Factions/raw/master/capes/peaceful.png";
|
||||||
|
|
||||||
// Economy settings
|
// Economy settings
|
||||||
|
public static boolean econRegisterEnabled = false;
|
||||||
public static boolean econIConomyEnabled = false;
|
public static boolean econIConomyEnabled = false;
|
||||||
public static boolean econEssentialsEcoEnabled = false;
|
public static boolean econEssentialsEcoEnabled = false;
|
||||||
public static double econCostClaimWilderness = 30.0;
|
public static double econCostClaimWilderness = 30.0;
|
||||||
@ -211,6 +221,12 @@ public class Conf {
|
|||||||
public static double econCostNeutral = 0.0;
|
public static double econCostNeutral = 0.0;
|
||||||
public static double econCostNoBoom = 0.0;
|
public static double econCostNoBoom = 0.0;
|
||||||
|
|
||||||
|
//Faction banks, to pay for land claiming and other costs instead of individuals paying for them
|
||||||
|
public static boolean bankEnabled = true;
|
||||||
|
public static boolean bankMembersCanWithdraw = false; //Have to be at least moderator to withdraw or pay money to another faction
|
||||||
|
public static boolean bankFactionPaysCosts = true; //The faction pays for faction command costs, such as sethome
|
||||||
|
public static boolean bankFactionPaysLandCosts = true; //The faction pays for land claiming costs.
|
||||||
|
|
||||||
public static Set<String> worldsNoClaiming = new HashSet<String>();
|
public static Set<String> worldsNoClaiming = new HashSet<String>();
|
||||||
public static Set<String> worldsNoPowerLoss = new HashSet<String>();
|
public static Set<String> worldsNoPowerLoss = new HashSet<String>();
|
||||||
public static Set<String> worldsIgnorePvP = new HashSet<String>();
|
public static Set<String> worldsIgnorePvP = new HashSet<String>();
|
||||||
@ -253,9 +269,12 @@ public class Conf {
|
|||||||
territoryDenyUseageMaterialsWhenOffline.add(Material.WATER_BUCKET);
|
territoryDenyUseageMaterialsWhenOffline.add(Material.WATER_BUCKET);
|
||||||
territoryDenyUseageMaterialsWhenOffline.add(Material.LAVA_BUCKET);
|
territoryDenyUseageMaterialsWhenOffline.add(Material.LAVA_BUCKET);
|
||||||
|
|
||||||
|
safeZoneNerfedCreatureTypes.add(CreatureType.CAVE_SPIDER);
|
||||||
safeZoneNerfedCreatureTypes.add(CreatureType.CREEPER);
|
safeZoneNerfedCreatureTypes.add(CreatureType.CREEPER);
|
||||||
|
safeZoneNerfedCreatureTypes.add(CreatureType.ENDERMAN);
|
||||||
safeZoneNerfedCreatureTypes.add(CreatureType.GHAST);
|
safeZoneNerfedCreatureTypes.add(CreatureType.GHAST);
|
||||||
safeZoneNerfedCreatureTypes.add(CreatureType.PIG_ZOMBIE);
|
safeZoneNerfedCreatureTypes.add(CreatureType.PIG_ZOMBIE);
|
||||||
|
safeZoneNerfedCreatureTypes.add(CreatureType.SILVERFISH);
|
||||||
safeZoneNerfedCreatureTypes.add(CreatureType.SKELETON);
|
safeZoneNerfedCreatureTypes.add(CreatureType.SKELETON);
|
||||||
safeZoneNerfedCreatureTypes.add(CreatureType.SPIDER);
|
safeZoneNerfedCreatureTypes.add(CreatureType.SPIDER);
|
||||||
safeZoneNerfedCreatureTypes.add(CreatureType.SLIME);
|
safeZoneNerfedCreatureTypes.add(CreatureType.SLIME);
|
||||||
|
@ -11,6 +11,10 @@ import org.bukkit.Location;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
import com.massivecraft.factions.integration.Econ;
|
||||||
|
import com.massivecraft.factions.integration.SpoutFeatures;
|
||||||
|
import com.massivecraft.factions.integration.Worldguard;
|
||||||
|
import com.massivecraft.factions.struct.ChatMode;
|
||||||
import com.massivecraft.factions.struct.Relation;
|
import com.massivecraft.factions.struct.Relation;
|
||||||
import com.massivecraft.factions.struct.Role;
|
import com.massivecraft.factions.struct.Role;
|
||||||
import com.massivecraft.factions.util.DiscUtil;
|
import com.massivecraft.factions.util.DiscUtil;
|
||||||
@ -50,7 +54,8 @@ public class FPlayer {
|
|||||||
private transient boolean autoSafeZoneEnabled;
|
private transient boolean autoSafeZoneEnabled;
|
||||||
private transient boolean autoWarZoneEnabled;
|
private transient boolean autoWarZoneEnabled;
|
||||||
private transient boolean loginPvpDisabled;
|
private transient boolean loginPvpDisabled;
|
||||||
private boolean factionChatting;
|
private transient boolean deleteMe;
|
||||||
|
private ChatMode chatMode;
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// Construct
|
// Construct
|
||||||
@ -67,6 +72,7 @@ public class FPlayer {
|
|||||||
this.autoSafeZoneEnabled = false;
|
this.autoSafeZoneEnabled = false;
|
||||||
this.autoWarZoneEnabled = false;
|
this.autoWarZoneEnabled = false;
|
||||||
this.loginPvpDisabled = (Conf.noPVPDamageToOthersForXSecondsAfterLogin > 0) ? true : false;
|
this.loginPvpDisabled = (Conf.noPVPDamageToOthersForXSecondsAfterLogin > 0) ? true : false;
|
||||||
|
this.deleteMe = false;
|
||||||
|
|
||||||
if (Conf.newPlayerStartingFactionID > 0 && Faction.exists(Conf.newPlayerStartingFactionID)) {
|
if (Conf.newPlayerStartingFactionID > 0 && Faction.exists(Conf.newPlayerStartingFactionID)) {
|
||||||
this.factionId = Conf.newPlayerStartingFactionID;
|
this.factionId = Conf.newPlayerStartingFactionID;
|
||||||
@ -80,9 +86,10 @@ public class FPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.factionId = 0; // The default neutral faction
|
this.factionId = 0; // The default neutral faction
|
||||||
this.factionChatting = false;
|
this.chatMode = ChatMode.PUBLIC;
|
||||||
this.role = Role.NORMAL;
|
this.role = Role.NORMAL;
|
||||||
this.title = "";
|
this.title = "";
|
||||||
|
this.autoClaimEnabled = false;
|
||||||
|
|
||||||
if (playerName != null && !playerName.isEmpty()) {
|
if (playerName != null && !playerName.isEmpty()) {
|
||||||
SpoutFeatures.updateAppearances(this.getPlayer());
|
SpoutFeatures.updateAppearances(this.getPlayer());
|
||||||
@ -139,15 +146,15 @@ public class FPlayer {
|
|||||||
SpoutFeatures.updateAppearances(this.getPlayer());
|
SpoutFeatures.updateAppearances(this.getPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isFactionChatting() {
|
public ChatMode getChatMode() {
|
||||||
if (this.factionId == 0) {
|
if(this.factionId == 0 ) {
|
||||||
return false;
|
return ChatMode.PUBLIC;
|
||||||
}
|
}
|
||||||
return factionChatting;
|
return chatMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFactionChatting(boolean factionChatting) {
|
public void setChatMode(ChatMode chatMode) {
|
||||||
this.factionChatting = factionChatting;
|
this.chatMode = chatMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getLastLoginTime() {
|
public long getLastLoginTime() {
|
||||||
@ -190,6 +197,7 @@ public class FPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setLastLoginTime(long lastLoginTime) {
|
public void setLastLoginTime(long lastLoginTime) {
|
||||||
|
losePowerFromBeingOffline();
|
||||||
this.lastLoginTime = lastLoginTime;
|
this.lastLoginTime = lastLoginTime;
|
||||||
this.lastPowerUpdateTime = lastLoginTime;
|
this.lastPowerUpdateTime = lastLoginTime;
|
||||||
if (Conf.noPVPDamageToOthersForXSecondsAfterLogin > 0) {
|
if (Conf.noPVPDamageToOthersForXSecondsAfterLogin > 0) {
|
||||||
@ -224,6 +232,10 @@ public class FPlayer {
|
|||||||
this.lastStoodAt = flocation;
|
this.lastStoodAt = flocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void markForDeletion(boolean delete) {
|
||||||
|
deleteMe = delete;
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
// Title, Name, Faction Tag and Chat
|
// Title, Name, Faction Tag and Chat
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
@ -404,8 +416,11 @@ public class FPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void updatePower() {
|
protected void updatePower() {
|
||||||
if (this.isOffline() && !Conf.powerRegenOffline) {
|
if (this.isOffline()) {
|
||||||
return;
|
losePowerFromBeingOffline();
|
||||||
|
if (!Conf.powerRegenOffline) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
long now = System.currentTimeMillis();
|
long now = System.currentTimeMillis();
|
||||||
long millisPassed = now - this.lastPowerUpdateTime;
|
long millisPassed = now - this.lastPowerUpdateTime;
|
||||||
@ -415,6 +430,20 @@ public class FPlayer {
|
|||||||
this.alterPower(millisPassed * Conf.powerPerMinute / millisPerMinute);
|
this.alterPower(millisPassed * Conf.powerPerMinute / millisPerMinute);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void losePowerFromBeingOffline() {
|
||||||
|
if (Conf.powerOfflineLossPerDay > 0.0 && this.power > Conf.powerOfflineLossLimit) {
|
||||||
|
long now = System.currentTimeMillis();
|
||||||
|
long millisPassed = now - this.lastPowerUpdateTime;
|
||||||
|
this.lastPowerUpdateTime = now;
|
||||||
|
|
||||||
|
double loss = millisPassed * Conf.powerOfflineLossPerDay / (24*60*60*1000);
|
||||||
|
if (this.power - loss < Conf.powerOfflineLossLimit) {
|
||||||
|
loss = this.power;
|
||||||
|
}
|
||||||
|
this.alterPower(-loss);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void onDeath() {
|
public void onDeath() {
|
||||||
this.updatePower();
|
this.updatePower();
|
||||||
this.alterPower(-Conf.powerPerDeath);
|
this.alterPower(-Conf.powerPerDeath);
|
||||||
@ -445,6 +474,9 @@ public class FPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void sendFactionHereMessage() {
|
public void sendFactionHereMessage() {
|
||||||
|
if (SpoutFeatures.updateTerritoryDisplay(this)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
Faction factionHere = Board.getFactionAt(new FLocation(this));
|
Faction factionHere = Board.getFactionAt(new FLocation(this));
|
||||||
String msg = Conf.colorSystem+" ~ "+factionHere.getTag(this);
|
String msg = Conf.colorSystem+" ~ "+factionHere.getTag(this);
|
||||||
if (factionHere.getDescription().length() > 0) {
|
if (factionHere.getDescription().length() > 0) {
|
||||||
@ -605,11 +637,23 @@ public class FPlayer {
|
|||||||
if (Econ.enabled() && !Conf.adminBypassPlayers.contains(this.playerName)) {
|
if (Econ.enabled() && !Conf.adminBypassPlayers.contains(this.playerName)) {
|
||||||
double cost = Econ.calculateClaimCost(ownedLand, otherFaction.isNormal());
|
double cost = Econ.calculateClaimCost(ownedLand, otherFaction.isNormal());
|
||||||
String costString = Econ.moneyString(cost);
|
String costString = Econ.moneyString(cost);
|
||||||
if (!Econ.deductMoney(this.playerName, cost)) {
|
|
||||||
sendMessage("Claiming this land will cost "+costString+", which you can't currently afford.");
|
if(Conf.bankFactionPaysLandCosts && this.hasFaction()) {
|
||||||
return false;
|
Faction faction = this.getFaction();
|
||||||
|
|
||||||
|
if(!faction.removeMoney(cost)) {
|
||||||
|
sendMessage("It costs "+costString+" to claim this land, which your faction can't currently afford.");
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
sendMessage(faction.getTag()+" has paid "+costString+" to claim some land.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!Econ.deductMoney(this.playerName, cost)) {
|
||||||
|
sendMessage("Claiming this land will cost "+costString+", which you can't currently afford.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
sendMessage("You have paid "+costString+" to claim this land.");
|
||||||
}
|
}
|
||||||
sendMessage("You have paid "+costString+" to claim this land.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// announce success
|
// announce success
|
||||||
@ -688,9 +732,7 @@ public class FPlayer {
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public boolean shouldBeSaved() {
|
public boolean shouldBeSaved() {
|
||||||
// return this.factionId != 0;
|
return !deleteMe;
|
||||||
// we now need to track all players, so they don't get stuck back into a default faction if factionless; also to keep track of lost power and such
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean save() {
|
public static boolean save() {
|
||||||
@ -765,6 +807,7 @@ public class FPlayer {
|
|||||||
for (FPlayer fplayer : FPlayer.getAll()) {
|
for (FPlayer fplayer : FPlayer.getAll()) {
|
||||||
if (now - fplayer.getLastLoginTime() > toleranceMillis) {
|
if (now - fplayer.getLastLoginTime() > toleranceMillis) {
|
||||||
fplayer.leave(false);
|
fplayer.leave(false);
|
||||||
|
fplayer.markForDeletion(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -39,6 +39,7 @@ public class Faction {
|
|||||||
private String description;
|
private String description;
|
||||||
private Location home;
|
private Location home;
|
||||||
private transient long lastPlayerLoggedOffTime;
|
private transient long lastPlayerLoggedOffTime;
|
||||||
|
private double money;
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// Construct
|
// Construct
|
||||||
@ -54,6 +55,7 @@ public class Faction {
|
|||||||
this.peaceful = false;
|
this.peaceful = false;
|
||||||
this.peacefulExplosionsEnabled = false;
|
this.peacefulExplosionsEnabled = false;
|
||||||
this.permanent = false;
|
this.permanent = false;
|
||||||
|
this.money = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
@ -593,6 +595,35 @@ public class Faction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------//
|
||||||
|
// Bank functions
|
||||||
|
//----------------------------------------------//
|
||||||
|
|
||||||
|
public double getMoney() {
|
||||||
|
return this.money;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean addMoney(double amount) {
|
||||||
|
if ( amount > 0.0 )
|
||||||
|
{
|
||||||
|
this.money += amount;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean removeMoney( double amount ) {
|
||||||
|
if (amount <= 0.0 )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (amount > this.money )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
this.money -= amount;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
// Persistance and entity management
|
// Persistance and entity management
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
|
@ -12,7 +12,9 @@ import java.util.Set;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -23,10 +25,14 @@ import org.bukkit.plugin.PluginManager;
|
|||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import com.massivecraft.factions.commands.*;
|
import com.massivecraft.factions.commands.*;
|
||||||
|
import com.massivecraft.factions.integration.Econ;
|
||||||
|
import com.massivecraft.factions.integration.SpoutFeatures;
|
||||||
|
import com.massivecraft.factions.integration.Worldguard;
|
||||||
import com.massivecraft.factions.listeners.FactionsBlockListener;
|
import com.massivecraft.factions.listeners.FactionsBlockListener;
|
||||||
import com.massivecraft.factions.listeners.FactionsChatEarlyListener;
|
import com.massivecraft.factions.listeners.FactionsChatEarlyListener;
|
||||||
import com.massivecraft.factions.listeners.FactionsEntityListener;
|
import com.massivecraft.factions.listeners.FactionsEntityListener;
|
||||||
import com.massivecraft.factions.listeners.FactionsPlayerListener;
|
import com.massivecraft.factions.listeners.FactionsPlayerListener;
|
||||||
|
import com.massivecraft.factions.struct.ChatMode;
|
||||||
import com.massivecraft.factions.util.JarLoader;
|
import com.massivecraft.factions.util.JarLoader;
|
||||||
import com.massivecraft.factions.util.MapFLocToStringSetTypeAdapter;
|
import com.massivecraft.factions.util.MapFLocToStringSetTypeAdapter;
|
||||||
import com.massivecraft.factions.util.MyLocationTypeAdapter;
|
import com.massivecraft.factions.util.MyLocationTypeAdapter;
|
||||||
@ -34,10 +40,10 @@ import com.massivecraft.factions.util.MyLocationTypeAdapter;
|
|||||||
import com.nijiko.permissions.PermissionHandler;
|
import com.nijiko.permissions.PermissionHandler;
|
||||||
import com.nijikokun.bukkit.Permissions.Permissions;
|
import com.nijikokun.bukkit.Permissions.Permissions;
|
||||||
import com.earth2me.essentials.chat.EssentialsChat;
|
import com.earth2me.essentials.chat.EssentialsChat;
|
||||||
import com.earth2me.essentials.chat.IEssentialsChatListener;
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
import com.massivecraft.factions.integration.EssentialsFeatures;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The data is saved to disk every 30min and on plugin disable.
|
* The data is saved to disk every 30min and on plugin disable.
|
||||||
@ -97,12 +103,14 @@ public class Factions extends JavaPlugin {
|
|||||||
commands.add(new FCommandAutoClaim());
|
commands.add(new FCommandAutoClaim());
|
||||||
commands.add(new FCommandAutoSafeclaim());
|
commands.add(new FCommandAutoSafeclaim());
|
||||||
commands.add(new FCommandAutoWarclaim());
|
commands.add(new FCommandAutoWarclaim());
|
||||||
|
commands.add(new FCommandBalance());
|
||||||
commands.add(new FCommandBypass());
|
commands.add(new FCommandBypass());
|
||||||
commands.add(new FCommandChat());
|
commands.add(new FCommandChat());
|
||||||
commands.add(new FCommandClaim());
|
commands.add(new FCommandClaim());
|
||||||
commands.add(new FCommandConfig());
|
commands.add(new FCommandConfig());
|
||||||
commands.add(new FCommandCreate());
|
commands.add(new FCommandCreate());
|
||||||
commands.add(new FCommandDeinvite());
|
commands.add(new FCommandDeinvite());
|
||||||
|
commands.add(new FCommandDeposit());
|
||||||
commands.add(new FCommandDescription());
|
commands.add(new FCommandDescription());
|
||||||
commands.add(new FCommandDisband());
|
commands.add(new FCommandDisband());
|
||||||
commands.add(new FCommandHome());
|
commands.add(new FCommandHome());
|
||||||
@ -118,6 +126,7 @@ public class Factions extends JavaPlugin {
|
|||||||
commands.add(new FCommandOpen());
|
commands.add(new FCommandOpen());
|
||||||
commands.add(new FCommandOwner());
|
commands.add(new FCommandOwner());
|
||||||
commands.add(new FCommandOwnerList());
|
commands.add(new FCommandOwnerList());
|
||||||
|
commands.add(new FCommandPay());
|
||||||
commands.add(new FCommandPower());
|
commands.add(new FCommandPower());
|
||||||
commands.add(new FCommandPeaceful());
|
commands.add(new FCommandPeaceful());
|
||||||
commands.add(new FCommandPermanent());
|
commands.add(new FCommandPermanent());
|
||||||
@ -137,6 +146,7 @@ public class Factions extends JavaPlugin {
|
|||||||
commands.add(new FCommandVersion());
|
commands.add(new FCommandVersion());
|
||||||
commands.add(new FCommandWarclaim());
|
commands.add(new FCommandWarclaim());
|
||||||
commands.add(new FCommandWarunclaimall());
|
commands.add(new FCommandWarunclaimall());
|
||||||
|
commands.add(new FCommandWithdraw());
|
||||||
|
|
||||||
// Ensure base folder exists!
|
// Ensure base folder exists!
|
||||||
this.getDataFolder().mkdirs();
|
this.getDataFolder().mkdirs();
|
||||||
@ -148,7 +158,7 @@ public class Factions extends JavaPlugin {
|
|||||||
|
|
||||||
setupPermissions();
|
setupPermissions();
|
||||||
integrateEssentialsChat();
|
integrateEssentialsChat();
|
||||||
SpoutFeatures.setup(this);
|
setupSpout(this);
|
||||||
Econ.setup(this);
|
Econ.setup(this);
|
||||||
Econ.monitorPlugins();
|
Econ.monitorPlugins();
|
||||||
|
|
||||||
@ -168,6 +178,9 @@ public class Factions extends JavaPlugin {
|
|||||||
pm.registerEvent(Event.Type.PLAYER_RESPAWN, this.playerListener, Event.Priority.High, this);
|
pm.registerEvent(Event.Type.PLAYER_RESPAWN, this.playerListener, Event.Priority.High, this);
|
||||||
pm.registerEvent(Event.Type.PLAYER_BUCKET_EMPTY, this.playerListener, Event.Priority.Normal, this);
|
pm.registerEvent(Event.Type.PLAYER_BUCKET_EMPTY, this.playerListener, Event.Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.PLAYER_BUCKET_FILL, this.playerListener, Event.Priority.Normal, this);
|
pm.registerEvent(Event.Type.PLAYER_BUCKET_FILL, this.playerListener, Event.Priority.Normal, this);
|
||||||
|
pm.registerEvent(Event.Type.PLAYER_KICK, this.playerListener, Event.Priority.Normal, this);
|
||||||
|
pm.registerEvent(Event.Type.ENDERMAN_PICKUP, this.entityListener, Event.Priority.Normal, this);
|
||||||
|
pm.registerEvent(Event.Type.ENDERMAN_PLACE, this.entityListener, Event.Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.ENTITY_DEATH, this.entityListener, Event.Priority.Normal, this);
|
pm.registerEvent(Event.Type.ENTITY_DEATH, this.entityListener, Event.Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.ENTITY_DAMAGE, this.entityListener, Event.Priority.Normal, this);
|
pm.registerEvent(Event.Type.ENTITY_DAMAGE, this.entityListener, Event.Priority.Normal, this);
|
||||||
pm.registerEvent(Event.Type.ENTITY_EXPLODE, this.entityListener, Event.Priority.Normal, this);
|
pm.registerEvent(Event.Type.ENTITY_EXPLODE, this.entityListener, Event.Priority.Normal, this);
|
||||||
@ -220,6 +233,14 @@ public class Factions extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setupSpout(Factions factions) {
|
||||||
|
Plugin test = factions.getServer().getPluginManager().getPlugin("Spout");
|
||||||
|
|
||||||
|
if (test != null && test.isEnabled()) {
|
||||||
|
SpoutFeatures.setAvailable(true, test.getDescription().getFullName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void integrateEssentialsChat() {
|
private void integrateEssentialsChat() {
|
||||||
if (essChat != null) {
|
if (essChat != null) {
|
||||||
return;
|
return;
|
||||||
@ -227,29 +248,14 @@ public class Factions extends JavaPlugin {
|
|||||||
|
|
||||||
Plugin test = this.getServer().getPluginManager().getPlugin("EssentialsChat");
|
Plugin test = this.getServer().getPluginManager().getPlugin("EssentialsChat");
|
||||||
|
|
||||||
if (test != null) {
|
if (test != null && test.isEnabled()) {
|
||||||
try {
|
essChat = (EssentialsChat)test;
|
||||||
essChat = (EssentialsChat)test;
|
EssentialsFeatures.integrateChat(essChat);
|
||||||
essChat.addEssentialsChatListener("Factions", new IEssentialsChatListener() {
|
|
||||||
public boolean shouldHandleThisChat(PlayerChatEvent event)
|
|
||||||
{
|
|
||||||
return shouldLetFactionsHandleThisChat(event);
|
|
||||||
}
|
|
||||||
public String modifyMessage(PlayerChatEvent event, Player target, String message)
|
|
||||||
{
|
|
||||||
return message.replace("{FACTION}", getPlayerFactionTagRelation(event.getPlayer(), target)).replace("{FACTION_TITLE}", getPlayerTitle(event.getPlayer()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Factions.log("Found and will integrate chat with "+test.getDescription().getFullName());
|
|
||||||
}
|
|
||||||
catch (NoSuchMethodError ex) {
|
|
||||||
essChat = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void unhookEssentialsChat() {
|
private void unhookEssentialsChat() {
|
||||||
if (essChat != null) {
|
if (essChat != null) {
|
||||||
essChat.removeEssentialsChatListener("Factions");
|
EssentialsFeatures.unhookChat();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -259,7 +265,7 @@ public class Factions extends JavaPlugin {
|
|||||||
|
|
||||||
// This value will be updated whenever new hooks are added
|
// This value will be updated whenever new hooks are added
|
||||||
public int hookSupportVersion() {
|
public int hookSupportVersion() {
|
||||||
return 2;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If another plugin is handling insertion of chat tags, this should be used to notify Factions
|
// If another plugin is handling insertion of chat tags, this should be used to notify Factions
|
||||||
@ -283,7 +289,7 @@ public class Factions extends JavaPlugin {
|
|||||||
FPlayer me = FPlayer.get(player);
|
FPlayer me = FPlayer.get(player);
|
||||||
if (me == null)
|
if (me == null)
|
||||||
return false;
|
return false;
|
||||||
return me.isFactionChatting();
|
return me.getChatMode().isAtLeast(ChatMode.ALLIANCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Is this chat message actually a Factions command, and thus should be left alone by other plugins?
|
// Is this chat message actually a Factions command, and thus should be left alone by other plugins?
|
||||||
@ -370,6 +376,21 @@ public class Factions extends JavaPlugin {
|
|||||||
return players;
|
return players;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if player is allowed to build/destroy in a particular location
|
||||||
|
public boolean isPlayerAllowedToBuildHere(Player player, Location location) {
|
||||||
|
return FactionsBlockListener.playerCanBuildDestroyBlock(player, location, "", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if player is allowed to interact with the specified block (doors/chests/whatever)
|
||||||
|
public boolean isPlayerAllowedToInteractWith(Player player, Block block) {
|
||||||
|
return FactionsPlayerListener.canPlayerUseBlock(player, block, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if player is allowed to use a specified item (flint&steel, buckets, etc) in a particular location
|
||||||
|
public boolean isPlayerAllowedToUseThisHere(Player player, Location location, Material material) {
|
||||||
|
return FactionsPlayerListener.playerCanUseItemHere(player, location, material, true);
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// Test rights
|
// Test rights
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
@ -434,6 +455,10 @@ public class Factions extends JavaPlugin {
|
|||||||
return hasPerm(sender, "factions.peacefulExplosionToggle");
|
return hasPerm(sender, "factions.peacefulExplosionToggle");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean hasPermViewAnyFactionBalance(CommandSender sender) {
|
||||||
|
return hasPerm(sender, "factions.viewAnyFactionBalance");
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isCommandDisabled(CommandSender sender, String command) {
|
public static boolean isCommandDisabled(CommandSender sender, String command) {
|
||||||
return (hasPerm(sender, "factions.commandDisable."+command) && !hasPerm(sender, "factions.commandDisable.none"));
|
return (hasPerm(sender, "factions.commandDisable."+command) && !hasPerm(sender, "factions.commandDisable.none"));
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.Econ;
|
import com.massivecraft.factions.integration.Econ;
|
||||||
import com.massivecraft.factions.FPlayer;
|
import com.massivecraft.factions.FPlayer;
|
||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.Factions;
|
import com.massivecraft.factions.Factions;
|
||||||
@ -27,6 +27,7 @@ public class FBaseCommand {
|
|||||||
|
|
||||||
public CommandSender sender;
|
public CommandSender sender;
|
||||||
public boolean senderMustBePlayer;
|
public boolean senderMustBePlayer;
|
||||||
|
public boolean senderIsConsole;
|
||||||
public Player player;
|
public Player player;
|
||||||
public FPlayer me;
|
public FPlayer me;
|
||||||
|
|
||||||
@ -40,6 +41,7 @@ public class FBaseCommand {
|
|||||||
optionalParameters = new ArrayList<String>();
|
optionalParameters = new ArrayList<String>();
|
||||||
|
|
||||||
senderMustBePlayer = true;
|
senderMustBePlayer = true;
|
||||||
|
senderIsConsole = false;
|
||||||
|
|
||||||
helpNameAndParams = "fail!";
|
helpNameAndParams = "fail!";
|
||||||
helpDescription = "no description";
|
helpDescription = "no description";
|
||||||
@ -60,6 +62,10 @@ public class FBaseCommand {
|
|||||||
if (sender instanceof Player) {
|
if (sender instanceof Player) {
|
||||||
this.player = (Player)sender;
|
this.player = (Player)sender;
|
||||||
this.me = FPlayer.get(this.player);
|
this.me = FPlayer.get(this.player);
|
||||||
|
senderIsConsole = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
senderIsConsole = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
perform();
|
perform();
|
||||||
@ -80,7 +86,7 @@ public class FBaseCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean validateCall() {
|
public boolean validateCall() {
|
||||||
if ( this.senderMustBePlayer && ! (sender instanceof Player)) {
|
if ( this.senderMustBePlayer && senderIsConsole ) {
|
||||||
sendMessage("This command can only be used by ingame players.");
|
sendMessage("This command can only be used by ingame players.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -202,7 +208,7 @@ public class FBaseCommand {
|
|||||||
return fp.getFaction();
|
return fp.getFaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defaultToMine && sender instanceof Player) {
|
if (defaultToMine && !senderIsConsole) {
|
||||||
return me.getFaction();
|
return me.getFaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,7 +233,11 @@ public class FBaseCommand {
|
|||||||
if (you.getRole().equals(Role.ADMIN)) {
|
if (you.getRole().equals(Role.ADMIN)) {
|
||||||
i.sendMessage(Conf.colorSystem+"Only the faction admin can do that.");
|
i.sendMessage(Conf.colorSystem+"Only the faction admin can do that.");
|
||||||
} else if (i.getRole().equals(Role.MODERATOR)) {
|
} else if (i.getRole().equals(Role.MODERATOR)) {
|
||||||
i.sendMessage(Conf.colorSystem+"Moderators can't control each other...");
|
if ( i == you ) {
|
||||||
|
return true; //Moderators can control themselves
|
||||||
|
} else {
|
||||||
|
i.sendMessage(Conf.colorSystem+"Moderators can't control each other...");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
i.sendMessage(Conf.colorSystem+"You must be a faction moderator to do that.");
|
i.sendMessage(Conf.colorSystem+"You must be a faction moderator to do that.");
|
||||||
}
|
}
|
||||||
@ -243,19 +253,40 @@ public class FBaseCommand {
|
|||||||
|
|
||||||
String desc = this.helpDescription.toLowerCase();
|
String desc = this.helpDescription.toLowerCase();
|
||||||
|
|
||||||
|
Faction faction = me.getFaction();
|
||||||
|
|
||||||
// pay up
|
// pay up
|
||||||
if (cost > 0.0) {
|
if (cost > 0.0) {
|
||||||
String costString = Econ.moneyString(cost);
|
String costString = Econ.moneyString(cost);
|
||||||
if (!Econ.deductMoney(me.getName(), cost)) {
|
if(Conf.bankFactionPaysCosts && me.hasFaction() ) {
|
||||||
sendMessage("It costs "+costString+" to "+desc+", which you can't currently afford.");
|
if(!faction.removeMoney(cost)) {
|
||||||
return false;
|
sendMessage("It costs "+costString+" to "+desc+", which your faction can't currently afford.");
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
sendMessage(faction.getTag()+" has paid "+costString+" to "+desc+".");
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (!Econ.deductMoney(me.getName(), cost)) {
|
||||||
|
sendMessage("It costs "+costString+" to "+desc+", which you can't currently afford.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
sendMessage("You have paid "+costString+" to "+desc+".");
|
||||||
}
|
}
|
||||||
sendMessage("You have paid "+costString+" to "+desc+".");
|
|
||||||
}
|
}
|
||||||
// wait... we pay you to use this command?
|
// wait... we pay you to use this command?
|
||||||
else {
|
else {
|
||||||
|
|
||||||
String costString = Econ.moneyString(-cost);
|
String costString = Econ.moneyString(-cost);
|
||||||
Econ.addMoney(me.getName(), -cost);
|
|
||||||
|
if(Conf.bankFactionPaysCosts && me.hasFaction() ) {
|
||||||
|
faction.addMoney(-cost);
|
||||||
|
sendMessage(faction.getTag()+" has been paid "+costString+" to "+desc+".");
|
||||||
|
} else {
|
||||||
|
Econ.addMoney(me.getName(), -cost);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
sendMessage("You have been paid "+costString+" to "+desc+".");
|
sendMessage("You have been paid "+costString+" to "+desc+".");
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
50
src/com/massivecraft/factions/commands/FCommandBalance.java
Normal file
50
src/com/massivecraft/factions/commands/FCommandBalance.java
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
package com.massivecraft.factions.commands;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.integration.Econ;
|
||||||
|
import com.massivecraft.factions.Faction;
|
||||||
|
import com.massivecraft.factions.Factions;
|
||||||
|
|
||||||
|
|
||||||
|
public class FCommandBalance extends FBaseCommand {
|
||||||
|
|
||||||
|
public FCommandBalance() {
|
||||||
|
aliases.add("balance");
|
||||||
|
aliases.add("money");
|
||||||
|
|
||||||
|
optionalParameters.add("faction tag");
|
||||||
|
|
||||||
|
helpDescription = "Show faction's current balance";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void perform() {
|
||||||
|
if ( ! assertHasFaction()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Conf.bankEnabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction faction;
|
||||||
|
|
||||||
|
if (parameters.size() > 0) {
|
||||||
|
if (!Factions.hasPermViewAnyFactionBalance(sender)) {
|
||||||
|
sendMessage("You do not have sufficient permissions to view the bank balance of other factions.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
faction = findFaction(parameters.get(0), true);
|
||||||
|
} else {
|
||||||
|
faction = me.getFaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(faction == null) {
|
||||||
|
sendMessage("Faction "+parameters.get(0)+" could not be found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sendMessage(Conf.colorChrome+faction.getTag()+" balance: "+ Econ.moneyString(faction.getMoney()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -24,9 +24,11 @@ public class FCommandBypass extends FBaseCommand {
|
|||||||
if ( ! Conf.adminBypassPlayers.contains(player.getName())) {
|
if ( ! Conf.adminBypassPlayers.contains(player.getName())) {
|
||||||
Conf.adminBypassPlayers.add(player.getName());
|
Conf.adminBypassPlayers.add(player.getName());
|
||||||
me.sendMessage("You have enabled admin bypass mode. You will be able to build or destroy anywhere.");
|
me.sendMessage("You have enabled admin bypass mode. You will be able to build or destroy anywhere.");
|
||||||
|
Factions.log(player.getName() + " has ENABLED admin bypass mode.");
|
||||||
} else {
|
} else {
|
||||||
Conf.adminBypassPlayers.remove(player.getName());
|
Conf.adminBypassPlayers.remove(player.getName());
|
||||||
me.sendMessage("You have disabled admin bypass mode.");
|
me.sendMessage("You have disabled admin bypass mode.");
|
||||||
|
Factions.log(player.getName() + " DISABLED admin bypass mode.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.massivecraft.factions.commands;
|
package com.massivecraft.factions.commands;
|
||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.struct.ChatMode;
|
||||||
|
|
||||||
public class FCommandChat extends FBaseCommand {
|
public class FCommandChat extends FBaseCommand {
|
||||||
|
|
||||||
@ -8,7 +9,9 @@ public class FCommandChat extends FBaseCommand {
|
|||||||
aliases.add("chat");
|
aliases.add("chat");
|
||||||
aliases.add("c");
|
aliases.add("c");
|
||||||
|
|
||||||
helpDescription = "Switch faction only chat on and off";
|
optionalParameters.add("mode");
|
||||||
|
|
||||||
|
helpDescription = "Change chat mode";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -21,15 +24,34 @@ public class FCommandChat extends FBaseCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! me.isFactionChatting()) {
|
if( this.parameters.size() >= 1 ) {
|
||||||
// Turn on
|
String mode = this.parameters.get(0);
|
||||||
me.setFactionChatting(true);
|
|
||||||
sendMessage("Faction-only chat ENABLED.");
|
if(mode.startsWith("p")) {
|
||||||
|
me.setChatMode(ChatMode.PUBLIC);
|
||||||
|
sendMessage("Public chat mode.");
|
||||||
|
} else if(mode.startsWith("a")) {
|
||||||
|
me.setChatMode(ChatMode.ALLIANCE);
|
||||||
|
sendMessage("Alliance only chat mode.");
|
||||||
|
} else if(mode.startsWith("f")) {
|
||||||
|
me.setChatMode(ChatMode.FACTION);
|
||||||
|
sendMessage("Faction only chat mode.");
|
||||||
|
} else {
|
||||||
|
sendMessage("Unrecognised chat mode. Please enter either 'a','f' or 'p'");
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Turn off
|
|
||||||
me.setFactionChatting(false);
|
if(me.getChatMode() == ChatMode.PUBLIC) {
|
||||||
sendMessage("Faction-only chat DISABLED.");
|
me.setChatMode(ChatMode.ALLIANCE);
|
||||||
|
sendMessage("Alliance only chat mode.");
|
||||||
|
} else if (me.getChatMode() == ChatMode.ALLIANCE ) {
|
||||||
|
me.setChatMode(ChatMode.FACTION);
|
||||||
|
sendMessage("Faction only chat mode.");
|
||||||
|
} else {
|
||||||
|
me.setChatMode(ChatMode.PUBLIC);
|
||||||
|
sendMessage("Public chat mode.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ import org.bukkit.entity.Player;
|
|||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.Factions;
|
import com.massivecraft.factions.Factions;
|
||||||
import com.massivecraft.factions.SpoutFeatures;
|
import com.massivecraft.factions.integration.SpoutFeatures;
|
||||||
|
|
||||||
public class FCommandConfig extends FBaseCommand {
|
public class FCommandConfig extends FBaseCommand {
|
||||||
|
|
||||||
|
63
src/com/massivecraft/factions/commands/FCommandDeposit.java
Normal file
63
src/com/massivecraft/factions/commands/FCommandDeposit.java
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
package com.massivecraft.factions.commands;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.integration.Econ;
|
||||||
|
import com.massivecraft.factions.Faction;
|
||||||
|
import com.massivecraft.factions.Factions;
|
||||||
|
import com.massivecraft.factions.FPlayer;
|
||||||
|
|
||||||
|
|
||||||
|
public class FCommandDeposit extends FBaseCommand {
|
||||||
|
|
||||||
|
public FCommandDeposit() {
|
||||||
|
aliases.add("deposit");
|
||||||
|
|
||||||
|
helpDescription = "Deposit money into your faction's bank";
|
||||||
|
requiredParameters.add("amount");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void perform() {
|
||||||
|
if ( ! assertHasFaction()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Conf.bankEnabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
double amount = 0.0;
|
||||||
|
|
||||||
|
Faction faction = me.getFaction();
|
||||||
|
|
||||||
|
if (parameters.size() == 1) {
|
||||||
|
try {
|
||||||
|
amount = Double.parseDouble(parameters.get(0));
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
// wasn't valid
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( amount > 0.0 ) {
|
||||||
|
String amountString = Econ.moneyString(amount);
|
||||||
|
|
||||||
|
if( !Econ.deductMoney(me.getName(), amount ) ) {
|
||||||
|
sendMessage("You cannot afford to deposit that much.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
faction.addMoney(amount);
|
||||||
|
sendMessage("You have deposited "+amountString+" into "+faction.getTag()+"'s bank.");
|
||||||
|
sendMessage(faction.getTag()+" now has "+Econ.moneyString(faction.getMoney()));
|
||||||
|
Factions.log(player.getName() + " deposited "+amountString+" into "+faction.getTag()+"'s bank.");
|
||||||
|
|
||||||
|
for (FPlayer fplayer : FPlayer.getAllOnline()) {
|
||||||
|
if (fplayer.getFaction() == faction) {
|
||||||
|
fplayer.sendMessage(me.getNameAndRelevant(fplayer)+Conf.colorSystem+" has deposited "+amountString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,10 +1,11 @@
|
|||||||
package com.massivecraft.factions.commands;
|
package com.massivecraft.factions.commands;
|
||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.integration.Econ;
|
||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.Factions;
|
import com.massivecraft.factions.Factions;
|
||||||
import com.massivecraft.factions.FPlayer;
|
import com.massivecraft.factions.FPlayer;
|
||||||
import com.massivecraft.factions.SpoutFeatures;
|
import com.massivecraft.factions.integration.SpoutFeatures;
|
||||||
import com.massivecraft.factions.struct.Role;
|
import com.massivecraft.factions.struct.Role;
|
||||||
|
|
||||||
|
|
||||||
@ -62,11 +63,22 @@ public class FCommandDisband extends FBaseCommand {
|
|||||||
// Inform all players
|
// Inform all players
|
||||||
for (FPlayer fplayer : FPlayer.getAllOnline()) {
|
for (FPlayer fplayer : FPlayer.getAllOnline()) {
|
||||||
if (fplayer.getFaction() == faction) {
|
if (fplayer.getFaction() == faction) {
|
||||||
fplayer.sendMessage(me.getNameAndRelevant(fplayer)+Conf.colorSystem+" disbanded your faction.");
|
fplayer.sendMessage((senderIsConsole ? "A server admin" : me.getNameAndRelevant(fplayer))+Conf.colorSystem+" disbanded your faction.");
|
||||||
} else {
|
} else {
|
||||||
fplayer.sendMessage(me.getNameAndRelevant(fplayer)+Conf.colorSystem+" disbanded the faction "+faction.getTag(fplayer)+".");
|
fplayer.sendMessage((senderIsConsole ? "A server admin" : me.getNameAndRelevant(fplayer))+Conf.colorSystem+" disbanded the faction "+faction.getTag(fplayer)+".");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Conf.bankEnabled) {
|
||||||
|
double amount = faction.getMoney();
|
||||||
|
Econ.addMoney(me.getName(), amount ); //Give all the faction's money to the disbander
|
||||||
|
if (amount > 0.0) {
|
||||||
|
String amountString = Econ.moneyString(amount);
|
||||||
|
sendMessage("You have been given the disbanded faction's bank, totaling "+amountString+".");
|
||||||
|
Factions.log(player.getName() + " has been given bank holdings of "+amountString+" from disbanding "+faction.getTag()+".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Faction.delete( faction.getId() );
|
Faction.delete( faction.getId() );
|
||||||
SpoutFeatures.updateAppearances();
|
SpoutFeatures.updateAppearances();
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import java.util.ArrayList;
|
|||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.integration.Econ;
|
||||||
import com.massivecraft.factions.util.TextUtil;
|
import com.massivecraft.factions.util.TextUtil;
|
||||||
|
|
||||||
|
|
||||||
@ -48,9 +49,9 @@ public class FCommandHelp extends FBaseCommand {
|
|||||||
// Build the help pages
|
// Build the help pages
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
|
|
||||||
public static final ArrayList<ArrayList<String>> helpPages;
|
public static ArrayList<ArrayList<String>> helpPages;
|
||||||
|
|
||||||
static {
|
public static void updateHelp() {
|
||||||
helpPages = new ArrayList<ArrayList<String>>();
|
helpPages = new ArrayList<ArrayList<String>>();
|
||||||
ArrayList<String> pageLines;
|
ArrayList<String> pageLines;
|
||||||
|
|
||||||
@ -78,6 +79,20 @@ public class FCommandHelp extends FBaseCommand {
|
|||||||
pageLines.add( new FCommandSethome().getUseageTemplate() );
|
pageLines.add( new FCommandSethome().getUseageTemplate() );
|
||||||
helpPages.add(pageLines);
|
helpPages.add(pageLines);
|
||||||
|
|
||||||
|
if (Econ.enabled() && Conf.bankEnabled) {
|
||||||
|
pageLines = new ArrayList<String>();
|
||||||
|
pageLines.add( "" );
|
||||||
|
pageLines.add( "Your faction has a bank which is used to pay for certain" );
|
||||||
|
pageLines.add( "things, so it will need to have money deposited into it." );
|
||||||
|
pageLines.add( "" );
|
||||||
|
pageLines.add( new FCommandBalance().getUseageTemplate() );
|
||||||
|
pageLines.add( new FCommandDeposit().getUseageTemplate() );
|
||||||
|
pageLines.add( new FCommandWithdraw().getUseageTemplate() );
|
||||||
|
pageLines.add( new FCommandPay().getUseageTemplate() );
|
||||||
|
pageLines.add( "" );
|
||||||
|
helpPages.add(pageLines);
|
||||||
|
}
|
||||||
|
|
||||||
pageLines = new ArrayList<String>();
|
pageLines = new ArrayList<String>();
|
||||||
pageLines.add( new FCommandClaim().getUseageTemplate() );
|
pageLines.add( new FCommandClaim().getUseageTemplate() );
|
||||||
pageLines.add( new FCommandAutoClaim().getUseageTemplate() );
|
pageLines.add( new FCommandAutoClaim().getUseageTemplate() );
|
||||||
@ -163,5 +178,8 @@ public class FCommandHelp extends FBaseCommand {
|
|||||||
helpPages.add(pageLines);
|
helpPages.add(pageLines);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static {
|
||||||
|
updateHelp();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
76
src/com/massivecraft/factions/commands/FCommandPay.java
Normal file
76
src/com/massivecraft/factions/commands/FCommandPay.java
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
package com.massivecraft.factions.commands;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.integration.Econ;
|
||||||
|
import com.massivecraft.factions.Faction;
|
||||||
|
import com.massivecraft.factions.Factions;
|
||||||
|
import com.massivecraft.factions.FPlayer;
|
||||||
|
import com.massivecraft.factions.struct.Role;
|
||||||
|
|
||||||
|
|
||||||
|
public class FCommandPay extends FBaseCommand {
|
||||||
|
|
||||||
|
public FCommandPay() {
|
||||||
|
aliases.add("pay");
|
||||||
|
|
||||||
|
helpDescription = "Pay another faction from your bank";
|
||||||
|
requiredParameters.add("faction");
|
||||||
|
requiredParameters.add("amount");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void perform() {
|
||||||
|
if ( ! assertHasFaction()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Conf.bankEnabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !Conf.bankMembersCanWithdraw && !assertMinRole(Role.MODERATOR)) {
|
||||||
|
sendMessage("Only faction moderators or admins are able to pay another faction.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
double amount = 0.0;
|
||||||
|
|
||||||
|
Faction us = me.getFaction();
|
||||||
|
Faction them = null;
|
||||||
|
|
||||||
|
if (parameters.size() == 2) {
|
||||||
|
try {
|
||||||
|
them = Faction.findByTag(parameters.get(0));
|
||||||
|
amount = Double.parseDouble(parameters.get(1));
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
// wasn't valid
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(them == null) {
|
||||||
|
sendMessage("Faction "+parameters.get(0)+" could not be found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( amount > 0.0 ) {
|
||||||
|
String amountString = Econ.moneyString(amount);
|
||||||
|
|
||||||
|
if( amount > us.getMoney() ) {
|
||||||
|
amount = us.getMoney();
|
||||||
|
}
|
||||||
|
|
||||||
|
us.removeMoney(amount);
|
||||||
|
them.addMoney(amount);
|
||||||
|
sendMessage("You have paid "+amountString+" from "+us.getTag()+"'s bank to "+them.getTag()+"'s bank.");
|
||||||
|
sendMessage(us.getTag()+" now has "+Econ.moneyString(us.getMoney()));
|
||||||
|
Factions.log(player.getName() + " paid "+amountString+" from "+us.getTag()+"'s bank to "+them.getTag()+"'s bank.");
|
||||||
|
|
||||||
|
for (FPlayer fplayer : FPlayer.getAllOnline()) {
|
||||||
|
if (fplayer.getFaction() == us || fplayer.getFaction() == them) {
|
||||||
|
fplayer.sendMessage(me.getNameAndRelevant(fplayer)+Conf.colorSystem+" has sent "+amountString+" from "+us.getTag()+" to "+them.getTag() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -6,7 +6,7 @@ import com.massivecraft.factions.Conf;
|
|||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.Factions;
|
import com.massivecraft.factions.Factions;
|
||||||
import com.massivecraft.factions.FPlayer;
|
import com.massivecraft.factions.FPlayer;
|
||||||
import com.massivecraft.factions.SpoutFeatures;
|
import com.massivecraft.factions.integration.SpoutFeatures;
|
||||||
|
|
||||||
public class FCommandPeaceful extends FBaseCommand {
|
public class FCommandPeaceful extends FBaseCommand {
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.Econ;
|
import com.massivecraft.factions.integration.Econ;
|
||||||
import com.massivecraft.factions.FPlayer;
|
import com.massivecraft.factions.FPlayer;
|
||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.struct.Role;
|
import com.massivecraft.factions.struct.Role;
|
||||||
@ -83,6 +83,11 @@ public class FCommandShow extends FBaseCommand {
|
|||||||
String stringRefund = (refund > 0.0) ? (" ("+Econ.moneyString(refund)+" depreciated)") : "";
|
String stringRefund = (refund > 0.0) ? (" ("+Econ.moneyString(refund)+" depreciated)") : "";
|
||||||
sendMessage(Conf.colorChrome+"Total land value: " + Conf.colorSystem + stringValue + stringRefund);
|
sendMessage(Conf.colorChrome+"Total land value: " + Conf.colorSystem + stringValue + stringRefund);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Show bank contents
|
||||||
|
if(Conf.bankEnabled) {
|
||||||
|
sendMessage(Conf.colorChrome+"Bank contains: " + Conf.colorSystem + Econ.moneyString(faction.getMoney()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String listpart;
|
String listpart;
|
||||||
|
@ -4,7 +4,7 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.SpoutFeatures;
|
import com.massivecraft.factions.integration.SpoutFeatures;
|
||||||
import com.massivecraft.factions.struct.Role;
|
import com.massivecraft.factions.struct.Role;
|
||||||
import com.massivecraft.factions.util.TextUtil;
|
import com.massivecraft.factions.util.TextUtil;
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ package com.massivecraft.factions.commands;
|
|||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.FPlayer;
|
import com.massivecraft.factions.FPlayer;
|
||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.SpoutFeatures;
|
import com.massivecraft.factions.integration.SpoutFeatures;
|
||||||
import com.massivecraft.factions.util.TextUtil;
|
import com.massivecraft.factions.util.TextUtil;
|
||||||
|
|
||||||
public class FCommandTitle extends FBaseCommand {
|
public class FCommandTitle extends FBaseCommand {
|
||||||
|
@ -2,7 +2,7 @@ package com.massivecraft.factions.commands;
|
|||||||
|
|
||||||
import com.massivecraft.factions.Board;
|
import com.massivecraft.factions.Board;
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.Econ;
|
import com.massivecraft.factions.integration.Econ;
|
||||||
import com.massivecraft.factions.FLocation;
|
import com.massivecraft.factions.FLocation;
|
||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.Factions;
|
import com.massivecraft.factions.Factions;
|
||||||
@ -76,16 +76,31 @@ public class FCommandUnclaim extends FBaseCommand {
|
|||||||
double refund = Econ.calculateClaimRefund(myFaction.getLandRounded());
|
double refund = Econ.calculateClaimRefund(myFaction.getLandRounded());
|
||||||
// a real refund
|
// a real refund
|
||||||
if (refund > 0.0) {
|
if (refund > 0.0) {
|
||||||
Econ.addMoney(player.getName(), refund);
|
if(Conf.bankFactionPaysLandCosts) {
|
||||||
moneyBack = " They received a refund of "+Econ.moneyString(refund)+".";
|
Faction faction = me.getFaction();
|
||||||
|
faction.addMoney(refund);
|
||||||
|
moneyBack = " "+faction.getTag()+" received a refund of "+Econ.moneyString(refund)+".";
|
||||||
|
} else {
|
||||||
|
Econ.addMoney(player.getName(), refund);
|
||||||
|
moneyBack = " They received a refund of "+Econ.moneyString(refund)+".";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// wait, you're charging people to unclaim land? outrageous
|
// wait, you're charging people to unclaim land? outrageous
|
||||||
else if (refund < 0.0) {
|
else if (refund < 0.0) {
|
||||||
if (!Econ.deductMoney(player.getName(), -refund)) {
|
if(Conf.bankFactionPaysLandCosts) {
|
||||||
sendMessage("Unclaiming this land will cost "+Econ.moneyString(-refund)+", which you can't currently afford.");
|
Faction faction = me.getFaction();
|
||||||
return;
|
if(!faction.removeMoney(-refund)) {
|
||||||
|
sendMessage("Unclaiming this land will cost "+Econ.moneyString(-refund)+", which your faction can't currently afford.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
moneyBack = " It cost "+faction.getTag()+" "+Econ.moneyString(refund)+".";
|
||||||
|
} else {
|
||||||
|
if (!Econ.deductMoney(player.getName(), -refund)) {
|
||||||
|
sendMessage("Unclaiming this land will cost "+Econ.moneyString(-refund)+", which you can't currently afford.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
moneyBack = " It cost them "+Econ.moneyString(refund)+".";
|
||||||
}
|
}
|
||||||
moneyBack = " It cost them "+Econ.moneyString(refund)+".";
|
|
||||||
}
|
}
|
||||||
// no refund
|
// no refund
|
||||||
else {
|
else {
|
||||||
|
@ -2,7 +2,7 @@ package com.massivecraft.factions.commands;
|
|||||||
|
|
||||||
import com.massivecraft.factions.Board;
|
import com.massivecraft.factions.Board;
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.Econ;
|
import com.massivecraft.factions.integration.Econ;
|
||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.struct.Role;
|
import com.massivecraft.factions.struct.Role;
|
||||||
|
|
||||||
@ -37,14 +37,30 @@ public class FCommandUnclaimall extends FBaseCommand {
|
|||||||
double refund = Econ.calculateTotalLandRefund(myFaction.getLandRounded());
|
double refund = Econ.calculateTotalLandRefund(myFaction.getLandRounded());
|
||||||
// a real refund
|
// a real refund
|
||||||
if (refund > 0.0) {
|
if (refund > 0.0) {
|
||||||
Econ.addMoney(player.getName(), refund);
|
if(Conf.bankFactionPaysLandCosts) {
|
||||||
moneyBack = " They received a refund of "+Econ.moneyString(refund)+".";
|
Faction faction = me.getFaction();
|
||||||
|
faction.addMoney(refund);
|
||||||
|
moneyBack = " "+faction.getTag()+" received a refund of "+Econ.moneyString(refund)+".";
|
||||||
|
} else {
|
||||||
|
Econ.addMoney(player.getName(), refund);
|
||||||
|
moneyBack = " They received a refund of "+Econ.moneyString(refund)+".";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// wait, you're charging people to unclaim land? outrageous
|
// wait, you're charging people to unclaim land? outrageous
|
||||||
else if (refund < 0.0) {
|
else if (refund < 0.0) {
|
||||||
if (!Econ.deductMoney(player.getName(), -refund)) {
|
if(Conf.bankFactionPaysLandCosts) {
|
||||||
sendMessage("Unclaiming all faction land will cost "+Econ.moneyString(-refund)+", which you can't currently afford.");
|
Faction faction = me.getFaction();
|
||||||
return;
|
if(!faction.removeMoney(-refund)) {
|
||||||
|
sendMessage("Unclaiming all faction land will cost "+Econ.moneyString(-refund)+", which your faction can't currently afford.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
moneyBack = " It cost "+faction.getTag()+" "+Econ.moneyString(refund)+".";
|
||||||
|
} else {
|
||||||
|
if (!Econ.deductMoney(player.getName(), -refund)) {
|
||||||
|
sendMessage("Unclaiming all faction land will cost "+Econ.moneyString(-refund)+", which you can't currently afford.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
moneyBack = " It cost them "+Econ.moneyString(refund)+".";
|
||||||
}
|
}
|
||||||
moneyBack = " It cost them "+Econ.moneyString(refund)+".";
|
moneyBack = " It cost them "+Econ.moneyString(refund)+".";
|
||||||
}
|
}
|
||||||
@ -55,7 +71,7 @@ public class FCommandUnclaimall extends FBaseCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Board.unclaimAll(myFaction.getId());
|
Board.unclaimAll(myFaction.getId());
|
||||||
myFaction.sendMessage(me.getNameAndRelevant(myFaction)+Conf.colorSystem+" unclaimed ALL of your factions land."+moneyBack);
|
myFaction.sendMessage(me.getNameAndRelevant(myFaction)+Conf.colorSystem+" unclaimed ALL of your faction's land."+moneyBack);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
68
src/com/massivecraft/factions/commands/FCommandWithdraw.java
Normal file
68
src/com/massivecraft/factions/commands/FCommandWithdraw.java
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
package com.massivecraft.factions.commands;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.integration.Econ;
|
||||||
|
import com.massivecraft.factions.Faction;
|
||||||
|
import com.massivecraft.factions.Factions;
|
||||||
|
import com.massivecraft.factions.FPlayer;
|
||||||
|
import com.massivecraft.factions.struct.Role;
|
||||||
|
|
||||||
|
|
||||||
|
public class FCommandWithdraw extends FBaseCommand {
|
||||||
|
|
||||||
|
public FCommandWithdraw() {
|
||||||
|
aliases.add("withdraw");
|
||||||
|
|
||||||
|
helpDescription = "Withdraw money from your faction's bank";
|
||||||
|
requiredParameters.add("amount");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void perform() {
|
||||||
|
if ( ! assertHasFaction()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Conf.bankEnabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !Conf.bankMembersCanWithdraw && !assertMinRole(Role.MODERATOR)) {
|
||||||
|
sendMessage("Only faction moderators or admins are able to withdraw from the bank.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
double amount = 0.0;
|
||||||
|
|
||||||
|
Faction faction = me.getFaction();
|
||||||
|
|
||||||
|
if (parameters.size() == 1) {
|
||||||
|
try {
|
||||||
|
amount = Double.parseDouble(parameters.get(0));
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
// wasn't valid
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( amount > 0.0 ) {
|
||||||
|
String amountString = Econ.moneyString(amount);
|
||||||
|
|
||||||
|
if( amount > faction.getMoney() ) {
|
||||||
|
amount = faction.getMoney();
|
||||||
|
}
|
||||||
|
|
||||||
|
faction.removeMoney(amount);
|
||||||
|
Econ.addMoney(me.getName(), amount);
|
||||||
|
sendMessage("You have withdrawn "+amountString+" from "+faction.getTag()+"'s bank.");
|
||||||
|
sendMessage(faction.getTag()+" now has "+Econ.moneyString(faction.getMoney()));
|
||||||
|
Factions.log(player.getName() + " withdrew "+amountString+" from "+faction.getTag()+"'s bank.");
|
||||||
|
|
||||||
|
for (FPlayer fplayer : FPlayer.getAllOnline()) {
|
||||||
|
if (fplayer.getFaction() == faction) {
|
||||||
|
fplayer.sendMessage(me.getNameAndRelevant(fplayer)+Conf.colorSystem+" has withdrawn "+amountString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -5,7 +5,7 @@ import org.bukkit.ChatColor;
|
|||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.Factions;
|
import com.massivecraft.factions.Factions;
|
||||||
import com.massivecraft.factions.SpoutFeatures;
|
import com.massivecraft.factions.integration.SpoutFeatures;
|
||||||
import com.massivecraft.factions.struct.Relation;
|
import com.massivecraft.factions.struct.Relation;
|
||||||
import com.massivecraft.factions.struct.Role;
|
import com.massivecraft.factions.struct.Role;
|
||||||
|
|
||||||
@ -38,8 +38,8 @@ public class FRelationCommand extends FBaseCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (otherFaction.getId() == 0) {
|
if (!otherFaction.isNormal()) {
|
||||||
sendMessage("Nope! You can't :) The default faction is not a real faction.");
|
sendMessage("Nope! You can't :) You can only ally with player factions.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,16 +1,22 @@
|
|||||||
package com.massivecraft.factions;
|
package com.massivecraft.factions.integration;
|
||||||
|
|
||||||
import org.bukkit.event.Event;
|
import org.bukkit.event.Event;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
import com.massivecraft.factions.listeners.FactionsServerListener;
|
import com.massivecraft.factions.listeners.FactionsServerListener;
|
||||||
|
import com.massivecraft.factions.commands.FCommandHelp;
|
||||||
|
|
||||||
import com.earth2me.essentials.api.Economy;
|
import com.earth2me.essentials.api.Economy;
|
||||||
|
import com.nijikokun.register.payment.Methods;
|
||||||
|
import com.nijikokun.register.payment.Method.MethodAccount;
|
||||||
import com.iConomy.*;
|
import com.iConomy.*;
|
||||||
import com.iConomy.system.*;
|
import com.iConomy.system.*;
|
||||||
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.Factions;
|
||||||
|
|
||||||
|
|
||||||
public class Econ {
|
public class Econ {
|
||||||
|
private static boolean registerUse = false;
|
||||||
private static boolean iConomyUse = false;
|
private static boolean iConomyUse = false;
|
||||||
private static boolean essEcoUse = false;
|
private static boolean essEcoUse = false;
|
||||||
|
|
||||||
@ -24,6 +30,12 @@ public class Econ {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!registerHooked()) {
|
||||||
|
Plugin plug = factions.getServer().getPluginManager().getPlugin("Register");
|
||||||
|
if (plug != null && plug.getClass().getName().equals("com.nijikokun.register.Register") && plug.isEnabled()) {
|
||||||
|
registerSet(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!iConomyHooked()) {
|
if (!iConomyHooked()) {
|
||||||
Plugin plug = factions.getServer().getPluginManager().getPlugin("iConomy");
|
Plugin plug = factions.getServer().getPluginManager().getPlugin("iConomy");
|
||||||
if (plug != null && plug.getClass().getName().equals("com.iConomy.iConomy") && plug.isEnabled()) {
|
if (plug != null && plug.getClass().getName().equals("com.iConomy.iConomy") && plug.isEnabled()) {
|
||||||
@ -38,24 +50,41 @@ public class Econ {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void registerSet(boolean enable) {
|
||||||
|
registerUse = enable;
|
||||||
|
if (enable) {
|
||||||
|
Factions.log("Register hook available, "+(Conf.econRegisterEnabled ? "and interface is enabled" : "but disabled (\"econRegisterEnabled\": false)")+".");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Factions.log("Un-hooked from Register.");
|
||||||
|
}
|
||||||
|
FCommandHelp.updateHelp();
|
||||||
|
}
|
||||||
|
|
||||||
public static void iConomySet(boolean enable) {
|
public static void iConomySet(boolean enable) {
|
||||||
iConomyUse = enable;
|
iConomyUse = enable;
|
||||||
if (enable) {
|
if (enable && !registerUse) {
|
||||||
Factions.log("iConomy hook available, "+(Conf.econIConomyEnabled ? "and interface is enabled" : "but disabled (\"econIConomyEnabled\": false)")+".");
|
Factions.log("iConomy hook available, "+(Conf.econIConomyEnabled ? "and interface is enabled" : "but disabled (\"econIConomyEnabled\": false)")+".");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Factions.log("Un-hooked from iConomy.");
|
Factions.log("Un-hooked from iConomy.");
|
||||||
}
|
}
|
||||||
|
FCommandHelp.updateHelp();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void essentialsEcoSet(boolean enable) {
|
public static void essentialsEcoSet(boolean enable) {
|
||||||
essEcoUse = enable;
|
essEcoUse = enable;
|
||||||
if (enable) {
|
if (enable && !registerUse) {
|
||||||
Factions.log("EssentialsEco hook available, "+(Conf.econEssentialsEcoEnabled ? "and interface is enabled" : "but disabled (\"econEssentialsEcoEnabled\": false)")+".");
|
Factions.log("EssentialsEco hook available, "+(Conf.econEssentialsEcoEnabled ? "and interface is enabled" : "but disabled (\"econEssentialsEcoEnabled\": false)")+".");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Factions.log("Un-hooked from EssentialsEco.");
|
Factions.log("Un-hooked from EssentialsEco.");
|
||||||
}
|
}
|
||||||
|
FCommandHelp.updateHelp();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean registerHooked() {
|
||||||
|
return registerUse;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean iConomyHooked() {
|
public static boolean iConomyHooked() {
|
||||||
@ -66,9 +95,15 @@ public class Econ {
|
|||||||
return essEcoUse;
|
return essEcoUse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean registerAvailable() {
|
||||||
|
return Conf.econRegisterEnabled && registerUse && Methods.hasMethod();
|
||||||
|
}
|
||||||
|
|
||||||
// If economy is enabled in conf.json, and we're successfully hooked into an economy plugin
|
// If economy is enabled in conf.json, and we're successfully hooked into an economy plugin
|
||||||
public static boolean enabled() {
|
public static boolean enabled() {
|
||||||
return (Conf.econIConomyEnabled && iConomyUse) || (Conf.econEssentialsEcoEnabled && essEcoUse);
|
return (Conf.econRegisterEnabled && registerUse && Methods.hasMethod())
|
||||||
|
|| (Conf.econIConomyEnabled && iConomyUse)
|
||||||
|
|| (Conf.econEssentialsEcoEnabled && essEcoUse);
|
||||||
}
|
}
|
||||||
|
|
||||||
// mainly for internal use, for a little less code repetition
|
// mainly for internal use, for a little less code repetition
|
||||||
@ -84,11 +119,23 @@ public class Econ {
|
|||||||
Holdings holdings = account.getHoldings();
|
Holdings holdings = account.getHoldings();
|
||||||
return holdings;
|
return holdings;
|
||||||
}
|
}
|
||||||
|
public static MethodAccount getRegisterAccount(String playerName) {
|
||||||
|
if (!enabled()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (!Methods.getMethod().hasAccount(playerName)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
MethodAccount account = Methods.getMethod().getAccount(playerName);
|
||||||
|
return account;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// format money string based on server's set currency type, like "24 gold" or "$24.50"
|
// format money string based on server's set currency type, like "24 gold" or "$24.50"
|
||||||
public static String moneyString(double amount) {
|
public static String moneyString(double amount) {
|
||||||
return iConomyUse ? iConomy.format(amount) : Economy.format(amount);
|
return registerAvailable() ? Methods.getMethod().format(amount)
|
||||||
|
: (iConomyUse ? iConomy.format(amount) : Economy.format(amount));
|
||||||
}
|
}
|
||||||
|
|
||||||
// whether a player can afford specified amount
|
// whether a player can afford specified amount
|
||||||
@ -98,7 +145,15 @@ public class Econ {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iConomyUse) {
|
if (registerAvailable()) {
|
||||||
|
MethodAccount holdings = getRegisterAccount(playerName);
|
||||||
|
if (holdings == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return holdings.hasEnough(amount);
|
||||||
|
}
|
||||||
|
else if (iConomyUse) {
|
||||||
Holdings holdings = getIconomyHoldings(playerName);
|
Holdings holdings = getIconomyHoldings(playerName);
|
||||||
if (holdings == null) {
|
if (holdings == null) {
|
||||||
return false;
|
return false;
|
||||||
@ -122,7 +177,15 @@ public class Econ {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iConomyUse) {
|
if (registerAvailable()) {
|
||||||
|
MethodAccount holdings = getRegisterAccount(playerName);
|
||||||
|
if (holdings == null || !holdings.hasEnough(amount)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return holdings.subtract(amount);
|
||||||
|
}
|
||||||
|
else if (iConomyUse) {
|
||||||
Holdings holdings = getIconomyHoldings(playerName);
|
Holdings holdings = getIconomyHoldings(playerName);
|
||||||
if (holdings == null || !holdings.hasEnough(amount)) {
|
if (holdings == null || !holdings.hasEnough(amount)) {
|
||||||
return false;
|
return false;
|
||||||
@ -151,7 +214,15 @@ public class Econ {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iConomyUse) {
|
if (registerAvailable()) {
|
||||||
|
MethodAccount holdings = getRegisterAccount(playerName);
|
||||||
|
if (holdings == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return holdings.add(amount);
|
||||||
|
}
|
||||||
|
else if (iConomyUse) {
|
||||||
Holdings holdings = getIconomyHoldings(playerName);
|
Holdings holdings = getIconomyHoldings(playerName);
|
||||||
if (holdings == null) {
|
if (holdings == null) {
|
||||||
return false;
|
return false;
|
@ -0,0 +1,41 @@
|
|||||||
|
package com.massivecraft.factions.integration;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.player.PlayerChatEvent;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.Factions;
|
||||||
|
|
||||||
|
import com.earth2me.essentials.chat.EssentialsChat;
|
||||||
|
import com.earth2me.essentials.chat.IEssentialsChatListener;
|
||||||
|
|
||||||
|
|
||||||
|
public class EssentialsFeatures {
|
||||||
|
private static EssentialsChat essChat;
|
||||||
|
|
||||||
|
public static void integrateChat(EssentialsChat instance) {
|
||||||
|
essChat = instance;
|
||||||
|
try {
|
||||||
|
essChat.addEssentialsChatListener("Factions", new IEssentialsChatListener() {
|
||||||
|
public boolean shouldHandleThisChat(PlayerChatEvent event)
|
||||||
|
{
|
||||||
|
return Factions.instance.shouldLetFactionsHandleThisChat(event);
|
||||||
|
}
|
||||||
|
public String modifyMessage(PlayerChatEvent event, Player target, String message)
|
||||||
|
{
|
||||||
|
return message.replace("{FACTION}", Factions.instance.getPlayerFactionTagRelation(event.getPlayer(), target)).replace("{FACTION_TITLE}", Factions.instance.getPlayerTitle(event.getPlayer()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Factions.log("Found and will integrate chat with "+essChat.getDescription().getFullName());
|
||||||
|
}
|
||||||
|
catch (NoSuchMethodError ex) {
|
||||||
|
essChat = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void unhookChat() {
|
||||||
|
if (essChat != null) {
|
||||||
|
essChat.removeEssentialsChatListener("Factions");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,32 +1,33 @@
|
|||||||
package com.massivecraft.factions;
|
package com.massivecraft.factions.integration;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.Board;
|
||||||
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.FLocation;
|
||||||
|
import com.massivecraft.factions.FPlayer;
|
||||||
|
import com.massivecraft.factions.Faction;
|
||||||
|
import com.massivecraft.factions.Factions;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import com.massivecraft.factions.struct.Relation;
|
import com.massivecraft.factions.struct.Relation;
|
||||||
import com.massivecraft.factions.struct.Role;
|
import com.massivecraft.factions.struct.Role;
|
||||||
|
|
||||||
|
import org.getspout.spoutapi.gui.Color;
|
||||||
|
import org.getspout.spoutapi.gui.GenericLabel;
|
||||||
import org.getspout.spoutapi.player.AppearanceManager;
|
import org.getspout.spoutapi.player.AppearanceManager;
|
||||||
import org.getspout.spoutapi.player.SpoutPlayer;
|
import org.getspout.spoutapi.player.SpoutPlayer;
|
||||||
import org.getspout.spoutapi.SpoutManager;
|
import org.getspout.spoutapi.SpoutManager;
|
||||||
|
import org.getspout.spoutapi.gui.WidgetAnchor;
|
||||||
|
|
||||||
|
|
||||||
public class SpoutFeatures {
|
public class SpoutFeatures {
|
||||||
private transient static AppearanceManager spoutApp;
|
private transient static AppearanceManager spoutApp;
|
||||||
private transient static boolean spoutMe = false;
|
private transient static boolean spoutMe = false;
|
||||||
|
private transient static Map<String, GenericLabel> territoryLabels = new HashMap<String, GenericLabel>();
|
||||||
public static void setup(Factions factions) {
|
|
||||||
Plugin test = factions.getServer().getPluginManager().getPlugin("Spout");
|
|
||||||
|
|
||||||
if (test != null && test.isEnabled()) {
|
|
||||||
setAvailable(true, test.getDescription().getFullName());
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
setAvailable(false, "");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// set integration availability
|
// set integration availability
|
||||||
public static void setAvailable(boolean enable, String pluginName) {
|
public static void setAvailable(boolean enable, String pluginName) {
|
||||||
@ -47,10 +48,57 @@ public class SpoutFeatures {
|
|||||||
|| Conf.spoutFactionTitlesOverNames
|
|| Conf.spoutFactionTitlesOverNames
|
||||||
|| Conf.spoutFactionAdminCapes
|
|| Conf.spoutFactionAdminCapes
|
||||||
|| Conf.spoutFactionModeratorCapes
|
|| Conf.spoutFactionModeratorCapes
|
||||||
|
|| Conf.spoutTerritoryDisplayPosition > 0
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// update displayed current territory for specified player; returns false if unsuccessful
|
||||||
|
public static boolean updateTerritoryDisplay(FPlayer player) {
|
||||||
|
if (!spoutMe || Conf.spoutTerritoryDisplayPosition == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
SpoutPlayer sPlayer = SpoutManager.getPlayer(player.getPlayer());
|
||||||
|
if (!sPlayer.isSpoutCraftEnabled()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
GenericLabel label;
|
||||||
|
if (territoryLabels.containsKey(player.getName())) {
|
||||||
|
label = territoryLabels.get(player.getName());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
label = new GenericLabel();
|
||||||
|
sPlayer.getMainScreen().attachWidget(Factions.instance, label);
|
||||||
|
switch (Conf.spoutTerritoryDisplayPosition) {
|
||||||
|
case 1: label.setAlign(WidgetAnchor.TOP_LEFT).setAnchor(WidgetAnchor.TOP_LEFT); break;
|
||||||
|
case 2: label.setAlign(WidgetAnchor.TOP_CENTER).setAnchor(WidgetAnchor.TOP_CENTER); break;
|
||||||
|
default: label.setAlign(WidgetAnchor.TOP_RIGHT).setAnchor(WidgetAnchor.TOP_RIGHT);
|
||||||
|
}
|
||||||
|
territoryLabels.put(player.getName(), label);
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction factionHere = Board.getFactionAt(new FLocation(player));
|
||||||
|
String msg = factionHere.getTag();
|
||||||
|
if (factionHere.getDescription().length() > 0) {
|
||||||
|
msg += " - "+factionHere.getDescription();
|
||||||
|
}
|
||||||
|
label.setTextColor(getSpoutColor(player.getRelationColor(factionHere), 0));
|
||||||
|
label.setText(msg);
|
||||||
|
label.setDirty(true);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void playerDisconnect(FPlayer player) {
|
||||||
|
if (!enabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
territoryLabels.remove(player.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// update all appearances between every player
|
// update all appearances between every player
|
||||||
public static void updateAppearances() {
|
public static void updateAppearances() {
|
||||||
if (!enabled()) {
|
if (!enabled()) {
|
||||||
@ -186,4 +234,28 @@ public class SpoutFeatures {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// method to convert a Bukkit ChatColor to a Spout Color
|
||||||
|
private static Color getSpoutColor(ChatColor inColor, int alpha) {
|
||||||
|
if (inColor == null) {
|
||||||
|
return new Color(191, 191, 191, alpha);
|
||||||
|
}
|
||||||
|
switch (inColor.getCode()) {
|
||||||
|
case 0x1: return new Color(0, 0, 191, alpha);
|
||||||
|
case 0x2: return new Color(0, 191, 0, alpha);
|
||||||
|
case 0x3: return new Color(0, 191, 191, alpha);
|
||||||
|
case 0x4: return new Color(191, 0, 0, alpha);
|
||||||
|
case 0x5: return new Color(191, 0, 191, alpha);
|
||||||
|
case 0x6: return new Color(191, 191, 0, alpha);
|
||||||
|
case 0x7: return new Color(191, 191, 191, alpha);
|
||||||
|
case 0x8: return new Color(64, 64, 64, alpha);
|
||||||
|
case 0x9: return new Color(64, 64, 255, alpha);
|
||||||
|
case 0xA: return new Color(64, 255, 64, alpha);
|
||||||
|
case 0xB: return new Color(64, 255, 255, alpha);
|
||||||
|
case 0xC: return new Color(255, 64, 64, alpha);
|
||||||
|
case 0xD: return new Color(255, 64, 255, alpha);
|
||||||
|
case 0xE: return new Color(255, 255, 64, alpha);
|
||||||
|
case 0xF: return new Color(255, 255, 255, alpha);
|
||||||
|
default: return new Color(0, 0, 0, alpha);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package com.massivecraft.factions;
|
package com.massivecraft.factions.integration;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.Factions;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
@ -35,7 +35,7 @@ public class FactionsBlockListener extends BlockListener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! this.playerCanBuildDestroyBlock(event.getPlayer(), event.getBlock(), "build")) {
|
if ( ! this.playerCanBuildDestroyBlock(event.getPlayer(), event.getBlock().getLocation(), "build", false)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -46,7 +46,7 @@ public class FactionsBlockListener extends BlockListener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! this.playerCanBuildDestroyBlock(event.getPlayer(), event.getBlock(), "destroy")) {
|
if ( ! this.playerCanBuildDestroyBlock(event.getPlayer(), event.getBlock().getLocation(), "destroy", false)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -57,7 +57,7 @@ public class FactionsBlockListener extends BlockListener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event.getInstaBreak() && ! this.playerCanBuildDestroyBlock(event.getPlayer(), event.getBlock(), "destroy")) {
|
if (event.getInstaBreak() && ! this.playerCanBuildDestroyBlock(event.getPlayer(), event.getBlock().getLocation(), "destroy", false)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -148,35 +148,41 @@ public class FactionsBlockListener extends BlockListener {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean playerCanBuildDestroyBlock(Player player, Block block, String action) {
|
public static boolean playerCanBuildDestroyBlock(Player player, Location location, String action, boolean justCheck) {
|
||||||
|
|
||||||
if (Conf.adminBypassPlayers.contains(player.getName())) {
|
if (Conf.adminBypassPlayers.contains(player.getName())) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
FLocation loc = new FLocation(block);
|
FLocation loc = new FLocation(location);
|
||||||
Faction otherFaction = Board.getFactionAt(loc);
|
Faction otherFaction = Board.getFactionAt(loc);
|
||||||
FPlayer me = FPlayer.get(player);
|
FPlayer me = FPlayer.get(player);
|
||||||
|
|
||||||
if (otherFaction.isNone()) {
|
if (otherFaction.isNone()) {
|
||||||
if (!Conf.wildernessDenyBuild || Factions.hasPermAdminBypass(player) || Conf.worldsNoWildernessProtection.contains(block.getWorld().getName())) {
|
if (!Conf.wildernessDenyBuild || Factions.hasPermAdminBypass(player) || Conf.worldsNoWildernessProtection.contains(location.getWorld().getName())) {
|
||||||
return true; // This is not faction territory. Use whatever you like here.
|
return true; // This is not faction territory. Use whatever you like here.
|
||||||
}
|
}
|
||||||
me.sendMessage("You can't "+action+" in the wilderness.");
|
if (!justCheck) {
|
||||||
|
me.sendMessage("You can't "+action+" in the wilderness.");
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (otherFaction.isSafeZone()) {
|
else if (otherFaction.isSafeZone()) {
|
||||||
if (!Conf.safeZoneDenyBuild || Factions.hasPermManageSafeZone(player)) {
|
if (!Conf.safeZoneDenyBuild || Factions.hasPermManageSafeZone(player)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
me.sendMessage("You can't "+action+" in a safe zone.");
|
if (!justCheck) {
|
||||||
|
me.sendMessage("You can't "+action+" in a safe zone.");
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (otherFaction.isWarZone()) {
|
else if (otherFaction.isWarZone()) {
|
||||||
if (!Conf.warZoneDenyBuild || Factions.hasPermManageWarZone(player)) {
|
if (!Conf.warZoneDenyBuild || Factions.hasPermManageWarZone(player)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
me.sendMessage("You can't "+action+" in a war zone.");
|
if (!justCheck) {
|
||||||
|
me.sendMessage("You can't "+action+" in a war zone.");
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,7 +193,7 @@ public class FactionsBlockListener extends BlockListener {
|
|||||||
// Cancel and/or cause pain (depending on configuration) if we are not in our own territory
|
// Cancel and/or cause pain (depending on configuration) if we are not in our own territory
|
||||||
if (!rel.isMember()) {
|
if (!rel.isMember()) {
|
||||||
boolean online = otherFaction.hasPlayersOnline();
|
boolean online = otherFaction.hasPlayersOnline();
|
||||||
boolean pain = rel.confPainBuild(online);
|
boolean pain = (!justCheck) && rel.confPainBuild(online);
|
||||||
boolean deny = rel.confDenyBuild(online);
|
boolean deny = rel.confDenyBuild(online);
|
||||||
|
|
||||||
//hurt the player for building/destroying?
|
//hurt the player for building/destroying?
|
||||||
@ -201,21 +207,24 @@ public class FactionsBlockListener extends BlockListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (deny) {
|
if (deny) {
|
||||||
me.sendMessage("You can't "+action+" in the territory of "+otherFaction.getTag(myFaction));
|
if (!justCheck) {
|
||||||
|
me.sendMessage("You can't "+action+" in the territory of "+otherFaction.getTag(myFaction));
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Also cancel and/or cause pain if player doesn't have ownership rights for this claim
|
// Also cancel and/or cause pain if player doesn't have ownership rights for this claim
|
||||||
if (ownershipFail && !Factions.hasPermOwnershipBypass(player)
|
else if (rel.isMember() && ownershipFail && !Factions.hasPermOwnershipBypass(player)) {
|
||||||
) {
|
if (Conf.ownedAreaPainBuild && !justCheck){
|
||||||
if (Conf.ownedAreaPainBuild){
|
|
||||||
player.damage(Conf.actionDeniedPainAmount);
|
player.damage(Conf.actionDeniedPainAmount);
|
||||||
if (!Conf.ownedAreaDenyBuild) {
|
if (!Conf.ownedAreaDenyBuild) {
|
||||||
me.sendMessage("You are hurt for "+action+" in this territory, it is owned by: "+myFaction.getOwnerListString(loc));
|
me.sendMessage("You are hurt for "+action+" in this territory, it is owned by: "+myFaction.getOwnerListString(loc));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Conf.ownedAreaDenyBuild){
|
if (Conf.ownedAreaDenyBuild){
|
||||||
me.sendMessage("You can't "+action+" in this territory, it is owned by: "+myFaction.getOwnerListString(loc));
|
if (!justCheck) {
|
||||||
|
me.sendMessage("You can't "+action+" in this territory, it is owned by: "+myFaction.getOwnerListString(loc));
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,10 @@ import org.bukkit.event.player.PlayerListener;
|
|||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.FPlayer;
|
import com.massivecraft.factions.FPlayer;
|
||||||
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.Factions;
|
import com.massivecraft.factions.Factions;
|
||||||
|
import com.massivecraft.factions.struct.ChatMode;
|
||||||
|
import com.massivecraft.factions.struct.Relation;
|
||||||
import com.massivecraft.factions.util.TextUtil;
|
import com.massivecraft.factions.util.TextUtil;
|
||||||
|
|
||||||
|
|
||||||
@ -45,12 +48,31 @@ public class FactionsChatEarlyListener extends PlayerListener{
|
|||||||
FPlayer me = FPlayer.get(talkingPlayer);
|
FPlayer me = FPlayer.get(talkingPlayer);
|
||||||
|
|
||||||
// Is it a faction chat message?
|
// Is it a faction chat message?
|
||||||
if (me.isFactionChatting()) {
|
if (me.getChatMode() == ChatMode.FACTION) {
|
||||||
|
|
||||||
String message = String.format(Conf.factionChatFormat, me.getNameAndRelevant(me), msg);
|
String message = String.format(Conf.factionChatFormat, me.getNameAndRelevant(me), msg);
|
||||||
me.getFaction().sendMessage(message);
|
me.getFaction().sendMessage(message);
|
||||||
Logger.getLogger("Minecraft").info(ChatColor.stripColor("FactionChat "+me.getFaction().getTag()+": "+message));
|
Logger.getLogger("Minecraft").info(ChatColor.stripColor("FactionChat "+me.getFaction().getTag()+": "+message));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
} else if (me.getChatMode() == ChatMode.ALLIANCE ) {
|
||||||
|
Faction myFaction = me.getFaction();
|
||||||
|
|
||||||
|
String factionAndName = ChatColor.stripColor(me.getNameAndTag());
|
||||||
|
String message = Conf.colorAlly+factionAndName+ChatColor.WHITE+" "+msg;
|
||||||
|
|
||||||
|
//Send message to our own faction
|
||||||
|
myFaction.sendMessage(message);
|
||||||
|
for (FPlayer fplayer : FPlayer.getAllOnline()) {
|
||||||
|
if(myFaction.getRelation(fplayer) == Relation.ALLY) {
|
||||||
|
//Send to all our allies
|
||||||
|
fplayer.sendMessage(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Logger.getLogger("Minecraft").info(ChatColor.stripColor("AllianceChat "+me.getFaction().getTag()+": "+message));
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,8 @@ import org.bukkit.entity.Fireball;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Projectile;
|
import org.bukkit.entity.Projectile;
|
||||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||||
|
import org.bukkit.event.entity.EndermanPickupEvent;
|
||||||
|
import org.bukkit.event.entity.EndermanPlaceEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.event.entity.EntityDeathEvent;
|
import org.bukkit.event.entity.EntityDeathEvent;
|
||||||
@ -204,21 +206,23 @@ public class FactionsEntityListener extends EntityListener {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!attacker.hasFaction() && Conf.disablePVPForFactionlessPlayers) {
|
Faction defendFaction = defender.getFaction();
|
||||||
|
Faction attackFaction = attacker.getFaction();
|
||||||
|
|
||||||
|
if (attackFaction.isNone() && Conf.disablePVPForFactionlessPlayers) {
|
||||||
attacker.sendMessage("You can't hurt other players until you join a faction.");
|
attacker.sendMessage("You can't hurt other players until you join a faction.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (defLocFaction == attacker.getFaction() && Conf.enablePVPAgainstFactionlessInAttackersLand) {
|
else if (defendFaction.isNone()) {
|
||||||
// Allow PVP vs. Factionless in attacker's faction territory
|
if (defLocFaction == attackFaction && Conf.enablePVPAgainstFactionlessInAttackersLand) {
|
||||||
return true;
|
// Allow PVP vs. Factionless in attacker's faction territory
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (Conf.disablePVPForFactionlessPlayers) {
|
||||||
|
attacker.sendMessage("You can't hurt players who are not currently in a faction.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (!defender.hasFaction() && Conf.disablePVPForFactionlessPlayers) {
|
|
||||||
attacker.sendMessage("You can't hurt players who are not currently in a faction.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Faction defendFaction = defender.getFaction();
|
|
||||||
Faction attackFaction = attacker.getFaction();
|
|
||||||
|
|
||||||
if (defendFaction.isPeaceful()) {
|
if (defendFaction.isPeaceful()) {
|
||||||
attacker.sendMessage("You can't hurt players who are in a peaceful faction.");
|
attacker.sendMessage("You can't hurt players who are in a peaceful faction.");
|
||||||
@ -380,11 +384,66 @@ public class FactionsEntityListener extends EntityListener {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// Also cancel if player doesn't have ownership rights for this claim
|
// Also cancel if player doesn't have ownership rights for this claim
|
||||||
else if (ownershipFail && (!rel.isMember() || !Factions.hasPermOwnershipBypass(player))) {
|
else if (rel.isMember() && ownershipFail && !Factions.hasPermOwnershipBypass(player)) {
|
||||||
me.sendMessage("You can't "+action+" paintings in this territory, it is owned by: "+otherFaction.getOwnerListString(loc));
|
me.sendMessage("You can't "+action+" paintings in this territory, it is owned by: "+otherFaction.getOwnerListString(loc));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEndermanPickup(EndermanPickupEvent event) {
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stopEndermanBlockManipulation(event.getBlock().getLocation())) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEndermanPlace(EndermanPlaceEvent event) {
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stopEndermanBlockManipulation(event.getLocation())) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean stopEndermanBlockManipulation(Location loc) {
|
||||||
|
if (loc == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// quick check to see if all Enderman deny options are enabled; if so, no need to check location
|
||||||
|
if ( Conf.wildernessDenyEndermanBlocks
|
||||||
|
&& Conf.territoryDenyEndermanBlocks
|
||||||
|
&& Conf.territoryDenyEndermanBlocksWhenOffline
|
||||||
|
&& Conf.safeZoneDenyEndermanBlocks
|
||||||
|
&& Conf.warZoneDenyEndermanBlocks
|
||||||
|
) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
FLocation fLoc = new FLocation(loc);
|
||||||
|
Faction claimFaction = Board.getFactionAt(fLoc);
|
||||||
|
|
||||||
|
if (claimFaction.isNone()) {
|
||||||
|
return Conf.wildernessDenyEndermanBlocks;
|
||||||
|
}
|
||||||
|
else if (claimFaction.isNormal()) {
|
||||||
|
return claimFaction.hasPlayersOnline() ? Conf.territoryDenyEndermanBlocks : Conf.territoryDenyEndermanBlocksWhenOffline;
|
||||||
|
}
|
||||||
|
else if (claimFaction.isSafeZone()) {
|
||||||
|
return Conf.safeZoneDenyEndermanBlocks;
|
||||||
|
}
|
||||||
|
else if (claimFaction.isWarZone()) {
|
||||||
|
return Conf.warZoneDenyEndermanBlocks;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ import org.bukkit.event.player.PlayerChatEvent;
|
|||||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.event.player.PlayerKickEvent;
|
||||||
import org.bukkit.event.player.PlayerListener;
|
import org.bukkit.event.player.PlayerListener;
|
||||||
import org.bukkit.event.player.PlayerMoveEvent;
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
@ -24,12 +25,12 @@ import org.bukkit.event.player.PlayerRespawnEvent;
|
|||||||
|
|
||||||
import com.massivecraft.factions.Board;
|
import com.massivecraft.factions.Board;
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.Econ;
|
import com.massivecraft.factions.integration.Econ;
|
||||||
import com.massivecraft.factions.FLocation;
|
import com.massivecraft.factions.FLocation;
|
||||||
import com.massivecraft.factions.FPlayer;
|
import com.massivecraft.factions.FPlayer;
|
||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.Factions;
|
import com.massivecraft.factions.Factions;
|
||||||
import com.massivecraft.factions.SpoutFeatures;
|
import com.massivecraft.factions.integration.SpoutFeatures;
|
||||||
import com.massivecraft.factions.struct.Role;
|
import com.massivecraft.factions.struct.Role;
|
||||||
import com.massivecraft.factions.struct.Relation;
|
import com.massivecraft.factions.struct.Relation;
|
||||||
import com.massivecraft.factions.util.TextUtil;
|
import com.massivecraft.factions.util.TextUtil;
|
||||||
@ -107,6 +108,8 @@ public class FactionsPlayerListener extends PlayerListener{
|
|||||||
Factions.log(Level.SEVERE, "Critical error in chat message formatting! Complete format string: "+yourFormat);
|
Factions.log(Level.SEVERE, "Critical error in chat message formatting! Complete format string: "+yourFormat);
|
||||||
Factions.log(Level.SEVERE, "First half of event.getFormat() string: "+formatStart);
|
Factions.log(Level.SEVERE, "First half of event.getFormat() string: "+formatStart);
|
||||||
Factions.log(Level.SEVERE, "Second half of event.getFormat() string: "+formatEnd);
|
Factions.log(Level.SEVERE, "Second half of event.getFormat() string: "+formatEnd);
|
||||||
|
Factions.log(Level.SEVERE, "NOTE: To fix this quickly, running this command should work: f config chatTagInsertIndex 0");
|
||||||
|
Factions.log(Level.SEVERE, "For a more proper fix, please read the chat configuration notes on the configuration page of the Factions user guide.");
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -123,10 +126,8 @@ public class FactionsPlayerListener extends PlayerListener{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
final Player player = event.getPlayer();
|
|
||||||
|
|
||||||
// Make sure that all online players do have a fplayer.
|
// Make sure that all online players do have a fplayer.
|
||||||
FPlayer me = FPlayer.get(player);
|
final FPlayer me = FPlayer.get(event.getPlayer());
|
||||||
|
|
||||||
// Update the lastLoginTime for this fplayer
|
// Update the lastLoginTime for this fplayer
|
||||||
me.setLastLoginTime(System.currentTimeMillis());
|
me.setLastLoginTime(System.currentTimeMillis());
|
||||||
@ -135,12 +136,15 @@ public class FactionsPlayerListener extends PlayerListener{
|
|||||||
FPlayer.autoLeaveOnInactivityRoutine();
|
FPlayer.autoLeaveOnInactivityRoutine();
|
||||||
FPlayer.autoLeaveOnInactivityRoutine();
|
FPlayer.autoLeaveOnInactivityRoutine();
|
||||||
|
|
||||||
|
SpoutFeatures.updateTerritoryDisplay(me);
|
||||||
|
|
||||||
// Appearance updates which are run when a player joins don't apply properly for other clients, so they need to be delayed slightly
|
// Appearance updates which are run when a player joins don't apply properly for other clients, so they need to be delayed slightly
|
||||||
Factions.instance.getServer().getScheduler().scheduleSyncDelayedTask(Factions.instance, new Runnable() {
|
Factions.instance.getServer().getScheduler().scheduleSyncDelayedTask(Factions.instance, new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
SpoutFeatures.updateAppearances(player);
|
SpoutFeatures.updateAppearances(me.getPlayer());
|
||||||
|
SpoutFeatures.updateTerritoryDisplay(me);
|
||||||
}
|
}
|
||||||
});
|
}, 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -152,6 +156,7 @@ public class FactionsPlayerListener extends PlayerListener{
|
|||||||
if (myFaction != null) {
|
if (myFaction != null) {
|
||||||
myFaction.memberLoggedOff();
|
myFaction.memberLoggedOff();
|
||||||
}
|
}
|
||||||
|
SpoutFeatures.playerDisconnect(me);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -215,11 +220,6 @@ public class FactionsPlayerListener extends PlayerListener{
|
|||||||
me.sendMessage("You can't claim more land! You need more power!");
|
me.sendMessage("You can't claim more land! You need more power!");
|
||||||
me.enableAutoClaim(false);
|
me.enableAutoClaim(false);
|
||||||
}
|
}
|
||||||
else if (!Econ.canAfford(player.getName(), cost)) {
|
|
||||||
String costString = Econ.moneyString(cost);
|
|
||||||
me.sendMessage("Claiming this land will cost "+costString+", which you can't currently afford.");
|
|
||||||
me.enableAutoClaim(false);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
me.attemptClaim(false);
|
me.attemptClaim(false);
|
||||||
}
|
}
|
||||||
@ -262,7 +262,7 @@ public class FactionsPlayerListener extends PlayerListener{
|
|||||||
return; // clicked in air, apparently
|
return; // clicked in air, apparently
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! canPlayerUseBlock(player, block)) {
|
if ( ! canPlayerUseBlock(player, block, false)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -271,19 +271,19 @@ public class FactionsPlayerListener extends PlayerListener{
|
|||||||
return; // only interested on right-clicks for below
|
return; // only interested on right-clicks for below
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! this.playerCanUseItemHere(player, block, event.getMaterial())) {
|
if ( ! this.playerCanUseItemHere(player, block.getLocation(), event.getMaterial(), false)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean playerCanUseItemHere(Player player, Block block, Material material) {
|
public static boolean playerCanUseItemHere(Player player, Location location, Material material, boolean justCheck) {
|
||||||
|
|
||||||
if (Conf.adminBypassPlayers.contains(player.getName())) {
|
if (Conf.adminBypassPlayers.contains(player.getName())) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
FLocation loc = new FLocation(block);
|
FLocation loc = new FLocation(location);
|
||||||
Faction otherFaction = Board.getFactionAt(loc);
|
Faction otherFaction = Board.getFactionAt(loc);
|
||||||
|
|
||||||
if (otherFaction.hasPlayersOnline()){
|
if (otherFaction.hasPlayersOnline()){
|
||||||
@ -299,24 +299,30 @@ public class FactionsPlayerListener extends PlayerListener{
|
|||||||
FPlayer me = FPlayer.get(player);
|
FPlayer me = FPlayer.get(player);
|
||||||
|
|
||||||
if (otherFaction.isNone()) {
|
if (otherFaction.isNone()) {
|
||||||
if (!Conf.wildernessDenyUseage || Factions.hasPermAdminBypass(player) || Conf.worldsNoWildernessProtection.contains(block.getWorld().getName())) {
|
if (!Conf.wildernessDenyUseage || Factions.hasPermAdminBypass(player) || Conf.worldsNoWildernessProtection.contains(location.getWorld().getName())) {
|
||||||
return true; // This is not faction territory. Use whatever you like here.
|
return true; // This is not faction territory. Use whatever you like here.
|
||||||
}
|
}
|
||||||
me.sendMessage("You can't use "+TextUtil.getMaterialName(material)+" in the wilderness.");
|
if (!justCheck) {
|
||||||
|
me.sendMessage("You can't use "+TextUtil.getMaterialName(material)+" in the wilderness.");
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (otherFaction.isSafeZone()) {
|
else if (otherFaction.isSafeZone()) {
|
||||||
if (!Conf.safeZoneDenyUseage || Factions.hasPermManageSafeZone(player)) {
|
if (!Conf.safeZoneDenyUseage || Factions.hasPermManageSafeZone(player)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
me.sendMessage("You can't use "+TextUtil.getMaterialName(material)+" in a safe zone.");
|
if (!justCheck) {
|
||||||
|
me.sendMessage("You can't use "+TextUtil.getMaterialName(material)+" in a safe zone.");
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (otherFaction.isWarZone()) {
|
else if (otherFaction.isWarZone()) {
|
||||||
if (!Conf.warZoneDenyUseage || Factions.hasPermManageWarZone(player)) {
|
if (!Conf.warZoneDenyUseage || Factions.hasPermManageWarZone(player)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
me.sendMessage("You can't use "+TextUtil.getMaterialName(material)+" in a war zone.");
|
if (!justCheck) {
|
||||||
|
me.sendMessage("You can't use "+TextUtil.getMaterialName(material)+" in a war zone.");
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -326,19 +332,23 @@ public class FactionsPlayerListener extends PlayerListener{
|
|||||||
|
|
||||||
// Cancel if we are not in our own territory
|
// Cancel if we are not in our own territory
|
||||||
if (!rel.isMember() && rel.confDenyUseage()) {
|
if (!rel.isMember() && rel.confDenyUseage()) {
|
||||||
me.sendMessage("You can't use "+TextUtil.getMaterialName(material)+" in the territory of "+otherFaction.getTag(myFaction));
|
if (!justCheck) {
|
||||||
|
me.sendMessage("You can't use "+TextUtil.getMaterialName(material)+" in the territory of "+otherFaction.getTag(myFaction));
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// Also cancel if player doesn't have ownership rights for this claim
|
// Also cancel if player doesn't have ownership rights for this claim
|
||||||
else if (ownershipFail && (!rel.isMember() || !Factions.hasPermOwnershipBypass(player))) {
|
else if (rel.isMember() && ownershipFail && !Factions.hasPermOwnershipBypass(player)) {
|
||||||
me.sendMessage("You can't use "+TextUtil.getMaterialName(material)+" in this territory, it is owned by: "+myFaction.getOwnerListString(loc));
|
if (!justCheck) {
|
||||||
|
me.sendMessage("You can't use "+TextUtil.getMaterialName(material)+" in this territory, it is owned by: "+myFaction.getOwnerListString(loc));
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canPlayerUseBlock(Player player, Block block) {
|
public static boolean canPlayerUseBlock(Player player, Block block, boolean justCheck) {
|
||||||
|
|
||||||
if (Conf.adminBypassPlayers.contains(player.getName())) {
|
if (Conf.adminBypassPlayers.contains(player.getName())) {
|
||||||
return true;
|
return true;
|
||||||
@ -348,6 +358,11 @@ public class FactionsPlayerListener extends PlayerListener{
|
|||||||
FLocation loc = new FLocation(block);
|
FLocation loc = new FLocation(block);
|
||||||
Faction otherFaction = Board.getFactionAt(loc);
|
Faction otherFaction = Board.getFactionAt(loc);
|
||||||
|
|
||||||
|
// no door/chest/whatever protection in wilderness, war zones, or safe zones
|
||||||
|
if (!otherFaction.isNormal()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// We only care about some material types.
|
// We only care about some material types.
|
||||||
if (otherFaction.hasPlayersOnline()){
|
if (otherFaction.hasPlayersOnline()){
|
||||||
if ( ! Conf.territoryProtectedMaterials.contains(material)) {
|
if ( ! Conf.territoryProtectedMaterials.contains(material)) {
|
||||||
@ -365,13 +380,17 @@ public class FactionsPlayerListener extends PlayerListener{
|
|||||||
boolean ownershipFail = Conf.ownedAreasEnabled && Conf.ownedAreaProtectMaterials && !otherFaction.playerHasOwnershipRights(me, loc);
|
boolean ownershipFail = Conf.ownedAreasEnabled && Conf.ownedAreaProtectMaterials && !otherFaction.playerHasOwnershipRights(me, loc);
|
||||||
|
|
||||||
// You may use any block unless it is another faction's territory...
|
// You may use any block unless it is another faction's territory...
|
||||||
if ((rel.isEnemy() && Conf.territoryEnemyProtectMaterials) || (rel.isAlly() && Conf.territoryAllyProtectMaterials)) {
|
if (rel.isNeutral() || (rel.isEnemy() && Conf.territoryEnemyProtectMaterials) || (rel.isAlly() && Conf.territoryAllyProtectMaterials)) {
|
||||||
me.sendMessage("You can't use "+TextUtil.getMaterialName(material)+" in the territory of "+otherFaction.getTag(myFaction));
|
if (!justCheck) {
|
||||||
|
me.sendMessage("You can't use "+TextUtil.getMaterialName(material)+" in the territory of "+otherFaction.getTag(myFaction));
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// Also cancel if player doesn't have ownership rights for this claim
|
// Also cancel if player doesn't have ownership rights for this claim
|
||||||
else if (ownershipFail && (!rel.isMember() || !Factions.hasPermOwnershipBypass(player))) {
|
else if (rel.isMember() && ownershipFail && !Factions.hasPermOwnershipBypass(player)) {
|
||||||
me.sendMessage("You can't use "+TextUtil.getMaterialName(material)+" in this territory, it is owned by: "+myFaction.getOwnerListString(loc));
|
if (!justCheck) {
|
||||||
|
me.sendMessage("You can't use "+TextUtil.getMaterialName(material)+" in this territory, it is owned by: "+myFaction.getOwnerListString(loc));
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -400,7 +419,7 @@ public class FactionsPlayerListener extends PlayerListener{
|
|||||||
Block block = event.getBlockClicked();
|
Block block = event.getBlockClicked();
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if ( ! this.playerCanUseItemHere(player, block, event.getBucket())) {
|
if ( ! this.playerCanUseItemHere(player, block.getLocation(), event.getBucket(), false)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -414,7 +433,7 @@ public class FactionsPlayerListener extends PlayerListener{
|
|||||||
Block block = event.getBlockClicked();
|
Block block = event.getBlockClicked();
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if ( ! this.playerCanUseItemHere(player, block, event.getBucket())) {
|
if ( ! this.playerCanUseItemHere(player, block.getLocation(), event.getBucket(), false)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -494,4 +513,23 @@ public class FactionsPlayerListener extends PlayerListener{
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPlayerKick(PlayerKickEvent event) {
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FPlayer badGuy = FPlayer.get(event.getPlayer());
|
||||||
|
if (badGuy == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SpoutFeatures.playerDisconnect(badGuy);
|
||||||
|
|
||||||
|
// if player was banned (not just kicked), get rid of their stored info
|
||||||
|
if (event.getReason().equals("Banned by admin.")) {
|
||||||
|
badGuy.leave(false);
|
||||||
|
badGuy.markForDeletion(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,17 +5,20 @@ import org.bukkit.event.server.ServerListener;
|
|||||||
import org.bukkit.event.server.PluginDisableEvent;
|
import org.bukkit.event.server.PluginDisableEvent;
|
||||||
import org.bukkit.event.server.PluginEnableEvent;
|
import org.bukkit.event.server.PluginEnableEvent;
|
||||||
|
|
||||||
import com.massivecraft.factions.Econ;
|
import com.massivecraft.factions.integration.Econ;
|
||||||
import com.massivecraft.factions.SpoutFeatures;
|
import com.massivecraft.factions.integration.SpoutFeatures;
|
||||||
|
|
||||||
|
|
||||||
public class FactionsServerListener extends ServerListener {
|
public class FactionsServerListener extends ServerListener {
|
||||||
@Override
|
@Override
|
||||||
public void onPluginDisable(PluginDisableEvent event) {
|
public void onPluginDisable(PluginDisableEvent event) {
|
||||||
String name = event.getPlugin().getDescription().getName();
|
String name = event.getPlugin().getDescription().getName();
|
||||||
if (Econ.iConomyHooked() && name.equals("iConomy")) {
|
if (Econ.registerHooked() && name.equals("Register")) {
|
||||||
|
Econ.registerSet(false);
|
||||||
|
}
|
||||||
|
else if (Econ.iConomyHooked() && name.equals("iConomy")) {
|
||||||
Econ.iConomySet(false);
|
Econ.iConomySet(false);
|
||||||
}
|
}
|
||||||
else if (Econ.essentialsEcoHooked() && name.equals("Essentials")) {
|
else if (Econ.essentialsEcoHooked() && name.equals("Essentials")) {
|
||||||
Econ.essentialsEcoSet(false);
|
Econ.essentialsEcoSet(false);
|
||||||
}
|
}
|
||||||
@ -24,18 +27,21 @@ public class FactionsServerListener extends ServerListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPluginEnable(PluginEnableEvent event) {
|
public void onPluginEnable(PluginEnableEvent event) {
|
||||||
Plugin plug = event.getPlugin();
|
Plugin plug = event.getPlugin();
|
||||||
String name = plug.getDescription().getName();
|
String name = plug.getDescription().getName();
|
||||||
if (!Econ.iConomyHooked() && name.equals("iConomy") && plug.getClass().getName().equals("com.iConomy.iConomy")) {
|
if (!Econ.registerHooked() && name.equals("Register") && plug.getClass().getName().equals("com.nijikokun.register.Register")) {
|
||||||
|
Econ.registerSet(true);
|
||||||
|
}
|
||||||
|
else if (!Econ.iConomyHooked() && name.equals("iConomy") && plug.getClass().getName().equals("com.iConomy.iConomy")) {
|
||||||
Econ.iConomySet(true);
|
Econ.iConomySet(true);
|
||||||
}
|
}
|
||||||
else if (!Econ.essentialsEcoHooked() && name.equals("Essentials")) {
|
else if (!Econ.essentialsEcoHooked() && name.equals("Essentials")) {
|
||||||
Econ.essentialsEcoSet(true);
|
Econ.essentialsEcoSet(true);
|
||||||
}
|
}
|
||||||
else if (name.equals("Spout")) {
|
else if (name.equals("Spout")) {
|
||||||
SpoutFeatures.setAvailable(true, plug.getDescription().getFullName());
|
SpoutFeatures.setAvailable(true, plug.getDescription().getFullName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
28
src/com/massivecraft/factions/struct/ChatMode.java
Normal file
28
src/com/massivecraft/factions/struct/ChatMode.java
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package com.massivecraft.factions.struct;
|
||||||
|
|
||||||
|
public enum ChatMode {
|
||||||
|
FACTION(2, "faction chat"),
|
||||||
|
ALLIANCE(1, "alliance chat"),
|
||||||
|
PUBLIC(0, "public chat");
|
||||||
|
|
||||||
|
public final int value;
|
||||||
|
public final String nicename;
|
||||||
|
|
||||||
|
private ChatMode(final int value, final String nicename) {
|
||||||
|
this.value = value;
|
||||||
|
this.nicename = nicename;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isAtLeast(ChatMode role) {
|
||||||
|
return this.value >= role.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isAtMost(ChatMode role) {
|
||||||
|
return this.value <= role.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return this.nicename;
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
name: Factions
|
name: Factions
|
||||||
version: 1.4.7
|
version: 1.5.1_dev
|
||||||
main: com.massivecraft.factions.Factions
|
main: com.massivecraft.factions.Factions
|
||||||
softdepend:
|
softdepend:
|
||||||
- Permissions
|
- Permissions
|
||||||
@ -12,6 +12,7 @@ softdepend:
|
|||||||
- ChatManager
|
- ChatManager
|
||||||
- AuthMe
|
- AuthMe
|
||||||
- iConomy
|
- iConomy
|
||||||
|
- Register
|
||||||
- Spout
|
- Spout
|
||||||
- WorldEdit
|
- WorldEdit
|
||||||
- WorldGuard
|
- WorldGuard
|
||||||
@ -26,6 +27,7 @@ permissions:
|
|||||||
factions.participate: true
|
factions.participate: true
|
||||||
factions.create: true
|
factions.create: true
|
||||||
factions.viewAnyPower: true
|
factions.viewAnyPower: true
|
||||||
|
factions.viewAnyFactionBalance: true
|
||||||
factions.peacefulExplosionToggle: true
|
factions.peacefulExplosionToggle: true
|
||||||
factions.adminBypass: true
|
factions.adminBypass: true
|
||||||
factions.config: true
|
factions.config: true
|
||||||
@ -37,6 +39,7 @@ permissions:
|
|||||||
factions.reload: true
|
factions.reload: true
|
||||||
factions.saveall: true
|
factions.saveall: true
|
||||||
factions.setPeaceful: true
|
factions.setPeaceful: true
|
||||||
|
factions.setPermanent: true
|
||||||
factions.commandDisable.none: true
|
factions.commandDisable.none: true
|
||||||
factions.participate:
|
factions.participate:
|
||||||
description: Allows the player to participate in a faction
|
description: Allows the player to participate in a faction
|
||||||
@ -47,6 +50,9 @@ permissions:
|
|||||||
factions.viewAnyPower:
|
factions.viewAnyPower:
|
||||||
description: Allows the player to view the power level of anyone else
|
description: Allows the player to view the power level of anyone else
|
||||||
default: true
|
default: true
|
||||||
|
factions.viewAnyFactionBalance:
|
||||||
|
description: Allows the player to view the faction bank balance for any faction
|
||||||
|
default: true
|
||||||
factions.peacefulExplosionToggle:
|
factions.peacefulExplosionToggle:
|
||||||
description: Allows peaceful faction admins and moderators to disable explosions in their territory
|
description: Allows peaceful faction admins and moderators to disable explosions in their territory
|
||||||
default: true
|
default: true
|
||||||
@ -80,6 +86,9 @@ permissions:
|
|||||||
factions.setPeaceful:
|
factions.setPeaceful:
|
||||||
description: Can designate specific factions as "peaceful" (no PvP, no land stealing, etc.)
|
description: Can designate specific factions as "peaceful" (no PvP, no land stealing, etc.)
|
||||||
default: op
|
default: op
|
||||||
|
factions.setPermanent:
|
||||||
|
description: Can designate specific factions as permanent (not disbanded even with no members)
|
||||||
|
default: op
|
||||||
factions.commandDisable.none:
|
factions.commandDisable.none:
|
||||||
description: no commands disabled (ignore all other commandDisable permissions)
|
description: no commands disabled (ignore all other commandDisable permissions)
|
||||||
default: op
|
default: op
|
||||||
@ -95,6 +104,9 @@ permissions:
|
|||||||
factions.commandDisable.autowar:
|
factions.commandDisable.autowar:
|
||||||
description: autowar command disabled
|
description: autowar command disabled
|
||||||
default: false
|
default: false
|
||||||
|
factions.commandDisable.balance:
|
||||||
|
description: balance/money command disabled
|
||||||
|
default: false
|
||||||
factions.commandDisable.bypass:
|
factions.commandDisable.bypass:
|
||||||
description: bypass command disabled
|
description: bypass command disabled
|
||||||
default: false
|
default: false
|
||||||
@ -116,6 +128,9 @@ permissions:
|
|||||||
factions.commandDisable.deinv:
|
factions.commandDisable.deinv:
|
||||||
description: deinvite command disabled
|
description: deinvite command disabled
|
||||||
default: false
|
default: false
|
||||||
|
factions.commandDisable.deposit:
|
||||||
|
description: deposit command disabled
|
||||||
|
default: false
|
||||||
factions.commandDisable.desc:
|
factions.commandDisable.desc:
|
||||||
description: desc command disabled
|
description: desc command disabled
|
||||||
default: false
|
default: false
|
||||||
@ -164,6 +179,9 @@ permissions:
|
|||||||
factions.commandDisable.mod:
|
factions.commandDisable.mod:
|
||||||
description: mod command disabled
|
description: mod command disabled
|
||||||
default: false
|
default: false
|
||||||
|
factions.commandDisable.money:
|
||||||
|
description: balance/money command disabled
|
||||||
|
default: false
|
||||||
factions.commandDisable.noboom:
|
factions.commandDisable.noboom:
|
||||||
description: noboom command disabled
|
description: noboom command disabled
|
||||||
default: false
|
default: false
|
||||||
@ -179,9 +197,15 @@ permissions:
|
|||||||
factions.commandDisable.ownerlist:
|
factions.commandDisable.ownerlist:
|
||||||
description: ownerlist command disabled
|
description: ownerlist command disabled
|
||||||
default: false
|
default: false
|
||||||
|
factions.commandDisable.pay:
|
||||||
|
description: pay command disabled
|
||||||
|
default: false
|
||||||
factions.commandDisable.peaceful:
|
factions.commandDisable.peaceful:
|
||||||
description: peaceful command disabled
|
description: peaceful command disabled
|
||||||
default: false
|
default: false
|
||||||
|
factions.commandDisable.permanent:
|
||||||
|
description: permanent command disabled
|
||||||
|
default: false
|
||||||
factions.commandDisable.power:
|
factions.commandDisable.power:
|
||||||
description: power command disabled
|
description: power command disabled
|
||||||
default: false
|
default: false
|
||||||
@ -260,6 +284,9 @@ permissions:
|
|||||||
factions.commandDisable.wardeclaimall:
|
factions.commandDisable.wardeclaimall:
|
||||||
description: warunclaimall command disabled
|
description: warunclaimall command disabled
|
||||||
default: false
|
default: false
|
||||||
|
factions.commandDisable.withdraw:
|
||||||
|
description: withdraw command disabled
|
||||||
|
default: false
|
||||||
factions.commandDisable.worldnoclaim:
|
factions.commandDisable.worldnoclaim:
|
||||||
description: worldnoclaim command disabled
|
description: worldnoclaim command disabled
|
||||||
default: false
|
default: false
|
||||||
|
Loading…
Reference in New Issue
Block a user