Compare commits

...

21 Commits

Author SHA1 Message Date
Driftay
65e7061135 Merge pull request #21 from DroppingAnvil/1.6.x
More permission kit fixes
2019-10-04 18:55:52 -04:00
DroppingAnvil
4b23117262 More permission kit fixes 2019-10-04 17:54:22 -05:00
Driftay
06395b5c4a Merge pull request #20 from DroppingAnvil/1.6.x
Players unable to use /f perms due to lack of permissions
2019-10-04 18:48:50 -04:00
DroppingAnvil
7973d807e6 Merge from Driftay/1.6.x
Merge from Driftay 1.6.x
2019-10-04 17:38:56 -05:00
DroppingAnvil
666d6ab21d Players unable to use /f perms due to lack of permissions 2019-10-04 17:35:25 -05:00
Driftay
fac351d35a Update README.md 2019-10-02 13:56:28 -04:00
Driftay
bd4f92e133 Update README.md 2019-10-02 13:49:41 -04:00
Driftay
4bf1676b2b Update README.md 2019-10-02 13:47:34 -04:00
Driftay
6ba970ac13 2 typos 2019-10-01 12:34:02 -04:00
Driftay
a057a235b8 Fixed a Bunch of Misc stuff & Made config.yml CLEAN 2019-10-01 12:18:44 -04:00
Driftay
10f06baadc Version Change 2019-09-30 16:04:41 -04:00
Driftay
07fa138d58 Disabled Discord Features By Default 2019-09-30 16:03:44 -04:00
Driftay
abf5c45053 Version Change 2019-09-29 18:51:24 -04:00
Driftay
a1f527346a Fixed NPE on Guild loading 2019-09-29 18:45:48 -04:00
Driftay
8a4478764f Merge pull request #19 from DroppingAnvil/1.6.x
You can now mention discord users in game!
2019-09-29 18:45:15 -04:00
DroppingAnvil
8b70947d03 Uncommented something that shouldnt have been 2019-09-29 13:36:37 -05:00
DroppingAnvil
58b25c726f First step to mentions! You can now mention discord users ingame if they have a one word name and there is not someone named the same thing! I plan to make this system much much better soon! 2019-09-29 13:29:23 -05:00
Driftay
22ed86b4d8 Added f points to stats discord command 2019-09-29 08:13:48 -04:00
Driftay
ed9b2419a6 Jar reduced by 200kbs 2019-09-29 07:24:37 -04:00
DroppingAnvil
90d9486165 Merge pull request #7 from Driftay/1.6.x
Merge
2019-09-29 04:16:37 -05:00
DroppingAnvil
c2ac4a6517 Merge from Driftay/1.6.x 2019-09-24 12:07:58 -05:00
14 changed files with 259 additions and 217 deletions

View File

@@ -1,5 +1,7 @@
# SaberFactions # SaberFactions
![Downloads](https://img.shields.io/github/downloads/driftay/saber-factions/total.svg) [![CodeFactor](https://www.codefactor.io/repository/github/driftay/saber-factions/badge)](https://www.codefactor.io/repository/github/driftay/saber-factions)
SaberFactions is a fork of both FactionsUUID and SavageFactions. Creators of those plugins include DtrShock and ProSavage. Credits to them. SaberFactions is a fork of both FactionsUUID and SavageFactions. Creators of those plugins include DtrShock and ProSavage. Credits to them.
SaberFactions is the newest, latest and greatest factions plugin designed for the best and most functional factions experience minecraft has seen! SaberFactions is the newest, latest and greatest factions plugin designed for the best and most functional factions experience minecraft has seen!

View File

@@ -4,7 +4,7 @@
<groupId>com.massivecraft</groupId> <groupId>com.massivecraft</groupId>
<artifactId>Factions</artifactId> <artifactId>Factions</artifactId>
<version>1.6.9.5-U0.2.1-2.0.0-BETA</version> <version>1.6.9.5-U0.2.1-2.0.2-BETA</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>SaberFactions</name> <name>SaberFactions</name>
@@ -383,10 +383,9 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.jagrosh</groupId> <groupId>com.jagrosh</groupId>
<artifactId>jda-utilities</artifactId> <artifactId>jda-utilities-commons</artifactId>
<version>2.1</version> <version>2.1</version>
<scope>compile</scope> <scope>compile</scope>
<type>pom</type>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -98,7 +98,7 @@ public class Conf {
public static boolean worldGuardChecking = false; public static boolean worldGuardChecking = false;
public static boolean worldGuardBuildPriority = false; public static boolean worldGuardBuildPriority = false;
//DISCORD //DISCORD
public static boolean useDiscordSystem = true; public static boolean useDiscordSystem = false;
public static String discordBotToken = "<token here>"; public static String discordBotToken = "<token here>";
public static String fromDiscordFactionChatPrefix = "&f[&dDiscord&f] "; public static String fromDiscordFactionChatPrefix = "&f[&dDiscord&f] ";
public static String avatarUrl = "http://cravatar.eu/helmavatar/%uuid%.png"; public static String avatarUrl = "http://cravatar.eu/helmavatar/%uuid%.png";

View File

@@ -261,6 +261,8 @@ public class FactionsPlugin extends MPlugin {
} }
if(Conf.useDiscordSystem) { if(Conf.useDiscordSystem) {
new FactionChatHandler(this); new FactionChatHandler(this);
} else {
System.out.println("\n\n\n SABER-FACTIONS-DISCORD-INTEGRATION - You are not using Discord integration features, set conf.json option useDiscordSystem to true and put a valid token in before using!\n\n\n");
} }
ShopConfig.setup(); ShopConfig.setup();

View File

@@ -44,7 +44,7 @@ public class CmdUnban extends FCommand {
context.faction.unban(target); context.faction.unban(target);
context.msg(TL.COMMAND_UNBAN_UNBANNED, context.fPlayer.getName(), target.getName()); context.msg(TL.COMMAND_UNBAN_UNBANNED, context.fPlayer.getName(), target.getName());
target.msg(TL.COMMAND_UNBAN_TARGET, context.faction.getTag(target)); target.msg(TL.COMMAND_UNBAN_TARGET.toString(), context.faction.getTag(target));
} }
@Override @Override

View File

@@ -77,6 +77,9 @@ public class CheckTask implements Runnable {
} }
faction.msg(TL.CHECK_WALLS_CHECK); faction.msg(TL.CHECK_WALLS_CHECK);
if (!Conf.useDiscordSystem) return;
String channelId = faction.getWallNotifyChannelId(); String channelId = faction.getWallNotifyChannelId();
if (channelId == null) { if (channelId == null) {
continue; continue;
@@ -122,6 +125,10 @@ public class CheckTask implements Runnable {
CheckTask.bufferChecks.add(faction.getId()); CheckTask.bufferChecks.add(faction.getId());
} }
faction.msg(TL.CHECK_BUFFERS_CHECK); faction.msg(TL.CHECK_BUFFERS_CHECK);
if (!Conf.useDiscordSystem) return;
String channelId = faction.getBufferNotifyChannelId(); String channelId = faction.getBufferNotifyChannelId();
if (channelId == null) { if (channelId == null) {
continue; continue;

View File

@@ -1,5 +1,6 @@
package com.massivecraft.factions.cmd.check; package com.massivecraft.factions.cmd.check;
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.FactionsPlugin; import com.massivecraft.factions.FactionsPlugin;
@@ -24,9 +25,9 @@ public class WeeWooTask implements Runnable {
continue; continue;
} }
faction.msg(TL.WEE_WOO_MESSAGE); faction.msg(TL.WEE_WOO_MESSAGE);
if (!FactionChatHandler.jda.getStatus().equals(JDA.Status.CONNECTED)) {
continue; if (!Conf.useDiscordSystem) return;
}
String discordChannelId = faction.getWeeWooChannelId(); String discordChannelId = faction.getWeeWooChannelId();
if (discordChannelId == null || discordChannelId.isEmpty()) { if (discordChannelId == null || discordChannelId.isEmpty()) {
continue; continue;

View File

@@ -115,16 +115,16 @@ public class CmdTnt extends FCommand {
context.msg(TL.GENERIC_ARGS_TOOFEW); context.msg(TL.GENERIC_ARGS_TOOFEW);
context.msg(context.args.get(0).equalsIgnoreCase("take") || context.args.get(0).equalsIgnoreCase("t") ? TL.COMMAND_TNT_TAKE_DESCRIPTION : TL.COMMAND_TNT_ADD_DESCRIPTION); context.msg(context.args.get(0).equalsIgnoreCase("take") || context.args.get(0).equalsIgnoreCase("t") ? TL.COMMAND_TNT_TAKE_DESCRIPTION : TL.COMMAND_TNT_ADD_DESCRIPTION);
} }
context.sendMessage(TL.COMMAND_TNT_AMOUNT.toString().replace("{amount}", context.faction.getTnt() + "").replace("{bankSize}", context.faction.getTntBankLimit() + "")); context.msg(TL.COMMAND_TNT_AMOUNT, context.faction.getTnt(), context.faction.getTntBankLimit());
} }
public boolean inventoryContains(Inventory inventory, ItemStack item) { public boolean inventoryContains(Inventory inventory, ItemStack item) {
int count = 0; int count = 0;
ItemStack[] items = inventory.getContents(); ItemStack[] items = inventory.getContents();
for (int i = 0; i < items.length; i++) { for (ItemStack item1 : items) {
if (items[i] != null && items[i].getType() == item.getType() && items[i].getDurability() == item.getDurability()) { if (item1 != null && item1.getType() == item.getType() && item1.getDurability() == item.getDurability()) {
count += items[i].getAmount(); count += item1.getAmount();
} }
if (count >= item.getAmount()) { if (count >= item.getAmount()) {
return true; return true;

View File

@@ -16,7 +16,6 @@ import java.awt.*;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.attribute.FileAttribute;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.List; import java.util.List;
import java.util.*; import java.util.*;
@@ -37,27 +36,30 @@ public class DiscordListener extends ListenerAdapter {
private static JSONGuilds loadGuilds() { private static JSONGuilds loadGuilds() {
try { try {
if (!DiscordListener.file.exists()) { if (file.exists())
Files.createFile(DiscordListener.file.toPath(), (FileAttribute<?>[]) new FileAttribute[0]); return FactionsPlugin.getInstance().gson.fromJson(String.join("\n", Files.readAllLines(file.toPath())), JSONGuilds.class);
Files.write(DiscordListener.file.toPath(), "{}".getBytes()); Files.createFile(file.toPath());
} Files.write(file.toPath(), "{}".getBytes());
return FactionsPlugin.getInstance().gson.fromJson(String.join("\n", Files.readAllLines(DiscordListener.file.toPath())), JSONGuilds.class); return FactionsPlugin.getInstance().gson.fromJson(String.join("\n", Files.readAllLines(file.toPath())), JSONGuilds.class);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
throw new NullPointerException(); throw new NullPointerException();
} }
} }
public static void saveGuilds() { public static void saveGuilds() {
try { try {
String content = FactionsPlugin.getInstance().gson.toJson(DiscordListener.guilds); String content = FactionsPlugin.getInstance().gson.toJson(guilds);
Files.write(DiscordListener.file.toPath(), content.getBytes()); Files.write(file.toPath(), content.getBytes());
} catch (IOException e) { }
catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
throw new NullPointerException(); throw new NullPointerException();
} }
} }
public void onGuildMessageReceived(GuildMessageReceivedEvent event) { public void onGuildMessageReceived(GuildMessageReceivedEvent event) {
try { try {
if (event.getMessage().isWebhookMessage() || event.getAuthor().isBot()) { if (event.getMessage().isWebhookMessage() || event.getAuthor().isBot()) {
@@ -208,7 +210,7 @@ public class DiscordListener extends ListenerAdapter {
EmbedBuilder embedBuilder = new EmbedBuilder().setColor(Color.MAGENTA).setTitle("Faction Stats").setAuthor(ChatColor.stripColor(faction.getTag())).addField("Description", faction.getDescription(), false).addField("Players Online", String.valueOf(faction.getOnlinePlayers().size()), true).addField("Total players", String.valueOf(faction.getFPlayers().size()), true).addField("Alts", String.valueOf(faction.getAltPlayers().size()), true).addField("Land", String.valueOf(faction.getLandRounded()), true).addField("Power", faction.getPowerRounded() + "/" + faction.getPowerMaxRounded(), true); EmbedBuilder embedBuilder = new EmbedBuilder().setColor(Color.MAGENTA).setTitle("Faction Stats").setAuthor(ChatColor.stripColor(faction.getTag())).addField("Description", faction.getDescription(), false).addField("Players Online", String.valueOf(faction.getOnlinePlayers().size()), true).addField("Total players", String.valueOf(faction.getFPlayers().size()), true).addField("Alts", String.valueOf(faction.getAltPlayers().size()), true).addField("Land", String.valueOf(faction.getLandRounded()), true).addField("Power", faction.getPowerRounded() + "/" + faction.getPowerMaxRounded(), true);
Faction guildFaction = this.getFaction(event.getGuild()); Faction guildFaction = this.getFaction(event.getGuild());
if (guildFaction != null && guildFaction.getId().equals(faction.getId()) && this.canAccessRole(guildFaction, event.getMember())) { if (guildFaction != null && guildFaction.getId().equals(faction.getId()) && this.canAccessRole(guildFaction, event.getMember())) {
embedBuilder.addField("Kills", String.valueOf(faction.getKills()), true).addField("Deaths", String.valueOf(faction.getDeaths()), true); embedBuilder.addField("Kills", String.valueOf(faction.getKills()), true).addField("Points", String.valueOf(faction.getPoints()), true).addField("Deaths", String.valueOf(faction.getDeaths()), true);
} }
event.getChannel().sendMessage(embedBuilder.build()).queue(); event.getChannel().sendMessage(embedBuilder.build()).queue();
} }

View File

@@ -11,6 +11,7 @@ import net.dv8tion.jda.core.JDABuilder;
import net.dv8tion.jda.core.Permission; import net.dv8tion.jda.core.Permission;
import net.dv8tion.jda.core.entities.Message; import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.entities.TextChannel; import net.dv8tion.jda.core.entities.TextChannel;
import net.dv8tion.jda.core.entities.User;
import net.dv8tion.jda.core.entities.Webhook; import net.dv8tion.jda.core.entities.Webhook;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent; import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter; import net.dv8tion.jda.core.hooks.ListenerAdapter;
@@ -21,6 +22,7 @@ import org.bukkit.ChatColor;
import javax.security.auth.login.LoginException; import javax.security.auth.login.LoginException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
@@ -38,9 +40,6 @@ public class FactionChatHandler extends ListenerAdapter {
private void startBot() { private void startBot() {
try { try {
jda = new JDABuilder(AccountType.BOT).setToken(Conf.discordBotToken).buildBlocking(); jda = new JDABuilder(AccountType.BOT).setToken(Conf.discordBotToken).buildBlocking();
if(jda == null) {
System.out.println("\n\n\n SABER-FACTIONS-DISCORD-INTEGRATION - Please Make a Valid Token To Use Discord Features! Location Conf.json discordBotToken.\n\n\n");
}
} catch (LoginException | InterruptedException e) { } catch (LoginException | InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -48,6 +47,7 @@ public class FactionChatHandler extends ListenerAdapter {
public static void sendMessage(FactionsPlugin plugin, Faction faction, UUID uuid, String username, String message) { public static void sendMessage(FactionsPlugin plugin, Faction faction, UUID uuid, String username, String message) {
String factionsChatChannelId = faction.getFactionChatChannelId(); String factionsChatChannelId = faction.getFactionChatChannelId();
String messageWithMentions = null;
if (factionsChatChannelId == null || factionsChatChannelId.isEmpty()) { if (factionsChatChannelId == null || factionsChatChannelId.isEmpty()) {
return; return;
} }
@@ -69,6 +69,28 @@ public class FactionChatHandler extends ListenerAdapter {
} else { } else {
webhookClient = textChannel.createWebhook(Conf.webhookName).complete().newClient().build(); webhookClient = textChannel.createWebhook(Conf.webhookName).complete().newClient().build();
} }
if (message.contains("@")) {
List<String> x = new ArrayList<>(Arrays.asList(message.split(" ")));
for (String y : x) {
if (y.contains("@")) {
if (!jda.getUsersByName(y.replace("@", ""), false).isEmpty() && jda.getUsersByName(y.replace("@", ""), false).size() < 2) {
x.set(x.indexOf(y), jda.getUsersByName(y.replace("@", ""), false).get(0).getAsMention());
}
}
}
StringBuilder sB = new StringBuilder();
for (String s : x) {
sB.append(s);
sB.append(" ");
}
messageWithMentions = sB.toString();
}
if (messageWithMentions != null) {
WebhookMessage webhookMessage = new WebhookMessageBuilder().setUsername(ChatColor.stripColor(username)).setAvatarUrl(Conf.avatarUrl.replace("%uuid%", uuid.toString())).setContent(ChatColor.stripColor(messageWithMentions)).build();
webhookClient.send(webhookMessage).join();
webhookClient.close();
return;
}
WebhookMessage webhookMessage = new WebhookMessageBuilder().setUsername(ChatColor.stripColor(username)).setAvatarUrl(Conf.avatarUrl.replace("%uuid%", uuid.toString())).setContent(ChatColor.stripColor(message)).build(); WebhookMessage webhookMessage = new WebhookMessageBuilder().setUsername(ChatColor.stripColor(username)).setAvatarUrl(Conf.avatarUrl.replace("%uuid%", uuid.toString())).setContent(ChatColor.stripColor(message)).build();
webhookClient.send(webhookMessage).join(); webhookClient.send(webhookMessage).join();
webhookClient.close(); webhookClient.close();

View File

@@ -805,7 +805,7 @@ public abstract class MemoryFPlayer implements FPlayer {
int factionBuffer = FactionsPlugin.getInstance().getConfig().getInt("hcf.buffer-zone", 0); int factionBuffer = FactionsPlugin.getInstance().getConfig().getInt("hcf.buffer-zone", 0);
int worldBuffer = FactionsPlugin.getInstance().getConfig().getInt("world-border.buffer", 0); int worldBuffer = FactionsPlugin.getInstance().getConfig().getInt("world-border.buffer", 0);
if (Conf.worldGuardChecking && Worldguard.checkForRegionsInChunk(flocation)) { if (Conf.worldGuardChecking && Worldguard.checkForRegionsInChunk(flocation) && !this.isAdminBypassing()) {
// Checks for WorldGuard regions in the chunk attempting to be claimed // Checks for WorldGuard regions in the chunk attempting to be claimed
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_PROTECTED.toString()); error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_PROTECTED.toString());
} else if (flocation.isOutsideWorldBorder(FactionsPlugin.getInstance().getConfig().getInt("world-border.buffer", 0))) { } else if (flocation.isOutsideWorldBorder(FactionsPlugin.getInstance().getConfig().getInt("world-border.buffer", 0))) {
@@ -1226,7 +1226,7 @@ public abstract class MemoryFPlayer implements FPlayer {
} }
LandClaimEvent claimEvent = new LandClaimEvent(flocation, forFaction, this); LandClaimEvent claimEvent = new LandClaimEvent(flocation, forFaction, this);
Bukkit.getScheduler().runTask(FactionsPlugin.getInstance(), () -> Bukkit.getPluginManager().callEvent(claimEvent)); Bukkit.getPluginManager().callEvent(claimEvent);
if (claimEvent.isCancelled()) { if (claimEvent.isCancelled()) {
return false; return false;
} }

View File

@@ -881,7 +881,7 @@ public enum TL {
COMMAND_TNT_WIDTHDRAW_SUCCESS("&cSuccessfully withdrew tnt."), COMMAND_TNT_WIDTHDRAW_SUCCESS("&cSuccessfully withdrew tnt."),
COMMAND_TNT_WIDTHDRAW_NOTENOUGH("&cNot enough tnt in bank."), COMMAND_TNT_WIDTHDRAW_NOTENOUGH("&cNot enough tnt in bank."),
COMMAND_TNT_DEPOSIT_NOTENOUGH("&cNot enough tnt in tnt inventory."), COMMAND_TNT_DEPOSIT_NOTENOUGH("&cNot enough tnt in tnt inventory."),
COMMAND_TNT_AMOUNT("&cYour faction has {amount} tnt out of {bankSize} in the tnt bank."), COMMAND_TNT_AMOUNT("&cYour faction has %1$s tnt out of %2$s in the tnt bank."),
COMMAND_TNT_POSITIVE("&cPlease use positive numbers!"), COMMAND_TNT_POSITIVE("&cPlease use positive numbers!"),
COMMAND_TNT_DESCRIPTION("add/widthraw from faction's tnt bank"), COMMAND_TNT_DESCRIPTION("add/widthraw from faction's tnt bank"),
COMMAND_TNT_WIDTHDRAW_NOTENOUGH_SPACE("&cNot enough space in your inventory."), COMMAND_TNT_WIDTHDRAW_NOTENOUGH_SPACE("&cNot enough space in your inventory."),

View File

@@ -274,19 +274,19 @@ hcf:
show: show:
# First line can be {header} for default header, or any string (we recommend &m for smooth lines ;plugin) # First line can be {header} for default header, or any string (we recommend &m for smooth lines ;plugin)
- '&8&m--------------&7 &8<&e{faction}&8> &8&m--------------' - '&8&m--------------&7 &8<&e{faction}&8> &8&m--------------'
- '&6 * &cOwner: &7{leader}' - '&4&l* &cOwner: &f{leader}'
- '&6 * &cDescription: &7{description}' - '&4&l* &cDescription: &f{description}'
- '&6 * &cLand / Power / Max Power: &7{chunks} &8/ &7{power} &8/ &7{maxPower}' - '&4&l* &cLand / Power / Max Power: &f{chunks} &8/ &f{power} &8/ &f{maxPower}'
- '&6 * &cFaction Strikes: &7{strikes}' - '&4&l* &cFaction Strikes: &f{strikes}'
- '&6 * &cFaction Points: &7{faction-points}' - '&4&l* &cFaction Points: &f{faction-points}'
- '&6 * &cFounded: &7{create-date}' - '&4&l* &cFounded: &f{create-date}'
- '&6 * &cBalance: &f{faction-balance}' - '&4&l* &cBalance: &f{faction-balance}'
- '&6 * &cAllies: &5{allies-list}' - '&4&l* &cAllies: &a{allies-list}'
- '&6 * &cEnemies: &c{enemies-list}' - '&4&l* &cEnemies: &4{enemies-list}'
- '&6 * &cOnline Members: &8(&7{online}/{members}&8) &7{online-list}' - '&4&l* &cOnline Members: &8[&f{online}/{members}&8] &a{online-list}'
- '&6 * &cOffline Members: &8(&7{offline}/{members}&8) &7{offline-list}' - '&4&l* &cOffline Members: &8[&f{offline}/{members}&8] &a{offline-list}'
- '&6 * &cAlts: &8{alts}' - '&4&l* &cAlts: &f{alts}'
- '&6 * &cBans: &7{faction-bancount}' - '&4&l* &cBans: &f{faction-bancount}'
- '&8&m----------------------------------------' - '&8&m----------------------------------------'
# For a /f show that does not display fancy messages that are essentially empty, use minimal-show # For a /f show that does not display fancy messages that are essentially empty, use minimal-show
minimal-show: false minimal-show: false
@@ -303,13 +303,15 @@ show-exempt:
# Lines that arent defined wont be sent (home not set, faction not peaceful / permanent, dtr freeze) # Lines that arent defined wont be sent (home not set, faction not peaceful / permanent, dtr freeze)
map: map:
# First line can be {header} for default header, or any string (we recommend &m for smooth lines ;plugin) # First line can be {header} for default header, or any string (we recommend &m for smooth lines ;plugin)
- '&6* &cFaction: &7{faction}' - ''
- '&6* &cOwner: &7{leader}' - '&4&l* &cFaction &f{faction}'
- '&6* &cLand / Power / Max Power: &7{chunks} &8/ &7{power} &8/ &7{maxPower}' - '&4&l* &cOwner &f{leader}'
- '&6* &cAllies: &5{allies-list}' - '&4&l* &cLand / Power / Max Power: &f{chunks} &8/ &f{power} &8/ &f{maxPower}'
- '&6* &cEnemies: &c{enemies-list}' - '&4&l* &cAllies &a{allies-list}'
- '&6* &cOnline Members: &8(&7{online}/{members}&8) {online-list}' - '&4&l* &cEnemies &4{enemies-list}'
- '&6* &cOffline Members: &7{offline-list}' - '&4&l* &cOnline Members &8[&f{online}/{members}&8] &a{online-list}'
- '&4&l* &cOffline Members &4{offline-list}'
- ''
############################################################ ############################################################
# +------------------------------------------------------+ # # +------------------------------------------------------+ #
@@ -426,7 +428,7 @@ help:
fperm-gui: fperm-gui:
relation: relation:
# GUI Name # GUI Name
name: 'Faction Permissions' name: '&8&lFaction Permissions'
# Amount of inventory rows, No larger than 5 # Amount of inventory rows, No larger than 5
rows: 4 rows: 4
# These are the slots where the relations are going to be placed on the first GUI # These are the slots where the relations are going to be placed on the first GUI
@@ -452,7 +454,7 @@ fperm-gui:
enemy: DIAMOND_AXE enemy: DIAMOND_AXE
neutral: WOOD_AXE neutral: WOOD_AXE
Placeholder-Item: Placeholder-Item:
Name: '&cClick to edit {relation} permissions!' Name: '&c{relation}&f permissions!'
action: action:
name: 'Faction Permissions' name: 'Faction Permissions'
rows: 6 rows: 6
@@ -527,14 +529,14 @@ fperm-gui:
# {action-access} Access name eg: Allow, Deny # {action-access} Access name eg: Allow, Deny
# {action-access-color} Access color eg: Allow;GREEN # {action-access-color} Access color eg: Allow;GREEN
placeholder-item: placeholder-item:
name: '&c&l(!) &ePermission: &6&n{action}' name: '&c&lPermission to {action}'
lore: lore:
- '' - ''
- '&6&l * &cStatus: &8[{action-access-color}{action-access}&8]' - '&4&l* &cStatus: &f{action-access-color}{action-access}'
- '' - ''
- '&7Left click to &a&nAllow&7.' - '&2&l* &aLeft click to &alAllow&a.'
- '&7Right click to &c&nDeny&7.' - '&4&l* &cRight click to &c&lDeny&c.'
- '&7Middle click to &7&nUndefined&7.' - '&8&l* &7Middle click to &7&lUndefine&7.'
# Back item will be take you to the previous GUI # Back item will be take you to the previous GUI
back-item: back-item:
Type: ARROW Type: ARROW
@@ -566,16 +568,16 @@ fwarp-gui:
- 15 - 15
warp-item: warp-item:
Type: EYE_OF_ENDER Type: EYE_OF_ENDER
Name: '&c&l(!) &eFaction Warp: &6&n{warp}' Name: '&c&lFaction Warp {warp}'
# {warp-protected} Warp protection by password, Enabled & Disabled # {warp-protected} Warp protection by password, Enabled & Disabled
# {warp-cost} Warp cost # {warp-cost} Warp cost
Lore: Lore:
- '' - ''
- '&6&l * &cPassword: &7{warp-protected}' - '&4&l* &cPassword: &f{warp-protected}'
- '&6&l * &cCost: &7{warp-cost}' - '&4&l* &cCost: &f{warp-cost}'
- '' - ''
- '&c&lNote: &7You need pay to teleport to' - '&7&o(( Tip: You need &c&opay&7&o to &f&oteleport to'
- '&7a faction warp. Unless it''s &nDisabled&7.' - '&7&oa &a&ofaction warp&7&o. Unless it''s &c&oDisabled&7&o. ))'
# Dummy Items # Dummy Items
dummy-item: dummy-item:
Type: BLACK_STAINED_GLASS_PANE Type: BLACK_STAINED_GLASS_PANE
@@ -638,8 +640,13 @@ f-alts:
frules: frules:
Enabled: true Enabled: true
default-rules: default-rules:
- '&cDefault Faction Rules :(' - '&f'
- '&cUse /f rules add <rule> to add a rule' - '&r &r &r &r &r &r &r &r &r &r &r &r &r &r &r &r &r &r &r &r &r &r &f&l«&c&l*&4&l*&c&l*&f&l»&r &c&lFaction Rules &r &f&l«&c&l*&4&l*&c&l*&f&l»'
- '&r &r &r &fWith this feature you can set &cstandars&f for your &afaction'
- '&r &r &r &r &r &r &fPut as many &crules&f as you desire for your &amembers'
- '&f'
- '&r &r &r &r &r &r &r &r &r &r &r &7&o(( Tip: Use &f&o/f rules add <rule>&7&o add a &c&orule&7&o ))'
- ''
############################################################ ############################################################
# +------------------------------------------------------+ # # +------------------------------------------------------+ #
# | Faction TNT Bank | # # | Faction TNT Bank | #
@@ -742,7 +749,7 @@ f-points:
############################################################ ############################################################
MissionGUISize: 3 MissionGUISize: 3
Missions-Enabled: true Missions-Enabled: true
Missions-GUI-Title: '&bFaction Missions' Missions-GUI-Title: '&8&lFaction Missions'
MaximumMissionsAllowedAtOnce: 1 MaximumMissionsAllowedAtOnce: 1
Mission-Progress-Format: '&b&lProgression: &f{progress}&7/&e{total}' Mission-Progress-Format: '&b&lProgression: &f{progress}&7/&e{total}'
DenyMissionsMoreThenOnce: true #this setting to true, means that if they complete a mission they cannot redo the same mission DenyMissionsMoreThenOnce: true #this setting to true, means that if they complete a mission they cannot redo the same mission
@@ -870,7 +877,7 @@ fchest:
fupgrades: fupgrades:
Enabled: true Enabled: true
MainMenu: MainMenu:
Title: '{faction}''s Upgrade Menu' Title: '&8&l{faction}''s Upgrade Menu'
DummyItem: DummyItem:
rows: 5 rows: 5
Name: '&f' Name: '&f'
@@ -887,26 +894,26 @@ fupgrades:
level-2: 500000 level-2: 500000
level-3: 750000 level-3: 750000
CropItem: CropItem:
Name: '&c&lUpgrade Growth Speed' Name: '&c&lGrowth Speed'
Type: WHEAT Type: WHEAT
Amount: 1 Amount: 1
Damage: 0 Damage: 0
Lore: Lore:
- '&7Increase growth speed of crops in claims.' - '&7&oIncrease growth &c&ospeed&7&o of crops in &c&oclaims.'
- '&7&o(Chance to Grow Two Levels)' - '&7&oChance to Grow Two Levels.'
- 'Current level is &e&l&o{level}'
- '' - ''
- '&c&lTier' - '&c&lChances'
- '&f&l* &7Current Level: &3{level}/3' - '&4&l* &cLevel 1: &f10% Chance'
- '&4&l* &cLevel 2: &f20% Chance'
- '&4&l* &cLevel 3: &f30% Chance'
- '&f'
- '&c&lCosts'
- '&4&l* &cLevel 1: &f$250,000'
- '&4&l* &cLevel 2: &f$500,000'
- '&4&l* &cLevel 3: &f$750,000'
- '' - ''
- '&c&lPerks' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))'
- '&f&l* &7Level 1 - &f10% Chance'
- '&7 - Cost: $250,000'
- '&f&l* &7Level 2 - &f20% Chance'
- '&7 - Cost: $500,000'
- '&f&l* &7Level 3 - &f30% Chance'
- '&7 - Cost: $750,000'
- ''
- '&e&lClick to &nUnlock'
slots: slots:
- 31 - 31
EXP: EXP:
@@ -919,25 +926,25 @@ fupgrades:
level-2: 4000000 level-2: 4000000
level-3: 6000000 level-3: 6000000
EXPItem: EXPItem:
Name: '&c&lUpgrade EXP Drop Rate' Name: '&c&lEXP Drop Rate'
Type: EXP_BOTTLE Type: EXP_BOTTLE
Amount: 1 Amount: 1
Damage: 0 Damage: 0
Lore: Lore:
- '&7Increased Vanilla XP gained from monsters.' - '&7&oIncreased Vanilla &e&oEXP&7&o gained from &c&omonsters&7&o.'
- '&7&oYour current level is &e&l&o{level}'
- '' - ''
- '&c&lTier' - '&c&lMultipliers'
- '&f&l* &7Current Level: &3{level}/3' - '&4&l* &cLevel 1: &f1.5'
- '&4&l* &cLevel 2: &f2.0'
- '&4&l* &cLevel 3: &f2.5'
- '&f'
- '&c&lCosts'
- '&4&l* &cLevel 1: &f$2,000,000'
- '&4&l* &cLevel 2: &f$4,000,000'
- '&4&l* &cLevel 3: &f$6,000,000'
- '' - ''
- '&c&lPerks' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))'
- '&f&l* &7Level 1 - &f1.5x Multiplier'
- '&7 - Cost: $2,000,000'
- '&f&l* &7Level 2 - &f2.0x Multiplier'
- '&7 - Cost: $4,000,000'
- '&f&l* &7Level 3 - &f2.5x Multiplier'
- '&7 - Cost: $6,000,000'
- ''
- '&e&lClick to &nUnlock'
slots: slots:
- 32 - 32
Power: Power:
@@ -955,21 +962,21 @@ fupgrades:
Amount: 1 Amount: 1
Damage: 0 Damage: 0
Lore: Lore:
- '&7&o(Increase the amount of power' - '&a&oIncrease&7&o the amount of &c&opower'
- '&7&oyour faction has)' - '&7&oyour &a&ofaction has&7&o.'
- 'Current level is &e&l&o{level}'
- '' - ''
- '&c&lTier' - '&c&lIncreased Faction Power'
- '&f&l* &7Current Level: &3{level}/3' - '&4&l* &cLevel 1: &f100'
- '&4&l* &cLevel 2: &f200'
- '&4&l* &cLevel 3: &f300'
- '&f'
- '&c&lCosts'
- '&4&l* &cLevel 1: &f$1,000,000'
- '&4&l* &cLevel 2: &f$2,000,000'
- '&4&l* &cLevel 3: &f$3,000,000'
- '' - ''
- '&c&lPerks' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))'
- '&f&l* &7Level 1 - &f100 Increased Faction Power'
- '&7 - Cost: $1,000,000'
- '&f&l* &7Level 2 - &f200 Increased Faction Power'
- '&7 - Cost: $2,000,000'
- '&f&l* &7Level 3 - &f300 Increased Faction Power'
- '&7 - Cost: $3,000,000'
- ''
- '&e&lClick to &nUnlock'
slots: slots:
- 22 - 22
Redstone: Redstone:
@@ -980,13 +987,12 @@ fupgrades:
Amount: 1 Amount: 1
Damage: 0 Damage: 0
Lore: Lore:
- '&7&o(Prevents water from being' - '&7&oPrevents &e&owater&7&o from being'
- '&7&oable to break redstone)' - '&7&oable to break &c&oredstone'
- '' - ''
- '&f&l* &7Current Level: &3{level}/1' - '&4&l* &cCost: &f$1,000,000'
- '' - ''
- '&7 - Cost: $1,000,000' - '&7&o(( Tip: &f&oLeft-click&7&o to &c&oupgrade&7&o ))'
- '&e&lClick to &nUnlock'
slots: slots:
- 23 - 23
Spawners: Spawners:
@@ -1000,25 +1006,25 @@ fupgrades:
level-2: 2000000 level-2: 2000000
level-3: 3000000 level-3: 3000000
SpawnerItem: SpawnerItem:
Name: '&c&lUpgrade Spawn Rate' Name: '&c&lSpawn Rate'
Type: MOB_SPAWNER Type: MOB_SPAWNER
Amount: 1 Amount: 1
Damage: 0 Damage: 0
Lore: Lore:
- '&7Decreased mob spawner delay in claims.' - '&c&oDecreased&7&o mob spawner delay in &a&oclaims&7&o.'
- '&7&oYour current level is &e&l&o{level}'
- '' - ''
- '&c&lTier' - '&c&lDecreased Spawner Delay'
- '&f&l* &7Current Level: &3{level}/3' - '&4&l* &cLevel 1: &f0.10%'
- '&4&l* &cLevel 2: &f0.20%'
- '&4&l* &cLevel 3: &f0.30'
- '&f'
- '&c&lCosts'
- '&4&l* &cLevel 1: &f$1,000,000'
- '&4&l* &cLevel 2: &f$2,000,000'
- '&4&l* &cLevel 3: &f$3,000,000'
- '' - ''
- '&c&lPerks' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))'
- '&f&l* &7Level 1 - &f10% Lower Delay'
- '&7 - Cost: $1,000,000'
- '&f&l* &7Level 2 - &f20% Lower Delay'
- '&7 - Cost: $2,000,000'
- '&f&l* &7Level 3 - &f30% Lower Delay'
- '&7 - Cost: $3,000,000'
- ''
- '&e&lClick to &nUnlock'
slots: slots:
- 30 - 30
DamageReduct: DamageReduct:
@@ -1031,26 +1037,25 @@ fupgrades:
level-2: 4000000 level-2: 4000000
level-3: 6000000 level-3: 6000000
ReduceItem: ReduceItem:
Name: '&c&lDamage Reduction Upgrade' Name: '&c&lDamage Reduction'
Type: GOLD_CHESTPLATE Type: GOLD_CHESTPLATE
Amount: 1 Amount: 1
Damage: 0 Damage: 0
Lore: Lore:
- '&7Reduce the amount of damage taken' - '&a&oReduce&7&o the amount of &a&odamage taken&7&o in faction claims.'
- '&7in your faction claims.' - '&7&oYour current level is &e&l&o{level}'
- '' - ''
- '&c&lTier' - '&c&lDamage Increase'
- '&f&l* &7Current Level: &3{level}/3' - '&4&l* &cLevel 1: &f3%'
- '&4&l* &cLevel 2: &f5%'
- '&4&l* &cLevel 3: &f7%'
- '&f'
- '&c&lCosts'
- '&4&l* &cLevel 1: &f$2,000,000'
- '&4&l* &cLevel 2: &f$4,000,000'
- '&4&l* &cLevel 3: &f$6,000,000'
- '' - ''
- '&c&lPerks' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))'
- '&f&l* &7Level 1 - &7((&f-3% Damage Per Hit&7))'
- '&7 - Cost: $2,000,000'
- '&f&l* &7Level 2 - &7((&f-5% Damage Per Hit&7))'
- '&7 - Cost: $4,000,000'
- '&f&l* &7Level 3 - &7((&f-7% Damage Per Hit&7))'
- '&7 - Cost: $6,000,000'
- ''
- '&e&lClick to &nUnlock'
slots: slots:
- 7 - 7
DamageIncrease: DamageIncrease:
@@ -1063,26 +1068,25 @@ fupgrades:
level-2: 4000000 level-2: 4000000
level-3: 6000000 level-3: 6000000
IncreaseItem: IncreaseItem:
Name: '&c&lDamage Increase Upgrade' Name: '&c&lDamage Increase'
Type: DIAMOND_SWORD Type: DIAMOND_SWORD
Amount: 1 Amount: 1
Damage: 0 Damage: 0
Lore: Lore:
- '&7Increase the amount of damage given' - '&a&oIncrease&7&o the amount of &a&odamage given&7&o.'
- '&7in your faction claims.' - '&7&oYour current level is &e&l&o{level}'
- '' - ''
- '&c&lTier' - '&c&lDamage Increase'
- '&f&l* &7Current Level: &3{level}/3' - '&4&l* &cLevel 1: &f3%'
- '&4&l* &cLevel 2: &f5%'
- '&4&l* &cLevel 3: &f7%'
- '&f'
- '&c&lCosts'
- '&4&l* &cLevel 1: &f$2,000,000'
- '&4&l* &cLevel 2: &f$4,000,000'
- '&4&l* &cLevel 3: &f$6,000,000'
- '' - ''
- '&c&lPerks' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))'
- '&f&l* &7Level 1 - &7((&f+3% Damage Per Hit&7))'
- '&7 - Cost: $2,000,000'
- '&f&l* &7Level 2 - &7((&f+5% Damage Per Hit&7))'
- '&7 - Cost: $4,000,000'
- '&f&l* &7Level 3 - &7((&f+7% Damage Per Hit&7))'
- '&7 - Cost: $6,000,000'
- ''
- '&e&lClick to &nUnlock'
slots: slots:
- 1 - 1
TNT: TNT:
@@ -1095,26 +1099,25 @@ fupgrades:
level-2: 4000000 level-2: 4000000
level-3: 6000000 level-3: 6000000
TntItem: TntItem:
Name: '&c&lTNT Bank Upgrade' Name: '&c&lTNT Bank'
Type: TNT Type: TNT
Amount: 1 Amount: 1
Damage: 0 Damage: 0
Lore: Lore:
- '&7Upgrade Your tnt bank limit,' - '&a&oUpgrade&7&o your &a&ofactions tnt&7&o limit.'
- '&7to be eligible to store more tnt.' - '&7&oYour current level is &e&l&o{level}'
- '' - ''
- '&c&lTier' - '&c&lFaction Tnt Limit'
- '&f&l* &7Current Level: &3{level}/3' - '&4&l* &cLevel 1: &f500,000'
- '&4&l* &cLevel 2: &f1,000,000'
- '&4&l* &cLevel 3: &f2,000,000'
- '&f'
- '&c&lCosts'
- '&4&l* &cLevel 1: &f$1,000,000'
- '&4&l* &cLevel 2: &f$2,000,000'
- '&4&l* &cLevel 3: &f$3,000,000'
- '' - ''
- '&c&lPerks' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))'
- '&f&l* &7Level 1 - &f500,000 TNT'
- '&7 - Cost: $2,000,000'
- '&f&l* &7Level 2 - &f1,000,000 TNT'
- '&7 - Cost: $4,000,000'
- '&f&l* &7Level 3 - &f2,000,000 TNT'
- '&7 - Cost: $6,000,000'
- ''
- '&e&lClick to &nUnlock'
slots: slots:
- 21 - 21
Warps: Warps:
@@ -1127,26 +1130,25 @@ fupgrades:
level-2: 2000000 level-2: 2000000
level-3: 3000000 level-3: 3000000
WarpItem: WarpItem:
Name: '&c&lWarp Upgrade' Name: '&c&lWarps'
Type: EYE_OF_ENDER Type: EYE_OF_ENDER
Amount: 1 Amount: 1
Damage: 0 Damage: 0
Lore: Lore:
- '&7Upgrade Your warp limit,' - '&a&oIncrease&7&o the &a&ofaction warp&7&o limit.'
- '&7to be able to set more warps.' - '&7&oYour current level is &e&l&o{level}'
- '' - ''
- '&c&lTier' - '&c&lFaction Warp Limit'
- '&f&l* &7Current Level: &3{level}/3' - '&4&l* &cLevel 1: &f3'
- '&4&l* &cLevel 2: &f4'
- '&4&l* &cLevel 3: &f5'
- '&f'
- '&c&lCosts'
- '&4&l* &cLevel 1: &f$1,000,000'
- '&4&l* &cLevel 2: &f$2,000,000'
- '&4&l* &cLevel 3: &f$3,000,000'
- '' - ''
- '&c&lPerks' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))'
- '&f&l* &7Level 1 - &f3 Warps'
- '&7 - Cost: $1,000,000'
- '&f&l* &7Level 2 - &f4 Warps'
- '&7 - Cost: $2,000,000'
- '&f&l* &7Level 3 - &f5 Warps'
- '&7 - Cost: $3,000,000'
- ''
- '&e&lClick to &nUnlock'
slots: slots:
- 24 - 24
Chest: Chest:
@@ -1160,25 +1162,25 @@ fupgrades:
level-2: 2000000 level-2: 2000000
level-3: 3000000 level-3: 3000000
ChestItem: ChestItem:
Name: '&c&lUpgrade Faction Chest Size' Name: '&c&lFaction Chest'
Type: CHEST Type: CHEST
Amount: 1 Amount: 1
Damage: 0 Damage: 0
Lore: Lore:
- '&7Increased Faction Chest Size.' - '&a&oIncreased&7&o Faction Chest Size.'
- '&7&oYour current level is &e&l&o{level}'
- '' - ''
- '&c&lTier' - '&c&lFaction Chest Size'
- '&f&l* &7Current Level: &3{level}/3' - '&4&l* &cLevel 1: &f2 Rows'
- '&4&l* &cLevel 2: &f3 Rows'
- '&4&l* &cLevel 3: &f4 Rows'
- '&f'
- '&c&lCosts'
- '&4&l* &cLevel 1: &f$1,000,000'
- '&4&l* &cLevel 2: &f$2,000,000'
- '&4&l* &cLevel 3: &f$3,000,000'
- '' - ''
- '&c&lPerks' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))'
- '&f&l* &7Level 1 - &f2 Rows'
- '&7 - Cost: $1,000,000'
- '&f&l* &7Level 2 - &f3 Rows'
- '&7 - Cost: $2,000,000'
- '&f&l* &7Level 3 - &f4 Rows'
- '&7 - Cost: $3,000,000'
- ''
- '&e&lClick to &nUnlock'
slots: slots:
- 20 - 20
Members: Members:
@@ -1191,25 +1193,25 @@ fupgrades:
level-2: 2000000 level-2: 2000000
level-3: 3000000 level-3: 3000000
MembersItem: MembersItem:
Name: '&c&lUpgrade Faction Members' Name: '&c&lFaction Members'
Type: PAPER Type: PAPER
Amount: 1 Amount: 1
Damage: 0 Damage: 0
Lore: Lore:
- '&7Increase faction member limit.' - '&a&oIncrease&7&o the &a&ofaction member&7&o limit.'
- '&7&oYour current level is &e&l&o{level}'
- '' - ''
- '&c&lTier' - '&c&lFaction Member Limit'
- '&f&l* &7Current Level: &3{level}/3' - '&4&l* &cLevel 1: &f30'
- '&4&l* &cLevel 2: &f35'
- '&4&l* &cLevel 3: &f40'
- '&f'
- '&c&lCosts'
- '&4&l* &cLevel 1: &f$1,000,000'
- '&4&l* &cLevel 2: &f$2,000,000'
- '&4&l* &cLevel 3: &f$3,000,000'
- '' - ''
- '&c&lPerks' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))'
- '&f&l* &7Level 1 - &f30 Members'
- '&7 - Cost: $1,000,000'
- '&f&l* &7Level 2 - &f35 Members'
- '&7 - Cost: $2,000,000'
- '&f&l* &7Level 3 - &f40 Members'
- '&7 - Cost: $3,000,000'
- ''
- '&e&lClick to &nUnlock'
slots: slots:
- 40 - 40
Armor: Armor:
@@ -1223,25 +1225,25 @@ fupgrades:
level-2: 2000000 level-2: 2000000
level-3: 3000000 level-3: 3000000
ArmorItem: ArmorItem:
Name: '&c&lReinforced Armor Upgrade' Name: '&c&lReinforced Armor'
Type: DIAMOND_CHESTPLATE Type: DIAMOND_CHESTPLATE
Amount: 1 Amount: 1
Damage: 0 Damage: 0
Lore: Lore:
- '&7Decreases damage to armor.' - '&a&oDecreases&7&o damage done &a&oto armor&7&o.'
- '&7&oYour current level is &e&l&o{level}'
- '' - ''
- '&c&lTier' - '&c&lReinforced Armor'
- '&f&l* &7Current Level: &3{level}/3' - '&4&l* &cLevel 1: &f0.10%'
- '&4&l* &cLevel 2: &f0.15%'
- '&4&l* &cLevel 3: &f0.20%'
- '&f'
- '&c&lCosts'
- '&4&l* &cLevel 1: &f$1,000,000'
- '&4&l* &cLevel 2: &f$2,000,000'
- '&4&l* &cLevel 3: &f$3,000,000'
- '' - ''
- '&c&lPerks' - '&7&o(( Tip: &f&oleft-click&7&o to &c&oupgrade&7&o ))'
- '&f&l* &7Level 1 - &f10% Reduction'
- '&7 - Cost: $1,000,000'
- '&f&l* &7Level 2 - &f15% Reduction'
- '&7 - Cost: $2,000,000'
- '&f&l* &7Level 3 - &f20% Reduction'
- '&7 - Cost: $3,000,000'
- ''
- '&e&lClick to &nUnlock'
slots: slots:
- 4 - 4

View File

@@ -65,6 +65,11 @@ permissions:
factions.kit.halfplayer: factions.kit.halfplayer:
description: Can do all but create factions. description: Can do all but create factions.
children: children:
factions.permissions: true
factions.setdiscord: true
factions.discord: true
factions.paypal: true
factions.paypalset: true
factions.admin: true factions.admin: true
factions.autoclaim: true factions.autoclaim: true
factions.promote: true factions.promote: true