Compare commits

..

47 Commits

Author SHA1 Message Date
Driftay
83a33c2222 Version Change 2020-01-07 15:38:43 -05:00
Driftay
c274918244 Removed everything shield wise for release with bug fixes 2020-01-07 15:37:46 -05:00
Driftay
57833bee13 Fixed TntFill (Again) -_- 2020-01-04 18:49:55 -05:00
Driftay
0a1346f1c2 Made Scoreboard Dummy Proof & Started Adding Shield Tasks Timers and Objects 2020-01-04 18:29:49 -05:00
Driftay
5145ae1714 Allowed players to continue using Essentials fly is Factions Fly is Disabled 2020-01-04 13:23:55 -05:00
Driftay
086ec3e145 Allowed Custom Heads to be in Faction Upgrades 2020-01-04 12:42:53 -05:00
Driftay
d538502457 Added Enchanting on Level 1 or Higher for Upgrades 2020-01-04 12:26:23 -05:00
Driftay
978782e2fe Remade Faction GUI 2020-01-04 12:23:10 -05:00
Driftay
ce1004d318 Removed Stream Code lol 2020-01-04 11:29:44 -05:00
Driftay
3545253844 Version Change 2020-01-03 18:53:52 -05:00
Driftay
ad69019ba6 Fixed F Chest Logging 2020-01-03 18:53:01 -05:00
Driftay
b8f6a05538 Re-added Mis-deleted code 2020-01-03 10:55:22 -05:00
Driftay
98b40d325a Fixed Chest Error, and Fixed Unban TL Translation 2020-01-03 05:04:12 -05:00
Driftay
8f2e58733d Decided to remove alot of open and closing brackets for no reason lol 2020-01-02 10:35:54 -05:00
Driftay
ae17f3d788 Merge remote-tracking branch 'origin/1.6.x' into 1.6.x 2020-01-02 05:02:56 -05:00
DroppingAnvil
a71bbd5b14 remove unused import. 2020-01-01 20:04:02 -06:00
DroppingAnvil
05e1a7297c Change any command (: also refixed tntfill 2020-01-01 19:59:31 -06:00
Driftay
1f9965b13a Fixed NPE Throwing From Console Disband 2020-01-01 02:34:59 -05:00
Driftay
fb32d2155b Fixed Error being thrown with FRenameEvent 2020-01-01 02:11:20 -05:00
Driftay
4c90bae87c F Reserve System ReAdded 2019-12-31 02:56:45 -05:00
Driftay
05cfd5d8b0 Added AutoUpdating FMap on Click to Claim 2019-12-31 02:20:33 -05:00
Driftay
b2fdcd5649 Fixed Click To Claim FLog 2019-12-31 01:45:33 -05:00
Driftay
f4bfa83e24 Added FLog For Click to Claim Map 2019-12-31 01:42:22 -05:00
Driftay
4222dd9689 Added FLog For Claiming Single Chunk 2019-12-31 01:40:04 -05:00
Driftay
ccb2dae890 Version Change 2019-12-31 01:15:30 -05:00
Driftay
f7297c96c4 Flog Material & Slot Fixed 2019-12-31 00:20:00 -05:00
Driftay
87f0810914 Fixed WorldEdit Player Cast 2019-12-31 00:03:57 -05:00
Driftay
016c82fa85 FAudit Slots & Materials Configurable
Fixed IllegalPluginAccessException onDisable
2019-12-30 23:56:59 -05:00
Driftay
fad866cf33 Fixed Bow Boosting 2019-12-29 17:30:12 -05:00
Driftay
c3319ce109 Merge remote-tracking branch 'origin/1.6.x' into 1.6.x 2019-12-29 17:27:03 -05:00
Driftay
ca5d7663f9 Added Default Size for F Chest 2019-12-29 17:26:29 -05:00
DroppingAnvil
cee9c1f4d7 Update README.md 2019-12-28 13:59:12 -06:00
DroppingAnvil
fb03d78234 Update README.md 2019-12-28 13:55:37 -06:00
Driftay
e0134d680e Merge remote-tracking branch 'origin/1.6.x' into 1.6.x 2019-12-28 04:58:52 -05:00
Driftay
8e855bc9bb More Audit Things + Code Cleanup + SaberException Added for Debugging 2019-12-28 04:58:33 -05:00
DroppingAnvil
2772d85603 Added check for Discord system during setup. 2019-12-26 15:25:47 -06:00
Driftay
acf06c78ed Removed Discord statTrace in Login Exception 2019-12-26 14:54:24 -05:00
Driftay
cda1610a58 Added Brand New F Audit Base. 2019-12-24 22:19:49 -05:00
Driftay
5d1e1ea6ed Version Change 2019-12-24 09:32:23 -05:00
Driftay
372eed65a0 Fixed OCD 2019-12-24 09:27:36 -05:00
Driftay
86f92a7fb0 [+] 1.15 Support Added!
[+] Greatly optmized ALOT of Commands!
[+] Removed Portal Travel Agent (Recoding)
[+] Added Administrator Command F Lookup
2019-12-24 09:19:43 -05:00
Driftay
897fdbf83a Added TL Fixture for Drain Description 2019-12-22 18:24:50 -05:00
Driftay
4e11234a08 Added F Drain Command (A Command which allows players with permission to obtain all the money in faction members balances.) 2019-12-22 18:21:17 -05:00
Driftay
3a22bb348e Fixed Spawner Breaking NPE 2019-12-22 01:03:47 -05:00
Driftay
91ca08e66b Fixed Co-Leader Default Permissions 2019-12-21 23:52:14 -05:00
Driftay
11d9f9230b Version Change 2019-12-21 22:05:01 -05:00
Driftay
38cf542d8c Fixed territoryBypassProtectedMaterials - 2 Maps were defined 2019-12-21 22:03:40 -05:00
192 changed files with 3072 additions and 2097 deletions

View File

@@ -36,8 +36,8 @@ Moving forward we plan to take all suggestions into consideration, as they come
We Plan on Releasing the latest and greatest factions/skyblock/prison plugins minecraft has to offer and wont settle for anything less We Plan on Releasing the latest and greatest factions/skyblock/prison plugins minecraft has to offer and wont settle for anything less
## Support ## Support
Our Discord is Currently In Progress of a Massive Overhaul, but we still encourage our community to join and express any concerns/questions/suggestions they may have! Our Discord is Currently In Progress of a Massive Overhaul, but we still encourage our community to join and express any concerns/questions/suggestions they may have
https://discord.gg/37JvmM https://Discord.Saber.pw
Look forward to a bright future and a journey with all of you! Look forward to a bright future and a journey with all of you!

14
pom.xml
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.2.0-BETA</version> <version>1.6.9.5-2.2.5-RC</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>SaberFactions</name> <name>SaberFactions</name>
@@ -105,7 +105,7 @@
<dependency> <dependency>
<groupId>org.spigotmc</groupId> <groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId> <artifactId>spigot-api</artifactId>
<version>1.13-R0.1-SNAPSHOT</version> <version>1.15.1-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
<exclusions> <exclusions>
<exclusion> <exclusion>
@@ -385,6 +385,12 @@
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>com.mojang</groupId>
<artifactId>authlib</artifactId>
<version>1.5.21</version>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>me.rayzr522</groupId> <groupId>me.rayzr522</groupId>
<artifactId>jsonmessage</artifactId> <artifactId>jsonmessage</artifactId>
@@ -405,6 +411,10 @@
<name>bintray</name> <name>bintray</name>
<url>http://jcenter.bintray.com</url> <url>http://jcenter.bintray.com</url>
</repository> </repository>
<repository>
<id>mojang-repo</id>
<url>https://libraries.minecraft.net/</url>
</repository>
<repository> <repository>
<id>net.coreprotect</id> <id>net.coreprotect</id>
<url>http://maven.playpro.com/</url> <url>http://maven.playpro.com/</url>

View File

@@ -99,6 +99,12 @@ public class Conf {
public static boolean autoLeaveDeleteFPlayerData = true; // Let them just remove player from Faction. public static boolean autoLeaveDeleteFPlayerData = true; // Let them just remove player from Faction.
public static boolean worldGuardChecking = false; public static boolean worldGuardChecking = false;
public static boolean worldGuardBuildPriority = false; public static boolean worldGuardBuildPriority = false;
public static boolean factionsDrainEnabled = false;
//RESERVE
public static boolean useReserveSystem = true;
//AUDIT
public static boolean useAuditSystem = true;
//DISCORD //DISCORD
public static boolean useDiscordSystem = false; public static boolean useDiscordSystem = false;
public static String discordBotToken = "<token here>"; public static String discordBotToken = "<token here>";
@@ -237,6 +243,7 @@ public class Conf {
public static boolean ownedMessageInsideTerritory = true; public static boolean ownedMessageInsideTerritory = true;
public static boolean ownedMessageByChunk = false; public static boolean ownedMessageByChunk = false;
public static boolean pistonProtectionThroughDenyBuild = true; public static boolean pistonProtectionThroughDenyBuild = true;
public static Set<Material> loggableMaterials = EnumSet.noneOf(Material.class);
public static Set<Material> territoryProtectedMaterials = EnumSet.noneOf(Material.class); public static Set<Material> territoryProtectedMaterials = EnumSet.noneOf(Material.class);
public static Set<Material> territoryDenyUsageMaterials = EnumSet.noneOf(Material.class); public static Set<Material> territoryDenyUsageMaterials = EnumSet.noneOf(Material.class);
public static Set<Material> territoryProtectedMaterialsWhenOffline = EnumSet.noneOf(Material.class); public static Set<Material> territoryProtectedMaterialsWhenOffline = EnumSet.noneOf(Material.class);
@@ -252,7 +259,6 @@ public class Conf {
public static Set<Material> territoryCancelAndAllowItemUseMaterial = new HashSet<>(); public static Set<Material> territoryCancelAndAllowItemUseMaterial = new HashSet<>();
public static Set<Material> territoryDenySwitchMaterials = new HashSet<>(); public static Set<Material> territoryDenySwitchMaterials = new HashSet<>();
public static Set<Material> territoryBypasssProtectedMaterials = EnumSet.noneOf(Material.class);
public static boolean allowCreeperEggingChests = true; public static boolean allowCreeperEggingChests = true;
// Economy settings // Economy settings
@@ -553,7 +559,6 @@ public class Conf {
safeZoneNerfedCreatureTypes.add(EntityType.ZOMBIE); safeZoneNerfedCreatureTypes.add(EntityType.ZOMBIE);
// Is this called lazy load? // Is this called lazy load?
defaultFactionPermissions.put("LEADER", new DefaultPermissions(true));
defaultFactionPermissions.put("COLEADER", new DefaultPermissions(true)); defaultFactionPermissions.put("COLEADER", new DefaultPermissions(true));
defaultFactionPermissions.put("MODERATOR", new DefaultPermissions(true)); defaultFactionPermissions.put("MODERATOR", new DefaultPermissions(true));
defaultFactionPermissions.put("NORMAL MEMBER", new DefaultPermissions(false)); defaultFactionPermissions.put("NORMAL MEMBER", new DefaultPermissions(false));

View File

@@ -14,7 +14,6 @@ import java.util.Set;
public class FLocation implements Serializable { public class FLocation implements Serializable {
private static final long serialVersionUID = -8292915234027387983L; private static final long serialVersionUID = -8292915234027387983L;
private static final boolean worldBorderSupport; private static final boolean worldBorderSupport;
static { static {
boolean worldBorderClassPresent = false; boolean worldBorderClassPresent = false;
try { try {
@@ -22,7 +21,6 @@ public class FLocation implements Serializable {
worldBorderClassPresent = true; worldBorderClassPresent = true;
} catch (ClassNotFoundException ignored) { } catch (ClassNotFoundException ignored) {
} }
worldBorderSupport = worldBorderClassPresent; worldBorderSupport = worldBorderClassPresent;
} }
@@ -45,7 +43,7 @@ public class FLocation implements Serializable {
} }
public FLocation(Location location) { public FLocation(Location location) {
this(location.getWorld().getName(), blockToChunk(location.getBlockX()), blockToChunk(location.getBlockZ())); this(Objects.requireNonNull(location.getWorld()).getName(), blockToChunk(location.getBlockX()), blockToChunk(location.getBlockZ()));
} }
public FLocation(Player player) { public FLocation(Player player) {
@@ -152,6 +150,8 @@ public class FLocation implements Serializable {
return "" + x + "," + z; return "" + x + "," + z;
} }
public String formatXAndZ(String splitter) { return chunkToBlock(this.x) + "x" + splitter + " " + chunkToBlock(this.z) + "z"; }
//----------------------------------------------// //----------------------------------------------//
// Misc Geometry // Misc Geometry
//----------------------------------------------// //----------------------------------------------//
@@ -178,9 +178,9 @@ public class FLocation implements Serializable {
} }
public boolean isInChunk(Location loc) { public boolean isInChunk(Location loc) {
if (loc == null) { if(loc == null) return false;
return false; if(loc.getWorld() == null) return false;
}
Chunk chunk = loc.getChunk(); Chunk chunk = loc.getChunk();
return loc.getWorld().getName().equalsIgnoreCase(getWorldName()) && chunk.getX() == x && chunk.getZ() == z; return loc.getWorld().getName().equalsIgnoreCase(getWorldName()) && chunk.getX() == x && chunk.getZ() == z;
} }
@@ -192,18 +192,23 @@ public class FLocation implements Serializable {
* @return whether this location is outside of the border * @return whether this location is outside of the border
*/ */
public boolean isOutsideWorldBorder(int buffer) { public boolean isOutsideWorldBorder(int buffer) {
if (!worldBorderSupport) { if (!worldBorderSupport) return false;
return false;
}
WorldBorder border = getWorld().getWorldBorder(); WorldBorder border = getWorld().getWorldBorder();
Chunk chunk = border.getCenter().getChunk(); Location center = border.getCenter();
double size = border.getSize();
int lim = FLocation.chunkToRegion((int) border.getSize()) - buffer; int bufferBlocks = buffer << 4;
int diffX = chunk.getX() - x;
int diffZ = chunk.getZ() - z;
return (diffX > lim || diffZ > lim) || (-diffX >= lim || -diffZ >= lim); double borderMinX = (center.getX() - size / 2.0D) + bufferBlocks;
double borderMinZ = (center.getZ() - size / 2.0D) + bufferBlocks;
double borderMaxX = (center.getX() + size / 2.0D) - bufferBlocks;
double borderMaxZ = (center.getZ() + size / 2.0D) - bufferBlocks;
int chunkMinX = this.x << 4;
int chunkMaxX = chunkMinX | 15;
int chunkMinZ = this.z << 4;
int chunkMaxZ = chunkMinZ | 15;
return (chunkMinX >= borderMaxX) || (chunkMinZ >= borderMaxZ) || (chunkMaxX <= borderMinX) || (chunkMaxZ <= borderMinZ);
} }
//----------------------------------------------// //----------------------------------------------//
@@ -213,10 +218,7 @@ public class FLocation implements Serializable {
double radiusSquared = radius * radius; double radiusSquared = radius * radius;
Set<FLocation> ret = new LinkedHashSet<>(); Set<FLocation> ret = new LinkedHashSet<>();
if (radius <= 0) { if (radius <= 0) return ret;
return ret;
}
int xfrom = (int) Math.floor(this.x - radius); int xfrom = (int) Math.floor(this.x - radius);
int xto = (int) Math.ceil(this.x + radius); int xto = (int) Math.ceil(this.x + radius);
int zfrom = (int) Math.floor(this.z - radius); int zfrom = (int) Math.floor(this.z - radius);
@@ -230,7 +232,6 @@ public class FLocation implements Serializable {
} }
} }
} }
return ret; return ret;
} }
@@ -246,13 +247,8 @@ public class FLocation implements Serializable {
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (obj == this) { if (obj == this) return true;
return true; if (!(obj instanceof FLocation)) return false;
}
if (!(obj instanceof FLocation)) {
return false;
}
FLocation that = (FLocation) obj; FLocation that = (FLocation) obj;
return this.x == that.x && this.z == that.z && (Objects.equals(this.worldName, that.worldName)); return this.x == that.x && this.z == that.z && (Objects.equals(this.worldName, that.worldName));
} }

View File

@@ -441,4 +441,7 @@ public interface Faction extends EconomyParticipator {
void paypalSet(String paypal); void paypalSet(String paypal);
// -------------------------------
// Shields
// -------------------------------
} }

View File

@@ -4,13 +4,15 @@ import ch.njol.skript.Skript;
import ch.njol.skript.SkriptAddon; import ch.njol.skript.SkriptAddon;
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.cmd.CmdAutoHelp; import com.massivecraft.factions.cmd.*;
import com.massivecraft.factions.cmd.CommandContext; import com.massivecraft.factions.cmd.audit.FChestListener;
import com.massivecraft.factions.cmd.FCmdRoot; import com.massivecraft.factions.cmd.audit.FLogManager;
import com.massivecraft.factions.cmd.FCommand; import com.massivecraft.factions.cmd.audit.FLogType;
import com.massivecraft.factions.cmd.check.CheckTask; import com.massivecraft.factions.cmd.check.CheckTask;
import com.massivecraft.factions.cmd.check.WeeWooTask; import com.massivecraft.factions.cmd.check.WeeWooTask;
import com.massivecraft.factions.cmd.chest.AntiChestListener; import com.massivecraft.factions.cmd.chest.AntiChestListener;
import com.massivecraft.factions.cmd.reserve.ListParameterizedType;
import com.massivecraft.factions.cmd.reserve.ReserveObject;
import com.massivecraft.factions.discord.Discord; import com.massivecraft.factions.discord.Discord;
import com.massivecraft.factions.discord.DiscordListener; import com.massivecraft.factions.discord.DiscordListener;
import com.massivecraft.factions.integration.Econ; import com.massivecraft.factions.integration.Econ;
@@ -29,7 +31,7 @@ import com.massivecraft.factions.zcore.MPlugin;
import com.massivecraft.factions.zcore.fperms.Access; import com.massivecraft.factions.zcore.fperms.Access;
import com.massivecraft.factions.zcore.fperms.Permissable; import com.massivecraft.factions.zcore.fperms.Permissable;
import com.massivecraft.factions.zcore.fperms.PermissableAction; import com.massivecraft.factions.zcore.fperms.PermissableAction;
import com.massivecraft.factions.zcore.fupgrades.*; import com.massivecraft.factions.zcore.fupgrades.UpgradesListener;
import com.massivecraft.factions.zcore.util.TextUtil; import com.massivecraft.factions.zcore.util.TextUtil;
import me.lucko.commodore.CommodoreProvider; import me.lucko.commodore.CommodoreProvider;
import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.Economy;
@@ -37,8 +39,6 @@ import net.milkbowl.vault.permission.Permission;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.AsyncPlayerChatEvent;
@@ -51,6 +51,8 @@ import org.bukkit.plugin.RegisteredServiceProvider;
import java.io.*; import java.io.*;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.logging.Level; import java.util.logging.Level;
@@ -90,6 +92,8 @@ public class FactionsPlugin extends MPlugin {
private Listener[] eventsListener; private Listener[] eventsListener;
public List<String> itemList = getConfig().getStringList("fchest.Items-Not-Allowed"); public List<String> itemList = getConfig().getStringList("fchest.Items-Not-Allowed");
private Worldguard wg; private Worldguard wg;
private FLogManager fLogManager;
private List<ReserveObject> reserveObjects;
public FactionsPlugin() { public FactionsPlugin() {
@@ -119,25 +123,19 @@ public class FactionsPlugin extends MPlugin {
} }
public void playSoundForAll(String sound) { public void playSoundForAll(String sound) {
for (Player pl : Bukkit.getOnlinePlayers()) { for (Player pl : Bukkit.getOnlinePlayers()) playSound(pl, sound);
playSound(pl, sound);
}
} }
public void playSoundForAll(List<String> sounds) { public void playSoundForAll(List<String> sounds) {
for (Player pl : Bukkit.getOnlinePlayers()) { for (Player pl : Bukkit.getOnlinePlayers()) playSound(pl, sounds);
playSound(pl, sounds);
}
} }
public void playSound(Player p, List<String> sounds) { public void playSound(Player p, List<String> sounds) {
for (String sound : sounds) { for (String sound : sounds) playSound(p, sound);
playSound(p, sound);
}
} }
public void playSound(Player p, String sound) { public void playSound(Player p, String sound) {
float pitch = Float.valueOf(sound.split(":")[1]); float pitch = Float.parseFloat(sound.split(":")[1]);
sound = sound.split(":")[0]; sound = sound.split(":")[0];
p.playSound(p.getLocation(), Sound.valueOf(sound), pitch, 5.0F); p.playSound(p.getLocation(), Sound.valueOf(sound), pitch, 5.0F);
} }
@@ -171,9 +169,7 @@ public class FactionsPlugin extends MPlugin {
migrateFPlayerLeaders(); migrateFPlayerLeaders();
log("==== End Setup ===="); log("==== End Setup ====");
if (!preEnable()) { if (!preEnable()) return;
return;
}
this.loadSuccessful = false; this.loadSuccessful = false;
if (!new File(this.getDataFolder() + "/config.yml").exists()) { if (!new File(this.getDataFolder() + "/config.yml").exists()) {
@@ -184,6 +180,7 @@ public class FactionsPlugin extends MPlugin {
PermissionList.generateFile(); PermissionList.generateFile();
// Load Conf from disk // Load Conf from disk
Conf.load(); Conf.load();
fLogManager = new FLogManager();
//Dependency checks //Dependency checks
if (Conf.dependencyCheck && (!Bukkit.getPluginManager().isPluginEnabled("Vault") && !Bukkit.getPluginManager().isPluginEnabled("Essentials"))) { if (Conf.dependencyCheck && (!Bukkit.getPluginManager().isPluginEnabled("Vault") && !Bukkit.getPluginManager().isPluginEnabled("Essentials"))) {
divider(); divider();
@@ -210,20 +207,16 @@ public class FactionsPlugin extends MPlugin {
fPlayer.resetFactionData(false); fPlayer.resetFactionData(false);
continue; continue;
} }
if (fPlayer.isAlt()) { if (fPlayer.isAlt()) faction.addAltPlayer(fPlayer);
faction.addAltPlayer(fPlayer); else faction.addFPlayer(fPlayer);
} else {
faction.addFPlayer(fPlayer);
}
} }
if (getConfig().getBoolean("enable-faction-flight", true)) UtilFly.run();
if (getConfig().getBoolean("enable-faction-flight", true)) {
UtilFly.run();
}
Board.getInstance().load(); Board.getInstance().load();
Board.getInstance().clean(); Board.getInstance().clean();
//Load command aliases
Aliases.load();
// Add Base Commands // Add Base Commands
this.cmdBase = new FCmdRoot(); this.cmdBase = new FCmdRoot();
this.cmdAutoHelp = new CmdAutoHelp(); this.cmdAutoHelp = new CmdAutoHelp();
@@ -243,9 +236,7 @@ public class FactionsPlugin extends MPlugin {
log("Minecraft Version 1.9 or higher found, using non packet based particle API"); log("Minecraft Version 1.9 or higher found, using non packet based particle API");
} }
if (getConfig().getBoolean("enable-faction-flight")) { if (getConfig().getBoolean("enable-faction-flight")) factionsFlight = true;
factionsFlight = true;
}
if (getServer().getPluginManager().getPlugin("Skript") != null) { if (getServer().getPluginManager().getPlugin("Skript") != null) {
log("Skript was found! Registering FactionsPlugin Addon..."); log("Skript was found! Registering FactionsPlugin Addon...");
@@ -259,11 +250,11 @@ public class FactionsPlugin extends MPlugin {
} }
if (Conf.useCheckSystem) { if (Conf.useCheckSystem) {
int minute = 1200; int minute = 1200;
this.getServer().getScheduler().runTaskTimerAsynchronously(this, new CheckTask(this, 3), 0L, (long) (minute * 3)); this.getServer().getScheduler().runTaskTimerAsynchronously(this, new CheckTask(this, 3), 0L, minute * 3);
this.getServer().getScheduler().runTaskTimerAsynchronously(this, new CheckTask(this, 5), 0L, (long) (minute * 5)); this.getServer().getScheduler().runTaskTimerAsynchronously(this, new CheckTask(this, 5), 0L, minute * 5);
this.getServer().getScheduler().runTaskTimerAsynchronously(this, new CheckTask(this, 10), 0L, (long) (minute * 10)); this.getServer().getScheduler().runTaskTimerAsynchronously(this, new CheckTask(this, 10), 0L, minute * 10);
this.getServer().getScheduler().runTaskTimerAsynchronously(this, new CheckTask(this, 15), 0L, (long) (minute * 15)); this.getServer().getScheduler().runTaskTimerAsynchronously(this, new CheckTask(this, 15), 0L, minute * 15);
this.getServer().getScheduler().runTaskTimerAsynchronously(this, new CheckTask(this, 30), 0L, (long) (minute * 30)); this.getServer().getScheduler().runTaskTimerAsynchronously(this, new CheckTask(this, 30), 0L, minute * 30);
this.getServer().getScheduler().runTaskTimer(this, CheckTask::cleanupTask, 0L, 1200L); this.getServer().getScheduler().runTaskTimer(this, CheckTask::cleanupTask, 0L, 1200L);
this.getServer().getScheduler().runTaskTimerAsynchronously(this, new WeeWooTask(this), 600L, 600L); this.getServer().getScheduler().runTaskTimerAsynchronously(this, new WeeWooTask(this), 600L, 600L);
} }
@@ -271,6 +262,7 @@ public class FactionsPlugin extends MPlugin {
new Discord(this); new Discord(this);
ShopConfig.setup(); ShopConfig.setup();
fLogManager.loadLogs(this);
getServer().getPluginManager().registerEvents(factionsPlayerListener = new FactionsPlayerListener(), this); getServer().getPluginManager().registerEvents(factionsPlayerListener = new FactionsPlayerListener(), this);
@@ -280,9 +272,10 @@ public class FactionsPlugin extends MPlugin {
new FactionsEntityListener(), new FactionsEntityListener(),
new FactionsExploitListener(), new FactionsExploitListener(),
new FactionsBlockListener(), new FactionsBlockListener(),
new FUpgradesGUI(),
new UpgradesListener(), new UpgradesListener(),
new MissionHandler(this), new MissionHandler(this),
new FChestListener(),
new MenuListener(),
new AntiChestListener() new AntiChestListener()
}; };
@@ -292,7 +285,25 @@ public class FactionsPlugin extends MPlugin {
this.getCommand(refCommand).setExecutor(cmdBase); this.getCommand(refCommand).setExecutor(cmdBase);
if (!CommodoreProvider.isSupported()) this.getCommand(refCommand).setTabCompleter(this); if (!CommodoreProvider.isSupported()) this.getCommand(refCommand).setTabCompleter(this);
reserveObjects = new ArrayList<>();
String path = Paths.get(this.getDataFolder().getAbsolutePath()).toAbsolutePath().toString() + File.separator + "reserves.json";
File file = new File(path);
try {
String json;
if (!file.exists()) {
file.getParentFile().mkdirs();
file.createNewFile();
}
json = String.join("", Files.readAllLines(Paths.get(file.getPath()))).replace("\n", "").replace("\r", "");
if (json.equalsIgnoreCase("")) {
Files.write(Paths.get(path), "[]".getBytes());
json = "[]";
}
reserveObjects = this.getGsonBuilder().create().fromJson(json, new ListParameterizedType(ReserveObject.class));
if (reserveObjects == null) reserveObjects = new ArrayList<>();
} catch (Exception e) {
e.printStackTrace();
}
if (getDescription().getFullName().contains("BETA")) { if (getDescription().getFullName().contains("BETA")) {
divider(); divider();
System.out.println("You are using a BETA version of the plugin!"); System.out.println("You are using a BETA version of the plugin!");
@@ -349,7 +360,6 @@ public class FactionsPlugin extends MPlugin {
try { try {
BufferedReader br = new BufferedReader(new FileReader(fplayerFile)); BufferedReader br = new BufferedReader(new FileReader(fplayerFile));
System.out.println("Migrating old players.json file."); System.out.println("Migrating old players.json file.");
String line; String line;
while ((line = br.readLine()) != null) { while ((line = br.readLine()) != null) {
if (line.contains("\"role\": \"ADMIN\"")) { if (line.contains("\"role\": \"ADMIN\"")) {
@@ -381,9 +391,7 @@ public class FactionsPlugin extends MPlugin {
private boolean setupPermissions() { private boolean setupPermissions() {
try { try {
RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class); RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class);
if (rsp != null) { if (rsp != null) perms = rsp.getProvider();
perms = rsp.getProvider();
}
} catch (NoClassDefFoundError ex) { } catch (NoClassDefFoundError ex) {
return false; return false;
} }
@@ -421,9 +429,8 @@ public class FactionsPlugin extends MPlugin {
@Override @Override
public void onDisable() { public void onDisable() {
// only save data if plugin actually completely loaded successfully // only save data if plugin actually completely loaded successfully
if (this.loadSuccessful) { if (this.loadSuccessful) Conf.saveSync();
Conf.saveSync();
}
if (AutoLeaveTask != null) { if (AutoLeaveTask != null) {
this.getServer().getScheduler().cancelTask(AutoLeaveTask); this.getServer().getScheduler().cancelTask(AutoLeaveTask);
@@ -431,13 +438,16 @@ public class FactionsPlugin extends MPlugin {
} }
DiscordListener.saveGuilds(); DiscordListener.saveGuilds();
super.onDisable(); super.onDisable();
try {
fLogManager.saveLogs();
} catch (Exception e) {
e.printStackTrace();
}
} }
public void startAutoLeaveTask(boolean restartIfRunning) { public void startAutoLeaveTask(boolean restartIfRunning) {
if (AutoLeaveTask != null) { if (AutoLeaveTask != null) {
if (!restartIfRunning) { if (!restartIfRunning) return;
return;
}
this.getServer().getScheduler().cancelTask(AutoLeaveTask); this.getServer().getScheduler().cancelTask(AutoLeaveTask);
} }
@@ -489,9 +499,7 @@ public class FactionsPlugin extends MPlugin {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] split) { public boolean onCommand(CommandSender sender, Command command, String label, String[] split) {
if (split.length == 0) { if (split.length == 0) return handleCommand(sender, "/f help", false);
return handleCommand(sender, "/f help", false);
}
// otherwise, needs to be handled; presumably another plugin directly ran the command // otherwise, needs to be handled; presumably another plugin directly ran the command
String cmd = Conf.baseCommandAliases.isEmpty() ? "/f" : "/" + Conf.baseCommandAliases.get(0); String cmd = Conf.baseCommandAliases.isEmpty() ? "/f" : "/" + Conf.baseCommandAliases.get(0);
@@ -504,8 +512,6 @@ public class FactionsPlugin extends MPlugin {
// Must be a LinkedList to prevent UnsupportedOperationException. // Must be a LinkedList to prevent UnsupportedOperationException.
List<String> argsList = new LinkedList<>(Arrays.asList(args)); List<String> argsList = new LinkedList<>(Arrays.asList(args));
CommandContext context = new CommandContext(sender, argsList, alias); CommandContext context = new CommandContext(sender, argsList, alias);
String cmd = Conf.baseCommandAliases.isEmpty() ? "/f" : "/" + Conf.baseCommandAliases.get(0);
// String cmdValid = (cmd + " " + TextUtil.implode(context.args, " ")).trim();
List<FCommand> commandsList = cmdBase.subCommands; List<FCommand> commandsList = cmdBase.subCommands;
FCommand commandsEx = cmdBase; FCommand commandsEx = cmdBase;
List<String> completions = new ArrayList<>(); List<String> completions = new ArrayList<>();
@@ -534,16 +540,12 @@ public class FactionsPlugin extends MPlugin {
} }
} }
String lastArg = args[args.length - 1].toLowerCase(); String lastArg = args[args.length - 1].toLowerCase();
completions = completions.stream() completions = completions.stream()
.filter(m -> m.toLowerCase().startsWith(lastArg)) .filter(m -> m.toLowerCase().startsWith(lastArg))
.collect(Collectors.toList()); .collect(Collectors.toList());
return completions; return completions;
} else { } else {
String lastArg = args[args.length - 1].toLowerCase(); String lastArg = args[args.length - 1].toLowerCase();
for (Role value : Role.values()) completions.add(value.nicename); for (Role value : Role.values()) completions.add(value.nicename);
for (Relation value : Relation.values()) completions.add(value.nicename); for (Relation value : Relation.values()) completions.add(value.nicename);
// The stream and foreach from the old implementation looped 2 times, by looping all players -> filtered -> looped filter and added -> filtered AGAIN at the end. // The stream and foreach from the old implementation looped 2 times, by looping all players -> filtered -> looped filter and added -> filtered AGAIN at the end.
@@ -556,22 +558,6 @@ public class FactionsPlugin extends MPlugin {
} }
} }
public void createTimedHologram(final Location location, String text, Long timeout) {
ArmorStand as = (ArmorStand) location.add(0.5, 1, 0.5).getWorld().spawnEntity(location, EntityType.ARMOR_STAND); //Spawn the ArmorStand
as.setVisible(false); //Makes the ArmorStand invisible
as.setGravity(false); //Make sure it doesn't fall
as.setCanPickupItems(false); //I'm not sure what happens if you leave this as it is, but you might as well disable it
as.setCustomName(FactionsPlugin.instance.color(text)); //Set this to the text you want
as.setCustomNameVisible(true); //This makes the text appear no matter if your looking at the entity or not
final ArmorStand armorStand = as;
Bukkit.getScheduler().scheduleSyncDelayedTask(FactionsPlugin.instance, () -> {
armorStand.remove();
getLogger().info("Removing Hologram.");
}
, timeout * 20);
}
// -------------------------------------------- // // -------------------------------------------- //
// Functions for other plugins to hook into // Functions for other plugins to hook into
@@ -598,11 +584,8 @@ public class FactionsPlugin extends MPlugin {
// Does player have Faction Chat enabled? If so, chat plugins should preferably not do channels, // Does player have Faction Chat enabled? If so, chat plugins should preferably not do channels,
// local chat, or anything else which targets individual recipients, so Faction Chat can be done // local chat, or anything else which targets individual recipients, so Faction Chat can be done
public boolean isPlayerFactionChatting(Player player) { public boolean isPlayerFactionChatting(Player player) {
if (player == null) { if (player == null) return false;
return false;
}
FPlayer me = FPlayers.getInstance().getByPlayer(player); FPlayer me = FPlayers.getInstance().getByPlayer(player);
return me != null && me.getChatMode().isAtLeast(ChatMode.ALLIANCE); return me != null && me.getChatMode().isAtLeast(ChatMode.ALLIANCE);
} }
@@ -623,15 +606,11 @@ public class FactionsPlugin extends MPlugin {
public String getPlayerFactionTagRelation(Player speaker, Player listener) { public String getPlayerFactionTagRelation(Player speaker, Player listener) {
String tag = "~"; String tag = "~";
if (speaker == null) { if (speaker == null) return tag;
return tag;
}
FPlayer me = FPlayers.getInstance().getByPlayer(speaker); FPlayer me = FPlayers.getInstance().getByPlayer(speaker);
if (me == null) { if (me == null) return tag;
return tag;
}
// if listener isn't set, or config option is disabled, give back uncolored tag // if listener isn't set, or config option is disabled, give back uncolored tag
if (listener == null || !Conf.chatTagRelationColored) { if (listener == null || !Conf.chatTagRelationColored) {
tag = me.getChatTag().trim(); tag = me.getChatTag().trim();
@@ -639,29 +618,28 @@ public class FactionsPlugin extends MPlugin {
FPlayer you = FPlayers.getInstance().getByPlayer(listener); FPlayer you = FPlayers.getInstance().getByPlayer(listener);
if (you == null) { if (you == null) {
tag = me.getChatTag().trim(); tag = me.getChatTag().trim();
} else // everything checks out, give the colored tag } else { // everything checks out, give the colored tag
{
tag = me.getChatTag(you).trim(); tag = me.getChatTag(you).trim();
} }
} }
if (tag.isEmpty()) { if (tag.isEmpty()) tag = "~";
tag = "~"; return tag;
} }
return tag;
public FLogManager getFlogManager() {
return fLogManager;
}
public void logFactionEvent(Faction faction, FLogType type, String... arguments) {
this.fLogManager.log(faction, type, arguments);
} }
// Get a player's title within their faction, mainly for usage by chat plugins for local/channel chat // Get a player's title within their faction, mainly for usage by chat plugins for local/channel chat
public String getPlayerTitle(Player player) { public String getPlayerTitle(Player player) {
if (player == null) { if (player == null) return "";
return "";
}
FPlayer me = FPlayers.getInstance().getByPlayer(player); FPlayer me = FPlayers.getInstance().getByPlayer(player);
if (me == null) { if (me == null) return "";
return "";
}
return me.getTitle().trim(); return me.getTitle().trim();
} }
@@ -672,9 +650,7 @@ public class FactionsPlugin extends MPlugin {
//colors a string list //colors a string list
public List<String> colorList(List<String> lore) { public List<String> colorList(List<String> lore) {
for (int i = 0; i <= lore.size() - 1; i++) { for (int i = 0; i <= lore.size() - 1; i++) lore.set(i, color(lore.get(i)));
lore.set(i, color(lore.get(i)));
}
return lore; return lore;
} }
@@ -683,14 +659,16 @@ public class FactionsPlugin extends MPlugin {
return Factions.getInstance().getFactionTags(); return Factions.getInstance().getFactionTags();
} }
public List<ReserveObject> getFactionReserves() {
return this.reserveObjects;
}
// Get a list of all players in the specified faction // Get a list of all players in the specified faction
public Set<String> getPlayersInFaction(String factionTag) { public Set<String> getPlayersInFaction(String factionTag) {
Set<String> players = new HashSet<>(); Set<String> players = new HashSet<>();
Faction faction = Factions.getInstance().getByTag(factionTag); Faction faction = Factions.getInstance().getByTag(factionTag);
if (faction != null) { if (faction != null) {
for (FPlayer fplayer : faction.getFPlayers()) { for (FPlayer fplayer : faction.getFPlayers()) players.add(fplayer.getName());
players.add(fplayer.getName());
}
} }
return players; return players;
} }
@@ -700,9 +678,7 @@ public class FactionsPlugin extends MPlugin {
Set<String> players = new HashSet<>(); Set<String> players = new HashSet<>();
Faction faction = Factions.getInstance().getByTag(factionTag); Faction faction = Factions.getInstance().getByTag(factionTag);
if (faction != null) { if (faction != null) {
for (FPlayer fplayer : faction.getFPlayersWhereOnline(true)) { for (FPlayer fplayer : faction.getFPlayersWhereOnline(true)) players.add(fplayer.getName());
players.add(fplayer.getName());
}
} }
return players; return players;
} }
@@ -722,9 +698,7 @@ public class FactionsPlugin extends MPlugin {
} }
public void debug(Level level, String s) { public void debug(Level level, String s) {
if (getConfig().getBoolean("debug", false)) { if (getConfig().getBoolean("debug", false)) getLogger().log(level, s);
getLogger().log(level, s);
}
} }
public FactionsPlayerListener getFactionsPlayerListener() { public FactionsPlayerListener getFactionsPlayerListener() {

View File

@@ -0,0 +1,149 @@
package com.massivecraft.factions.cmd;
import com.massivecraft.factions.FactionsPlugin;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class Aliases {
/**
* @author DroppingAnvil
*/
public static ArrayList<String> alts_alts = new ArrayList<>(Arrays.asList("alts", "alt"));
public static ArrayList<String> alts_list = new ArrayList<>(Arrays.asList("list", "l"));
public static ArrayList<String> alts_invite = new ArrayList<>(Collections.singletonList("invite"));
public static ArrayList<String> alts_kick = new ArrayList<>(Collections.singletonList("kick"));
public static ArrayList<String> audit = new ArrayList<>(Arrays.asList("audit", "log", "logs"));
public static ArrayList<String> check = new ArrayList<>(Arrays.asList("check"));
public static ArrayList<String> weewoo = new ArrayList<>(Collections.singletonList("weewoo"));
public static ArrayList<String> chest = new ArrayList<>(Arrays.asList("chest", "pv"));
public static ArrayList<String> claim_auto = new ArrayList<>(Collections.singletonList("autoclaim"));
public static ArrayList<String> claim_claim = new ArrayList<>(Collections.singletonList("claim"));
public static ArrayList<String> claim_at = new ArrayList<>(Collections.singletonList("claimat"));
public static ArrayList<String> claim_line = new ArrayList<>(Arrays.asList("claimline", "cl"));
public static ArrayList<String> claim_corner = new ArrayList<>(Arrays.asList("corner"));
public static ArrayList<String> unclaim_all_safe = new ArrayList<>(Arrays.asList("safeunclaimall", "safedeclaimall"));
public static ArrayList<String> unclaim_unclaim = new ArrayList<>(Arrays.asList("unclaim", "declaim"));
public static ArrayList<String> unclaim_all_unsafe = new ArrayList<>(Arrays.asList("unclaimall", "declaimall"));
public static ArrayList<String> unclaim_all_war = new ArrayList<>(Arrays.asList("warunclaimall", "wardeclaimall"));
public static ArrayList<String> money_money = new ArrayList<>(Arrays.asList("money", "bank"));
public static ArrayList<String> money_balance = new ArrayList<>(Arrays.asList("b", "balance"));
public static ArrayList<String> money_deposit = new ArrayList<>(Arrays.asList("d", "deposit"));
public static ArrayList<String> money_transfer_Ff = new ArrayList<>(Collections.singletonList("ff"));
public static ArrayList<String> money_transfer_Fp = new ArrayList<>(Collections.singletonList("fp"));
public static ArrayList<String> money_transfer_Pf = new ArrayList<>(Collections.singletonList("pf"));
public static ArrayList<String> money_withdraw = new ArrayList<>(Arrays.asList("w", "withdraw"));
public static ArrayList<String> grace = new ArrayList<>(Collections.singletonList("grace"));
public static ArrayList<String> logout = new ArrayList<>(Collections.singletonList("logout"));
public static ArrayList<String> points_points = new ArrayList<>(Collections.singletonList("points"));
public static ArrayList<String> points_add = new ArrayList<>(Collections.singletonList("add"));
public static ArrayList<String> points_remove = new ArrayList<>(Collections.singletonList("remove"));
public static ArrayList<String> points_set = new ArrayList<>(Collections.singletonList("set"));
public static ArrayList<String> relation_ally = new ArrayList<>(Collections.singletonList("ally"));
public static ArrayList<String> relation_enemy = new ArrayList<>(Collections.singletonList("enemy"));
public static ArrayList<String> relation_neutral = new ArrayList<>(Collections.singletonList("neutral"));
public static ArrayList<String> relation_truce = new ArrayList<>(Collections.singletonList("truce"));
public static ArrayList<String> reserve = new ArrayList<>(Collections.singletonList("reserve"));
public static ArrayList<String> roles_demote = new ArrayList<>(Collections.singletonList("demote"));
public static ArrayList<String> roles_promote = new ArrayList<>(Collections.singletonList("ally"));
public static ArrayList<String> tnt_tnt = new ArrayList<>(Collections.singletonList("tnt"));
public static ArrayList<String> tnt_tntfill = new ArrayList<>(Collections.singletonList("tntfill"));
public static ArrayList<String> wild = new ArrayList<>(Collections.singletonList("wild"));
public static ArrayList<String> admin = new ArrayList<>(Arrays.asList("admin", "setadmin", "leader", "setleader"));
public static ArrayList<String> ahome = new ArrayList<>(Collections.singletonList("ahome"));
public static ArrayList<String> announce = new ArrayList<>(Arrays.asList("ann", "announce"));
public static ArrayList<String> help = new ArrayList<>(Arrays.asList("help", "h", "?"));
public static ArrayList<String> ban_ban = new ArrayList<>(Collections.singletonList("ban"));
public static ArrayList<String> ban_banlist = new ArrayList<>(Arrays.asList("banlist", "bans", "banl"));
public static ArrayList<String> banner = new ArrayList<>(Collections.singletonList("banner"));
public static ArrayList<String> boom = new ArrayList<>(Arrays.asList("noboom", "explosions", "toggleexplosions"));
public static ArrayList<String> bypass = new ArrayList<>(Collections.singletonList("bypass"));
public static ArrayList<String> chat = new ArrayList<>(Arrays.asList("chat", "c"));
public static ArrayList<String> chatspy = new ArrayList<>(Collections.singletonList("chatspy"));
public static ArrayList<String> checkpoint = new ArrayList<>(Arrays.asList("checkp", "checkpoint", "cpoint"));
public static ArrayList<String> coleader = new ArrayList<>(Arrays.asList("coleader", "setcoleader", "co", "setco"));
public static ArrayList<String> config = new ArrayList<>(Collections.singletonList("config"));
public static ArrayList<String> convert = new ArrayList<>(Collections.singletonList("convert"));
public static ArrayList<String> coords = new ArrayList<>(Arrays.asList("coords", "coord"));
public static ArrayList<String> create = new ArrayList<>(Collections.singletonList("create"));
public static ArrayList<String> debug = new ArrayList<>(Collections.singletonList("debug"));
public static ArrayList<String> deinvite = new ArrayList<>(Arrays.asList("deinvite", "deinv"));
public static ArrayList<String> deletefwarp = new ArrayList<>(Arrays.asList("delwarp", "dw", "deletewarp"));
public static ArrayList<String> description = new ArrayList<>(Arrays.asList("desc", "description"));
public static ArrayList<String> disband = new ArrayList<>(Collections.singletonList("disband"));
public static ArrayList<String> discord_discord = new ArrayList<>(Collections.singletonList("discord"));
public static ArrayList<String> drain = new ArrayList<>(Collections.singletonList("drain"));
public static ArrayList<String> global = new ArrayList<>(Arrays.asList("gchat", "global", "globalchat"));
public static ArrayList<String> fly = new ArrayList<>(Collections.singletonList("fly"));
public static ArrayList<String> focus = new ArrayList<>(Collections.singletonList("focus"));
public static ArrayList<String> warp = new ArrayList<>(Arrays.asList("warp", "warps"));
public static ArrayList<String> getvault = new ArrayList<>(Collections.singletonList("getvault"));
public static ArrayList<String> home = new ArrayList<>(Collections.singletonList("home"));
public static ArrayList<String> inspect = new ArrayList<>(Arrays.asList("inspect", "ins"));
public static ArrayList<String> invsee = new ArrayList<>(Arrays.asList("invsee", "inventorysee"));
public static ArrayList<String> invite = new ArrayList<>(Arrays.asList("invite", "inv"));
public static ArrayList<String> join = new ArrayList<>(Collections.singletonList("join"));
public static ArrayList<String> kick = new ArrayList<>(Collections.singletonList("kick"));
public static ArrayList<String> killholograms = new ArrayList<>(Collections.singletonList("killholos"));
public static ArrayList<String> leave = new ArrayList<>(Collections.singletonList("leave"));
public static ArrayList<String> list = new ArrayList<>(Arrays.asList("list", "ls"));
public static ArrayList<String> lock = new ArrayList<>(Collections.singletonList("lock"));
public static ArrayList<String> logins = new ArrayList<>(Arrays.asList("logins", "login", "logouts"));
public static ArrayList<String> lookup = new ArrayList<>(Collections.singletonList("lookup"));
public static ArrayList<String> lowPower = new ArrayList<>(Collections.singletonList("lowpower"));
public static ArrayList<String> map_map = new ArrayList<>(Collections.singletonList("map"));
public static ArrayList<String> map_height = new ArrayList<>(Arrays.asList("mapheight", "mh"));
public static ArrayList<String> mod = new ArrayList<>(Arrays.asList("mod", "setmod", "officer", "setofficer"));
public static ArrayList<String> modifyPower = new ArrayList<>(Arrays.asList("mp", "pm", "modpower", "modifypower"));
public static ArrayList<String> near = new ArrayList<>(Arrays.asList("near", "nearby"));
public static ArrayList<String> open = new ArrayList<>(Collections.singletonList("open"));
public static ArrayList<String> owner_owner = new ArrayList<>(Collections.singletonList("owner"));
public static ArrayList<String> owner_list = new ArrayList<>(Collections.singletonList("ownerlist"));
public static ArrayList<String> paypal_see = new ArrayList<>(Arrays.asList("paypal", "seepaypal"));
public static ArrayList<String> paypal_set = new ArrayList<>(Collections.singletonList("setpaypal"));
public static ArrayList<String> peaceful = new ArrayList<>(Collections.singletonList("peaceful"));
public static ArrayList<String> perm = new ArrayList<>(Arrays.asList("perm", "perms", "permission", "permissions"));
public static ArrayList<String> permanent_faction = new ArrayList<>(Collections.singletonList("permanent"));
public static ArrayList<String> permanent_power = new ArrayList<>(Collections.singletonList("permanentpower"));
public static ArrayList<String> titles = new ArrayList<>(Collections.singletonList("titles"));
public static ArrayList<String> power_power = new ArrayList<>(Arrays.asList("pow", "power"));
public static ArrayList<String> power_boost = new ArrayList<>(Collections.singletonList("powerboost"));
public static ArrayList<String> reload = new ArrayList<>(Collections.singletonList("reload"));
public static ArrayList<String> rules = new ArrayList<>(Arrays.asList("r", "rule", "rules"));
public static ArrayList<String> saveAll = new ArrayList<>(Arrays.asList("save", "saveall"));
public static ArrayList<String> scoreboard = new ArrayList<>(Arrays.asList("sb", "scoreboard"));
public static ArrayList<String> seeChunk = new ArrayList<>(Arrays.asList("sc", "seechunk"));
public static ArrayList<String> discord_see = new ArrayList<>(Collections.singletonList("seediscord"));
public static ArrayList<String> discord_set = new ArrayList<>(Collections.singletonList("setdiscord"));
public static ArrayList<String> setBanner = new ArrayList<>(Collections.singletonList("setbanner"));
public static ArrayList<String> setDefaultRole = new ArrayList<>(Arrays.asList("defaultrole", "def", "default", "defaultrank"));
public static ArrayList<String> setWarp = new ArrayList<>(Arrays.asList("sw", "setwarp"));
public static ArrayList<String> setHome = new ArrayList<>(Collections.singletonList("sethome"));
public static ArrayList<String> setMaxVaults = new ArrayList<>(Arrays.asList("smv", "setmaxvaults"));
public static ArrayList<String> show_show = new ArrayList<>(Arrays.asList("show", "who"));
public static ArrayList<String> show_claims = new ArrayList<>(Arrays.asList("showclaim", "showclaims"));
public static ArrayList<String> show_invites = new ArrayList<>(Collections.singletonList("showinvites"));
public static ArrayList<String> spawnerlock = new ArrayList<>(Arrays.asList("lockspawners", "spawnerlock"));
public static ArrayList<String> status = new ArrayList<>(Arrays.asList("s", "status"));
public static ArrayList<String> stealth = new ArrayList<>(Arrays.asList("stealth", "ninja"));
public static ArrayList<String> strikes_strikes = new ArrayList<>(Collections.singletonList("strikes"));
public static ArrayList<String> strikes_give = new ArrayList<>(Collections.singletonList("give"));
public static ArrayList<String> strikes_info = new ArrayList<>(Collections.singletonList("info"));
public static ArrayList<String> strikes_set = new ArrayList<>(Collections.singletonList("set"));
public static ArrayList<String> strikes_take = new ArrayList<>(Collections.singletonList("take"));
public static ArrayList<String> stuck = new ArrayList<>(Arrays.asList("stuck", "halp!"));
public static ArrayList<String> tag = new ArrayList<>(Arrays.asList("tag", "rename"));
public static ArrayList<String> title = new ArrayList<>(Collections.singletonList("title"));
public static ArrayList<String> toggleAllianceChat = new ArrayList<>(Arrays.asList("tac", "ac", "togglealliancechat"));
public static ArrayList<String> top = new ArrayList<>(Arrays.asList("t", "top"));
public static ArrayList<String> tpBanner = new ArrayList<>(Collections.singletonList("tpbanner"));
public static ArrayList<String> unban = new ArrayList<>(Collections.singletonList("unban"));
public static ArrayList<String> upgrades = new ArrayList<>(Arrays.asList("upgrades", "upgrade"));
public static ArrayList<String> vault = new ArrayList<>(Collections.singletonList("vault"));
public static ArrayList<String> viewChest = new ArrayList<>(Arrays.asList("viewchest", "viewpv"));
private static transient Aliases i = new Aliases();
public static void load() {
FactionsPlugin.getInstance().persist.loadOrSaveDefault(i, Aliases.class, "aliases");
}
}

View File

@@ -14,7 +14,7 @@ public class CmdAHome extends FCommand {
public CmdAHome() { public CmdAHome() {
super(); super();
this.aliases.add("ahome"); this.aliases.addAll(Aliases.ahome);
this.requiredArgs.add("player"); this.requiredArgs.add("player");

View File

@@ -3,11 +3,14 @@ package com.massivecraft.factions.cmd;
import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.FPlayers; import com.massivecraft.factions.FPlayers;
import com.massivecraft.factions.Faction; import com.massivecraft.factions.Faction;
import com.massivecraft.factions.FactionsPlugin;
import com.massivecraft.factions.cmd.audit.FLogType;
import com.massivecraft.factions.event.FPlayerJoinEvent; import com.massivecraft.factions.event.FPlayerJoinEvent;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Role; import com.massivecraft.factions.struct.Role;
import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TL;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
public class CmdAdmin extends FCommand { public class CmdAdmin extends FCommand {
@@ -17,10 +20,7 @@ public class CmdAdmin extends FCommand {
public CmdAdmin() { public CmdAdmin() {
super(); super();
this.aliases.add("admin"); this.aliases.addAll(Aliases.admin);
this.aliases.add("setadmin");
this.aliases.add("leader");
this.aliases.add("setleader");
this.requiredArgs.add("player"); this.requiredArgs.add("player");
@@ -29,6 +29,7 @@ public class CmdAdmin extends FCommand {
@Override @Override
public void perform(CommandContext context) { public void perform(CommandContext context) {
FactionsPlugin.getInstance().getServer().getScheduler().runTaskAsynchronously(FactionsPlugin.instance, () -> {
if (context.player == null) { if (context.player == null) {
context.msg(TL.GENERIC_PLAYERONLY); context.msg(TL.GENERIC_PLAYERONLY);
return; return;
@@ -82,12 +83,15 @@ public class CmdAdmin extends FCommand {
fyou.setRole(Role.LEADER); fyou.setRole(Role.LEADER);
context.msg(TL.COMMAND_ADMIN_PROMOTES, fyou.describeTo(context.fPlayer, true)); context.msg(TL.COMMAND_ADMIN_PROMOTES, fyou.describeTo(context.fPlayer, true));
FactionsPlugin.instance.getFlogManager().log(targetFaction, FLogType.RANK_EDIT, context.fPlayer.getName(), fyou.getName(), ChatColor.RED + "Admin");
// Inform all players // Inform all players
for (FPlayer fplayer : FPlayers.getInstance().getOnlinePlayers()) { for (FPlayer fplayer : FPlayers.getInstance().getOnlinePlayers()) {
fplayer.msg(TL.COMMAND_ADMIN_PROMOTED, fplayer.msg(TL.COMMAND_ADMIN_PROMOTED,
context.player == null ? TL.GENERIC_SERVERADMIN.toString() : context.fPlayer.describeTo(fplayer, true), context.player == null ? TL.GENERIC_SERVERADMIN.toString() : context.fPlayer.describeTo(fplayer, true),
fyou.describeTo(fplayer), targetFaction.describeTo(fplayer)); fyou.describeTo(fplayer), targetFaction.describeTo(fplayer));
} }
});
} }
public TL getUsageTranslation() { public TL getUsageTranslation() {

View File

@@ -18,8 +18,7 @@ public class CmdAnnounce extends FCommand {
public CmdAnnounce() { public CmdAnnounce() {
super(); super();
this.aliases.add("ann"); this.aliases.addAll(Aliases.announce);
this.aliases.add("announce");
this.requiredArgs.add("message"); this.requiredArgs.add("message");

View File

@@ -13,9 +13,7 @@ public class CmdAutoHelp extends FCommand {
*/ */
public CmdAutoHelp() { public CmdAutoHelp() {
this.aliases.add("?"); this.aliases.addAll(Aliases.help);
this.aliases.add("h");
this.aliases.add("help");
this.setHelpShort(""); this.setHelpShort("");

View File

@@ -2,9 +2,11 @@ package com.massivecraft.factions.cmd;
import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.FactionsPlugin; import com.massivecraft.factions.FactionsPlugin;
import com.massivecraft.factions.cmd.audit.FLogType;
import com.massivecraft.factions.event.FPlayerLeaveEvent; import com.massivecraft.factions.event.FPlayerLeaveEvent;
import com.massivecraft.factions.struct.BanInfo; import com.massivecraft.factions.struct.BanInfo;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.util.CC;
import com.massivecraft.factions.zcore.fperms.PermissableAction; import com.massivecraft.factions.zcore.fperms.PermissableAction;
import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TL;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@@ -19,7 +21,7 @@ public class CmdBan extends FCommand {
public CmdBan() { public CmdBan() {
super(); super();
this.aliases.add("ban"); this.aliases.addAll(Aliases.ban_ban);
this.requiredArgs.add("target"); this.requiredArgs.add("target");
@@ -79,6 +81,7 @@ public class CmdBan extends FCommand {
// Lets inform the people! // Lets inform the people!
target.msg(TL.COMMAND_BAN_TARGET, context.faction.getTag(target.getFaction())); target.msg(TL.COMMAND_BAN_TARGET, context.faction.getTag(target.getFaction()));
FactionsPlugin.instance.logFactionEvent(context.faction, FLogType.BANS, context.fPlayer.getName(), CC.Green + "banned", target.getName());
context.faction.msg(TL.COMMAND_BAN_BANNED, context.fPlayer.getName(), target.getName()); context.faction.msg(TL.COMMAND_BAN_BANNED, context.fPlayer.getName(), target.getName());
} }

View File

@@ -19,9 +19,7 @@ public class CmdBanlist extends FCommand {
public CmdBanlist() { public CmdBanlist() {
super(); super();
this.aliases.add("banlist"); this.aliases.addAll(Aliases.ban_banlist);
this.aliases.add("bans");
this.aliases.add("banl");
this.optionalArgs.put("faction", "faction"); this.optionalArgs.put("faction", "faction");

View File

@@ -19,8 +19,7 @@ public class CmdBanner extends FCommand {
*/ */
public CmdBanner() { public CmdBanner() {
this.aliases.add("banner"); this.aliases.addAll(Aliases.banner);
this.aliases.add("warbanner");
this.requirements = new CommandRequirements.Builder(Permission.BANNER).playerOnly().memberOnly().build(); this.requirements = new CommandRequirements.Builder(Permission.BANNER).playerOnly().memberOnly().build();
} }

View File

@@ -12,9 +12,7 @@ public class CmdBoom extends FCommand {
public CmdBoom() { public CmdBoom() {
super(); super();
this.aliases.add("noboom"); this.aliases.addAll(Aliases.boom);
this.aliases.add("explosions");
this.aliases.add("toggleexplosions");
//this.requiredArgs.add(""); //this.requiredArgs.add("");
this.optionalArgs.put("on/off", "flip"); this.optionalArgs.put("on/off", "flip");

View File

@@ -12,7 +12,7 @@ public class CmdBypass extends FCommand {
public CmdBypass() { public CmdBypass() {
super(); super();
this.aliases.add("bypass"); this.aliases.addAll(Aliases.bypass);
//this.requiredArgs.add(""); //this.requiredArgs.add("");
this.optionalArgs.put("on/off", "flip"); this.optionalArgs.put("on/off", "flip");

View File

@@ -16,8 +16,7 @@ public class CmdChat extends FCommand {
public CmdChat() { public CmdChat() {
super(); super();
this.aliases.add("c"); this.aliases.addAll(Aliases.chat);
this.aliases.add("chat");
//this.requiredArgs.add(""); //this.requiredArgs.add("");
this.optionalArgs.put("mode", "next"); this.optionalArgs.put("mode", "next");

View File

@@ -12,7 +12,7 @@ public class CmdChatSpy extends FCommand {
public CmdChatSpy() { public CmdChatSpy() {
super(); super();
this.aliases.add("chatspy"); this.aliases.addAll(Aliases.chatspy);
this.optionalArgs.put("on/off", "flip"); this.optionalArgs.put("on/off", "flip");

View File

@@ -13,9 +13,7 @@ public class CmdCheckpoint extends FCommand {
public CmdCheckpoint() { public CmdCheckpoint() {
super(); super();
this.aliases.add("checkp"); this.aliases.addAll(Aliases.checkpoint);
this.aliases.add("checkpoint");
this.aliases.add("cpoint");
this.optionalArgs.put("set", ""); this.optionalArgs.put("set", "");

View File

@@ -3,6 +3,8 @@ package com.massivecraft.factions.cmd;
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.FactionsPlugin;
import com.massivecraft.factions.cmd.audit.FLogType;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Role; import com.massivecraft.factions.struct.Role;
import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TL;
@@ -17,10 +19,7 @@ public class CmdColeader extends FCommand {
public CmdColeader() { public CmdColeader() {
super(); super();
this.aliases.add("co"); this.aliases.addAll(Aliases.coleader);
this.aliases.add("setcoleader");
this.aliases.add("coleader");
this.aliases.add("setco");
this.optionalArgs.put("player name", "name"); this.optionalArgs.put("player name", "name");
@@ -81,6 +80,7 @@ public class CmdColeader extends FCommand {
you.setRole(Role.COLEADER); you.setRole(Role.COLEADER);
targetFaction.msg(TL.COMMAND_COLEADER_PROMOTED, you.describeTo(targetFaction, true)); targetFaction.msg(TL.COMMAND_COLEADER_PROMOTED, you.describeTo(targetFaction, true));
context.msg(TL.COMMAND_COLEADER_PROMOTES, you.describeTo(context.fPlayer, true)); context.msg(TL.COMMAND_COLEADER_PROMOTES, you.describeTo(context.fPlayer, true));
FactionsPlugin.instance.getFlogManager().log(targetFaction, FLogType.RANK_EDIT, context.fPlayer.getName(), you.getName(), ChatColor.RED + "Co-Leader");
} }
} }

View File

@@ -20,7 +20,7 @@ public class CmdConfig extends FCommand {
public CmdConfig() { public CmdConfig() {
super(); super();
this.aliases.add("config"); this.aliases.addAll(Aliases.config);
this.requiredArgs.add("setting"); this.requiredArgs.add("setting");
this.requiredArgs.add("value"); this.requiredArgs.add("value");

View File

@@ -14,7 +14,7 @@ public class CmdConvert extends FCommand {
*/ */
public CmdConvert() { public CmdConvert() {
this.aliases.add("convert"); this.aliases.addAll(Aliases.convert);
this.requiredArgs.add("[MYSQL|JSON]"); this.requiredArgs.add("[MYSQL|JSON]");
this.requirements = new CommandRequirements.Builder(Permission.CONVERT) this.requirements = new CommandRequirements.Builder(Permission.CONVERT)

View File

@@ -13,8 +13,7 @@ public class CmdCoords extends FCommand {
public CmdCoords() { public CmdCoords() {
super(); super();
this.aliases.add("coords"); this.aliases.addAll(Aliases.coords);
this.aliases.add("coord");
this.requirements = new CommandRequirements.Builder(Permission.COORD) this.requirements = new CommandRequirements.Builder(Permission.COORD)
.playerOnly() .playerOnly()

View File

@@ -25,7 +25,7 @@ public class CmdCreate extends FCommand {
public CmdCreate() { public CmdCreate() {
super(); super();
this.aliases.add("create"); this.aliases.addAll(Aliases.create);
this.requiredArgs.add("faction tag"); this.requiredArgs.add("faction tag");

View File

@@ -20,8 +20,7 @@ public class CmdDeinvite extends FCommand {
public CmdDeinvite() { public CmdDeinvite() {
super(); super();
this.aliases.add("deinvite"); this.aliases.addAll(Aliases.deinvite);
this.aliases.add("deinv");
this.optionalArgs.put("player name", "name"); this.optionalArgs.put("player name", "name");
@@ -32,8 +31,6 @@ public class CmdDeinvite extends FCommand {
@Override @Override
public void perform(CommandContext context) { public void perform(CommandContext context) {
if (context.args.size() == 0) { if (context.args.size() == 0) {
FancyMessage msg = new FancyMessage(TL.COMMAND_DEINVITE_CANDEINVITE.toString()).color(ChatColor.GOLD); FancyMessage msg = new FancyMessage(TL.COMMAND_DEINVITE_CANDEINVITE.toString()).color(ChatColor.GOLD);
for (String id : context.faction.getInvites()) { for (String id : context.faction.getInvites()) {
@@ -57,7 +54,7 @@ public class CmdDeinvite extends FCommand {
if (you == null) { if (you == null) {
FancyMessage msg = new FancyMessage(TL.COMMAND_DEINVITE_CANDEINVITE.toString()).color(ChatColor.GOLD); FancyMessage msg = new FancyMessage(TL.COMMAND_DEINVITE_CANDEINVITE.toString()).color(ChatColor.GOLD);
for (String id : context.faction.getInvites()) { for (String id : context.faction.getInvites()) {
if(context.faction.getInvites().isEmpty()) return; if (context.faction.getInvites().isEmpty()) return;
FPlayer fp = FPlayers.getInstance().getById(id); FPlayer fp = FPlayers.getInstance().getById(id);
String name = fp != null ? fp.getName() : id; String name = fp != null ? fp.getName() : id;
msg.then(name + " ").color(ChatColor.WHITE).tooltip(TL.COMMAND_DEINVITE_CLICKTODEINVITE.format(name)).command("/" + Conf.baseCommandAliases.get(0) + " deinvite " + name); msg.then(name + " ").color(ChatColor.WHITE).tooltip(TL.COMMAND_DEINVITE_CLICKTODEINVITE.format(name)).command("/" + Conf.baseCommandAliases.get(0) + " deinvite " + name);
@@ -73,9 +70,7 @@ public class CmdDeinvite extends FCommand {
} }
context.faction.deinvite(you); context.faction.deinvite(you);
you.msg(TL.COMMAND_DEINVITE_REVOKED, context.fPlayer.describeTo(you), context.faction.describeTo(you)); you.msg(TL.COMMAND_DEINVITE_REVOKED, context.fPlayer.describeTo(you), context.faction.describeTo(you));
context.faction.msg(TL.COMMAND_DEINVITE_REVOKES, context.fPlayer.describeTo(context.faction), you.describeTo(context.faction)); context.faction.msg(TL.COMMAND_DEINVITE_REVOKES, context.fPlayer.describeTo(context.faction), you.describeTo(context.faction));
} }

View File

@@ -13,9 +13,7 @@ public class CmdDelFWarp extends FCommand {
public CmdDelFWarp() { public CmdDelFWarp() {
super(); super();
this.aliases.add("delwarp"); this.aliases.addAll(Aliases.deletefwarp);
this.aliases.add("dw");
this.aliases.add("deletewarp");
this.requiredArgs.add("warp name"); this.requiredArgs.add("warp name");
this.requirements = new CommandRequirements.Builder(Permission.SETWARP) this.requirements = new CommandRequirements.Builder(Permission.SETWARP)

View File

@@ -3,9 +3,12 @@ package com.massivecraft.factions.cmd;
import com.massivecraft.factions.Conf; import com.massivecraft.factions.Conf;
import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.FPlayers; import com.massivecraft.factions.FPlayers;
import com.massivecraft.factions.FactionsPlugin;
import com.massivecraft.factions.cmd.audit.FLogType;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TL;
import com.massivecraft.factions.zcore.util.TextUtil; import com.massivecraft.factions.zcore.util.TextUtil;
import org.bukkit.Bukkit;
public class CmdDescription extends FCommand { public class CmdDescription extends FCommand {
@@ -15,8 +18,7 @@ public class CmdDescription extends FCommand {
public CmdDescription() { public CmdDescription() {
super(); super();
this.aliases.add("desc"); this.aliases.addAll(Aliases.description);
this.aliases.add("description");
this.requiredArgs.add("desc"); this.requiredArgs.add("desc");
@@ -29,6 +31,7 @@ public class CmdDescription extends FCommand {
@Override @Override
public void perform(CommandContext context) { public void perform(CommandContext context) {
FactionsPlugin.getInstance().getServer().getScheduler().runTaskAsynchronously(FactionsPlugin.instance, () -> {
// if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay // if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay
if (!context.payForCommand(Conf.econCostDesc, TL.COMMAND_DESCRIPTION_TOCHANGE, TL.COMMAND_DESCRIPTION_FORCHANGE)) { if (!context.payForCommand(Conf.econCostDesc, TL.COMMAND_DESCRIPTION_TOCHANGE, TL.COMMAND_DESCRIPTION_FORCHANGE)) {
return; return;
@@ -36,8 +39,9 @@ public class CmdDescription extends FCommand {
// since "&" color tags seem to work even through plain old FPlayer.sendMessage() for some reason, we need to break those up // since "&" color tags seem to work even through plain old FPlayer.sendMessage() for some reason, we need to break those up
// And replace all the % because it messes with string formatting and this is easy way around that. // And replace all the % because it messes with string formatting and this is easy way around that.
context.faction.setDescription(TextUtil.implode(context.args, " ").replaceAll("%", "").replaceAll("(&([a-f0-9klmnor]))", "& $2")); String desc = TextUtil.implode(context.args, " ").replaceAll("%", "").replaceAll("(&([a-f0-9klmnor]))", "& $2");
context.faction.setDescription(desc);
Bukkit.getScheduler().scheduleSyncDelayedTask(FactionsPlugin.instance, () -> FactionsPlugin.instance.logFactionEvent(context.faction, FLogType.FDESC_EDIT, context.fPlayer.getName(), desc));
if (!Conf.broadcastDescriptionChanges) { if (!Conf.broadcastDescriptionChanges) {
context.msg(TL.COMMAND_DESCRIPTION_CHANGED, context.faction.describeTo(context.fPlayer)); context.msg(TL.COMMAND_DESCRIPTION_CHANGED, context.faction.describeTo(context.fPlayer));
context.sendMessage(context.faction.getDescription()); context.sendMessage(context.faction.getDescription());
@@ -49,6 +53,7 @@ public class CmdDescription extends FCommand {
fplayer.msg(TL.COMMAND_DESCRIPTION_CHANGES, context.faction.describeTo(fplayer)); fplayer.msg(TL.COMMAND_DESCRIPTION_CHANGES, context.faction.describeTo(fplayer));
fplayer.sendMessage(context.faction.getDescription()); // players can inject "&" or "`" or "<i>" or whatever in their description; &k is particularly interesting looking fplayer.sendMessage(context.faction.getDescription()); // players can inject "&" or "`" or "<i>" or whatever in their description; &k is particularly interesting looking
} }
});
} }
@Override @Override

View File

@@ -20,19 +20,17 @@ public class CmdDisband extends FCommand {
* @author FactionsUUID Team * @author FactionsUUID Team
*/ */
//TODO: Add Disband Confirmation GUI
private static HashMap<String, String> disbandMap = new HashMap<>(); private static HashMap<String, String> disbandMap = new HashMap<>();
public CmdDisband() { public CmdDisband() {
super(); super();
this.aliases.add("disband"); this.aliases.addAll(Aliases.disband);
this.optionalArgs.put("faction tag", "yours"); this.optionalArgs.put("faction tag", "yours");
this.requirements = new CommandRequirements.Builder(Permission.DISBAND) this.requirements = new CommandRequirements.Builder(Permission.DISBAND)
.build(); .build();
} }
@Override @Override
@@ -84,19 +82,19 @@ public class CmdDisband extends FCommand {
String amountString = context.sender instanceof ConsoleCommandSender ? TL.GENERIC_SERVERADMIN.toString() : context.fPlayer.describeTo(follower); String amountString = context.sender instanceof ConsoleCommandSender ? TL.GENERIC_SERVERADMIN.toString() : context.fPlayer.describeTo(follower);
if (follower.getFaction() == faction) { if (follower.getFaction() == faction) {
follower.msg(TL.COMMAND_DISBAND_BROADCAST_YOURS, amountString); follower.msg(TL.COMMAND_DISBAND_BROADCAST_YOURS, amountString);
if (!follower.canFlyAtLocation()) { if (!follower.canFlyAtLocation() && FactionsPlugin.getInstance().getConfig().getBoolean("enable-faction-flight")) {
follower.setFFlying(false, false); follower.setFFlying(false, false);
} }
} else { } else {
follower.msg(TL.COMMAND_DISBAND_BROADCAST_NOTYOURS, amountString, faction.getTag(follower)); follower.msg(TL.COMMAND_DISBAND_BROADCAST_NOTYOURS, amountString, faction.getTag(follower));
} }
} }
context.fPlayer.setFFlying(false, false); if(FactionsPlugin.getInstance().getConfig().getBoolean("enable-faction-flight")) context.fPlayer.setFFlying(false, false);
} else { } else {
context.player.sendMessage(String.valueOf(TL.COMMAND_DISBAND_PLAYER)); context.player.sendMessage(String.valueOf(TL.COMMAND_DISBAND_PLAYER));
} }
faction.disband(context.player, PlayerDisbandReason.COMMAND); faction.disband(context.player, PlayerDisbandReason.COMMAND);
if (!context.fPlayer.canFlyAtLocation()) { if (!context.fPlayer.canFlyAtLocation() && FactionsPlugin.getInstance().getConfig().getBoolean("enable-faction-flight")) {
context.fPlayer.setFFlying(false, false); context.fPlayer.setFFlying(false, false);
} }
} }

View File

@@ -9,7 +9,7 @@ import java.util.Random;
public class CmdDiscord extends FCommand { public class CmdDiscord extends FCommand {
public CmdDiscord() { public CmdDiscord() {
super(); super();
this.aliases.add("discord"); this.aliases.addAll(Aliases.discord_discord);
this.requirements = new CommandRequirements.Builder(Permission.DISCORD) this.requirements = new CommandRequirements.Builder(Permission.DISCORD)
.playerOnly() .playerOnly()
.build(); .build();

View File

@@ -0,0 +1,64 @@
package com.massivecraft.factions.cmd;
import com.massivecraft.factions.Conf;
import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.FPlayers;
import com.massivecraft.factions.FactionsPlugin;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.zcore.fperms.PermissableAction;
import com.massivecraft.factions.zcore.util.TL;
import org.bukkit.entity.Player;
import java.text.DecimalFormat;
/**
* @author Saser
*/
public class CmdDrain extends FCommand{
public CmdDrain(){
this.aliases.addAll(Aliases.drain);
this.requirements = new CommandRequirements.Builder(Permission.DRAIN)
.playerOnly()
.memberOnly()
.withAction(PermissableAction.DRAIN)
.build();
}
@Override
public void perform(CommandContext context) {
if (!Conf.factionsDrainEnabled) {
context.fPlayer.msg(TL.GENERIC_DISABLED, "Factions Drain");
return;
}
double totalBalance = 0;
for(FPlayer fPlayer : context.faction.getFPlayers()) {
if(context.faction.getFPlayers().size() == 1){
context.fPlayer.msg(TL.COMMAND_DRAIN_NO_PLAYERS);
return;
}
if (FPlayers.getInstance().getByPlayer(context.player).equals(fPlayer)){
continue; // skip the command executor
}
double balance = FactionsPlugin.getInstance().getEcon().getBalance(fPlayer.getPlayer());
if (balance > 0) {
FactionsPlugin.getInstance().getEcon().depositPlayer(context.player, balance);
FactionsPlugin.getInstance().getEcon().withdrawPlayer(fPlayer.getPlayer(), balance);
totalBalance = (totalBalance + balance);
}
}
context.fPlayer.msg(TL.COMMAND_DRAIN_RECIEVED_AMOUNT, commas(totalBalance));
}
public String commas(final double amount) {
final DecimalFormat formatter = new DecimalFormat("#,###.00");
return formatter.format(amount);
}
@Override
public TL getUsageTranslation() {
return TL.COMMAND_DRAIN_DESCRIPTION;
}
}

View File

@@ -17,9 +17,7 @@ public class CmdFGlobal extends FCommand {
public CmdFGlobal() { public CmdFGlobal() {
super(); super();
this.aliases.add("gchat"); this.aliases.addAll(Aliases.global);
this.aliases.add("global");
this.aliases.add("globalchat");
this.requirements = new CommandRequirements.Builder(Permission.GLOBALCHAT) this.requirements = new CommandRequirements.Builder(Permission.GLOBALCHAT)
.playerOnly() .playerOnly()

View File

@@ -20,8 +20,7 @@ public class CmdFWarp extends FCommand {
public CmdFWarp() { public CmdFWarp() {
super(); super();
this.aliases.add("warp"); this.aliases.addAll(Aliases.warp);
this.aliases.add("warps");
this.optionalArgs.put("warpname", "warpname"); this.optionalArgs.put("warpname", "warpname");
this.optionalArgs.put("password", "password"); this.optionalArgs.put("password", "password");

View File

@@ -31,7 +31,7 @@ public class CmdFly extends FCommand {
public CmdFly() { public CmdFly() {
super(); super();
this.aliases.add("fly"); this.aliases.addAll(Aliases.fly);
this.optionalArgs.put("on/off", "flip"); this.optionalArgs.put("on/off", "flip");
this.requirements = new CommandRequirements.Builder(Permission.FLY) this.requirements = new CommandRequirements.Builder(Permission.FLY)

View File

@@ -13,7 +13,7 @@ public class CmdFocus extends FCommand {
*/ */
public CmdFocus() { public CmdFocus() {
aliases.add("focus"); aliases.addAll(Aliases.focus);
requiredArgs.add("player"); requiredArgs.add("player");

View File

@@ -16,7 +16,7 @@ public class CmdGetVault extends FCommand {
public CmdGetVault() { public CmdGetVault() {
super(); super();
this.aliases.add("getvault"); this.aliases.addAll(Aliases.getvault);
this.requirements = new CommandRequirements.Builder(Permission.GETVAULT) this.requirements = new CommandRequirements.Builder(Permission.GETVAULT)
.playerOnly() .playerOnly()

View File

@@ -18,12 +18,10 @@ public class CmdHelp extends FCommand {
*/ */
public ArrayList<ArrayList<String>> helpPages; public ArrayList<ArrayList<String>> helpPages;
//TODO: Add Help GUI
public CmdHelp() { public CmdHelp() {
super(); super();
this.aliases.add("help"); this.aliases.addAll(Aliases.help);
this.aliases.add("h");
this.aliases.add("?");
//this.requiredArgs.add(""); //this.requiredArgs.add("");
this.optionalArgs.put("page", "1"); this.optionalArgs.put("page", "1");

View File

@@ -26,7 +26,7 @@ public class CmdHome extends FCommand {
public CmdHome() { public CmdHome() {
super(); super();
this.aliases.add("home"); this.aliases.addAll(Aliases.home);
this.optionalArgs.put("faction", "yours"); this.optionalArgs.put("faction", "yours");
this.requirements = new CommandRequirements.Builder(Permission.HOME) this.requirements = new CommandRequirements.Builder(Permission.HOME)

View File

@@ -11,9 +11,7 @@ public class CmdInspect extends FCommand {
public CmdInspect() { public CmdInspect() {
super(); super();
this.aliases.add("inspect"); this.aliases.addAll(Aliases.inspect);
this.aliases.add("ins");
this.requirements = new CommandRequirements.Builder(Permission.INSPECT) this.requirements = new CommandRequirements.Builder(Permission.INSPECT)
.playerOnly() .playerOnly()
.memberOnly() .memberOnly()

View File

@@ -23,8 +23,7 @@ public class CmdInventorySee extends FCommand {
public CmdInventorySee() { public CmdInventorySee() {
super(); super();
this.aliases.add("invsee"); this.aliases.addAll(Aliases.invsee);
this.aliases.add("inventorysee");
this.requiredArgs.add("member name"); this.requiredArgs.add("member name");

View File

@@ -3,7 +3,9 @@ package com.massivecraft.factions.cmd;
import com.massivecraft.factions.Conf; import com.massivecraft.factions.Conf;
import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.FactionsPlugin; import com.massivecraft.factions.FactionsPlugin;
import com.massivecraft.factions.cmd.audit.FLogType;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.util.CC;
import com.massivecraft.factions.zcore.fperms.PermissableAction; import com.massivecraft.factions.zcore.fperms.PermissableAction;
import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TL;
import mkremins.fanciful.FancyMessage; import mkremins.fanciful.FancyMessage;
@@ -17,8 +19,7 @@ public class CmdInvite extends FCommand {
public CmdInvite() { public CmdInvite() {
super(); super();
this.aliases.add("invite"); this.aliases.addAll(Aliases.invite);
this.aliases.add("inv");
this.requiredArgs.add("player name"); this.requiredArgs.add("player name");
@@ -68,11 +69,10 @@ public class CmdInvite extends FCommand {
.command("/" + Conf.baseCommandAliases.get(0) + " join " + context.faction.getTag()) .command("/" + Conf.baseCommandAliases.get(0) + " join " + context.faction.getTag())
.then(context.faction.describeTo(target)).tooltip(TL.COMMAND_INVITE_CLICKTOJOIN.toString()) .then(context.faction.describeTo(target)).tooltip(TL.COMMAND_INVITE_CLICKTOJOIN.toString())
.command("/" + Conf.baseCommandAliases.get(0) + " join " + context.faction.getTag()); .command("/" + Conf.baseCommandAliases.get(0) + " join " + context.faction.getTag());
message.send(target.getPlayer()); message.send(target.getPlayer());
} }
context.faction.msg(TL.COMMAND_INVITE_INVITED, context.fPlayer.describeTo(context.faction, true), target.describeTo(context.faction)); context.faction.msg(TL.COMMAND_INVITE_INVITED, context.fPlayer.describeTo(context.faction, true), target.describeTo(context.faction));
FactionsPlugin.instance.logFactionEvent(context.faction, FLogType.INVITES, context.fPlayer.getName(), CC.Green + "invited", target.getName());
} }
@Override @Override

View File

@@ -1,15 +1,19 @@
package com.massivecraft.factions.cmd; package com.massivecraft.factions.cmd;
import com.massivecraft.factions.*; import com.massivecraft.factions.*;
import com.massivecraft.factions.cmd.audit.FLogType;
import com.massivecraft.factions.discord.Discord; import com.massivecraft.factions.discord.Discord;
import com.massivecraft.factions.event.FPlayerJoinEvent; import com.massivecraft.factions.event.FPlayerJoinEvent;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.util.CC;
import com.massivecraft.factions.zcore.fupgrades.UpgradeType; import com.massivecraft.factions.zcore.fupgrades.UpgradeType;
import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TL;
import net.dv8tion.jda.core.entities.Member; import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.exceptions.HierarchyException; import net.dv8tion.jda.core.exceptions.HierarchyException;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import java.util.Objects;
public class CmdJoin extends FCommand { public class CmdJoin extends FCommand {
/** /**
@@ -18,7 +22,7 @@ public class CmdJoin extends FCommand {
public CmdJoin() { public CmdJoin() {
super(); super();
this.aliases.add("join"); this.aliases.addAll(Aliases.join);
this.requiredArgs.add("faction name"); this.requiredArgs.add("faction name");
this.optionalArgs.put("player", "you"); this.optionalArgs.put("player", "you");
@@ -125,10 +129,11 @@ public class CmdJoin extends FCommand {
faction.deinvite(fplayer); faction.deinvite(fplayer);
try { try {
context.fPlayer.setRole(faction.getDefaultRole()); context.fPlayer.setRole(faction.getDefaultRole());
FactionsPlugin.instance.logFactionEvent(faction, FLogType.INVITES, context.fPlayer.getName(), CC.Green + "joined", "the faction");
if (Discord.useDiscord && context.fPlayer.discordSetup() && Discord.isInMainGuild(context.fPlayer.discordUser()) && Discord.mainGuild != null) { if (Discord.useDiscord && context.fPlayer.discordSetup() && Discord.isInMainGuild(context.fPlayer.discordUser()) && Discord.mainGuild != null) {
Member m = Discord.mainGuild.getMember(context.fPlayer.discordUser()); Member m = Discord.mainGuild.getMember(context.fPlayer.discordUser());
if (Conf.factionRoles) { if (Conf.factionRoles) {
Discord.mainGuild.getController().addSingleRoleToMember(m, Discord.createFactionRole(faction.getTag())).queue(); Discord.mainGuild.getController().addSingleRoleToMember(m, Objects.requireNonNull(Discord.createFactionRole(faction.getTag()))).queue();
} }
if (Conf.factionDiscordTags) { if (Conf.factionDiscordTags) {
Discord.mainGuild.getController().setNickname(m, Discord.getNicknameString(context.fPlayer)).queue(); Discord.mainGuild.getController().setNickname(m, Discord.getNicknameString(context.fPlayer)).queue();

View File

@@ -4,9 +4,11 @@ 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.FactionsPlugin; import com.massivecraft.factions.FactionsPlugin;
import com.massivecraft.factions.cmd.audit.FLogType;
import com.massivecraft.factions.event.FPlayerLeaveEvent; import com.massivecraft.factions.event.FPlayerLeaveEvent;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Role; import com.massivecraft.factions.struct.Role;
import com.massivecraft.factions.util.CC;
import com.massivecraft.factions.zcore.fperms.PermissableAction; import com.massivecraft.factions.zcore.fperms.PermissableAction;
import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TL;
import mkremins.fanciful.FancyMessage; import mkremins.fanciful.FancyMessage;
@@ -22,7 +24,7 @@ public class CmdKick extends FCommand {
public CmdKick() { public CmdKick() {
super(); super();
this.aliases.add("kick"); this.aliases.addAll(Aliases.kick);
this.optionalArgs.put("player name", "player name"); this.optionalArgs.put("player name", "player name");
this.requirements = new CommandRequirements.Builder(Permission.KICK) this.requirements = new CommandRequirements.Builder(Permission.KICK)
@@ -122,6 +124,7 @@ public class CmdKick extends FCommand {
if (toKick.getRole() == Role.LEADER) { if (toKick.getRole() == Role.LEADER) {
toKickFaction.promoteNewLeader(); toKickFaction.promoteNewLeader();
} }
FactionsPlugin.instance.logFactionEvent(toKickFaction, FLogType.INVITES, context.fPlayer.getName(), CC.Red + "kicked", toKick.getName());
toKickFaction.deinvite(toKick); toKickFaction.deinvite(toKick);
toKick.resetFactionData(); toKick.resetFactionData();
} }

View File

@@ -11,7 +11,7 @@ public class CmdKillHolograms extends FCommand {
public CmdKillHolograms() { public CmdKillHolograms() {
super(); super();
this.aliases.add("killholos"); this.aliases.addAll(Aliases.killholograms);
this.requiredArgs.add("radius"); this.requiredArgs.add("radius");
this.requirements = new CommandRequirements.Builder(Permission.KILLHOLOS) this.requirements = new CommandRequirements.Builder(Permission.KILLHOLOS)

View File

@@ -13,7 +13,7 @@ public class CmdLeave extends FCommand {
public CmdLeave() { public CmdLeave() {
super(); super();
this.aliases.add("leave"); this.aliases.addAll(Aliases.leave);
this.requirements = new CommandRequirements.Builder(Permission.LEAVE) this.requirements = new CommandRequirements.Builder(Permission.LEAVE)
.playerOnly() .playerOnly()

View File

@@ -22,8 +22,7 @@ public class CmdList extends FCommand {
public CmdList() { public CmdList() {
super(); super();
this.aliases.add("list"); this.aliases.addAll(Aliases.list);
this.aliases.add("ls");
// default values in case user has old config // default values in case user has old config
defaults[0] = "&e&m----------&r&e[ &2Faction List &9{pagenumber}&e/&9{pagecount} &e]&m----------"; defaults[0] = "&e&m----------&r&e[ &2Faction List &9{pagenumber}&e/&9{pagecount} &e]&m----------";
@@ -43,6 +42,7 @@ public class CmdList extends FCommand {
// if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay // if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay
if (!context.payForCommand(Conf.econCostList, "to list the factions", "for listing the factions")) if (!context.payForCommand(Conf.econCostList, "to list the factions", "for listing the factions"))
return; return;
FactionsPlugin.getInstance().getServer().getScheduler().runTaskAsynchronously(FactionsPlugin.instance, () -> {
ArrayList<Faction> factionList = Factions.getInstance().getAllFactions(); ArrayList<Faction> factionList = Factions.getInstance().getAllFactions();
factionList.remove(Factions.getInstance().getWilderness()); factionList.remove(Factions.getInstance().getWilderness());
@@ -111,6 +111,7 @@ public class CmdList extends FCommand {
lines.add(FactionsPlugin.getInstance().txt.parse(TagUtil.parsePlain(faction, context.fPlayer, FactionsPlugin.getInstance().getConfig().getString("list.entry", defaults[2])))); lines.add(FactionsPlugin.getInstance().txt.parse(TagUtil.parsePlain(faction, context.fPlayer, FactionsPlugin.getInstance().getConfig().getString("list.entry", defaults[2]))));
} }
context.sendMessage(lines); context.sendMessage(lines);
});
} }
@Override @Override

View File

@@ -19,7 +19,7 @@ public class CmdLock extends FCommand {
public CmdLock() { public CmdLock() {
super(); super();
this.aliases.add("lock"); this.aliases.addAll(Aliases.lock);
this.optionalArgs.put("on/off", "flip"); this.optionalArgs.put("on/off", "flip");
this.requirements = new CommandRequirements.Builder(Permission.LOCK) this.requirements = new CommandRequirements.Builder(Permission.LOCK)

View File

@@ -11,10 +11,7 @@ public class CmdLogins extends FCommand {
public CmdLogins() { public CmdLogins() {
super(); super();
this.aliases.add("login"); this.aliases.addAll(Aliases.logins);
this.aliases.add("logins");
this.aliases.add("logout");
this.aliases.add("logouts");
this.requirements = new CommandRequirements.Builder(Permission.MONITOR_LOGINS) this.requirements = new CommandRequirements.Builder(Permission.MONITOR_LOGINS)
.playerOnly() .playerOnly()

View File

@@ -0,0 +1,54 @@
package com.massivecraft.factions.cmd;
import com.massivecraft.factions.Board;
import com.massivecraft.factions.FLocation;
import com.massivecraft.factions.Faction;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.zcore.util.TL;
import java.text.DecimalFormat;
import java.util.Set;
/**
* @author Saser
*/
public class CmdLookup extends FCommand {
private DecimalFormat format = new DecimalFormat("#.#");
public CmdLookup() {
super();
this.aliases.addAll(Aliases.lookup);
this.requiredArgs.add("faction name");
this.requirements = new CommandRequirements.Builder(Permission.LOOKUP)
.playerOnly()
.build();
}
@Override
public void perform(CommandContext context) {
Faction faction = context.argAsFaction(0);
if (faction == null) {
context.msg(TL.COMMAND_LOOKUP_INVALID);
return;
}
if (faction.isNormal()) {
if (faction.getHome() != null) {
context.msg(TL.COMMAND_LOOKUP_FACTION_HOME, this.format.format(faction.getHome().getX()), this.format.format(faction.getHome().getY()), this.format.format(faction.getHome().getZ()));
}
Set<FLocation> locations = Board.getInstance().getAllClaims(faction);
context.msg(TL.COMMAND_LOOKUP_CLAIM_COUNT, locations.size(), faction.getTag());
for (FLocation flocation : locations) {
context.msg(TL.COMMAND_LOOKUP_CLAIM_LIST, flocation.getWorldName(), flocation.getX() * 16L, flocation.getZ() * 16L);
}
} else {
context.msg(TL.COMMAND_LOOKUP_ONLY_NORMAL);
}
}
@Override
public TL getUsageTranslation() {
return TL.COMMAND_LOOKUP_DESCRIPTION;
}
}

View File

@@ -13,7 +13,7 @@ public class CmdLowPower extends FCommand {
public CmdLowPower() { public CmdLowPower() {
super(); super();
this.aliases.add("lowpower"); this.aliases.addAll(Aliases.lowPower);
this.requirements = new CommandRequirements.Builder(Permission.POWER_ANY) this.requirements = new CommandRequirements.Builder(Permission.POWER_ANY)
.playerOnly() .playerOnly()

View File

@@ -15,7 +15,7 @@ public class CmdMap extends FCommand {
public CmdMap() { public CmdMap() {
super(); super();
this.aliases.add("map"); this.aliases.addAll(Aliases.map_map);
this.optionalArgs.put("on/off", "once"); this.optionalArgs.put("on/off", "once");
this.requirements = new CommandRequirements.Builder(Permission.MAP) this.requirements = new CommandRequirements.Builder(Permission.MAP)

View File

@@ -12,8 +12,7 @@ public class CmdMapHeight extends FCommand {
public CmdMapHeight() { public CmdMapHeight() {
super(); super();
this.aliases.add("mapheight"); this.aliases.addAll(Aliases.map_height);
this.aliases.add("mh");
this.optionalArgs.put("height", "height"); this.optionalArgs.put("height", "height");
this.requirements = new CommandRequirements.Builder(Permission.MAPHEIGHT) this.requirements = new CommandRequirements.Builder(Permission.MAPHEIGHT)

View File

@@ -3,6 +3,8 @@ package com.massivecraft.factions.cmd;
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.FactionsPlugin;
import com.massivecraft.factions.cmd.audit.FLogType;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Role; import com.massivecraft.factions.struct.Role;
import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TL;
@@ -17,10 +19,7 @@ public class CmdMod extends FCommand {
public CmdMod() { public CmdMod() {
super(); super();
this.aliases.add("mod"); this.aliases.addAll(Aliases.mod);
this.aliases.add("setmod");
this.aliases.add("officer");
this.aliases.add("setofficer");
this.optionalArgs.put("player name", "name"); this.optionalArgs.put("player name", "name");
@@ -76,6 +75,8 @@ public class CmdMod extends FCommand {
you.setRole(Role.MODERATOR); you.setRole(Role.MODERATOR);
targetFaction.msg(TL.COMMAND_MOD_PROMOTED, you.describeTo(targetFaction, true)); targetFaction.msg(TL.COMMAND_MOD_PROMOTED, you.describeTo(targetFaction, true));
context.msg(TL.COMMAND_MOD_PROMOTES, you.describeTo(context.fPlayer, true)); context.msg(TL.COMMAND_MOD_PROMOTES, you.describeTo(context.fPlayer, true));
FactionsPlugin.instance.getFlogManager().log(targetFaction, FLogType.RANK_EDIT, context.fPlayer.getName(), you.getName(), ChatColor.LIGHT_PURPLE + "Mod");
} }
} }

View File

@@ -13,10 +13,7 @@ public class CmdModifyPower extends FCommand {
public CmdModifyPower() { public CmdModifyPower() {
super(); super();
this.aliases.add("pm"); this.aliases.addAll(Aliases.modifyPower);
this.aliases.add("mp");
this.aliases.add("modifypower");
this.aliases.add("modpower");
this.requiredArgs.add("name"); this.requiredArgs.add("name");
this.requiredArgs.add("power"); this.requiredArgs.add("power");

View File

@@ -16,8 +16,7 @@ public class CmdNear extends FCommand {
public CmdNear() { public CmdNear() {
super(); super();
this.aliases.add("near"); this.aliases.addAll(Aliases.near);
this.aliases.add("nearby");
this.requirements = new CommandRequirements.Builder(Permission.NEAR) this.requirements = new CommandRequirements.Builder(Permission.NEAR)
.playerOnly() .playerOnly()

View File

@@ -3,6 +3,7 @@ package com.massivecraft.factions.cmd;
import com.massivecraft.factions.Conf; import com.massivecraft.factions.Conf;
import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.FPlayers; import com.massivecraft.factions.FPlayers;
import com.massivecraft.factions.FactionsPlugin;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Role; import com.massivecraft.factions.struct.Role;
import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TL;
@@ -15,7 +16,7 @@ public class CmdOpen extends FCommand {
public CmdOpen() { public CmdOpen() {
super(); super();
this.aliases.add("open"); this.aliases.addAll(Aliases.open);
this.optionalArgs.put("yes/no", "flip"); this.optionalArgs.put("yes/no", "flip");
this.requirements = new CommandRequirements.Builder(Permission.OPEN) this.requirements = new CommandRequirements.Builder(Permission.OPEN)
@@ -27,6 +28,7 @@ public class CmdOpen extends FCommand {
@Override @Override
public void perform(CommandContext context) { public void perform(CommandContext context) {
FactionsPlugin.getInstance().getServer().getScheduler().runTaskAsynchronously(FactionsPlugin.instance, () -> {
// if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay // if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay
if (!context.payForCommand(Conf.econCostOpen, TL.COMMAND_OPEN_TOOPEN, TL.COMMAND_OPEN_FOROPEN)) { if (!context.payForCommand(Conf.econCostOpen, TL.COMMAND_OPEN_TOOPEN, TL.COMMAND_OPEN_FOROPEN)) {
return; return;
@@ -44,6 +46,7 @@ public class CmdOpen extends FCommand {
} }
fplayer.msg(TL.COMMAND_OPEN_CHANGED, context.faction.getTag(fplayer.getFaction()), open); fplayer.msg(TL.COMMAND_OPEN_CHANGED, context.faction.getTag(fplayer.getFaction()), open);
} }
});
} }
@Override @Override

View File

@@ -14,7 +14,7 @@ public class CmdOwner extends FCommand {
public CmdOwner() { public CmdOwner() {
super(); super();
this.aliases.add("owner"); this.aliases.addAll(Aliases.owner_owner);
this.optionalArgs.put("player name", "you"); this.optionalArgs.put("player name", "you");
this.requirements = new CommandRequirements.Builder(Permission.OWNER) this.requirements = new CommandRequirements.Builder(Permission.OWNER)

View File

@@ -15,7 +15,7 @@ public class CmdOwnerList extends FCommand {
public CmdOwnerList() { public CmdOwnerList() {
super(); super();
this.aliases.add("ownerlist"); this.aliases.addAll(Aliases.owner_list);
this.requirements = new CommandRequirements.Builder(Permission.OWNERLIST) this.requirements = new CommandRequirements.Builder(Permission.OWNERLIST)
.playerOnly() .playerOnly()

View File

@@ -12,8 +12,7 @@ public class CmdPaypalSee extends FCommand {
*/ */
public CmdPaypalSee() { public CmdPaypalSee() {
this.aliases.add("seepaypal"); this.aliases.addAll(Aliases.paypal_see);
this.aliases.add("paypal");
this.optionalArgs.put("faction", "yours"); this.optionalArgs.put("faction", "yours");

View File

@@ -13,7 +13,7 @@ public class CmdPaypalSet extends FCommand {
*/ */
public CmdPaypalSet() { public CmdPaypalSet() {
this.aliases.add("setpaypal"); this.aliases.addAll(Aliases.paypal_set);
this.optionalArgs.put("faction", "yours"); this.optionalArgs.put("faction", "yours");

View File

@@ -14,7 +14,7 @@ public class CmdPeaceful extends FCommand {
public CmdPeaceful() { public CmdPeaceful() {
super(); super();
this.aliases.add("peaceful"); this.aliases.addAll(Aliases.peaceful);
this.requiredArgs.add("faction tag"); this.requiredArgs.add("faction tag");
this.requirements = new CommandRequirements.Builder(Permission.SET_PEACEFUL) this.requirements = new CommandRequirements.Builder(Permission.SET_PEACEFUL)

View File

@@ -23,10 +23,7 @@ public class CmdPerm extends FCommand {
public CmdPerm() { public CmdPerm() {
super(); super();
this.aliases.add("perm"); this.aliases.addAll(Aliases.perm);
this.aliases.add("perms");
this.aliases.add("permission");
this.aliases.add("permissions");
this.optionalArgs.put("relation", "relation"); this.optionalArgs.put("relation", "relation");
this.optionalArgs.put("action", "action"); this.optionalArgs.put("action", "action");

View File

@@ -16,7 +16,7 @@ public class CmdPermanent extends FCommand {
public CmdPermanent() { public CmdPermanent() {
super(); super();
this.aliases.add("permanent"); this.aliases.addAll(Aliases.permanent_faction);
this.requiredArgs.add("faction tag"); this.requiredArgs.add("faction tag");
this.requirements = new CommandRequirements.Builder(Permission.SET_PERMANENT) this.requirements = new CommandRequirements.Builder(Permission.SET_PERMANENT)

View File

@@ -13,7 +13,7 @@ public class CmdPermanentPower extends FCommand {
public CmdPermanentPower() { public CmdPermanentPower() {
super(); super();
this.aliases.add("permanentpower"); this.aliases.addAll(Aliases.permanent_power);
this.requiredArgs.add("faction"); this.requiredArgs.add("faction");
this.requiredArgs.add("power"); this.requiredArgs.add("power");

View File

@@ -7,7 +7,7 @@ import com.massivecraft.factions.zcore.util.TL;
public class CmdPlayerTitleToggle extends FCommand { public class CmdPlayerTitleToggle extends FCommand {
public CmdPlayerTitleToggle() { public CmdPlayerTitleToggle() {
super(); super();
this.aliases.add("titles"); this.aliases.addAll(Aliases.titles);
this.requirements = new CommandRequirements.Builder(Permission.TOGGLE_TITLES) this.requirements = new CommandRequirements.Builder(Permission.TOGGLE_TITLES)
.build(); .build();
} }

View File

@@ -13,8 +13,7 @@ public class CmdPower extends FCommand {
public CmdPower() { public CmdPower() {
super(); super();
this.aliases.add("power"); this.aliases.addAll(Aliases.power_power);
this.aliases.add("pow");
this.optionalArgs.put("player name", "you"); this.optionalArgs.put("player name", "you");
this.requirements = new CommandRequirements.Builder(Permission.POWER) this.requirements = new CommandRequirements.Builder(Permission.POWER)

View File

@@ -15,7 +15,7 @@ public class CmdPowerBoost extends FCommand {
public CmdPowerBoost() { public CmdPowerBoost() {
super(); super();
this.aliases.add("powerboost"); this.aliases.addAll(Aliases.power_boost);
this.requiredArgs.add("plugin|f|player|faction"); this.requiredArgs.add("plugin|f|player|faction");
this.requiredArgs.add("name"); this.requiredArgs.add("name");
this.requiredArgs.add("# or reset"); this.requiredArgs.add("# or reset");

View File

@@ -16,7 +16,7 @@ public class CmdReload extends FCommand {
public CmdReload() { public CmdReload() {
super(); super();
this.aliases.add("reload"); this.aliases.addAll(Aliases.reload);
this.requirements = new CommandRequirements.Builder(Permission.RELOAD).build(); this.requirements = new CommandRequirements.Builder(Permission.RELOAD).build();
} }

View File

@@ -15,9 +15,7 @@ public class CmdRules extends FCommand {
public CmdRules() { public CmdRules() {
super(); super();
aliases.add("r"); aliases.addAll(Aliases.rules);
aliases.add("rule");
aliases.add("rules");
this.optionalArgs.put("add/remove/set/clear", ""); this.optionalArgs.put("add/remove/set/clear", "");

View File

@@ -11,8 +11,7 @@ public class CmdSB extends FCommand {
*/ */
public CmdSB() { public CmdSB() {
this.aliases.add("sb"); this.aliases.addAll(Aliases.scoreboard);
this.aliases.add("scoreboard");
this.requirements = new CommandRequirements.Builder(Permission.SCOREBOARD) this.requirements = new CommandRequirements.Builder(Permission.SCOREBOARD)
.playerOnly() .playerOnly()

View File

@@ -1,9 +1,6 @@
package com.massivecraft.factions.cmd; package com.massivecraft.factions.cmd;
import com.massivecraft.factions.Board; import com.massivecraft.factions.*;
import com.massivecraft.factions.Conf;
import com.massivecraft.factions.FPlayers;
import com.massivecraft.factions.Factions;
import com.massivecraft.factions.shop.ShopConfig; import com.massivecraft.factions.shop.ShopConfig;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TL;
@@ -16,8 +13,7 @@ public class CmdSaveAll extends FCommand {
public CmdSaveAll() { public CmdSaveAll() {
super(); super();
this.aliases.add("saveall"); this.aliases.addAll(Aliases.saveAll);
this.aliases.add("save");
this.requirements = new CommandRequirements.Builder(Permission.SAVE) this.requirements = new CommandRequirements.Builder(Permission.SAVE)
.build(); .build();
@@ -29,6 +25,11 @@ public class CmdSaveAll extends FCommand {
Factions.getInstance().forceSave(false); Factions.getInstance().forceSave(false);
Board.getInstance().forceSave(false); Board.getInstance().forceSave(false);
Conf.save(); Conf.save();
try {
FactionsPlugin.instance.getFlogManager().saveLogs();
} catch (Exception e) {
e.printStackTrace();
}
ShopConfig.saveShop(); ShopConfig.saveShop();
context.msg(TL.COMMAND_SAVEALL_SUCCESS); context.msg(TL.COMMAND_SAVEALL_SUCCESS);
} }

View File

@@ -32,8 +32,7 @@ public class CmdSeeChunk extends FCommand {
public CmdSeeChunk() { public CmdSeeChunk() {
super(); super();
aliases.add("seechunk"); aliases.addAll(Aliases.seeChunk);
aliases.add("sc");
this.useParticles = FactionsPlugin.getInstance().getConfig().getBoolean("see-chunk.particles", true); this.useParticles = FactionsPlugin.getInstance().getConfig().getBoolean("see-chunk.particles", true);
interval = FactionsPlugin.getInstance().getConfig().getLong("see-chunk.interval", 10L); interval = FactionsPlugin.getInstance().getConfig().getLong("see-chunk.interval", 10L);

View File

@@ -12,8 +12,7 @@ public class CmdSeeDiscord extends FCommand{
*/ */
public CmdSeeDiscord() { public CmdSeeDiscord() {
this.aliases.add("seediscord"); this.aliases.addAll(Aliases.discord_see);
this.aliases.add("discord");
this.optionalArgs.put("faction", "yours"); this.optionalArgs.put("faction", "yours");

View File

@@ -11,7 +11,7 @@ public class CmdSetBanner extends FCommand {
public CmdSetBanner() { public CmdSetBanner() {
super(); super();
aliases.add("setbanner"); aliases.addAll(Aliases.setBanner);
this.requirements = new CommandRequirements.Builder(Permission.BANNER) this.requirements = new CommandRequirements.Builder(Permission.BANNER)
.playerOnly() .playerOnly()

View File

@@ -13,10 +13,7 @@ public class CmdSetDefaultRole extends FCommand {
public CmdSetDefaultRole() { public CmdSetDefaultRole() {
super(); super();
this.aliases.add("defaultrole"); this.aliases.addAll(Aliases.setDefaultRole);
this.aliases.add("defaultrank");
this.aliases.add("default");
this.aliases.add("def");
this.requiredArgs.add("role"); this.requiredArgs.add("role");
this.requirements = new CommandRequirements.Builder(Permission.DEFAULTRANK) this.requirements = new CommandRequirements.Builder(Permission.DEFAULTRANK)

View File

@@ -14,7 +14,7 @@ public class CmdSetDiscord extends FCommand {
public CmdSetDiscord(){ public CmdSetDiscord(){
super(); super();
this.aliases.add("setdiscord"); this.aliases.addAll(Aliases.discord_set);
this.optionalArgs.put("faction", "yours"); this.optionalArgs.put("faction", "yours");

View File

@@ -15,8 +15,7 @@ public class CmdSetFWarp extends FCommand {
*/ */
public CmdSetFWarp() { public CmdSetFWarp() {
this.aliases.add("setwarp"); this.aliases.addAll(Aliases.setWarp);
this.aliases.add("sw");
this.requiredArgs.add("warp name"); this.requiredArgs.add("warp name");
this.optionalArgs.put("password", "password"); this.optionalArgs.put("password", "password");
this.requirements = new CommandRequirements.Builder(Permission.SETWARP).playerOnly().memberOnly().withAction(PermissableAction.SETWARP).build(); this.requirements = new CommandRequirements.Builder(Permission.SETWARP).playerOnly().memberOnly().withAction(PermissableAction.SETWARP).build();

View File

@@ -12,8 +12,7 @@ public class CmdSetMaxVaults extends FCommand {
*/ */
public CmdSetMaxVaults() { public CmdSetMaxVaults() {
this.aliases.add("setmaxvaults"); this.aliases.addAll(Aliases.setMaxVaults);
this.aliases.add("smv");
this.requiredArgs.add("faction"); this.requiredArgs.add("faction");
this.requiredArgs.add("number"); this.requiredArgs.add("number");

View File

@@ -12,7 +12,7 @@ public class CmdSethome extends FCommand {
*/ */
public CmdSethome() { public CmdSethome() {
this.aliases.add("sethome"); this.aliases.addAll(Aliases.setHome);
this.optionalArgs.put("faction tag", "mine"); this.optionalArgs.put("faction tag", "mine");
this.requirements = new CommandRequirements.Builder(Permission.SETHOME) this.requirements = new CommandRequirements.Builder(Permission.SETHOME)
@@ -24,6 +24,7 @@ public class CmdSethome extends FCommand {
@Override @Override
public void perform(CommandContext context) { public void perform(CommandContext context) {
FactionsPlugin.getInstance().getServer().getScheduler().runTaskAsynchronously(FactionsPlugin.instance, () -> {
if (!Conf.homesEnabled) { if (!Conf.homesEnabled) {
context.msg(TL.COMMAND_SETHOME_DISABLED); context.msg(TL.COMMAND_SETHOME_DISABLED);
return; return;
@@ -54,6 +55,7 @@ public class CmdSethome extends FCommand {
if (faction != context.faction) { if (faction != context.faction) {
context.msg(TL.COMMAND_SETHOME_SETOTHER, faction.getTag(context.fPlayer)); context.msg(TL.COMMAND_SETHOME_SETOTHER, faction.getTag(context.fPlayer));
} }
});
} }
@Override @Override

View File

@@ -21,8 +21,7 @@ public class CmdShow extends FCommand {
List<String> defaults = new ArrayList<>(); List<String> defaults = new ArrayList<>();
public CmdShow() { public CmdShow() {
this.aliases.add("show"); this.aliases.addAll(Aliases.show_show);
this.aliases.add("who");
// add defaults to /f show in case config doesnt have it // add defaults to /f show in case config doesnt have it
defaults.add("{header}"); defaults.add("{header}");

View File

@@ -13,8 +13,7 @@ public class CmdShowClaims extends FCommand {
*/ */
public CmdShowClaims() { public CmdShowClaims() {
this.aliases.add("showclaims"); this.aliases.addAll(Aliases.show_claims);
this.aliases.add("showclaim");
this.requirements = new CommandRequirements.Builder(Permission.SHOWCLAIMS) this.requirements = new CommandRequirements.Builder(Permission.SHOWCLAIMS)
.playerOnly() .playerOnly()

View File

@@ -3,6 +3,7 @@ package com.massivecraft.factions.cmd;
import com.massivecraft.factions.Conf; import com.massivecraft.factions.Conf;
import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.FPlayers; import com.massivecraft.factions.FPlayers;
import com.massivecraft.factions.FactionsPlugin;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TL;
import mkremins.fanciful.FancyMessage; import mkremins.fanciful.FancyMessage;
@@ -16,7 +17,7 @@ public class CmdShowInvites extends FCommand {
public CmdShowInvites() { public CmdShowInvites() {
super(); super();
aliases.add("showinvites"); aliases.addAll(Aliases.show_invites);
this.requirements = new CommandRequirements.Builder(Permission.SHOW_INVITES) this.requirements = new CommandRequirements.Builder(Permission.SHOW_INVITES)
.playerOnly() .playerOnly()
@@ -33,8 +34,6 @@ public class CmdShowInvites extends FCommand {
String name = fp != null ? fp.getName() : id; String name = fp != null ? fp.getName() : id;
msg.then(name + " ").color(ChatColor.WHITE).tooltip(TL.COMMAND_SHOWINVITES_CLICKTOREVOKE.format(name)).command("/" + Conf.baseCommandAliases.get(0) + " deinvite " + name); msg.then(name + " ").color(ChatColor.WHITE).tooltip(TL.COMMAND_SHOWINVITES_CLICKTOREVOKE.format(name)).command("/" + Conf.baseCommandAliases.get(0) + " deinvite " + name);
} }
context.sendFancyMessage(msg);
} }
@Override @Override

View File

@@ -13,8 +13,7 @@ public class CmdSpawnerLock extends FCommand {
public CmdSpawnerLock(){ public CmdSpawnerLock(){
super(); super();
this.aliases.add("lockspawners"); this.aliases.addAll(Aliases.spawnerlock);
this.aliases.add("spawnerlock");
this.requirements = new CommandRequirements.Builder(Permission.LOCKSPAWNERS) this.requirements = new CommandRequirements.Builder(Permission.LOCKSPAWNERS)
.build(); .build();

View File

@@ -16,8 +16,7 @@ public class CmdStatus extends FCommand {
public CmdStatus() { public CmdStatus() {
super(); super();
this.aliases.add("status"); this.aliases.addAll(Aliases.status);
this.aliases.add("s");
this.requirements = new CommandRequirements.Builder(Permission.STATUS) this.requirements = new CommandRequirements.Builder(Permission.STATUS)
.playerOnly() .playerOnly()

View File

@@ -10,8 +10,7 @@ public class CmdStealth extends FCommand {
*/ */
public CmdStealth() { public CmdStealth() {
this.aliases.add("ninja"); this.aliases.addAll(Aliases.stealth);
this.aliases.add("stealth");
this.requirements = new CommandRequirements.Builder(Permission.STEALTH) this.requirements = new CommandRequirements.Builder(Permission.STEALTH)
.playerOnly() .playerOnly()

View File

@@ -18,7 +18,7 @@ public class CmdStrikes extends FCommand {
public CmdStrikes() { public CmdStrikes() {
super(); super();
this.aliases.add("strikes"); this.aliases.addAll(Aliases.strikes_strikes);
this.addSubCommand(cmdStrikesGive); this.addSubCommand(cmdStrikesGive);
this.addSubCommand(cmdStrikesInfo); this.addSubCommand(cmdStrikesInfo);

View File

@@ -12,7 +12,7 @@ public class CmdStrikesGive extends FCommand {
public CmdStrikesGive() { public CmdStrikesGive() {
super(); super();
this.aliases.add("give"); this.aliases.addAll(Aliases.strikes_give);
this.requiredArgs.add(0, "faction"); this.requiredArgs.add(0, "faction");
this.requirements = new CommandRequirements.Builder(Permission.SETSTRIKES) this.requirements = new CommandRequirements.Builder(Permission.SETSTRIKES)

View File

@@ -12,7 +12,7 @@ public class CmdStrikesInfo extends FCommand {
public CmdStrikesInfo() { public CmdStrikesInfo() {
super(); super();
this.aliases.add("info"); this.aliases.addAll(Aliases.strikes_info);
this.optionalArgs.put("target", "faction"); this.optionalArgs.put("target", "faction");
this.requirements = new CommandRequirements.Builder(Permission.SETSTRIKES) this.requirements = new CommandRequirements.Builder(Permission.SETSTRIKES)

View File

@@ -12,7 +12,7 @@ public class CmdStrikesSet extends FCommand {
public CmdStrikesSet() { public CmdStrikesSet() {
super(); super();
this.aliases.add("set"); this.aliases.addAll(Aliases.strikes_set);
this.requiredArgs.add(0, "faction"); this.requiredArgs.add(0, "faction");
this.requiredArgs.add(1, "amount"); this.requiredArgs.add(1, "amount");

View File

@@ -12,7 +12,7 @@ public class CmdStrikesTake extends FCommand {
public CmdStrikesTake() { public CmdStrikesTake() {
super(); super();
this.aliases.add("take"); this.aliases.addAll(Aliases.strikes_take);
this.requiredArgs.add(0, "faction"); this.requiredArgs.add(0, "faction");
this.requiredArgs.add(1, "number of strikes"); this.requiredArgs.add(1, "number of strikes");

View File

@@ -19,8 +19,7 @@ public class CmdStuck extends FCommand {
public CmdStuck() { public CmdStuck() {
super(); super();
this.aliases.add("stuck"); this.aliases.addAll(Aliases.stuck);
this.aliases.add("halp!"); // halp!c:
this.requirements = new CommandRequirements.Builder(Permission.STUCK) this.requirements = new CommandRequirements.Builder(Permission.STUCK)

View File

@@ -1,6 +1,7 @@
package com.massivecraft.factions.cmd; package com.massivecraft.factions.cmd;
import com.massivecraft.factions.*; import com.massivecraft.factions.*;
import com.massivecraft.factions.cmd.audit.FLogType;
import com.massivecraft.factions.discord.Discord; import com.massivecraft.factions.discord.Discord;
import com.massivecraft.factions.event.FactionRenameEvent; import com.massivecraft.factions.event.FactionRenameEvent;
import com.massivecraft.factions.scoreboards.FTeamWrapper; import com.massivecraft.factions.scoreboards.FTeamWrapper;
@@ -19,8 +20,7 @@ public class CmdTag extends FCommand {
*/ */
public CmdTag() { public CmdTag() {
this.aliases.add("tag"); this.aliases.addAll(Aliases.tag);
this.aliases.add("rename");
this.requiredArgs.add("faction tag"); this.requiredArgs.add("faction tag");
@@ -33,6 +33,7 @@ public class CmdTag extends FCommand {
@Override @Override
public void perform(CommandContext context) { public void perform(CommandContext context) {
String tag = context.argAsString(0); String tag = context.argAsString(0);
// TODO does not first test cover selfcase? // TODO does not first test cover selfcase?
@@ -67,6 +68,8 @@ public class CmdTag extends FCommand {
String oldtag = context.faction.getTag(); String oldtag = context.faction.getTag();
context.faction.setTag(tag); context.faction.setTag(tag);
Discord.changeFactionTag(context.faction, oldtag); Discord.changeFactionTag(context.faction, oldtag);
FactionsPlugin.instance.logFactionEvent(context.faction, FLogType.FTAG_EDIT, context.fPlayer.getName(), tag);
// Inform // Inform
for (FPlayer fplayer : FPlayers.getInstance().getOnlinePlayers()) { for (FPlayer fplayer : FPlayers.getInstance().getOnlinePlayers()) {
@@ -74,14 +77,12 @@ public class CmdTag extends FCommand {
fplayer.msg(TL.COMMAND_TAG_FACTION, context.fPlayer.describeTo(context.faction, true), context.faction.getTag(context.faction)); fplayer.msg(TL.COMMAND_TAG_FACTION, context.fPlayer.describeTo(context.faction, true), context.faction.getTag(context.faction));
continue; continue;
} }
// Broadcast the tag change (if applicable) // Broadcast the tag change (if applicable)
if (Conf.broadcastTagChanges) { if (Conf.broadcastTagChanges) {
Faction faction = fplayer.getFaction(); Faction faction = fplayer.getFaction();
fplayer.msg(TL.COMMAND_TAG_CHANGED, context.fPlayer.getColorTo(faction) + oldtag, context.faction.getTag(faction)); fplayer.msg(TL.COMMAND_TAG_CHANGED, context.fPlayer.getColorTo(faction) + oldtag, context.faction.getTag(faction));
} }
} }
FTeamWrapper.updatePrefixes(context.faction); FTeamWrapper.updatePrefixes(context.faction);
} }

View File

@@ -2,6 +2,7 @@ package com.massivecraft.factions.cmd;
import com.massivecraft.factions.Conf; import com.massivecraft.factions.Conf;
import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.FactionsPlugin;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TL;
import com.massivecraft.factions.zcore.util.TextUtil; import com.massivecraft.factions.zcore.util.TextUtil;
@@ -13,7 +14,7 @@ public class CmdTitle extends FCommand {
*/ */
public CmdTitle() { public CmdTitle() {
this.aliases.add("title"); this.aliases.addAll(Aliases.title);
this.requiredArgs.add("player name"); this.requiredArgs.add("player name");
this.optionalArgs.put("title", ""); this.optionalArgs.put("title", "");
@@ -24,16 +25,19 @@ public class CmdTitle extends FCommand {
@Override @Override
public void perform(CommandContext context) { public void perform(CommandContext context) {
FactionsPlugin.getInstance().getServer().getScheduler().runTaskAsynchronously(FactionsPlugin.instance, () -> {
FPlayer you = context.argAsBestFPlayerMatch(0); FPlayer you = context.argAsBestFPlayerMatch(0);
if (you == null) return; if (you == null) return;
context.args.remove(0); context.args.remove(0);
String title = TextUtil.implode(context.args, " "); String title = TextUtil.implode(context.args, " ");
if (!context.canIAdministerYou(context.fPlayer, you)) return; if (!context.canIAdministerYou(context.fPlayer, you)) return;
// if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay // if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay
if (!context.payForCommand(Conf.econCostTitle, TL.COMMAND_TITLE_TOCHANGE, TL.COMMAND_TITLE_FORCHANGE)) return; if (!context.payForCommand(Conf.econCostTitle, TL.COMMAND_TITLE_TOCHANGE, TL.COMMAND_TITLE_FORCHANGE))
return;
you.setTitle(context.sender, title); you.setTitle(context.sender, title);
// Inform // Inform
context.faction.msg(TL.COMMAND_TITLE_CHANGED, context.fPlayer.describeTo(context.faction, true), you.describeTo(context.faction, true)); context.faction.msg(TL.COMMAND_TITLE_CHANGED, context.fPlayer.describeTo(context.faction, true), you.describeTo(context.faction, true));
});
} }
@Override @Override

View File

@@ -12,9 +12,7 @@ public class CmdToggleAllianceChat extends FCommand {
public CmdToggleAllianceChat() { public CmdToggleAllianceChat() {
super(); super();
this.aliases.add("tac"); this.aliases.addAll(Aliases.toggleAllianceChat);
this.aliases.add("togglealliancechat");
this.aliases.add("ac");
this.requirements = new CommandRequirements.Builder(Permission.TOGGLE_ALLIANCE_CHAT) this.requirements = new CommandRequirements.Builder(Permission.TOGGLE_ALLIANCE_CHAT)
.playerOnly() .playerOnly()

View File

@@ -18,8 +18,7 @@ public class CmdTop extends FCommand {
public CmdTop() { public CmdTop() {
super(); super();
this.aliases.add("top"); this.aliases.addAll(Aliases.top);
this.aliases.add("t");
this.requiredArgs.add("criteria"); this.requiredArgs.add("criteria");
this.optionalArgs.put("page", "1"); this.optionalArgs.put("page", "1");

View File

@@ -15,7 +15,7 @@ public class CmdTpBanner extends FCommand {
public CmdTpBanner() { public CmdTpBanner() {
super(); super();
this.aliases.add("tpbanner"); this.aliases.addAll(Aliases.tpBanner);
this.requirements = new CommandRequirements.Builder(Permission.TPBANNER) this.requirements = new CommandRequirements.Builder(Permission.TPBANNER)
.playerOnly() .playerOnly()
@@ -29,8 +29,6 @@ public class CmdTpBanner extends FCommand {
return; return;
} }
final FactionsPlayerListener fpl = new FactionsPlayerListener();
if (FactionsBlockListener.bannerLocations.containsKey(context.fPlayer.getTag())) { if (FactionsBlockListener.bannerLocations.containsKey(context.fPlayer.getTag())) {
context.msg(TL.COMMAND_TPBANNER_SUCCESS); context.msg(TL.COMMAND_TPBANNER_SUCCESS);
context.doWarmUp(WarmUpUtil.Warmup.BANNER, TL.WARMUPS_NOTIFY_TELEPORT, "Banner", () -> { context.doWarmUp(WarmUpUtil.Warmup.BANNER, TL.WARMUPS_NOTIFY_TELEPORT, "Banner", () -> {

View File

@@ -14,7 +14,7 @@ public class CmdUnban extends FCommand {
public CmdUnban() { public CmdUnban() {
super(); super();
this.aliases.add("unban"); this.aliases.addAll(Aliases.unban);
this.requiredArgs.add("target"); this.requiredArgs.add("target");
this.requirements = new CommandRequirements.Builder(Permission.BAN) this.requirements = new CommandRequirements.Builder(Permission.BAN)
@@ -48,7 +48,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.toString(), context.faction.getTag(target)); target.msg(TL.COMMAND_UNBAN_TARGET, context.faction.getTag(target));
} }
@Override @Override

View File

@@ -2,7 +2,7 @@ package com.massivecraft.factions.cmd;
import com.massivecraft.factions.FactionsPlugin; import com.massivecraft.factions.FactionsPlugin;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.zcore.fupgrades.FUpgradesGUI; import com.massivecraft.factions.zcore.fupgrades.FUpgradeFrame;
import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TL;
public class CmdUpgrades extends FCommand { public class CmdUpgrades extends FCommand {
@@ -13,14 +13,12 @@ public class CmdUpgrades extends FCommand {
public CmdUpgrades() { public CmdUpgrades() {
super(); super();
this.aliases.add("upgrades"); this.aliases.addAll(Aliases.upgrades);
this.aliases.add("upgrade");
this.requirements = new CommandRequirements.Builder(Permission.UPGRADES) this.requirements = new CommandRequirements.Builder(Permission.UPGRADES)
.playerOnly() .playerOnly()
.memberOnly() .memberOnly()
.build(); .build();
} }
@Override @Override
@@ -29,7 +27,7 @@ public class CmdUpgrades extends FCommand {
context.fPlayer.msg(TL.COMMAND_UPGRADES_DISABLED); context.fPlayer.msg(TL.COMMAND_UPGRADES_DISABLED);
return; return;
} }
new FUpgradesGUI().openMainMenu(context.fPlayer); new FUpgradeFrame(context.faction).buildGUI(context.fPlayer);
} }
@Override @Override

View File

@@ -18,7 +18,7 @@ public class CmdVault extends FCommand {
*/ */
public CmdVault() { public CmdVault() {
this.aliases.add("vault"); this.aliases.addAll(Aliases.vault);
this.requirements = new CommandRequirements.Builder(Permission.VAULT) this.requirements = new CommandRequirements.Builder(Permission.VAULT)
.playerOnly() .playerOnly()

View File

@@ -13,8 +13,7 @@ public class CmdViewChest extends FCommand {
public CmdViewChest() { public CmdViewChest() {
super(); super();
this.aliases.add("viewchest"); this.aliases.addAll(Aliases.viewChest);
this.aliases.add("viewpv");
this.requiredArgs.add("faction name"); this.requiredArgs.add("faction name");

View File

@@ -3,6 +3,7 @@ package com.massivecraft.factions.cmd;
import com.massivecraft.factions.Conf; import com.massivecraft.factions.Conf;
import com.massivecraft.factions.FactionsPlugin; import com.massivecraft.factions.FactionsPlugin;
import com.massivecraft.factions.cmd.alts.CmdAlts; import com.massivecraft.factions.cmd.alts.CmdAlts;
import com.massivecraft.factions.cmd.audit.CmdAudit;
import com.massivecraft.factions.cmd.check.CmdCheck; import com.massivecraft.factions.cmd.check.CmdCheck;
import com.massivecraft.factions.cmd.check.CmdWeeWoo; import com.massivecraft.factions.cmd.check.CmdWeeWoo;
import com.massivecraft.factions.cmd.chest.CmdChest; import com.massivecraft.factions.cmd.chest.CmdChest;
@@ -16,6 +17,7 @@ import com.massivecraft.factions.cmd.relational.CmdRelationAlly;
import com.massivecraft.factions.cmd.relational.CmdRelationEnemy; import com.massivecraft.factions.cmd.relational.CmdRelationEnemy;
import com.massivecraft.factions.cmd.relational.CmdRelationNeutral; import com.massivecraft.factions.cmd.relational.CmdRelationNeutral;
import com.massivecraft.factions.cmd.relational.CmdRelationTruce; import com.massivecraft.factions.cmd.relational.CmdRelationTruce;
import com.massivecraft.factions.cmd.reserve.CmdReserve;
import com.massivecraft.factions.cmd.roles.CmdDemote; import com.massivecraft.factions.cmd.roles.CmdDemote;
import com.massivecraft.factions.cmd.roles.CmdPromote; import com.massivecraft.factions.cmd.roles.CmdPromote;
import com.massivecraft.factions.cmd.tnt.CmdTnt; import com.massivecraft.factions.cmd.tnt.CmdTnt;
@@ -162,6 +164,10 @@ public class FCmdRoot extends FCommand implements CommandExecutor {
public CmdSetGuild cmdSetGuild = new CmdSetGuild(); public CmdSetGuild cmdSetGuild = new CmdSetGuild();
public CmdDiscord cmdDiscord = new CmdDiscord(); public CmdDiscord cmdDiscord = new CmdDiscord();
public CmdDebug cmdDebug = new CmdDebug(); public CmdDebug cmdDebug = new CmdDebug();
public CmdDrain cmdDrain = new CmdDrain();
public CmdLookup cmdLookup = new CmdLookup();
public CmdAudit cmdAudit = new CmdAudit();
public CmdReserve cmdReserve = new CmdReserve();
//Variables to know if we already setup certain sub commands //Variables to know if we already setup certain sub commands
public Boolean discordEnabled = false; public Boolean discordEnabled = false;
public Boolean checkEnabled = false; public Boolean checkEnabled = false;
@@ -177,6 +183,7 @@ public class FCmdRoot extends FCommand implements CommandExecutor {
public Boolean coreProtectEnabled = false; public Boolean coreProtectEnabled = false;
public Boolean internalFTOPEnabled = false; public Boolean internalFTOPEnabled = false;
public Boolean fWildEnabled = false; public Boolean fWildEnabled = false;
public Boolean fAuditEnabled = false;
public FCmdRoot() { public FCmdRoot() {
super(); super();
@@ -291,6 +298,8 @@ public class FCmdRoot extends FCommand implements CommandExecutor {
this.addSubCommand(this.cmdViewChest); this.addSubCommand(this.cmdViewChest);
this.addSubCommand(this.cmdConvertConfig); this.addSubCommand(this.cmdConvertConfig);
this.addSubCommand(this.cmdSpawnerLock); this.addSubCommand(this.cmdSpawnerLock);
this.addSubCommand(this.cmdDrain);
this.addSubCommand(this.cmdLookup);
addVariableCommands(); addVariableCommands();
if (CommodoreProvider.isSupported()) brigadierManager.build(); if (CommodoreProvider.isSupported()) brigadierManager.build();
} }
@@ -308,6 +317,11 @@ public class FCmdRoot extends FCommand implements CommandExecutor {
this.addSubCommand(this.cmdDiscord); this.addSubCommand(this.cmdDiscord);
discordEnabled = true; discordEnabled = true;
} }
//Reserve
if(Conf.useReserveSystem){
this.addSubCommand(this.cmdReserve);
}
//PayPal //PayPal
if (FactionsPlugin.getInstance().getConfig().getBoolean("fpaypal.Enabled", false) && !fPayPalEnabled) { if (FactionsPlugin.getInstance().getConfig().getBoolean("fpaypal.Enabled", false) && !fPayPalEnabled) {
this.addSubCommand(this.cmdPaypalSet); this.addSubCommand(this.cmdPaypalSet);
@@ -336,6 +350,12 @@ public class FCmdRoot extends FCommand implements CommandExecutor {
this.addSubCommand(this.cmdTop); this.addSubCommand(this.cmdTop);
internalFTOPEnabled = true; internalFTOPEnabled = true;
} }
if(Conf.useAuditSystem){
this.addSubCommand(cmdAudit);
fAuditEnabled = true;
}
//Other //Other
if (FactionsPlugin.getInstance().getConfig().getBoolean("Wild.Enabled", false) && !fWildEnabled) { if (FactionsPlugin.getInstance().getConfig().getBoolean("Wild.Enabled", false) && !fWildEnabled) {
this.addSubCommand(this.cmdWild); this.addSubCommand(this.cmdWild);

Some files were not shown because too many files have changed in this diff Show More