Add Faction vaults.

These can be accessed with /f vault <number>
Set a Faction's max vaults with /f setmaxvaults <faction> <number> - can be run from console so Buycraft can execute it.
* This is a not very tested implementation. Should be tested more in depth before being pushed to a release.
This commit is contained in:
Trent Hensler
2016-05-30 16:22:45 -07:00
parent 46805200dd
commit 0294a60675
11 changed files with 192 additions and 2 deletions

View File

@@ -0,0 +1,49 @@
package com.massivecraft.factions.cmd;
import com.massivecraft.factions.Faction;
import com.massivecraft.factions.P;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.zcore.util.TL;
import org.bukkit.ChatColor;
public class CmdSetMaxVaults extends FCommand {
public CmdSetMaxVaults() {
this.aliases.add("setmaxvaults");
this.aliases.add("smv");
this.requiredArgs.add("faction");
this.requiredArgs.add("number");
this.permission = Permission.SETMAXVAULTS.node;
this.disableOnLock = false;
senderMustBePlayer = false;
senderMustBeMember = false;
senderMustBeModerator = false;
senderMustBeAdmin = false;
}
@Override
public void perform() {
Faction targetFaction = argAsFaction(0);
int value = argAsInt(1, -1);
if(value < 0) {
sender.sendMessage(ChatColor.RED + "Number must be greater than 0.");
return;
}
if(targetFaction == null) {
sender.sendMessage(ChatColor.RED + "Couldn't find Faction: " + ChatColor.YELLOW + argAsString(0));
return;
}
targetFaction.setMaxVaults(value);
sender.sendMessage(TL.COMMAND_SETMAXVAULTS_SUCCESS.format(targetFaction.getTag(), value));
}
@Override
public TL getUsageTranslation() {
return TL.COMMAND_SETMAXVAULTS_DESCRIPTION;
}
}

View File

@@ -0,0 +1,84 @@
package com.massivecraft.factions.cmd;
import com.drtshock.playervaults.PlayerVaults;
import com.drtshock.playervaults.util.Lang;
import com.drtshock.playervaults.vaultmanagement.UUIDVaultManager;
import com.drtshock.playervaults.vaultmanagement.VaultOperations;
import com.drtshock.playervaults.vaultmanagement.VaultViewInfo;
import com.massivecraft.factions.Conf;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.zcore.util.TL;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
public class CmdVault extends FCommand {
public CmdVault() {
this.aliases.add("vault");
//this.requiredArgs.add("");
this.optionalArgs.put("number", "number");
this.permission = Permission.VAULT.node;
this.disableOnLock = false;
senderMustBePlayer = true;
senderMustBeMember = true;
senderMustBeModerator = false;
senderMustBeAdmin = false;
}
@Override
public void perform() {
/*
/f vault <number>
*/
int number = argAsInt(0, 0); // Default to 0 or show on 0
Player player = me;
if (PlayerVaults.getInstance().getInVault().containsKey(player.getUniqueId().toString())) {
return; // Already in a vault so they must be trying to dupe.
}
int max = myFaction.getMaxVaults();
if (number > max) {
me.sendMessage(TL.COMMAND_VAULTS_TOOHIGH.format(number, max));
return;
}
// Something like faction-id
String vaultName = String.format(Conf.vaultPrefix, myFaction.getId());
if (number < 1) {
// Message about which vaults that Faction has.
// List the target
YamlConfiguration file = UUIDVaultManager.getInstance().getPlayerVaultFile(vaultName);
if (file == null) {
sender.sendMessage(Lang.TITLE.toString() + Lang.VAULT_DOES_NOT_EXIST.toString());
} else {
StringBuilder sb = new StringBuilder();
for (String key : file.getKeys(false)) {
sb.append(key.replace("vault", "")).append(" ");
}
sender.sendMessage(Lang.TITLE.toString() + Lang.EXISTING_VAULTS.toString().replaceAll("%p", fme.getTag()).replaceAll("%v", sb.toString().trim()));
}
return;
} // end listing vaults.
// Attempt to open vault.
if (VaultOperations.openOtherVault(player, vaultName, String.valueOf(number))) {
// Success
PlayerVaults.getInstance().getInVault().put(player.getUniqueId().toString(), new VaultViewInfo(vaultName, number));
}
}
@Override
public TL getUsageTranslation() {
return TL.COMMAND_VERSION_DESCRIPTION;
}
}

View File

@@ -1,6 +1,7 @@
package com.massivecraft.factions.cmd;
import com.massivecraft.factions.Conf;
import com.massivecraft.factions.P;
import com.massivecraft.factions.zcore.util.TL;
import java.util.Collections;
@@ -151,6 +152,11 @@ public class FCmdRoot extends FCommand {
this.addSubCommand(this.cmdClaimLine);
this.addSubCommand(this.cmdTop);
this.addSubCommand(this.cmdAHome);
if (P.p.isHookedPlayervaults()) {
P.p.log("Found playervaults hook, adding /f vault and /f setmaxvault commands.");
this.addSubCommand(new CmdSetMaxVaults());
this.addSubCommand(new CmdVault());
}
}
@Override