1.2-STABLE

/f tntfill wont spam chat anymore,
I changed the tntfill_success option, so you're gonna wanna delete that to rengerate it. If you havent edited the lang.yml just delete it and restart
/f stuck wont tp players outside the border anymore.
Nametags & Tab has placeholderapi support added
use {relationcolor} and {faction} for relational color and faction ( These were already built in )
They can be edited in the lang.yml the option is default_prefix.
/f perms now has tntfill, tntbank, and vault permission options
This commit is contained in:
Naman 2018-04-24 19:32:26 -05:00
parent ba9b3587e0
commit 6bf4598d57
9 changed files with 98 additions and 11 deletions

View File

@ -51,7 +51,7 @@ public class P extends MPlugin {
public static Permission perms = null;
ItemStack item = new ItemStack(Material.CAKE);
// Persistence related
private boolean locked = false;

View File

@ -73,7 +73,8 @@ public class CmdStuck extends FCommand {
public boolean work() {
FLocation chunk = currentFLocation();
Faction faction = board.getFactionAt(chunk);
if (faction.isWilderness()) {
int buffer = P.p.getConfig().getInt("world-border.buffer", 0);
if (faction.isWilderness() && !chunk.isOutsideWorldBorder(buffer)) {
int cx = FLocation.chunkToBlock((int) chunk.getX());
int cz = FLocation.chunkToBlock((int) chunk.getZ());
int y = world.getHighestBlockYAt(cx, cz);

View File

@ -2,6 +2,8 @@ package com.massivecraft.factions.cmd;
import com.massivecraft.factions.P;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.zcore.fperms.Access;
import com.massivecraft.factions.zcore.fperms.PermissableAction;
import com.massivecraft.factions.zcore.util.TL;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@ -17,6 +19,7 @@ public class CmdTnt extends FCommand {
this.optionalArgs.put("add/take", "");
this.optionalArgs.put("amount", "number");
this.permission = Permission.TNT.node;
this.disableOnLock = true;
@ -32,6 +35,13 @@ public class CmdTnt extends FCommand {
fme.msg(TL.COMMAND_TNT_DISABLED_MSG);
return;
}
Access access = fme.getFaction().getAccess(fme, PermissableAction.TNTBANK);
if (access.equals(Access.DENY)) {
fme.msg(TL.GENERIC_NOPERMISSION, "tntbank");
}
if (args.size() == 2) {
if (args.get(0).equalsIgnoreCase("add")) {
int testNumber = -1;

View File

@ -3,6 +3,8 @@ package com.massivecraft.factions.cmd;
import com.massivecraft.factions.P;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Role;
import com.massivecraft.factions.zcore.fperms.Access;
import com.massivecraft.factions.zcore.fperms.PermissableAction;
import com.massivecraft.factions.zcore.util.TL;
import org.bukkit.Bukkit;
import org.bukkit.Location;
@ -34,6 +36,13 @@ public class CmdTntFill extends FCommand {
@Override
public void perform(){
Access access = fme.getFaction().getAccess(fme, PermissableAction.TNTFILL);
if (access.equals(Access.DENY)) {
fme.msg(TL.GENERIC_NOPERMISSION, "tntfill");
}
msg(TL.COMMAND_TNTFILL_HEADER);
int radius = argAsInt(0,16);
int amount = argAsInt(1,16);
@ -58,6 +67,7 @@ public class CmdTntFill extends FCommand {
}
boolean bankMode = fme.getRole().isAtLeast(Role.MODERATOR);
Location start = me.getLocation();
int counter = 0;
for (double x = start.getX() - radius; x <= start.getX() + radius; x++) {
for (double y = start.getY() - radius; y <= start.getY() + radius; y++) {
for (double z = start.getZ() - radius; z <= start.getZ() + radius; z++) {
@ -71,13 +81,17 @@ public class CmdTntFill extends FCommand {
if (!inventoryContains(me.getInventory(), new ItemStack(Material.TNT,amount))){
if (!fme.getRole().isAtLeast(Role.MODERATOR)){
msg(TL.COMMAND_TNTFILL_NOTENOUGH);
sendMessage(TL.COMMAND_TNTFILL_SUCCESS.toString().replace("{amount}",amount + "").replace("{dispensers}",counter+ ""));
me.updateInventory();
return;
} else if (bankMode){
msg(TL.COMMAND_TNTFILL_MOD.toString().replace("{role}",fme.getRole().nicename));
//msg(TL.COMMAND_TNTFILL_MOD.toString().replace("{role}",fme.getRole().nicename));
bankMode = true;
me.performCommand("f tnt take " + amount);
removeFromBank(amount);
if (!inventoryContains(me.getInventory(), new ItemStack(Material.TNT,amount))){
msg(TL.COMMAND_TNTFILL_NOTENOUGH);
sendMessage(TL.COMMAND_TNTFILL_SUCCESS.toString().replace("{amount}",amount + "").replace("{dispensers}",counter+ ""));
me.updateInventory();
return;
}
}
@ -92,18 +106,64 @@ public class CmdTntFill extends FCommand {
dispenser.addItem(tnt);
takeTnt(remainderAmt);
}
sendMessage(TL.COMMAND_TNTFILL_SUCCESS.toString().replace("{amount}",amount + "").replace("{x}",(int) x + "")
.replace("{y}",(int) y + "").replace("{z}",(int) z + ""));
//sendMessage(TL.COMMAND_TNTFILL_SUCCESS.toString().replace("{amount}",amount + "").replace("{x}",(int) x + "").replace("{y}",(int) y + "").replace("{z}",(int) z + ""));
counter++;
}
}
}
}
}
if (bankMode) {
msg(TL.COMMAND_TNTFILL_MOD.toString().replace("{role}",fme.getRole().nicename));
}
sendMessage(TL.COMMAND_TNTFILL_SUCCESS.toString().replace("{amount}",amount + "").replace("{dispensers}",counter+ ""));
me.updateInventory();
}
private void removeFromBank(int amount){
int testNumber = -1;
try {
testNumber = Integer.parseInt(args.get(1));
} catch (NumberFormatException e) {
fme.msg(TL.COMMAND_TNT_INVALID_NUM);
return;
}
if (amount < 0) {
fme.msg(TL.COMMAND_TNT_POSITIVE);
return;
}
if (fme.getFaction().getTnt() < amount) {
fme.msg(TL.COMMAND_TNT_WIDTHDRAW_NOTENOUGH);
return;
}
int fullStacks = amount / 64;
int remainderAmt = amount % 64;
if ((remainderAmt == 0 && getEmptySlots(me) <= fullStacks)) {
fme.msg(TL.COMMAND_TNT_WIDTHDRAW_NOTENOUGH);
return;
}
if (getEmptySlots(me) + 1 <= fullStacks) {
fme.msg(TL.COMMAND_TNT_WIDTHDRAW_NOTENOUGH);
return;
}
ItemStack tnt64 = new ItemStack(Material.TNT, 64);
for (int i = 0; i <= fullStacks - 1; i++) {
me.getInventory().addItem(tnt64);
}
if (remainderAmt != 0) {
ItemStack tnt = new ItemStack(Material.TNT, remainderAmt);
me.getInventory().addItem(tnt);
}
fme.getFaction().takeTnt(amount);
me.updateInventory();
}
public void takeTnt(int amount){
Inventory inv = me.getInventory();
int invTnt = 0;

View File

@ -10,6 +10,8 @@ import com.massivecraft.factions.Conf;
import com.massivecraft.factions.FLocation;
import com.massivecraft.factions.P;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.zcore.fperms.Access;
import com.massivecraft.factions.zcore.fperms.PermissableAction;
import com.massivecraft.factions.zcore.util.TL;
import org.bukkit.Bukkit;
import org.bukkit.Location;
@ -39,10 +41,15 @@ public class CmdVault extends FCommand {
@Override
public void perform() {
if (!P.p.getConfig().getBoolean("fvault.Enabled")){
fme.sendMessage("This command is disabled!");
return;
}
Access access = fme.getFaction().getAccess(fme, PermissableAction.VAULT);
if (access.equals(Access.DENY)) {
fme.msg(TL.GENERIC_NOPERMISSION, "vault");
}
if (fme.isInVault()){
me.closeInventory();

View File

@ -2,6 +2,7 @@ package com.massivecraft.factions.scoreboards;
import com.massivecraft.factions.*;
import com.massivecraft.factions.zcore.util.TL;
import me.clip.placeholderapi.PlaceholderAPI;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.scoreboard.Scoreboard;
@ -169,6 +170,8 @@ public class FTeamWrapper {
Team team = teams.get(fboard);
String prefix = TL.DEFAULT_PREFIX.toString();
prefix = PlaceholderAPI.setPlaceholders(fplayer.getPlayer(),prefix);
prefix = PlaceholderAPI.setBracketPlaceholders(fplayer.getPlayer(),prefix);
prefix = prefix.replace("{relationcolor}", faction.getRelationTo(fplayer).getColor().toString());
prefix = prefix.replace("{faction}", faction.getTag().substring(0, Math.min("{faction}".length() + 16 - prefix.length(), faction.getTag().length())));
if (team.getPrefix() == null || !team.getPrefix().equals(prefix)) {

View File

@ -34,7 +34,10 @@ public enum PermissableAction {
PROMOTE("promote"),
SETWARP("setwarp"),
WARP("warp"),
FLY("fly"),;
FLY("fly"),
VAULT("vault"),
TNTBANK("tntbank"),
TNTFILL("tntfill");
private String name;

View File

@ -674,7 +674,7 @@ public enum TL {
COMMAND_TNT_DESCRIPTION("add/widthraw from faction's tnt bank"),
COMMAND_TNTFILL_HEADER("&c&l[!] &7Filling tnt in dispensers..."),
COMMAND_TNTFILL_SUCCESS("&c&l[!] &7Filled &c{amount}&7 Tnt in dispenser at {x} {y} {z}"),
COMMAND_TNTFILL_SUCCESS("&c&l[!] &7Filled &c{amount}&7 Tnt in &c{dispensers} &7dispensers"),
COMMAND_TNTFILL_NOTENOUGH("&c&l[!] &7Not enough tnt in inventory."),
COMMAND_TNTFILL_RADIUSMAX("&c&l[!] &7The max radius is {max}"),
COMMAND_TNTFILL_AMOUNTMAX("&c&l[!] &7The max amount is {max}"),

View File

@ -501,6 +501,9 @@ fperm-gui:
ban: 27
disband: 28
fly: 29
vault: 30
tntbank: 31
tntfill: 32
# Material to show, if the material is colorable eg: Wool, Stained Clay it will update with it's access color
materials:
build: STAINED_CLAY
@ -524,6 +527,9 @@ fperm-gui:
ban: STAINED_CLAY
disband: STAINED_CLAY
fly: STAINED_CLAY
vault: STAINED_CLAY
tntbank: STAINED_CLAY
tntfill: STAINED_CLAY
# Same dummy items format as above
dummy-items:
'0':
@ -536,9 +542,6 @@ fperm-gui:
- 8
- 29
- 30
- 31
- 32
- 33
- 34
- 35
# {action} Action name eg: Setwarp, Kick