Compare commits
12 Commits
2.0.8-BETA
...
audit
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d847013e39 | ||
|
|
06d85573ba | ||
|
|
9284707db6 | ||
|
|
7b07e3ed23 | ||
|
|
c0719ec4f5 | ||
|
|
c9fd86ef9e | ||
|
|
939a60c611 | ||
|
|
36f22262c6 | ||
|
|
f5e9ce3d90 | ||
|
|
e244b469aa | ||
|
|
5f80ecfa76 | ||
|
|
28517ef391 |
7
pom.xml
7
pom.xml
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<groupId>com.massivecraft</groupId>
|
<groupId>com.massivecraft</groupId>
|
||||||
<artifactId>Factions</artifactId>
|
<artifactId>Factions</artifactId>
|
||||||
<version>1.6.9.5-U0.2.1-2.0.8-BETA</version>
|
<version>1.6.9.5-U0.2.1-2.1.0-BETA</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>SaberFactions</name>
|
<name>SaberFactions</name>
|
||||||
@@ -387,11 +387,6 @@
|
|||||||
<version>1.0.0</version>
|
<version>1.0.0</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.codemc.worldguardwrapper</groupId>
|
|
||||||
<artifactId>worldguardwrapper</artifactId>
|
|
||||||
<version>1.1.6-SNAPSHOT</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.jagrosh</groupId>
|
<groupId>com.jagrosh</groupId>
|
||||||
<artifactId>jda-utilities-commons</artifactId>
|
<artifactId>jda-utilities-commons</artifactId>
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ public class Conf {
|
|||||||
public static boolean logMoneyTransactions = true;
|
public static boolean logMoneyTransactions = true;
|
||||||
public static boolean logPlayerCommands = true;
|
public static boolean logPlayerCommands = true;
|
||||||
// prevent some potential exploits
|
// prevent some potential exploits
|
||||||
|
public static boolean denyFlightIfInNoClaimingWorld = false;
|
||||||
public static boolean preventCreeperGlitch = true;
|
public static boolean preventCreeperGlitch = true;
|
||||||
public static boolean handleExploitObsidianGenerators = true;
|
public static boolean handleExploitObsidianGenerators = true;
|
||||||
public static boolean handleExploitEnderPearlClipping = true;
|
public static boolean handleExploitEnderPearlClipping = true;
|
||||||
@@ -219,6 +220,10 @@ 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;
|
||||||
|
|
||||||
|
//logs
|
||||||
|
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);
|
||||||
@@ -540,6 +545,10 @@ public class Conf {
|
|||||||
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));
|
||||||
defaultFactionPermissions.put("RECRUIT", new DefaultPermissions(false));
|
defaultFactionPermissions.put("RECRUIT", new DefaultPermissions(false));
|
||||||
|
defaultFactionPermissions.put("ALLY", new DefaultPermissions(false));
|
||||||
|
defaultFactionPermissions.put("ENEMY", new DefaultPermissions(false));
|
||||||
|
defaultFactionPermissions.put("TRUCE", new DefaultPermissions(false));
|
||||||
|
defaultFactionPermissions.put("NEUTRAL", new DefaultPermissions(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void load() {
|
public static void load() {
|
||||||
|
|||||||
@@ -244,6 +244,10 @@ public class FLocation implements Serializable {
|
|||||||
return (this.x << 9) + this.z + (this.worldName != null ? this.worldName.hashCode() : 0);
|
return (this.x << 9) + this.z + (this.worldName != null ? this.worldName.hashCode() : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String formatXAndZ(String splitter) {
|
||||||
|
return chunkToBlock(this.x) + "x" + splitter + " " + chunkToBlock(this.z) + "z";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object obj) {
|
public boolean equals(Object obj) {
|
||||||
if (obj == this) {
|
if (obj == this) {
|
||||||
|
|||||||
@@ -30,6 +30,18 @@ public interface FPlayer extends EconomyParticipator {
|
|||||||
|
|
||||||
boolean hasNotificationsEnabled();
|
boolean hasNotificationsEnabled();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to check if this player should be served titles
|
||||||
|
* @return if this FPlayer has titles enabled as a boolean
|
||||||
|
*/
|
||||||
|
boolean hasTitlesEnabled();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to set if player should be served titles
|
||||||
|
* @param b Boolean to titlesEnabled to
|
||||||
|
*/
|
||||||
|
void setTitlesEnabled(Boolean b);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to determine if a player is in their faction's chest
|
* Used to determine if a player is in their faction's chest
|
||||||
* @return if player is in their faction's as a boolean
|
* @return if player is in their faction's as a boolean
|
||||||
|
|||||||
@@ -440,4 +440,5 @@ public interface Faction extends EconomyParticipator {
|
|||||||
String getPaypal();
|
String getPaypal();
|
||||||
|
|
||||||
void paypalSet(String paypal);
|
void paypalSet(String paypal);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,12 +11,14 @@ import com.massivecraft.factions.cmd.FCommand;
|
|||||||
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.chest.FChestListener;
|
||||||
import com.massivecraft.factions.discord.DiscordListener;
|
import com.massivecraft.factions.discord.DiscordListener;
|
||||||
import com.massivecraft.factions.discord.FactionChatHandler;
|
import com.massivecraft.factions.discord.FactionChatHandler;
|
||||||
import com.massivecraft.factions.integration.Econ;
|
import com.massivecraft.factions.integration.Econ;
|
||||||
import com.massivecraft.factions.integration.Worldguard;
|
import com.massivecraft.factions.integration.Worldguard;
|
||||||
import com.massivecraft.factions.integration.dynmap.EngineDynmap;
|
import com.massivecraft.factions.integration.dynmap.EngineDynmap;
|
||||||
import com.massivecraft.factions.listeners.*;
|
import com.massivecraft.factions.listeners.*;
|
||||||
|
import com.massivecraft.factions.listeners.menu.MenuListener;
|
||||||
import com.massivecraft.factions.missions.MissionHandler;
|
import com.massivecraft.factions.missions.MissionHandler;
|
||||||
import com.massivecraft.factions.shop.ShopConfig;
|
import com.massivecraft.factions.shop.ShopConfig;
|
||||||
import com.massivecraft.factions.struct.ChatMode;
|
import com.massivecraft.factions.struct.ChatMode;
|
||||||
@@ -26,6 +28,8 @@ import com.massivecraft.factions.util.*;
|
|||||||
import com.massivecraft.factions.util.Particles.ReflectionUtils;
|
import com.massivecraft.factions.util.Particles.ReflectionUtils;
|
||||||
import com.massivecraft.factions.zcore.CommandVisibility;
|
import com.massivecraft.factions.zcore.CommandVisibility;
|
||||||
import com.massivecraft.factions.zcore.MPlugin;
|
import com.massivecraft.factions.zcore.MPlugin;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogManager;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
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;
|
||||||
@@ -90,6 +94,7 @@ 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;
|
||||||
|
|
||||||
|
|
||||||
public FactionsPlugin() {
|
public FactionsPlugin() {
|
||||||
@@ -184,6 +189,8 @@ 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();
|
||||||
@@ -274,7 +281,7 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ShopConfig.setup();
|
ShopConfig.setup();
|
||||||
|
flogManager.loadLogs(this);
|
||||||
getServer().getPluginManager().registerEvents(factionsPlayerListener = new FactionsPlayerListener(), this);
|
getServer().getPluginManager().registerEvents(factionsPlayerListener = new FactionsPlayerListener(), this);
|
||||||
|
|
||||||
// Register Event Handlers
|
// Register Event Handlers
|
||||||
@@ -286,6 +293,8 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
new FUpgradesGUI(),
|
new FUpgradesGUI(),
|
||||||
new UpgradesListener(),
|
new UpgradesListener(),
|
||||||
new MissionHandler(this),
|
new MissionHandler(this),
|
||||||
|
new FChestListener(),
|
||||||
|
new MenuListener(),
|
||||||
new AntiChestListener()
|
new AntiChestListener()
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -434,6 +443,12 @@ 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) {
|
||||||
@@ -559,21 +574,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);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
@@ -714,6 +714,14 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
return hookedPlayervaults;
|
return hookedPlayervaults;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FLogManager getFlogManager() {
|
||||||
|
return flogManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void logFactionEvent(Faction faction, FLogType type, String... arguments) {
|
||||||
|
this.flogManager.log(faction, type, arguments);
|
||||||
|
}
|
||||||
|
|
||||||
public String getPrimaryGroup(OfflinePlayer player) {
|
public String getPrimaryGroup(OfflinePlayer player) {
|
||||||
AtomicReference<String> primaryGroup = new AtomicReference<>();
|
AtomicReference<String> primaryGroup = new AtomicReference<>();
|
||||||
|
|
||||||
@@ -737,4 +745,8 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
public void debug(String s) {
|
public void debug(String s) {
|
||||||
debug(Level.INFO, s);
|
debug(Level.INFO, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Worldguard getWg() {
|
||||||
|
return wg;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.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.faudit.FLogType;
|
||||||
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 {
|
||||||
|
|
||||||
@@ -77,7 +80,7 @@ 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, context.player == null ? TL.GENERIC_SERVERADMIN.toString() : context.fPlayer.describeTo(fplayer, true), fyou.describeTo(fplayer), targetFaction.describeTo(fplayer));
|
fplayer.msg(TL.COMMAND_ADMIN_PROMOTED, context.player == null ? TL.GENERIC_SERVERADMIN.toString() : context.fPlayer.describeTo(fplayer, true), fyou.describeTo(fplayer), targetFaction.describeTo(fplayer));
|
||||||
|
|||||||
34
src/main/java/com/massivecraft/factions/cmd/CmdAudit.java
Normal file
34
src/main/java/com/massivecraft/factions/cmd/CmdAudit.java
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
package com.massivecraft.factions.cmd;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.Faction;
|
||||||
|
import com.massivecraft.factions.struct.Permission;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FAuditMenu;
|
||||||
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class CmdAudit extends FCommand {
|
||||||
|
|
||||||
|
public CmdAudit() {
|
||||||
|
super();
|
||||||
|
this.aliases.add("audit");
|
||||||
|
this.aliases.add("logs");
|
||||||
|
this.aliases.add("log");
|
||||||
|
|
||||||
|
|
||||||
|
this.requirements = new CommandRequirements.Builder(Permission.AUDIT)
|
||||||
|
.playerOnly()
|
||||||
|
.memberOnly()
|
||||||
|
.noErrorOnManyArgs()
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void perform(CommandContext context) {
|
||||||
|
Faction faction = context.args.size() == 1 && context.sender.isOp() ? context.argAsFaction(0) : context.faction;
|
||||||
|
new FAuditMenu((Player)context.sender, faction).open((Player)context.sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TL getUsageTranslation() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,7 +5,9 @@ import com.massivecraft.factions.FactionsPlugin;
|
|||||||
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.zcore.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
@@ -75,6 +77,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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,10 @@ 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.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.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import mkremins.fanciful.FancyMessage;
|
import mkremins.fanciful.FancyMessage;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@@ -76,6 +78,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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,9 +31,11 @@ public class CmdDeinvite extends FCommand {
|
|||||||
|
|
||||||
// Check if arg 0 == null do you don't have
|
// Check if arg 0 == null do you don't have
|
||||||
// `No player "null" could be found.` message.
|
// `No player "null" could be found.` message.
|
||||||
|
|
||||||
if (context.args.get(0) == null) {
|
if (context.args.get(0) == 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;
|
||||||
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);
|
||||||
@@ -54,6 +56,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;
|
||||||
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);
|
||||||
|
|||||||
@@ -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.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
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 {
|
||||||
|
|
||||||
@@ -32,7 +35,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));
|
||||||
|
|||||||
@@ -97,6 +97,9 @@ public class CmdFly extends FCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean checkBypassPerms(FPlayer fme, Player me, Faction toFac) {
|
public static boolean checkBypassPerms(FPlayer fme, Player me, Faction toFac) {
|
||||||
|
if (Conf.denyFlightIfInNoClaimingWorld && !Conf.worldsNoClaiming.isEmpty() && Conf.worldsNoClaiming.stream().anyMatch(me.getWorld().getName()::equalsIgnoreCase))
|
||||||
|
return false;
|
||||||
|
|
||||||
if (toFac != fme.getFaction()) {
|
if (toFac != fme.getFaction()) {
|
||||||
if (!me.hasPermission(Permission.FLY_WILD.node) && toFac.isWilderness() || !me.hasPermission(Permission.FLY_SAFEZONE.node) && toFac.isSafeZone() || !me.hasPermission(Permission.FLY_WARZONE.node) && toFac.isWarZone()) {
|
if (!me.hasPermission(Permission.FLY_WILD.node) && toFac.isWilderness() || !me.hasPermission(Permission.FLY_SAFEZONE.node) && toFac.isSafeZone() || !me.hasPermission(Permission.FLY_WARZONE.node) && toFac.isWarZone()) {
|
||||||
fme.msg(TL.COMMAND_FLY_NO_ACCESS, toFac.getTag(fme));
|
fme.msg(TL.COMMAND_FLY_NO_ACCESS, toFac.getTag(fme));
|
||||||
@@ -182,7 +185,7 @@ public class CmdFly extends FCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (fme.canFlyAtLocation())
|
if (fme.canFlyAtLocation()) {
|
||||||
context.doWarmUp(WarmUpUtil.Warmup.FLIGHT, TL.WARMUPS_NOTIFY_FLIGHT, "Fly", () -> {
|
context.doWarmUp(WarmUpUtil.Warmup.FLIGHT, TL.WARMUPS_NOTIFY_FLIGHT, "Fly", () -> {
|
||||||
fme.setFlying(true);
|
fme.setFlying(true);
|
||||||
flyMap.put(fme.getPlayer().getName(), true);
|
flyMap.put(fme.getPlayer().getName(), true);
|
||||||
@@ -194,6 +197,9 @@ public class CmdFly extends FCommand {
|
|||||||
startFlyCheck();
|
startFlyCheck();
|
||||||
}
|
}
|
||||||
}, FactionsPlugin.getInstance().getConfig().getLong("warmups.f-fly", 0));
|
}, FactionsPlugin.getInstance().getConfig().getLong("warmups.f-fly", 0));
|
||||||
|
} else {
|
||||||
|
fme.msg(TL.COMMAND_FLY_NO_ACCESS, Board.getInstance().getFactionAt(fme.getLastStoodAt()).getTag());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -4,7 +4,9 @@ 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.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import mkremins.fanciful.FancyMessage;
|
import mkremins.fanciful.FancyMessage;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@@ -69,6 +71,7 @@ public class CmdInvite extends FCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
@@ -3,7 +3,9 @@ package com.massivecraft.factions.cmd;
|
|||||||
import com.massivecraft.factions.*;
|
import com.massivecraft.factions.*;
|
||||||
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.zcore.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fupgrades.UpgradeType;
|
import com.massivecraft.factions.zcore.fupgrades.UpgradeType;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
@@ -117,6 +119,7 @@ public class CmdJoin extends FCommand {
|
|||||||
|
|
||||||
faction.deinvite(fplayer);
|
faction.deinvite(fplayer);
|
||||||
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 (Conf.logFactionJoin) {
|
if (Conf.logFactionJoin) {
|
||||||
if (samePlayer) {
|
if (samePlayer) {
|
||||||
|
|||||||
@@ -7,7 +7,9 @@ import com.massivecraft.factions.FactionsPlugin;
|
|||||||
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.zcore.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import mkremins.fanciful.FancyMessage;
|
import mkremins.fanciful.FancyMessage;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@@ -118,6 +120,8 @@ 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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,10 @@ 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.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.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import mkremins.fanciful.FancyMessage;
|
import mkremins.fanciful.FancyMessage;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@@ -72,6 +74,7 @@ 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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.massivecraft.factions.cmd;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
|
import com.massivecraft.factions.struct.Permission;
|
||||||
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
|
|
||||||
|
public class CmdPlayerTitleToggle extends FCommand {
|
||||||
|
public CmdPlayerTitleToggle() {
|
||||||
|
super();
|
||||||
|
this.aliases.add("titles");
|
||||||
|
this.requirements = new CommandRequirements.Builder(Permission.TOGGLE_TITLES)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void perform(CommandContext context) {
|
||||||
|
context.fPlayer.setTitlesEnabled(!context.fPlayer.hasTitlesEnabled());
|
||||||
|
context.msg(TL.COMMAND_TITLETOGGLE_TOGGLED, context.fPlayer.hasTitlesEnabled() ? FactionsPlugin.getInstance().color("&dEnabled") : FactionsPlugin.getInstance().color("&dDisabled"));
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public TL getUsageTranslation() {return TL.COMMAND_TITLETOGGLE_DESCRIPTION;}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
@@ -25,6 +22,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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.massivecraft.factions.scoreboards.FTeamWrapper;
|
|||||||
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.MiscUtil;
|
import com.massivecraft.factions.util.MiscUtil;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
@@ -61,6 +62,7 @@ public class CmdTag extends FCommand {
|
|||||||
|
|
||||||
String oldtag = context.faction.getTag();
|
String oldtag = context.faction.getTag();
|
||||||
context.faction.setTag(tag);
|
context.faction.setTag(tag);
|
||||||
|
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()) {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class CmdUpgrades extends FCommand {
|
|||||||
@Override
|
@Override
|
||||||
public void perform(CommandContext context) {
|
public void perform(CommandContext context) {
|
||||||
if (!FactionsPlugin.getInstance().getConfig().getBoolean("fupgrades.Enabled")) {
|
if (!FactionsPlugin.getInstance().getConfig().getBoolean("fupgrades.Enabled")) {
|
||||||
context.fPlayer.sendMessage("This command is disabled!");
|
context.fPlayer.msg(TL.COMMAND_UPGRADES_DISABLED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
new FUpgradesGUI().openMainMenu(context.fPlayer);
|
new FUpgradesGUI().openMainMenu(context.fPlayer);
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ public class FCmdRoot extends FCommand implements CommandExecutor {
|
|||||||
public CmdStuck cmdStuck = new CmdStuck();
|
public CmdStuck cmdStuck = new CmdStuck();
|
||||||
public CmdTag cmdTag = new CmdTag();
|
public CmdTag cmdTag = new CmdTag();
|
||||||
public CmdTitle cmdTitle = new CmdTitle();
|
public CmdTitle cmdTitle = new CmdTitle();
|
||||||
|
public CmdPlayerTitleToggle cmdPlayerTitleToggle = new CmdPlayerTitleToggle();
|
||||||
public CmdToggleAllianceChat cmdToggleAllianceChat = new CmdToggleAllianceChat();
|
public CmdToggleAllianceChat cmdToggleAllianceChat = new CmdToggleAllianceChat();
|
||||||
public CmdUnclaim cmdUnclaim = new CmdUnclaim();
|
public CmdUnclaim cmdUnclaim = new CmdUnclaim();
|
||||||
public CmdUnclaimall cmdUnclaimall = new CmdUnclaimall();
|
public CmdUnclaimall cmdUnclaimall = new CmdUnclaimall();
|
||||||
@@ -153,6 +154,7 @@ public class FCmdRoot extends FCommand implements CommandExecutor {
|
|||||||
public CmdSeeDiscord cmdSeeDiscord = new CmdSeeDiscord();
|
public CmdSeeDiscord cmdSeeDiscord = new CmdSeeDiscord();
|
||||||
public CmdInviteBot cmdInviteBot = new CmdInviteBot();
|
public CmdInviteBot cmdInviteBot = new CmdInviteBot();
|
||||||
public CmdSetGuild cmdSetGuild = new CmdSetGuild();
|
public CmdSetGuild cmdSetGuild = new CmdSetGuild();
|
||||||
|
public CmdAudit cmdAudit = new CmdAudit();
|
||||||
|
|
||||||
public FCmdRoot() {
|
public FCmdRoot() {
|
||||||
super();
|
super();
|
||||||
@@ -215,6 +217,7 @@ public class FCmdRoot extends FCommand implements CommandExecutor {
|
|||||||
this.addSubCommand(this.cmdLogout);
|
this.addSubCommand(this.cmdLogout);
|
||||||
this.addSubCommand(this.cmdTag);
|
this.addSubCommand(this.cmdTag);
|
||||||
this.addSubCommand(this.cmdTitle);
|
this.addSubCommand(this.cmdTitle);
|
||||||
|
this.addSubCommand(this.cmdPlayerTitleToggle);
|
||||||
this.addSubCommand(this.cmdUnclaim);
|
this.addSubCommand(this.cmdUnclaim);
|
||||||
this.addSubCommand(this.cmdUnclaimall);
|
this.addSubCommand(this.cmdUnclaimall);
|
||||||
this.addSubCommand(this.cmdVersion);
|
this.addSubCommand(this.cmdVersion);
|
||||||
@@ -263,6 +266,7 @@ 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.cmdAudit);
|
||||||
|
|
||||||
if(Conf.useDiscordSystem){
|
if(Conf.useDiscordSystem){
|
||||||
this.addSubCommand(this.cmdInviteBot);
|
this.addSubCommand(this.cmdInviteBot);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.massivecraft.factions.cmd.alts;
|
package com.massivecraft.factions.cmd.alts;
|
||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.FLocation;
|
||||||
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.CommandContext;
|
import com.massivecraft.factions.cmd.CommandContext;
|
||||||
@@ -8,8 +9,10 @@ import com.massivecraft.factions.cmd.CommandRequirements;
|
|||||||
import com.massivecraft.factions.cmd.FCommand;
|
import com.massivecraft.factions.cmd.FCommand;
|
||||||
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.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fperms.Access;
|
import com.massivecraft.factions.zcore.fperms.Access;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import mkremins.fanciful.FancyMessage;
|
import mkremins.fanciful.FancyMessage;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@@ -82,6 +85,8 @@ public class CmdInviteAlt extends FCommand {
|
|||||||
message.send(target.getPlayer());
|
message.send(target.getPlayer());
|
||||||
|
|
||||||
context.faction.msg(TL.COMMAND_ALTINVITE_INVITED_ALT, context.fPlayer.describeTo(context.faction, true), target.describeTo(context.faction));
|
context.faction.msg(TL.COMMAND_ALTINVITE_INVITED_ALT, 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
|
||||||
|
|||||||
@@ -10,8 +10,10 @@ import com.massivecraft.factions.cmd.FCommand;
|
|||||||
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.zcore.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fperms.Access;
|
import com.massivecraft.factions.zcore.fperms.Access;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
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.command.ConsoleCommandSender;
|
import org.bukkit.command.ConsoleCommandSender;
|
||||||
@@ -122,7 +124,7 @@ public class CmdKickAlt extends FCommand {
|
|||||||
toKickFaction.promoteNewLeader();
|
toKickFaction.promoteNewLeader();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FactionsPlugin.instance.logFactionEvent(toKickFaction, FLogType.INVITES, context.fPlayer.getName(), CC.Red + "kicked alt", toKick.getName());
|
||||||
toKickFaction.removeAltPlayer(toKick);
|
toKickFaction.removeAltPlayer(toKick);
|
||||||
toKickFaction.deinvite(toKick);
|
toKickFaction.deinvite(toKick);
|
||||||
toKick.resetFactionData();
|
toKick.resetFactionData();
|
||||||
|
|||||||
@@ -0,0 +1,108 @@
|
|||||||
|
package com.massivecraft.factions.cmd.chest;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.FPlayer;
|
||||||
|
import com.massivecraft.factions.FPlayers;
|
||||||
|
import com.massivecraft.factions.Faction;
|
||||||
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryDragEvent;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
public class FChestListener implements Listener {
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInventoryDrag(InventoryDragEvent e) {
|
||||||
|
|
||||||
|
Player player = (Player) e.getWhoClicked();
|
||||||
|
FPlayer fPlayer = FPlayers.getInstance().getByPlayer(player);
|
||||||
|
if (!fPlayer.isInFactionsChest()) return;
|
||||||
|
if (e.isCancelled()) return;
|
||||||
|
e.setCancelled(true);
|
||||||
|
e.getWhoClicked().sendMessage(CC.RedB + "(!) " + CC.Red + "You cannot drag items while viewing a /f chest!");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@EventHandler(
|
||||||
|
priority = EventPriority.HIGHEST,
|
||||||
|
ignoreCancelled = true
|
||||||
|
)
|
||||||
|
public void onPlayerClickInventory(InventoryClickEvent event) {
|
||||||
|
Player player = (Player) event.getWhoClicked();
|
||||||
|
FPlayer fPlayer = FPlayers.getInstance().getByPlayer(player);
|
||||||
|
if (!fPlayer.isInFactionsChest()) return;
|
||||||
|
|
||||||
|
if (event.getClick() == ClickType.UNKNOWN) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
player.sendMessage(CC.RedB + "(!) " + CC.Red + "You cannot use that click type inside the /f chest!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack currentItem = event.getCurrentItem();
|
||||||
|
if (event.getClick() == ClickType.NUMBER_KEY) {
|
||||||
|
currentItem = event.getClickedInventory().getItem(event.getSlot());
|
||||||
|
}
|
||||||
|
|
||||||
|
Material currentItemType = currentItem != null ? currentItem.getType() : Material.AIR;
|
||||||
|
|
||||||
|
ItemStack cursorItem = event.getCursor();
|
||||||
|
if (event.getClick() == ClickType.NUMBER_KEY) {
|
||||||
|
cursorItem = player.getInventory().getItem(event.getHotbarButton());
|
||||||
|
}
|
||||||
|
|
||||||
|
Material cursorItemType = cursorItem != null ? cursorItem.getType() : Material.AIR;
|
||||||
|
FPlayer fplayer = FPlayers.getInstance().getByPlayer(player);
|
||||||
|
Faction faction;
|
||||||
|
if (fplayer == null || !(faction = fplayer.getFaction()).isNormal()) {
|
||||||
|
player.closeInventory();
|
||||||
|
player.sendMessage(CC.RedB + "(!) " + CC.Red + "You are no longer in your faction!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.getClickedInventory() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.getClickedInventory().getName().equalsIgnoreCase(FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fchest.Inventory-Title")))) {
|
||||||
|
if (currentItemType != Material.AIR) {
|
||||||
|
Inventory ours = faction.getChestInventory();
|
||||||
|
if (ours == null || !ours.contains(currentItem)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
player.sendMessage(CC.RedB + "(!) That item not longer exists!");
|
||||||
|
Bukkit.getLogger().info("[FactionChest] " + player.getName() + " tried to remove " + currentItem + " from /f chest when it didnt contain! Items: " + (ours == null ? "none" : Arrays.toString(ours.getContents())));
|
||||||
|
player.closeInventory();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.logRemoveItem(currentItem, fplayer, player);
|
||||||
|
} else if (cursorItemType != Material.AIR && !event.isShiftClick()) {
|
||||||
|
this.logAddItem(cursorItem, fplayer, player);
|
||||||
|
}
|
||||||
|
} else if (event.isShiftClick() && currentItemType != Material.AIR) {
|
||||||
|
this.logAddItem(currentItem, fplayer, player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void logAddItem(ItemStack cursorItem, FPlayer fplayer, Player player) {
|
||||||
|
String itemName = cursorItem.hasItemMeta() && cursorItem.getItemMeta().hasDisplayName() ? cursorItem.getItemMeta().getDisplayName() : StringUtils.capitaliseAllWords(cursorItem.getType().name().replace("_", " ").toLowerCase());
|
||||||
|
FactionsPlugin.instance.logFactionEvent(fplayer.getFaction(), FLogType.FCHEST_EDIT, player.getName(), CC.GreenB + "ADDED", itemName);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void logRemoveItem(ItemStack currentItem, FPlayer fplayer, Player player) {
|
||||||
|
String itemName = currentItem.hasItemMeta() && currentItem.getItemMeta().hasDisplayName() ? currentItem.getItemMeta().getDisplayName() : StringUtils.capitaliseAllWords(currentItem.getType().name().replace("_", " ").toLowerCase());
|
||||||
|
FactionsPlugin.instance.logFactionEvent(fplayer.getFaction(), FLogType.FCHEST_EDIT, player.getName(), CC.RedB + "TOOK", itemName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,13 +1,17 @@
|
|||||||
package com.massivecraft.factions.cmd.claim;
|
package com.massivecraft.factions.cmd.claim;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.FLocation;
|
||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.cmd.CommandContext;
|
import com.massivecraft.factions.cmd.CommandContext;
|
||||||
import com.massivecraft.factions.cmd.CommandRequirements;
|
import com.massivecraft.factions.cmd.CommandRequirements;
|
||||||
import com.massivecraft.factions.cmd.FCommand;
|
import com.massivecraft.factions.cmd.FCommand;
|
||||||
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.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fperms.Access;
|
import com.massivecraft.factions.zcore.fperms.Access;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
|
|
||||||
public class CmdAutoClaim extends FCommand {
|
public class CmdAutoClaim extends FCommand {
|
||||||
@@ -53,11 +57,10 @@ public class CmdAutoClaim extends FCommand {
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
context.fPlayer.setAutoClaimFor(forFaction);
|
context.fPlayer.setAutoClaimFor(forFaction);
|
||||||
|
|
||||||
context.msg(TL.COMMAND_AUTOCLAIM_ENABLED, forFaction.describeTo(context.fPlayer));
|
context.msg(TL.COMMAND_AUTOCLAIM_ENABLED, forFaction.describeTo(context.fPlayer));
|
||||||
context.fPlayer.attemptClaim(forFaction, context.fPlayer.getPlayer().getLocation(), true);
|
context.fPlayer.attemptClaim(forFaction, context.fPlayer.getPlayer().getLocation(), true);
|
||||||
|
FactionsPlugin.instance.logFactionEvent(forFaction, FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.GreenB + "CLAIMED", "1", new FLocation(context.fPlayer.getPlayer().getLocation()).formatXAndZ(","));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -3,14 +3,17 @@ package com.massivecraft.factions.cmd.claim;
|
|||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.FLocation;
|
import com.massivecraft.factions.FLocation;
|
||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.cmd.CommandContext;
|
import com.massivecraft.factions.cmd.CommandContext;
|
||||||
import com.massivecraft.factions.cmd.CommandRequirements;
|
import com.massivecraft.factions.cmd.CommandRequirements;
|
||||||
import com.massivecraft.factions.cmd.FCommand;
|
import com.massivecraft.factions.cmd.FCommand;
|
||||||
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.SpiralTask;
|
import com.massivecraft.factions.util.SpiralTask;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fperms.Access;
|
import com.massivecraft.factions.zcore.fperms.Access;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
|
|
||||||
|
|
||||||
@@ -69,11 +72,11 @@ public class CmdClaim extends FCommand {
|
|||||||
boolean success = context.fPlayer.attemptClaim(forFaction, this.currentLocation(), true);
|
boolean success = context.fPlayer.attemptClaim(forFaction, this.currentLocation(), true);
|
||||||
if (success) {
|
if (success) {
|
||||||
failCount = 0;
|
failCount = 0;
|
||||||
|
FactionsPlugin.instance.logFactionEvent(forFaction, FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.GreenB + "CLAIMED", "1", (new FLocation(context.fPlayer.getPlayer().getLocation())).formatXAndZ(","));
|
||||||
} else if (failCount++ >= limit) {
|
} else if (failCount++ >= limit) {
|
||||||
this.stop();
|
this.stop();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,11 +2,14 @@ package com.massivecraft.factions.cmd.claim;
|
|||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.FLocation;
|
import com.massivecraft.factions.FLocation;
|
||||||
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.cmd.CommandContext;
|
import com.massivecraft.factions.cmd.CommandContext;
|
||||||
import com.massivecraft.factions.cmd.CommandRequirements;
|
import com.massivecraft.factions.cmd.CommandRequirements;
|
||||||
import com.massivecraft.factions.cmd.FCommand;
|
import com.massivecraft.factions.cmd.FCommand;
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
|
|
||||||
public class CmdClaimAt extends FCommand {
|
public class CmdClaimAt extends FCommand {
|
||||||
|
|||||||
@@ -1,13 +1,17 @@
|
|||||||
package com.massivecraft.factions.cmd.claim;
|
package com.massivecraft.factions.cmd.claim;
|
||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.FLocation;
|
||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.cmd.CommandContext;
|
import com.massivecraft.factions.cmd.CommandContext;
|
||||||
import com.massivecraft.factions.cmd.CommandRequirements;
|
import com.massivecraft.factions.cmd.CommandRequirements;
|
||||||
import com.massivecraft.factions.cmd.FCommand;
|
import com.massivecraft.factions.cmd.FCommand;
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fperms.Access;
|
import com.massivecraft.factions.zcore.fperms.Access;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
@@ -79,7 +83,7 @@ public class CmdClaimLine extends FCommand {
|
|||||||
for (int i = 0; i < amount; i++) {
|
for (int i = 0; i < amount; i++) {
|
||||||
context.fPlayer.attemptClaim(forFaction, location, true);
|
context.fPlayer.attemptClaim(forFaction, location, true);
|
||||||
location = location.add(blockFace.getModX() * 16, 0, blockFace.getModZ() * 16);
|
location = location.add(blockFace.getModX() * 16, 0, blockFace.getModZ() * 16);
|
||||||
}
|
FactionsPlugin.instance.logFactionEvent(forFaction, FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.GreenB + "CLAIMED", String.valueOf(i), new FLocation(context.player.getLocation()).formatXAndZ(",")); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -9,8 +9,10 @@ import com.massivecraft.factions.integration.Econ;
|
|||||||
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.SpiralTask;
|
import com.massivecraft.factions.util.SpiralTask;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fperms.Access;
|
import com.massivecraft.factions.zcore.fperms.Access;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
@@ -124,6 +126,7 @@ public class CmdUnclaim extends FCommand {
|
|||||||
Board.getInstance().removeAt(target);
|
Board.getInstance().removeAt(target);
|
||||||
|
|
||||||
targetFaction.msg(TL.COMMAND_UNCLAIM_UNCLAIMED, context.fPlayer.describeTo(targetFaction, true));
|
targetFaction.msg(TL.COMMAND_UNCLAIM_UNCLAIMED, context.fPlayer.describeTo(targetFaction, true));
|
||||||
|
FactionsPlugin.instance.logFactionEvent(targetFaction, FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.RedB + "UNCLAIMED", "1", (new FLocation(context.fPlayer.getPlayer().getLocation())).formatXAndZ(","));
|
||||||
context.msg(TL.COMMAND_UNCLAIM_UNCLAIMS);
|
context.msg(TL.COMMAND_UNCLAIM_UNCLAIMS);
|
||||||
|
|
||||||
if (Conf.logLandUnclaims) {
|
if (Conf.logLandUnclaims) {
|
||||||
@@ -176,6 +179,8 @@ public class CmdUnclaim extends FCommand {
|
|||||||
|
|
||||||
Board.getInstance().removeAt(target);
|
Board.getInstance().removeAt(target);
|
||||||
context.faction.msg(TL.COMMAND_UNCLAIM_FACTIONUNCLAIMED, context.fPlayer.describeTo(context.faction, true));
|
context.faction.msg(TL.COMMAND_UNCLAIM_FACTIONUNCLAIMED, context.fPlayer.describeTo(context.faction, true));
|
||||||
|
FactionsPlugin.instance.logFactionEvent(targetFaction, FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.RedB + "UNCLAIMED", "1", (new FLocation(context.fPlayer.getPlayer().getLocation())).formatXAndZ(","));
|
||||||
|
|
||||||
|
|
||||||
if (Conf.logLandUnclaims) {
|
if (Conf.logLandUnclaims) {
|
||||||
FactionsPlugin.getInstance().log(TL.COMMAND_UNCLAIM_LOG.format(context.fPlayer.getName(), target.getCoordString(), targetFaction.getTag()));
|
FactionsPlugin.getInstance().log(TL.COMMAND_UNCLAIM_LOG.format(context.fPlayer.getName(), target.getCoordString(), targetFaction.getTag()));
|
||||||
|
|||||||
@@ -1,16 +1,15 @@
|
|||||||
package com.massivecraft.factions.cmd.claim;
|
package com.massivecraft.factions.cmd.claim;
|
||||||
|
|
||||||
import com.massivecraft.factions.Board;
|
import com.massivecraft.factions.*;
|
||||||
import com.massivecraft.factions.Conf;
|
|
||||||
import com.massivecraft.factions.Faction;
|
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
|
||||||
import com.massivecraft.factions.cmd.CommandContext;
|
import com.massivecraft.factions.cmd.CommandContext;
|
||||||
import com.massivecraft.factions.cmd.CommandRequirements;
|
import com.massivecraft.factions.cmd.CommandRequirements;
|
||||||
import com.massivecraft.factions.cmd.FCommand;
|
import com.massivecraft.factions.cmd.FCommand;
|
||||||
import com.massivecraft.factions.event.LandUnclaimAllEvent;
|
import com.massivecraft.factions.event.LandUnclaimAllEvent;
|
||||||
import com.massivecraft.factions.integration.Econ;
|
import com.massivecraft.factions.integration.Econ;
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
@@ -66,12 +65,15 @@ public class CmdUnclaimall extends FCommand {
|
|||||||
|
|
||||||
LandUnclaimAllEvent unclaimAllEvent = new LandUnclaimAllEvent(target, context.fPlayer);
|
LandUnclaimAllEvent unclaimAllEvent = new LandUnclaimAllEvent(target, context.fPlayer);
|
||||||
Bukkit.getScheduler().runTask(FactionsPlugin.getInstance(), () -> Bukkit.getServer().getPluginManager().callEvent(unclaimAllEvent));
|
Bukkit.getScheduler().runTask(FactionsPlugin.getInstance(), () -> Bukkit.getServer().getPluginManager().callEvent(unclaimAllEvent));
|
||||||
|
|
||||||
if (unclaimAllEvent.isCancelled()) {
|
if (unclaimAllEvent.isCancelled()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
int unclaimed = target.getAllClaims().size();
|
||||||
|
|
||||||
Board.getInstance().unclaimAll(target.getId());
|
Board.getInstance().unclaimAll(target.getId());
|
||||||
context.faction.msg(TL.COMMAND_UNCLAIMALL_UNCLAIMED, context.fPlayer.describeTo(context.faction, true));
|
context.faction.msg(TL.COMMAND_UNCLAIMALL_UNCLAIMED, context.fPlayer.describeTo(context.faction, true));
|
||||||
|
FactionsPlugin.instance.logFactionEvent(context.faction, FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.RedB + "UNCLAIMED", String.valueOf(unclaimed), new FLocation(context.fPlayer.getPlayer().getLocation()).formatXAndZ(","));
|
||||||
|
|
||||||
if (Conf.logLandUnclaims) {
|
if (Conf.logLandUnclaims) {
|
||||||
FactionsPlugin.getInstance().log(TL.COMMAND_UNCLAIMALL_LOG.format(context.fPlayer.getName(), context.faction.getTag()));
|
FactionsPlugin.getInstance().log(TL.COMMAND_UNCLAIMALL_LOG.format(context.fPlayer.getName(), context.faction.getTag()));
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import com.massivecraft.factions.cmd.FCommand;
|
|||||||
import com.massivecraft.factions.iface.EconomyParticipator;
|
import com.massivecraft.factions.iface.EconomyParticipator;
|
||||||
import com.massivecraft.factions.integration.Econ;
|
import com.massivecraft.factions.integration.Econ;
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
|
||||||
@@ -38,6 +39,8 @@ public class CmdMoneyDeposit extends FCommand {
|
|||||||
|
|
||||||
if (success && Conf.logMoneyTransactions) {
|
if (success && Conf.logMoneyTransactions) {
|
||||||
FactionsPlugin.getInstance().log(ChatColor.stripColor(FactionsPlugin.getInstance().txt.parse(TL.COMMAND_MONEYDEPOSIT_DEPOSITED.toString(), context.fPlayer.getName(), Econ.moneyString(amount), faction.describeTo(null))));
|
FactionsPlugin.getInstance().log(ChatColor.stripColor(FactionsPlugin.getInstance().txt.parse(TL.COMMAND_MONEYDEPOSIT_DEPOSITED.toString(), context.fPlayer.getName(), Econ.moneyString(amount), faction.describeTo(null))));
|
||||||
|
FactionsPlugin.instance.logFactionEvent(context.faction, FLogType.BANK_EDIT, context.fPlayer.getName(), ChatColor.GREEN + ChatColor.BOLD.toString() + "DEPOSITED", amount + "");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.massivecraft.factions.cmd.econ;
|
package com.massivecraft.factions.cmd.econ;
|
||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.cmd.CommandContext;
|
import com.massivecraft.factions.cmd.CommandContext;
|
||||||
import com.massivecraft.factions.cmd.CommandRequirements;
|
import com.massivecraft.factions.cmd.CommandRequirements;
|
||||||
@@ -9,8 +10,10 @@ import com.massivecraft.factions.iface.EconomyParticipator;
|
|||||||
import com.massivecraft.factions.integration.Econ;
|
import com.massivecraft.factions.integration.Econ;
|
||||||
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.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fperms.Access;
|
import com.massivecraft.factions.zcore.fperms.Access;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
|
||||||
@@ -48,6 +51,8 @@ public class CmdMoneyWithdraw extends FCommand {
|
|||||||
|
|
||||||
if (success && Conf.logMoneyTransactions) {
|
if (success && Conf.logMoneyTransactions) {
|
||||||
FactionsPlugin.getInstance().log(ChatColor.stripColor(FactionsPlugin.getInstance().txt.parse(TL.COMMAND_MONEYWITHDRAW_WITHDRAW.toString(), context.fPlayer.getName(), Econ.moneyString(amount), faction.describeTo(null))));
|
FactionsPlugin.getInstance().log(ChatColor.stripColor(FactionsPlugin.getInstance().txt.parse(TL.COMMAND_MONEYWITHDRAW_WITHDRAW.toString(), context.fPlayer.getName(), Econ.moneyString(amount), faction.describeTo(null))));
|
||||||
|
FactionsPlugin.instance.logFactionEvent((Faction) faction, FLogType.BANK_EDIT, context.fPlayer.getName(), CC.RedB + "WITHDREW", amount + "");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import com.massivecraft.factions.scoreboards.FTeamWrapper;
|
|||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
import com.massivecraft.factions.struct.Relation;
|
import com.massivecraft.factions.struct.Relation;
|
||||||
import com.massivecraft.factions.struct.Role;
|
import com.massivecraft.factions.struct.Role;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
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;
|
import org.bukkit.ChatColor;
|
||||||
@@ -79,7 +80,8 @@ public abstract class FRelationCommand extends FCommand {
|
|||||||
// trigger the faction relation event
|
// trigger the faction relation event
|
||||||
FactionRelationEvent relationEvent = new FactionRelationEvent(context.faction, them, oldRelation, currentRelation);
|
FactionRelationEvent relationEvent = new FactionRelationEvent(context.faction, them, oldRelation, currentRelation);
|
||||||
Bukkit.getServer().getPluginManager().callEvent(relationEvent);
|
Bukkit.getServer().getPluginManager().callEvent(relationEvent);
|
||||||
|
FactionsPlugin.instance.logFactionEvent(context.faction, FLogType.RELATION_CHANGE,context.fPlayer.getName(), this.targetRelation.getColor() + this.targetRelation.name(), oldRelation.getColor() + them.getTag());
|
||||||
|
FactionsPlugin.instance.logFactionEvent(them, FLogType.RELATION_CHANGE, oldRelation.getColor() + context.fPlayer.getName(), this.targetRelation.getColor() + this.targetRelation.name(), "your faction");
|
||||||
them.msg(TL.COMMAND_RELATIONS_MUTUAL, currentRelationColor + targetRelation.getTranslation(), currentRelationColor + context.faction.getTag());
|
them.msg(TL.COMMAND_RELATIONS_MUTUAL, currentRelationColor + targetRelation.getTranslation(), currentRelationColor + context.faction.getTag());
|
||||||
context.faction.msg(TL.COMMAND_RELATIONS_MUTUAL, currentRelationColor + targetRelation.getTranslation(), currentRelationColor + them.getTag());
|
context.faction.msg(TL.COMMAND_RELATIONS_MUTUAL, currentRelationColor + targetRelation.getTranslation(), currentRelationColor + them.getTag());
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,13 +1,17 @@
|
|||||||
package com.massivecraft.factions.cmd.roles;
|
package com.massivecraft.factions.cmd.roles;
|
||||||
|
|
||||||
import com.massivecraft.factions.FPlayer;
|
import com.massivecraft.factions.FPlayer;
|
||||||
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.cmd.CommandContext;
|
import com.massivecraft.factions.cmd.CommandContext;
|
||||||
import com.massivecraft.factions.cmd.CommandRequirements;
|
import com.massivecraft.factions.cmd.CommandRequirements;
|
||||||
import com.massivecraft.factions.cmd.FCommand;
|
import com.massivecraft.factions.cmd.FCommand;
|
||||||
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.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
|
||||||
public class FPromoteCommand extends FCommand {
|
public class FPromoteCommand extends FCommand {
|
||||||
|
|
||||||
@@ -51,6 +55,7 @@ public class FPromoteCommand extends FCommand {
|
|||||||
context.msg(TL.COMMAND_PROMOTE_NOT_SAME);
|
context.msg(TL.COMMAND_PROMOTE_NOT_SAME);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't allow people to promote people to their same or higher rank.
|
// Don't allow people to promote people to their same or higher rank.
|
||||||
if (context.fPlayer.getRole().value <= promotion.value) {
|
if (context.fPlayer.getRole().value <= promotion.value) {
|
||||||
context.msg(TL.COMMAND_PROMOTE_NOT_ALLOWED);
|
context.msg(TL.COMMAND_PROMOTE_NOT_ALLOWED);
|
||||||
@@ -78,6 +83,8 @@ public class FPromoteCommand extends FCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context.msg(TL.COMMAND_PROMOTE_SUCCESS, action, target.getName(), promotion.nicename);
|
context.msg(TL.COMMAND_PROMOTE_SUCCESS, action, target.getName(), promotion.nicename);
|
||||||
|
FactionsPlugin.instance.getFlogManager().log(context.faction, FLogType.ROLE_PERM_EDIT, context.fPlayer.getName(), action, target.getName(), promotion.nicename);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
package com.massivecraft.factions.cmd.tnt;
|
package com.massivecraft.factions.cmd.tnt;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.Factions;
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.cmd.CommandContext;
|
import com.massivecraft.factions.cmd.CommandContext;
|
||||||
import com.massivecraft.factions.cmd.CommandRequirements;
|
import com.massivecraft.factions.cmd.CommandRequirements;
|
||||||
import com.massivecraft.factions.cmd.FCommand;
|
import com.massivecraft.factions.cmd.FCommand;
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
import com.massivecraft.factions.util.XMaterial;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
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.Material;
|
import org.bukkit.Material;
|
||||||
@@ -17,7 +19,7 @@ public class CmdTnt extends FCommand {
|
|||||||
public CmdTnt() {
|
public CmdTnt() {
|
||||||
super();
|
super();
|
||||||
this.aliases.add("tnt");
|
this.aliases.add("tnt");
|
||||||
this.optionalArgs.put("add/take", "");
|
this.optionalArgs.put("add/take/addall", "");
|
||||||
this.optionalArgs.put("amount", "number");
|
this.optionalArgs.put("amount", "number");
|
||||||
|
|
||||||
this.requirements = new CommandRequirements.Builder(Permission.TNT)
|
this.requirements = new CommandRequirements.Builder(Permission.TNT)
|
||||||
@@ -33,7 +35,6 @@ public class CmdTnt extends FCommand {
|
|||||||
context.msg(TL.COMMAND_TNT_DISABLED_MSG);
|
context.msg(TL.COMMAND_TNT_DISABLED_MSG);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (context.args.size() == 2) {
|
if (context.args.size() == 2) {
|
||||||
if (context.args.get(0).equalsIgnoreCase("add") || context.args.get(0).equalsIgnoreCase("a")) {
|
if (context.args.get(0).equalsIgnoreCase("add") || context.args.get(0).equalsIgnoreCase("a")) {
|
||||||
try {
|
try {
|
||||||
@@ -71,6 +72,7 @@ public class CmdTnt extends FCommand {
|
|||||||
|
|
||||||
context.faction.addTnt(amount);
|
context.faction.addTnt(amount);
|
||||||
context.msg(TL.COMMAND_TNT_DEPOSIT_SUCCESS);
|
context.msg(TL.COMMAND_TNT_DEPOSIT_SUCCESS);
|
||||||
|
FactionsPlugin.instance.getFlogManager().log(context.faction, FLogType.F_TNT, context.fPlayer.getName(), "DEPOSITED", amount + "x TNT");
|
||||||
context.fPlayer.sendMessage(FactionsPlugin.instance.color(TL.COMMAND_TNT_AMOUNT.toString().replace("{amount}", context.faction.getTnt() + "").replace("{maxAmount}", context.faction.getTntBankLimit() + "")));
|
context.fPlayer.sendMessage(FactionsPlugin.instance.color(TL.COMMAND_TNT_AMOUNT.toString().replace("{amount}", context.faction.getTnt() + "").replace("{maxAmount}", context.faction.getTntBankLimit() + "")));
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -91,7 +93,7 @@ public class CmdTnt extends FCommand {
|
|||||||
context.msg(TL.COMMAND_TNT_WIDTHDRAW_NOTENOUGH_TNT.toString());
|
context.msg(TL.COMMAND_TNT_WIDTHDRAW_NOTENOUGH_TNT.toString());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int fullStacks = Math.round(amount / 64);
|
int fullStacks = amount / 64;
|
||||||
int remainderAmt = amount - (fullStacks * 64);
|
int remainderAmt = amount - (fullStacks * 64);
|
||||||
if ((remainderAmt == 0 && !hasAvaliableSlot(context.player, fullStacks))) {
|
if ((remainderAmt == 0 && !hasAvaliableSlot(context.player, fullStacks))) {
|
||||||
context.msg(TL.COMMAND_TNT_WIDTHDRAW_NOTENOUGH_SPACE);
|
context.msg(TL.COMMAND_TNT_WIDTHDRAW_NOTENOUGH_SPACE);
|
||||||
@@ -108,8 +110,36 @@ public class CmdTnt extends FCommand {
|
|||||||
context.faction.takeTnt(amount);
|
context.faction.takeTnt(amount);
|
||||||
context.player.updateInventory();
|
context.player.updateInventory();
|
||||||
context.msg(TL.COMMAND_TNT_WIDTHDRAW_SUCCESS);
|
context.msg(TL.COMMAND_TNT_WIDTHDRAW_SUCCESS);
|
||||||
|
FactionsPlugin.instance.getFlogManager().log(context.faction, FLogType.F_TNT, context.fPlayer.getName(), "WITHDREW", amount + "x TNT");
|
||||||
}
|
}
|
||||||
} else if (context.args.size() == 1) {
|
} else if (context.args.size() == 1) {
|
||||||
|
if (context.args.get(0).equalsIgnoreCase("addall")) {
|
||||||
|
Inventory inv = context.player.getInventory();
|
||||||
|
int invTnt = 0;
|
||||||
|
for (int i = 0; i <= inv.getSize(); i++) {
|
||||||
|
if (inv.getItem(i) == null) { continue; }
|
||||||
|
if (inv.getItem(i).getType() == Material.TNT) {
|
||||||
|
invTnt += inv.getItem(i).getAmount();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (invTnt <= 0) {
|
||||||
|
context.msg(TL.COMMAND_TNT_DEPOSIT_NOTENOUGH);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (context.faction.getTnt() + invTnt > context.faction.getTntBankLimit()) {
|
||||||
|
context.msg(TL.COMMAND_TNT_EXCEEDLIMIT);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
removeItems(context.player.getInventory(), new ItemStack(Material.TNT), invTnt);
|
||||||
|
context.player.updateInventory();
|
||||||
|
context.faction.addTnt(invTnt);
|
||||||
|
context.msg(TL.COMMAND_TNT_DEPOSIT_SUCCESS);
|
||||||
|
|
||||||
|
context.fPlayer.sendMessage(FactionsPlugin.instance.color(TL.COMMAND_TNT_AMOUNT.toString().replace("{amount}", context.faction.getTnt() + "").replace("{maxAmount}", context.faction.getTntBankLimit() + "")));
|
||||||
|
FactionsPlugin.instance.getFlogManager().log(context.faction, FLogType.F_TNT, context.fPlayer.getName(), "DEPOSITED", invTnt + "x TNT");
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
context.msg(TL.GENERIC_ARGS_TOOFEW);
|
context.msg(TL.GENERIC_ARGS_TOOFEW);
|
||||||
context.msg(context.args.get(0).equalsIgnoreCase("take") || context.args.get(0).equalsIgnoreCase("t") ? TL.COMMAND_TNT_TAKE_DESCRIPTION : TL.COMMAND_TNT_ADD_DESCRIPTION);
|
context.msg(context.args.get(0).equalsIgnoreCase("take") || context.args.get(0).equalsIgnoreCase("t") ? TL.COMMAND_TNT_TAKE_DESCRIPTION : TL.COMMAND_TNT_ADD_DESCRIPTION);
|
||||||
}
|
}
|
||||||
@@ -141,6 +171,24 @@ public class CmdTnt extends FCommand {
|
|||||||
return check >= howmany;
|
return check >= howmany;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void removeItems(Inventory inventory, ItemStack item, int toRemove) {
|
||||||
|
if (toRemove <= 0 || inventory == null || item == null)
|
||||||
|
return;
|
||||||
|
for (int i = 0; i < inventory.getSize(); i++) {
|
||||||
|
ItemStack loopItem = inventory.getItem(i);
|
||||||
|
if (loopItem == null || !item.isSimilar(loopItem))
|
||||||
|
continue;
|
||||||
|
if (toRemove <= 0)
|
||||||
|
return;
|
||||||
|
if (toRemove < loopItem.getAmount()) {
|
||||||
|
loopItem.setAmount(loopItem.getAmount() - toRemove);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
inventory.clear(i);
|
||||||
|
toRemove -= loopItem.getAmount();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void removeFromInventory(Inventory inventory, ItemStack item) {
|
public void removeFromInventory(Inventory inventory, ItemStack item) {
|
||||||
int amt = item.getAmount();
|
int amt = item.getAmount();
|
||||||
ItemStack[] items = inventory.getContents();
|
ItemStack[] items = inventory.getContents();
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ public class Econ {
|
|||||||
FactionsPlugin.getInstance().log(Level.WARNING, "Vault does not appear to be hooked into an economy plugin.");
|
FactionsPlugin.getInstance().log(Level.WARNING, "Vault does not appear to be hooked into an economy plugin.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
to.sendMessage(String.format("%s's balance is %s.", about.getTag(), Econ.moneyString(econ.getBalance(about.getAccountId()))));
|
to.sendMessage(String.format(TL.ECON_PLAYERBALANCE.toString(), about.getTag(), Econ.moneyString(econ.getBalance(about.getAccountId()))));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean canIControllYou(EconomyParticipator i, EconomyParticipator you) {
|
public static boolean canIControllYou(EconomyParticipator i, EconomyParticipator you) {
|
||||||
@@ -126,7 +126,7 @@ public class Econ {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise you may not!;,,;
|
// Otherwise you may not!;,,;
|
||||||
i.msg("<h>%s<i> lacks permission to control <h>%s's<i> money.", i.describeTo(i, true), you.describeTo(i));
|
i.msg(TL.ECON_CANTCONTROLMONEY, i.describeTo(i, true), you.describeTo(i));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,7 +179,7 @@ public class Econ {
|
|||||||
if (!econ.has(fromAcc, amount)) {
|
if (!econ.has(fromAcc, amount)) {
|
||||||
// There was not enough money to pay
|
// There was not enough money to pay
|
||||||
if (invoker != null && notify) {
|
if (invoker != null && notify) {
|
||||||
invoker.msg("<h>%s<b> can't afford to transfer <h>%s<b> to %s<b>.", from.describeTo(invoker, true), moneyString(amount), to.describeTo(invoker));
|
invoker.msg(TL.COMMAND_MONEYTRANSFERFF_TRANSFERCANTAFFORD, from.describeTo(invoker, true), moneyString(amount), to.describeTo(invoker));
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -209,7 +209,7 @@ public class Econ {
|
|||||||
|
|
||||||
// if we get here something with the transaction failed
|
// if we get here something with the transaction failed
|
||||||
if (notify) {
|
if (notify) {
|
||||||
invoker.msg("Unable to transfer %s<b> to <h>%s<b> from <h>%s<b>.", moneyString(amount), to.describeTo(invoker), from.describeTo(invoker, true));
|
invoker.msg(TL.ECON_UNABLETOTRANSFER, moneyString(amount), to.describeTo(invoker), from.describeTo(invoker, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -237,19 +237,19 @@ public class Econ {
|
|||||||
|
|
||||||
if (invoker == null) {
|
if (invoker == null) {
|
||||||
for (FPlayer recipient : recipients) {
|
for (FPlayer recipient : recipients) {
|
||||||
recipient.msg("<h>%s<i> was transferred from <h>%s<i> to <h>%s<i>.", moneyString(amount), from.describeTo(recipient), to.describeTo(recipient));
|
recipient.msg(TL.ECON_MONEYTRASFERREDFROM, moneyString(amount), from.describeTo(recipient), to.describeTo(recipient));
|
||||||
}
|
}
|
||||||
} else if (invoker == from) {
|
} else if (invoker == from) {
|
||||||
for (FPlayer recipient : recipients) {
|
for (FPlayer recipient : recipients) {
|
||||||
recipient.msg("<h>%s<i> <h>gave %s<i> to <h>%s<i>.", from.describeTo(recipient, true), moneyString(amount), to.describeTo(recipient));
|
recipient.msg(TL.ECON_PERSONGAVEMONEYTO, from.describeTo(recipient, true), moneyString(amount), to.describeTo(recipient));
|
||||||
}
|
}
|
||||||
} else if (invoker == to) {
|
} else if (invoker == to) {
|
||||||
for (FPlayer recipient : recipients) {
|
for (FPlayer recipient : recipients) {
|
||||||
recipient.msg("<h>%s<i> <h>took %s<i> from <h>%s<i>.", to.describeTo(recipient, true), moneyString(amount), from.describeTo(recipient));
|
recipient.msg(TL.ECON_PERSONTOOKMONEYFROM, to.describeTo(recipient, true), moneyString(amount), from.describeTo(recipient));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (FPlayer recipient : recipients) {
|
for (FPlayer recipient : recipients) {
|
||||||
recipient.msg("<h>%s<i> transferred <h>%s<i> from <h>%s<i> to <h>%s<i>.", invoker.describeTo(recipient, true), moneyString(amount), from.describeTo(recipient), to.describeTo(recipient));
|
recipient.msg(TL.ECON_MONEYTRASFERREDFROMPERSONTOPERSON, invoker.describeTo(recipient, true), moneyString(amount), from.describeTo(recipient), to.describeTo(recipient));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -280,7 +280,7 @@ public class Econ {
|
|||||||
|
|
||||||
if (!affordable) {
|
if (!affordable) {
|
||||||
if (toDoThis != null && !toDoThis.isEmpty()) {
|
if (toDoThis != null && !toDoThis.isEmpty()) {
|
||||||
ep.msg("<h>%s<i> can't afford <h>%s<i> %s.", ep.describeTo(ep, true), moneyString(delta), toDoThis);
|
ep.msg(TL.COMMAND_MONEY_CANTAFFORD, ep.describeTo(ep, true), moneyString(delta), toDoThis);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -318,13 +318,13 @@ public class Econ {
|
|||||||
if (er.transactionSuccess()) {
|
if (er.transactionSuccess()) {
|
||||||
modifyUniverseMoney(-delta);
|
modifyUniverseMoney(-delta);
|
||||||
if (forDoingThis != null && !forDoingThis.isEmpty()) {
|
if (forDoingThis != null && !forDoingThis.isEmpty()) {
|
||||||
ep.msg("<h>%s<i> gained <h>%s<i> %s.", You, moneyString(delta), forDoingThis);
|
ep.msg(TL.COMMAND_MONEY_GAINED, You, moneyString(delta), forDoingThis);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
// transfer to account failed
|
// transfer to account failed
|
||||||
if (forDoingThis != null && !forDoingThis.isEmpty()) {
|
if (forDoingThis != null && !forDoingThis.isEmpty()) {
|
||||||
ep.msg("<h>%s<i> would have gained <h>%s<i> %s, but the deposit failed.", You, moneyString(delta), forDoingThis);
|
ep.msg(TL.ECON_DEPOSITFAILED, You, moneyString(delta), forDoingThis);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -336,13 +336,13 @@ public class Econ {
|
|||||||
// There is enough money to pay
|
// There is enough money to pay
|
||||||
modifyUniverseMoney(-delta);
|
modifyUniverseMoney(-delta);
|
||||||
if (forDoingThis != null && !forDoingThis.isEmpty()) {
|
if (forDoingThis != null && !forDoingThis.isEmpty()) {
|
||||||
ep.msg("<h>%s<i> lost <h>%s<i> %s.", You, moneyString(-delta), forDoingThis);
|
ep.msg(TL.ECON_MONEYLOST, You, moneyString(-delta), forDoingThis);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
// There was not enough money to pay
|
// There was not enough money to pay
|
||||||
if (toDoThis != null && !toDoThis.isEmpty()) {
|
if (toDoThis != null && !toDoThis.isEmpty()) {
|
||||||
ep.msg("<h>%s<i> can't afford <h>%s<i> %s.", You, moneyString(-delta), toDoThis);
|
ep.msg(TL.ECON_CANTAFFORD, You, moneyString(-delta), toDoThis);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import com.massivecraft.factions.struct.Role;
|
|||||||
import com.massivecraft.factions.util.ItemBuilder;
|
import com.massivecraft.factions.util.ItemBuilder;
|
||||||
import com.massivecraft.factions.util.Particles.ParticleEffect;
|
import com.massivecraft.factions.util.Particles.ParticleEffect;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
import com.massivecraft.factions.util.XMaterial;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogManager;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.LogTimer;
|
||||||
import com.massivecraft.factions.zcore.fperms.Access;
|
import com.massivecraft.factions.zcore.fperms.Access;
|
||||||
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;
|
||||||
@@ -15,6 +17,8 @@ import org.bukkit.Bukkit;
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.BlockState;
|
||||||
|
import org.bukkit.block.CreatureSpawner;
|
||||||
import org.bukkit.entity.ArmorStand;
|
import org.bukkit.entity.ArmorStand;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
@@ -29,17 +33,22 @@ import org.bukkit.event.entity.EntityExplodeEvent;
|
|||||||
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
|
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import org.bukkit.material.MaterialData;
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
|
|
||||||
public class FactionsBlockListener implements Listener {
|
public class FactionsBlockListener implements Listener {
|
||||||
|
|
||||||
public static HashMap<String, Location> bannerLocations = new HashMap<>();
|
public static HashMap<String, Location> bannerLocations = new HashMap<>();
|
||||||
private HashMap<String, Boolean> bannerCooldownMap = new HashMap<>();
|
private HashMap<String, Boolean> bannerCooldownMap = new HashMap<>();
|
||||||
|
private long placeTimer = TimeUnit.SECONDS.toMillis(15L);
|
||||||
|
|
||||||
public static boolean playerCanBuildDestroyBlock(Player player, Location location, String action, boolean justCheck) {
|
public static boolean playerCanBuildDestroyBlock(Player player, Location location, String action, boolean justCheck) {
|
||||||
|
|
||||||
@@ -80,7 +89,6 @@ public class FactionsBlockListener implements Listener {
|
|||||||
boolean pain = !justCheck && myFaction.getAccess(me, PermissableAction.PAIN_BUILD) == Access.ALLOW;
|
boolean pain = !justCheck && myFaction.getAccess(me, PermissableAction.PAIN_BUILD) == Access.ALLOW;
|
||||||
return CheckActionState(myFaction, loc, me, PermissableAction.fromString(action), pain);
|
return CheckActionState(myFaction, loc, me, PermissableAction.fromString(action), pain);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Something failed prevent build
|
// Something failed prevent build
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -127,6 +135,7 @@ public class FactionsBlockListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
public void onBlockPlace(BlockPlaceEvent event) {
|
public void onBlockPlace(BlockPlaceEvent event) {
|
||||||
|
Faction at = Board.getInstance().getFactionAt(new FLocation(event.getBlockPlaced()));
|
||||||
if (!event.canBuild()) return;
|
if (!event.canBuild()) return;
|
||||||
|
|
||||||
// special case for flint&steel, which should only be prevented by DenyUsage list
|
// special case for flint&steel, which should only be prevented by DenyUsage list
|
||||||
@@ -137,11 +146,11 @@ public class FactionsBlockListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isSpawner) {
|
if (isSpawner) {
|
||||||
if (Conf.spawnerLock) {
|
if (Conf.spawnerLock) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
event.getPlayer().sendMessage(FactionsPlugin.getInstance().color(TL.COMMAND_SPAWNER_LOCK_CANNOT_PLACE.toString()));
|
event.getPlayer().sendMessage(FactionsPlugin.getInstance().color(TL.COMMAND_SPAWNER_LOCK_CANNOT_PLACE.toString()));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -418,14 +427,12 @@ public class FactionsBlockListener implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onBreak(EntityExplodeEvent e) {
|
public void onBreak(EntityExplodeEvent e) {
|
||||||
if (!Conf.gracePeriod) return;
|
if (!Conf.gracePeriod) return;
|
||||||
|
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void entityDamage(EntityDamageEvent e) {
|
public void entityDamage(EntityDamageEvent e) {
|
||||||
if (!Conf.gracePeriod) return;
|
if (!Conf.gracePeriod) return;
|
||||||
|
|
||||||
if (e.getEntity() instanceof Player) {
|
if (e.getEntity() instanceof Player) {
|
||||||
if (e.getCause() == EntityDamageEvent.DamageCause.PROJECTILE) {
|
if (e.getCause() == EntityDamageEvent.DamageCause.PROJECTILE) {
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
@@ -441,7 +448,6 @@ public class FactionsBlockListener implements Listener {
|
|||||||
if (!fp.isAdminBypassing()) {
|
if (!fp.isAdminBypassing()) {
|
||||||
if (e1.getBlock().getType().equals(Material.TNT)) {
|
if (e1.getBlock().getType().equals(Material.TNT)) {
|
||||||
e1.setCancelled(true);
|
e1.setCancelled(true);
|
||||||
|
|
||||||
fp.msg(TL.COMMAND_GRACE_ENABLED, e1.getBlockPlaced().getType().toString());
|
fp.msg(TL.COMMAND_GRACE_ENABLED, e1.getBlockPlaced().getType().toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -461,13 +467,60 @@ public class FactionsBlockListener implements Listener {
|
|||||||
return !rel.confDenyBuild(otherFaction.hasPlayersOnline());
|
return !rel.confDenyBuild(otherFaction.hasPlayersOnline());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void handleSpawnerUpdate(Faction at, Player player, ItemStack spawnerItem, LogTimer.TimerSubType subType) {
|
||||||
|
FLogManager manager = FactionsPlugin.instance.getFlogManager();
|
||||||
|
LogTimer logTimer = manager.getLogTimers().computeIfAbsent(player.getUniqueId(), e -> new LogTimer(player.getName(), at.getId()));
|
||||||
|
LogTimer.Timer timer = logTimer.attemptLog(LogTimer.TimerType.SPAWNER_EDIT, subType, 0L);
|
||||||
|
Map<MaterialData, AtomicInteger> currentCounts = (timer.getExtraData() == null) ? new HashMap<>() : ((Map) timer.getExtraData());
|
||||||
|
currentCounts.computeIfAbsent(spawnerItem.getData(), e -> new AtomicInteger(0)).addAndGet(1);
|
||||||
|
timer.setExtraData(currentCounts);
|
||||||
|
if (timer.isReadyToLog(this.placeTimer)) {
|
||||||
|
logTimer.pushLogs(at, LogTimer.TimerType.SPAWNER_EDIT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(
|
||||||
|
priority = EventPriority.HIGH,
|
||||||
|
ignoreCancelled = true
|
||||||
|
)
|
||||||
|
public void onPlayerPlace(BlockPlaceEvent event) {
|
||||||
|
ItemStack item = event.getItemInHand();
|
||||||
|
if (item != null && item.getType() == XMaterial.SPAWNER.parseMaterial()) {
|
||||||
|
Faction at = Board.getInstance().getFactionAt(new FLocation(event.getBlockPlaced()));
|
||||||
|
if (at != null && at.isNormal()) {
|
||||||
|
FPlayer fplayer = FPlayers.getInstance().getByPlayer(event.getPlayer());
|
||||||
|
if (fplayer != null && at.getRelationTo(fplayer.getFaction()).isAtLeast(Relation.TRUCE)) {
|
||||||
|
this.handleSpawnerUpdate(at, event.getPlayer(), item, LogTimer.TimerSubType.SPAWNER_PLACE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
public void onBlockBreak(BlockBreakEvent event) {
|
public void onBlockBreak(BlockBreakEvent event) {
|
||||||
|
Block block = event.getBlock();
|
||||||
|
|
||||||
|
Faction at = Board.getInstance().getFactionAt(new FLocation(block));
|
||||||
boolean isSpawner = event.getBlock().getType() == XMaterial.SPAWNER.parseMaterial();
|
boolean isSpawner = event.getBlock().getType() == XMaterial.SPAWNER.parseMaterial();
|
||||||
if (!playerCanBuildDestroyBlock(event.getPlayer(), event.getBlock().getLocation(), !isSpawner ? "destroy" : "mine spawners", false)) {
|
if (!playerCanBuildDestroyBlock(event.getPlayer(), event.getBlock().getLocation(), !isSpawner ? "destroy" : "mine spawners", false)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (block != null && isSpawner) {
|
||||||
|
ItemStack item = new ItemStack(block.getType(), 1, (short) block.getData());
|
||||||
|
if (at != null && at.isNormal()) {
|
||||||
|
FPlayer fplayer = FPlayers.getInstance().getByPlayer(event.getPlayer());
|
||||||
|
if (fplayer != null) {
|
||||||
|
BlockState state = block.getState();
|
||||||
|
if (state instanceof CreatureSpawner) {
|
||||||
|
CreatureSpawner spawner = (CreatureSpawner) state;
|
||||||
|
item.setDurability(spawner.getSpawnedType().getTypeId());
|
||||||
|
}
|
||||||
|
handleSpawnerUpdate(at, event.getPlayer(), item, LogTimer.TimerSubType.SPAWNER_BREAK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST)
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
|
|||||||
@@ -18,9 +18,11 @@ import com.massivecraft.factions.struct.Role;
|
|||||||
import com.massivecraft.factions.util.FactionGUI;
|
import com.massivecraft.factions.util.FactionGUI;
|
||||||
import com.massivecraft.factions.util.VisualizeUtil;
|
import com.massivecraft.factions.util.VisualizeUtil;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
import com.massivecraft.factions.util.XMaterial;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fperms.Access;
|
import com.massivecraft.factions.zcore.fperms.Access;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
import com.massivecraft.factions.zcore.persist.MemoryFPlayer;
|
import com.massivecraft.factions.zcore.persist.MemoryFPlayer;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import com.massivecraft.factions.zcore.util.TagUtil;
|
import com.massivecraft.factions.zcore.util.TagUtil;
|
||||||
import com.massivecraft.factions.zcore.util.TextUtil;
|
import com.massivecraft.factions.zcore.util.TextUtil;
|
||||||
@@ -553,9 +555,14 @@ public class FactionsPlayerListener implements Listener {
|
|||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void enableFly(FPlayer me) {
|
public void checkCanFly(FPlayer me) {
|
||||||
if (!FactionsPlugin.instance.getConfig().getBoolean("ffly.AutoEnable")) return; // Looks prettier sorry
|
if (me.isFlying() && (!me.canFlyAtLocation() || me.checkIfNearbyEnemies())) {
|
||||||
if (!me.canFlyAtLocation()) return;
|
me.setFFlying(false, false);
|
||||||
|
me.msg(TL.COMMAND_FLY_NO_ACCESS, Board.getInstance().getFactionAt(me.getLastStoodAt()).getTag());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (me.isFlying() || !FactionsPlugin.instance.getConfig().getBoolean("ffly.AutoEnable"))
|
||||||
|
return;
|
||||||
me.setFFlying(true, false);
|
me.setFFlying(true, false);
|
||||||
CmdFly.flyMap.put(me.getName(), true);
|
CmdFly.flyMap.put(me.getName(), true);
|
||||||
if (CmdFly.particleTask == null)
|
if (CmdFly.particleTask == null)
|
||||||
@@ -709,7 +716,7 @@ public class FactionsPlayerListener implements Listener {
|
|||||||
|
|
||||||
if (changedFaction) {
|
if (changedFaction) {
|
||||||
Bukkit.getScheduler().runTask(FactionsPlugin.instance, () -> Bukkit.getServer().getPluginManager().callEvent(new FPlayerEnteredFactionEvent(factionTo, factionFrom, me)));
|
Bukkit.getScheduler().runTask(FactionsPlugin.instance, () -> Bukkit.getServer().getPluginManager().callEvent(new FPlayerEnteredFactionEvent(factionTo, factionFrom, me)));
|
||||||
if (FactionsPlugin.instance.getConfig().getBoolean("Title.Show-Title")) {
|
if (FactionsPlugin.instance.getConfig().getBoolean("Title.Show-Title") && me.hasTitlesEnabled()) {
|
||||||
String title = FactionsPlugin.instance.getConfig().getString("Title.Format.Title");
|
String title = FactionsPlugin.instance.getConfig().getString("Title.Format.Title");
|
||||||
title = title.replace("{Faction}", factionTo.getColorTo(me) + factionTo.getTag());
|
title = title.replace("{Faction}", factionTo.getColorTo(me) + factionTo.getTag());
|
||||||
title = parseAllPlaceholders(title, factionTo, player);
|
title = parseAllPlaceholders(title, factionTo, player);
|
||||||
@@ -729,12 +736,11 @@ public class FactionsPlayerListener implements Listener {
|
|||||||
}, 5);
|
}, 5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!me.isFlying()) {
|
this.checkCanFly(me);
|
||||||
enableFly(me);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (me.getAutoClaimFor() != null) {
|
if (me.getAutoClaimFor() != null) {
|
||||||
me.attemptClaim(me.getAutoClaimFor(), newLocation, true);
|
me.attemptClaim(me.getAutoClaimFor(), newLocation, true);
|
||||||
|
FactionsPlugin.instance.logFactionEvent(me.getAutoClaimFor(), FLogType.CHUNK_CLAIMS, me.getName(), CC.GreenB + "CLAIMED", String.valueOf(1), (new FLocation(player.getLocation())).formatXAndZ(","));
|
||||||
if (Conf.disableFlightOnFactionClaimChange) CmdFly.disableFlight(me);
|
if (Conf.disableFlightOnFactionClaimChange) CmdFly.disableFlight(me);
|
||||||
} else if (me.isAutoSafeClaimEnabled()) {
|
} else if (me.isAutoSafeClaimEnabled()) {
|
||||||
if (!Permission.MANAGE_SAFE_ZONE.has(player)) {
|
if (!Permission.MANAGE_SAFE_ZONE.has(player)) {
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
package com.massivecraft.factions.listeners.menu;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.zcore.util.ItemUtil;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
public class ClickableItemStack extends ItemStack {
|
||||||
|
private Consumer<InventoryClickEvent> itemCallback;
|
||||||
|
|
||||||
|
public ClickableItemStack(ItemStack clone) {
|
||||||
|
super(clone);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClickableItemStack setClickCallback(Consumer<InventoryClickEvent> callback) {
|
||||||
|
this.itemCallback = callback;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClickableItemStack setDisplayName(String name) {
|
||||||
|
ItemMeta im = this.getItemMeta();
|
||||||
|
im.setDisplayName(name);
|
||||||
|
this.setItemMeta(im);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ClickableItemStack setLore(List<String> lore) {
|
||||||
|
ItemMeta im = this.getItemMeta();
|
||||||
|
im.setLore(lore);
|
||||||
|
this.setItemMeta(im);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClickableItemStack setDura(short dura) {
|
||||||
|
this.setDurability(dura);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Consumer<InventoryClickEvent> getItemCallback() {
|
||||||
|
return this.itemCallback;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
package com.massivecraft.factions.listeners.menu;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import com.massivecraft.factions.FPlayer;
|
||||||
|
import com.massivecraft.factions.Faction;
|
||||||
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
|
import com.massivecraft.factions.struct.Role;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.DyeColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.HumanEntity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.material.MaterialData;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
public abstract class GUIMenu {
|
||||||
|
protected Inventory menu;
|
||||||
|
private Map<Integer, ClickableItemStack> menuItems = new HashMap();
|
||||||
|
private static Map<UUID, GUIMenu> menus = new HashMap();
|
||||||
|
private Consumer<InventoryCloseEvent> closeCallback;
|
||||||
|
private String name;
|
||||||
|
private int size;
|
||||||
|
private GUIMenu previousMenu;
|
||||||
|
|
||||||
|
public GUIMenu(String name, int size) {
|
||||||
|
if (name.length() > 32) {
|
||||||
|
name = name.substring(0, 32);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.name = name;
|
||||||
|
this.size = size;
|
||||||
|
this.menu = Bukkit.createInventory(null, size, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInventorySize(int size) {
|
||||||
|
if (this.size != size) {
|
||||||
|
int oldSize = this.size;
|
||||||
|
this.size = size;
|
||||||
|
List<HumanEntity> viewing = Lists.newArrayList(this.menu.getViewers());
|
||||||
|
this.menu = Bukkit.createInventory(null, size, this.name);
|
||||||
|
viewing.forEach((pl) -> {
|
||||||
|
pl.closeInventory();
|
||||||
|
pl.openInventory(this.menu);
|
||||||
|
menus.put(pl.getUniqueId(), this);
|
||||||
|
Bukkit.getLogger().info("Reopening Menu for " + pl.getName() + " due to menu changing size from " + oldSize + " -> " + size);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public GUIMenu setPreviousMenu(GUIMenu menu) {
|
||||||
|
this.previousMenu = menu;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setItem(int slot, ClickableItemStack item) {
|
||||||
|
this.menu.setItem(slot, item);
|
||||||
|
this.menuItems.put(slot, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void drawItems();
|
||||||
|
|
||||||
|
private boolean canEditPermissions(Faction faction, FPlayer player) {
|
||||||
|
Role role = player.getRole();
|
||||||
|
if (role != null && role.isAtLeast(Role.COLEADER)) {
|
||||||
|
Faction theirfac = player.getFaction();
|
||||||
|
return theirfac != null && theirfac.isNormal() && theirfac.equals(faction);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClickableItemStack getBackButton(Material data, String name, String... lore) {
|
||||||
|
return (new ClickableItemStack(new ItemStack(data != null ? data : Material.RED_STAINED_GLASS_PANE, 1, data != null ? (short) 0 : 0 ))).setDisplayName(name != null ? name : ChatColor.RED + ChatColor.BOLD.toString() + "Back").setLore(lore != null ? Lists.newArrayList(lore) : Lists.newArrayList(ChatColor.GRAY + "Click to return to previous menu.")).setClickCallback((e) -> {
|
||||||
|
if (this.previousMenu != null) {
|
||||||
|
this.previousMenu.open((Player)e.getWhoClicked());
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void clearItems() {
|
||||||
|
this.getMenuItems().clear();
|
||||||
|
this.menu.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void open(Player player) {
|
||||||
|
GUIMenu openMenu = menus.get(player.getUniqueId());
|
||||||
|
if (openMenu != null) {
|
||||||
|
player.closeInventory();
|
||||||
|
Bukkit.getScheduler().scheduleSyncDelayedTask(FactionsPlugin.instance, () -> {
|
||||||
|
this.drawItems();
|
||||||
|
player.openInventory(this.menu);
|
||||||
|
menus.put(player.getUniqueId(), this);
|
||||||
|
}, 1L);
|
||||||
|
} else {
|
||||||
|
this.drawItems();
|
||||||
|
player.openInventory(this.menu);
|
||||||
|
menus.put(player.getUniqueId(), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void fillEmpty(ClickableItemStack item) {
|
||||||
|
for(int i = 0; i < this.menu.getSize(); ++i) {
|
||||||
|
ItemStack is = this.menu.getItem(i);
|
||||||
|
if (is == null || is.getType() == Material.AIR) {
|
||||||
|
this.setItem(i, item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int fitSlots(int size) {
|
||||||
|
return size <= 9 ? 9 : (size <= 18 ? 18 : (size <= 27 ? 27 : (size <= 36 ? 36 : (size <= 45 ? 45 : (size <= 54 ? 54 : 54)))));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<Integer, ClickableItemStack> getMenuItems() {
|
||||||
|
return this.menuItems;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<UUID, GUIMenu> getMenus() {
|
||||||
|
return menus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Consumer<InventoryCloseEvent> getCloseCallback() {
|
||||||
|
return this.closeCallback;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCloseCallback(Consumer<InventoryCloseEvent> closeCallback) {
|
||||||
|
this.closeCallback = closeCallback;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSize() {
|
||||||
|
return this.size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GUIMenu getPreviousMenu() {
|
||||||
|
return this.previousMenu;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
package com.massivecraft.factions.listeners.menu;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class MenuListener implements Listener {
|
||||||
|
|
||||||
|
public MenuListener() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInventoryClick(InventoryClickEvent event) {
|
||||||
|
if (event.getInventory().getName().equals("Faction Logs")) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
Player player = (Player)event.getWhoClicked();
|
||||||
|
GUIMenu menu = GUIMenu.getMenus().get(player.getUniqueId());
|
||||||
|
if (menu != null) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
if (!menu.getName().equals(event.getInventory().getName())) {
|
||||||
|
player.closeInventory();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack item = event.getCurrentItem();
|
||||||
|
if (item == null) return;
|
||||||
|
if (event.getRawSlot() >= event.getInventory().getSize()) return;
|
||||||
|
ClickableItemStack found = menu.getMenuItems().get(event.getRawSlot());
|
||||||
|
if (found != null && found.getType() == item.getType() && found.getDurability() == item.getDurability()) {
|
||||||
|
if (found.getItemCallback() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
found.getItemCallback().accept(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInventoryClose(InventoryCloseEvent event) {
|
||||||
|
GUIMenu menu = GUIMenu.getMenus().remove(event.getPlayer().getUniqueId());
|
||||||
|
if (menu != null && menu.getCloseCallback() != null) {
|
||||||
|
menu.getCloseCallback().accept(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPLayerLeave(PlayerQuitEvent event) {
|
||||||
|
GUIMenu menu = GUIMenu.getMenus().remove(event.getPlayer().getUniqueId());
|
||||||
|
if (menu != null && menu.getCloseCallback() != null) {
|
||||||
|
menu.getCloseCallback().accept(new InventoryCloseEvent(event.getPlayer().getOpenInventory()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -24,9 +24,6 @@ public class CmdMissions extends FCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void perform(CommandContext context) {
|
public void perform(CommandContext context) {
|
||||||
if (context.faction == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final MissionGUI missionsGUI = new MissionGUI(FactionsPlugin.getInstance(), context.fPlayer);
|
final MissionGUI missionsGUI = new MissionGUI(FactionsPlugin.getInstance(), context.fPlayer);
|
||||||
missionsGUI.build();
|
missionsGUI.build();
|
||||||
context.player.openInventory(missionsGUI.getInventory());
|
context.player.openInventory(missionsGUI.getInventory());
|
||||||
|
|||||||
@@ -31,9 +31,7 @@ public class MissionGUI implements FactionGUI {
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(int slot, ClickType action) {
|
public void onClick(int slot, ClickType action) {
|
||||||
String missionName = slots.get(slot);
|
String missionName = slots.get(slot);
|
||||||
if (missionName == null) {
|
if (missionName == null) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
ConfigurationSection configurationSection = plugin.getConfig().getConfigurationSection("Missions");
|
ConfigurationSection configurationSection = plugin.getConfig().getConfigurationSection("Missions");
|
||||||
if (missionName.equals(plugin.color(FactionsPlugin.getInstance().getConfig().getString("Randomization.Start-Item.Allowed.Name")))) {
|
if (missionName.equals(plugin.color(FactionsPlugin.getInstance().getConfig().getString("Randomization.Start-Item.Allowed.Name")))) {
|
||||||
Mission pickedMission = null;
|
Mission pickedMission = null;
|
||||||
@@ -54,25 +52,22 @@ public class MissionGUI implements FactionGUI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (plugin.getConfig().getBoolean("Randomization.Enabled")) {return;}
|
} else if (plugin.getConfig().getBoolean("Randomization.Enabled")) {return;}
|
||||||
if (configurationSection == null) {
|
if (configurationSection == null) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
int max = plugin.getConfig().getInt("MaximumMissionsAllowedAtOnce");
|
int max = plugin.getConfig().getInt("MaximumMissionsAllowedAtOnce");
|
||||||
if (fPlayer.getFaction().getMissions().size() >= max) {
|
if (fPlayer.getFaction().getMissions().size() >= max) {
|
||||||
fPlayer.msg(TL.MISSION_MISSION_MAX_ALLOWED, max);
|
fPlayer.msg(TL.MISSION_MISSION_MAX_ALLOWED, max);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (missionName.equals(plugin.color(FactionsPlugin.getInstance().getConfig().getString("Randomization.Start-Item.Disallowed.Name")))) {
|
if (missionName.equals(plugin.color(FactionsPlugin.getInstance().getConfig().getString("Randomization.Start-Item.Disallowed.Name")))) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (fPlayer.getFaction().getMissions().containsKey(missionName)) {
|
if (fPlayer.getFaction().getMissions().containsKey(missionName)) {
|
||||||
fPlayer.msg(TL.MISSION_MISSION_ACTIVE);
|
fPlayer.msg(TL.MISSION_MISSION_ACTIVE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ConfigurationSection section = configurationSection.getConfigurationSection(missionName);
|
ConfigurationSection section = configurationSection.getConfigurationSection(missionName);
|
||||||
if (section == null) {
|
if (section == null) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(FactionsPlugin.getInstance().getConfig().getBoolean("DenyMissionsMoreThenOnce")) {
|
if(FactionsPlugin.getInstance().getConfig().getBoolean("DenyMissionsMoreThenOnce")) {
|
||||||
if (fPlayer.getFaction().getCompletedMissions().contains(missionName)) {
|
if (fPlayer.getFaction().getCompletedMissions().contains(missionName)) {
|
||||||
fPlayer.msg(TL.MISSION_ALREAD_COMPLETED);
|
fPlayer.msg(TL.MISSION_ALREAD_COMPLETED);
|
||||||
@@ -81,9 +76,7 @@ public class MissionGUI implements FactionGUI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ConfigurationSection missionSection = section.getConfigurationSection("Mission");
|
ConfigurationSection missionSection = section.getConfigurationSection("Mission");
|
||||||
if (missionSection == null) {
|
if (missionSection == null) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Mission mission = new Mission(missionName, missionSection.getString("Type"));
|
Mission mission = new Mission(missionName, missionSection.getString("Type"));
|
||||||
fPlayer.getFaction().getMissions().put(missionName, mission);
|
fPlayer.getFaction().getMissions().put(missionName, mission);
|
||||||
|
|||||||
@@ -31,18 +31,9 @@ public class FTeamWrapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void applyUpdatesLater(final Faction faction) {
|
public static void applyUpdatesLater(final Faction faction) {
|
||||||
if (!FScoreboard.isSupportedByServer()) {
|
if (!FScoreboard.isSupportedByServer()) return;
|
||||||
return;
|
if (faction.isWilderness()) return;
|
||||||
}
|
if (!FactionsPlugin.getInstance().getConfig().getBoolean("scoreboard.default-prefixes", false) || FactionsPlugin.getInstance().getConfig().getBoolean("See-Invisible-Faction-Members")) return;
|
||||||
|
|
||||||
if (faction.isWilderness()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!FactionsPlugin.getInstance().getConfig().getBoolean("scoreboard.default-prefixes", false) || FactionsPlugin.getInstance().getConfig().getBoolean("See-Invisible-Faction-Members")) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (updating.add(faction)) {
|
if (updating.add(faction)) {
|
||||||
Bukkit.getScheduler().runTask(FactionsPlugin.getInstance(), () -> {
|
Bukkit.getScheduler().runTask(FactionsPlugin.getInstance(), () -> {
|
||||||
@@ -53,22 +44,12 @@ public class FTeamWrapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void applyUpdates(Faction faction) {
|
public static void applyUpdates(Faction faction) {
|
||||||
if (!FScoreboard.isSupportedByServer()) {
|
if (!FScoreboard.isSupportedByServer()) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (faction.isWilderness()) {
|
if (faction.isWilderness()) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!FactionsPlugin.getInstance().getConfig().getBoolean("scoreboard.default-prefixes", false) || FactionsPlugin.getInstance().getConfig().getBoolean("See-Invisible-Faction-Members")) {
|
if (!FactionsPlugin.getInstance().getConfig().getBoolean("scoreboard.default-prefixes", false) || FactionsPlugin.getInstance().getConfig().getBoolean("See-Invisible-Faction-Members")) return;
|
||||||
return;
|
if (updating.contains(faction)) return;
|
||||||
}
|
|
||||||
|
|
||||||
if (updating.contains(faction)) {
|
|
||||||
// Faction will be updated soon.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
FTeamWrapper wrapper = wrappers.get(faction);
|
FTeamWrapper wrapper = wrappers.get(faction);
|
||||||
Set<FPlayer> factionMembers = faction.getFPlayers();
|
Set<FPlayer> factionMembers = faction.getFPlayers();
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ public enum Permission {
|
|||||||
ADMIN_ANY("admin.any"),
|
ADMIN_ANY("admin.any"),
|
||||||
AHOME("ahome"),
|
AHOME("ahome"),
|
||||||
ANNOUNCE("announce"),
|
ANNOUNCE("announce"),
|
||||||
|
AUDIT("audit"),
|
||||||
AUTOCLAIM("autoclaim"),
|
AUTOCLAIM("autoclaim"),
|
||||||
AUTO_LEAVE_BYPASS("autoleavebypass"),
|
AUTO_LEAVE_BYPASS("autoleavebypass"),
|
||||||
BAN("ban"),
|
BAN("ban"),
|
||||||
@@ -36,13 +37,13 @@ public enum Permission {
|
|||||||
DISBAND_ANY("disband.any"),
|
DISBAND_ANY("disband.any"),
|
||||||
DISCORD("discord"),
|
DISCORD("discord"),
|
||||||
FLY("fly"),
|
FLY("fly"),
|
||||||
FLY_WILD("factions.fly.wilderness"),
|
FLY_WILD("fly.wilderness"),
|
||||||
FLY_SAFEZONE("factions.fly.safezone"),
|
FLY_SAFEZONE("fly.safezone"),
|
||||||
FLY_WARZONE("factions.fly.warzone"),
|
FLY_WARZONE("fly.warzone"),
|
||||||
FLY_ENEMY("factions.fly.enemy"),
|
FLY_ENEMY("fly.enemy"),
|
||||||
FLY_ALLY("factions.fly.ally"),
|
FLY_ALLY("fly.ally"),
|
||||||
FLY_TRUCE("factions.fly.truce"),
|
FLY_TRUCE("fly.truce"),
|
||||||
FLY_NEUTRAL("factions.fly.neutral"),
|
FLY_NEUTRAL("fly.neutral"),
|
||||||
FOCUS("focus"),
|
FOCUS("focus"),
|
||||||
GLOBALCHAT("globalchat"),
|
GLOBALCHAT("globalchat"),
|
||||||
GRACE("grace"),
|
GRACE("grace"),
|
||||||
@@ -108,6 +109,7 @@ public enum Permission {
|
|||||||
STEALTH("stealth"),
|
STEALTH("stealth"),
|
||||||
STUCK("stuck"),
|
STUCK("stuck"),
|
||||||
TAG("tag"),
|
TAG("tag"),
|
||||||
|
TOGGLE_TITLES("toggletitles"),
|
||||||
TNT("tnt"),
|
TNT("tnt"),
|
||||||
TITLE("title"),
|
TITLE("title"),
|
||||||
TITLE_COLOR("title.color"),
|
TITLE_COLOR("title.color"),
|
||||||
|
|||||||
@@ -116,23 +116,27 @@ public class ClipPlaceholderAPIManager extends PlaceholderExpansion implements R
|
|||||||
case "faction_description":
|
case "faction_description":
|
||||||
return faction.getDescription();
|
return faction.getDescription();
|
||||||
case "faction_claims":
|
case "faction_claims":
|
||||||
return String.valueOf(faction.getAllClaims().size());
|
return fPlayer.hasFaction() ? String.valueOf(faction.getAllClaims().size()) : "0";
|
||||||
|
case "faction_maxclaims":
|
||||||
|
return String.valueOf(Conf.claimedLandsMax);
|
||||||
case "faction_founded":
|
case "faction_founded":
|
||||||
return TL.sdf.format(faction.getFoundedDate());
|
return TL.sdf.format(faction.getFoundedDate());
|
||||||
case "faction_joining":
|
case "faction_joining":
|
||||||
return (faction.getOpen() ? TL.COMMAND_SHOW_UNINVITED.toString() : TL.COMMAND_SHOW_INVITATION.toString());
|
return (faction.getOpen() ? TL.COMMAND_SHOW_UNINVITED.toString() : TL.COMMAND_SHOW_INVITATION.toString());
|
||||||
|
case "faction_strikes":
|
||||||
|
return fPlayer.hasFaction() ? String.valueOf(faction.getStrikes()) : "0";
|
||||||
case "faction_peaceful":
|
case "faction_peaceful":
|
||||||
return faction.isPeaceful() ? Conf.colorNeutral + TL.COMMAND_SHOW_PEACEFUL.toString() : "";
|
return faction.isPeaceful() ? Conf.colorNeutral + TL.COMMAND_SHOW_PEACEFUL.toString() : "";
|
||||||
case "faction_tntbank_balance":
|
case "faction_tntbank_balance":
|
||||||
return String.valueOf(faction.getTnt());
|
return String.valueOf(faction.getTnt());
|
||||||
case "faction_points":
|
case "faction_points":
|
||||||
return String.valueOf(faction.getPoints());
|
return fPlayer.hasFaction() ? String.valueOf(faction.getPoints()) : "0";
|
||||||
case "faction_powerboost":
|
case "faction_powerboost":
|
||||||
double powerBoost = faction.getPowerBoost();
|
double powerBoost = faction.getPowerBoost();
|
||||||
return (powerBoost == 0.0) ? "" : (powerBoost > 0.0 ? TL.COMMAND_SHOW_BONUS.toString() : TL.COMMAND_SHOW_PENALTY.toString()) + powerBoost + ")";
|
return (powerBoost == 0.0) ? "" : (powerBoost > 0.0 ? TL.COMMAND_SHOW_BONUS.toString() : TL.COMMAND_SHOW_PENALTY.toString()) + powerBoost + ")";
|
||||||
case "faction_leader":
|
case "faction_leader":
|
||||||
FPlayer fAdmin = faction.getFPlayerAdmin();
|
FPlayer fAdmin = faction.getFPlayerAdmin();
|
||||||
return fAdmin == null ? "Server" : fAdmin.getName().substring(0, fAdmin.getName().length() > 14 ? 13 : fAdmin.getName().length());
|
return fAdmin == null ? TL.GENERIC_SERVER.toString() : fAdmin.getName().substring(0, fAdmin.getName().length() > 14 ? 13 : fAdmin.getName().length());
|
||||||
case "faction_warps":
|
case "faction_warps":
|
||||||
return String.valueOf(faction.getWarps().size());
|
return String.valueOf(faction.getWarps().size());
|
||||||
case "faction_raidable":
|
case "faction_raidable":
|
||||||
|
|||||||
@@ -38,7 +38,11 @@ public class FactionWarpsFrame {
|
|||||||
GUIItems.add(new GuiItem(buildDummyItem(), e -> e.setCancelled(true)));
|
GUIItems.add(new GuiItem(buildDummyItem(), e -> e.setCancelled(true)));
|
||||||
slots.forEach(slot -> GUIItems.set(slot, new GuiItem(XMaterial.AIR.parseItem())));
|
slots.forEach(slot -> GUIItems.set(slot, new GuiItem(XMaterial.AIR.parseItem())));
|
||||||
for (final Map.Entry<String, LazyLocation> warp : fplayer.getFaction().getWarps().entrySet()) {
|
for (final Map.Entry<String, LazyLocation> warp : fplayer.getFaction().getWarps().entrySet()) {
|
||||||
if (count > slots.size()) continue;
|
if (slots.size() < fplayer.getFaction().getWarps().entrySet().size()){
|
||||||
|
slots.add(slots.get(slots.size()-1)+1);
|
||||||
|
FactionsPlugin.instance.log("Automatically setting F WARP GUI slot since slot not specified. Head config.yml and add more entries in warp-slots section.");
|
||||||
|
}
|
||||||
|
|
||||||
GUIItems.set(slots.get(count), new GuiItem(buildWarpAsset(warp, fplayer.getFaction()), e -> {
|
GUIItems.set(slots.get(count), new GuiItem(buildWarpAsset(warp, fplayer.getFaction()), e -> {
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
fplayer.getPlayer().closeInventory();
|
fplayer.getPlayer().closeInventory();
|
||||||
|
|||||||
@@ -0,0 +1,154 @@
|
|||||||
|
package com.massivecraft.factions.zcore.faudit;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import com.massivecraft.factions.Faction;
|
||||||
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
|
import com.massivecraft.factions.listeners.menu.ClickableItemStack;
|
||||||
|
import com.massivecraft.factions.listeners.menu.GUIMenu;
|
||||||
|
import com.massivecraft.factions.util.ItemBuilder;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class FAuditMenu extends GUIMenu {
|
||||||
|
private static int logsPerPage = 20;
|
||||||
|
private Player player;
|
||||||
|
private boolean showTimestamps = true;
|
||||||
|
private Faction faction;
|
||||||
|
|
||||||
|
public FAuditMenu(Player player, Faction faction) {
|
||||||
|
super("Faction Logs", 18);
|
||||||
|
this.faction = faction;
|
||||||
|
this.player = player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void drawItems() {
|
||||||
|
int index = 0;
|
||||||
|
FLogType[] logTypes = FLogType.values();
|
||||||
|
int length1 = logTypes.length;
|
||||||
|
|
||||||
|
for (FLogType type : logTypes) {
|
||||||
|
if (type != FLogType.F_TNT || FactionsPlugin.getInstance().getConfig().getBoolean("f-points.Enabled")) {
|
||||||
|
if (index == 9) {
|
||||||
|
index = FactionsPlugin.getInstance().getConfig().getBoolean("f-points.Enabled") ? 11 : 12;
|
||||||
|
}
|
||||||
|
|
||||||
|
FactionLogs logs = FactionsPlugin.instance.getFlogManager().getFactionLogMap().get(this.faction.getId());
|
||||||
|
if (logs == null) {
|
||||||
|
logs = new FactionLogs();
|
||||||
|
}
|
||||||
|
|
||||||
|
LinkedList<FactionLogs.FactionLog> recentLogs = logs.getMostRecentLogs().get(type);
|
||||||
|
if (recentLogs == null) {
|
||||||
|
recentLogs = Lists.newLinkedList();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> lore = Lists.newArrayList("", CC.GreenB + "Recent Logs " + CC.Green + "(" + CC.GreenB + recentLogs.size() + CC.Green + ")");
|
||||||
|
int added = 0;
|
||||||
|
Iterator backwars = recentLogs.descendingIterator();
|
||||||
|
while (backwars.hasNext()) {
|
||||||
|
FactionLogs.FactionLog log = (FactionLogs.FactionLog) backwars.next();
|
||||||
|
if (added >= logsPerPage) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
String length = log.getLogLine(type, this.showTimestamps);
|
||||||
|
lore.add(" " + CC.Yellow + length);
|
||||||
|
++added;
|
||||||
|
}
|
||||||
|
|
||||||
|
int logSize = recentLogs.size();
|
||||||
|
int logsLeft = logSize - logsPerPage;
|
||||||
|
if (logsLeft > 0) {
|
||||||
|
lore.add(CC.YellowB + logsLeft + CC.Yellow + " more logs...");
|
||||||
|
}
|
||||||
|
|
||||||
|
lore.add("");
|
||||||
|
if (logsLeft > 0) {
|
||||||
|
lore.add(CC.Yellow + "Left-Click " + CC.Gray + "to view more logs");
|
||||||
|
}
|
||||||
|
|
||||||
|
lore.add(CC.Yellow + "Right-Click " + CC.Gray + "to toggle timestamps");
|
||||||
|
this.setItem(index++, (new ClickableItemStack((new ItemBuilder(type.getDisplayMaterial())).name(CC.GreenB + type.getDisplayName()).lore(lore).build())).setClickCallback((click) -> {
|
||||||
|
click.setCancelled(true);
|
||||||
|
if (click.getClick() == ClickType.RIGHT) {
|
||||||
|
this.showTimestamps = !this.showTimestamps;
|
||||||
|
this.drawItems();
|
||||||
|
} else {
|
||||||
|
if (logsLeft <= 0) {
|
||||||
|
this.player.sendMessage(CC.Red + "No extra logs to load.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Bukkit.getScheduler().scheduleSyncDelayedTask(FactionsPlugin.instance, () -> (new FAuditLogMenu(this.player, this.faction, type)).open(this.player));
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class FAuditLogMenu extends GUIMenu {
|
||||||
|
private Player player;
|
||||||
|
private Faction faction;
|
||||||
|
private FLogType logType;
|
||||||
|
private boolean timeStamp = false;
|
||||||
|
|
||||||
|
public FAuditLogMenu(Player player, Faction faction, FLogType type) {
|
||||||
|
super("Faction Logs", 9);
|
||||||
|
this.player = player;
|
||||||
|
this.faction = faction;
|
||||||
|
this.logType = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void drawItems() {
|
||||||
|
FactionLogs logs = FactionsPlugin.instance.getFlogManager().getFactionLogMap().get(faction.getId());
|
||||||
|
int perPage = this.logType == FLogType.F_TNT ? 25 : 20;
|
||||||
|
if (logs != null) {
|
||||||
|
LinkedList<FactionLogs.FactionLog> log = logs.getMostRecentLogs().get(this.logType);
|
||||||
|
if (log != null) {
|
||||||
|
int slot = this.logType == FLogType.F_TNT ? 0 : 3;
|
||||||
|
int pagesToShow = (int)Math.max(1.0D, Math.ceil((double)log.size() / (double)perPage));
|
||||||
|
|
||||||
|
for(int page = 1; page <= pagesToShow; ++page) {
|
||||||
|
int startIndex = log.size() - (page * perPage - perPage);
|
||||||
|
if (startIndex >= log.size()) {
|
||||||
|
startIndex = log.size() - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> lore = Lists.newArrayList("", CC.GreenB + "Logs");
|
||||||
|
|
||||||
|
for(int i = startIndex; i > startIndex - perPage; --i) {
|
||||||
|
if (i < log.size()) {
|
||||||
|
if (i < 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
FactionLogs.FactionLog l = log.get(i);
|
||||||
|
lore.add(" " + CC.Yellow + l.getLogLine(this.logType, this.timeStamp));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lore.add("");
|
||||||
|
lore.add(CC.Gray + "Click to toggle timestamp");
|
||||||
|
this.setItem(slot++, (new ClickableItemStack((new ItemBuilder(Material.PAPER)).name(CC.GreenB + "Log #" + page).lore(lore).build())).setClickCallback((e) -> {
|
||||||
|
e.setCancelled(true);
|
||||||
|
this.timeStamp = !this.timeStamp;
|
||||||
|
this.drawItems();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setItem(this.getSize() - 1, (new ClickableItemStack((new ItemBuilder(Material.ARROW)).name(CC.Green + "Previous Page").lore("", CC.Gray + "Click to view previous page!").build())).setClickCallback((event) -> {
|
||||||
|
event.setCancelled(true);
|
||||||
|
Bukkit.getScheduler().scheduleSyncDelayedTask(FactionsPlugin.instance, () -> (new FAuditMenu(this.player, this.faction)).open(this.player));
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,148 @@
|
|||||||
|
package com.massivecraft.factions.zcore.faudit;
|
||||||
|
|
||||||
|
import com.google.common.reflect.TypeToken;
|
||||||
|
import com.massivecraft.factions.Faction;
|
||||||
|
import com.massivecraft.factions.Factions;
|
||||||
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
|
import com.massivecraft.factions.zcore.util.JSONUtils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.lang.reflect.Type;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Timer;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
public class FLogManager {
|
||||||
|
private Map<String, FactionLogs> factionLogMap = new ConcurrentHashMap();
|
||||||
|
private File logFile;
|
||||||
|
private Type logToken = (new TypeToken<ConcurrentHashMap<String, FactionLogs>>() {
|
||||||
|
}).getType();
|
||||||
|
private Map<UUID, LogTimer> logTimers = new ConcurrentHashMap();
|
||||||
|
private boolean saving = false;
|
||||||
|
|
||||||
|
public FLogManager() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void log(Faction faction, FLogType type, String... arguments) {
|
||||||
|
FactionLogs logs = factionLogMap.computeIfAbsent(faction.getId(), (n) -> new FactionLogs());
|
||||||
|
logs.log(type, arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void loadLogs(FactionsPlugin plugin) {
|
||||||
|
try {
|
||||||
|
logFile = new File(plugin.getDataFolder(), "factionLogs.json");
|
||||||
|
if (!logFile.exists()) {
|
||||||
|
logFile.createNewFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
factionLogMap = (Map) JSONUtils.fromJson(logFile, logToken);
|
||||||
|
if (factionLogMap == null) {
|
||||||
|
factionLogMap = new ConcurrentHashMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
factionLogMap.forEach((factionId, factionLogs) -> {
|
||||||
|
|
||||||
|
Faction faction = Factions.getInstance().getFactionById(factionId);
|
||||||
|
if (faction != null && faction.isNormal()) {
|
||||||
|
factionLogs.checkExpired();
|
||||||
|
if (factionLogs.isEmpty()) {
|
||||||
|
factionLogMap.remove(factionId);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
Bukkit.getLogger().info("Removing dead faction logs for " + factionId + "!");
|
||||||
|
factionLogMap.remove(factionId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
long delay = TimeUnit.SECONDS.toMillis(15L);
|
||||||
|
long sellDelay = TimeUnit.SECONDS.toMillis(30L);
|
||||||
|
Bukkit.getScheduler().scheduleSyncRepeatingTask(FactionsPlugin.instance, () -> {
|
||||||
|
if (saving) {
|
||||||
|
Bukkit.getLogger().info("Ignoring saveLogs scheduler due to saving == true!");
|
||||||
|
} else {
|
||||||
|
logTimers.forEach((uuid, logTimer) -> {
|
||||||
|
if (logTimer != null && logTimer.getFactionId() != null) {
|
||||||
|
Faction faction = Factions.getInstance().getFactionById(logTimer.getFactionId());
|
||||||
|
if (faction == null) {
|
||||||
|
logTimers.remove(uuid);
|
||||||
|
Bukkit.getLogger().info("Null faction for logs " + logTimer.getFactionId());
|
||||||
|
} else {
|
||||||
|
if (logTimer.isEmpty()) {
|
||||||
|
logTimers.remove(uuid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logTimers.remove(uuid);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, 20L, 400L);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void pushPendingLogs(LogTimer.TimerType type) {
|
||||||
|
Faction faction = null;
|
||||||
|
|
||||||
|
for (Map.Entry<UUID, LogTimer> uuidLogTimerEntry : getLogTimers().entrySet()) {
|
||||||
|
Map.Entry<UUID, LogTimer> timer = uuidLogTimerEntry;
|
||||||
|
LogTimer logTimer = timer.getValue();
|
||||||
|
if (faction == null) {
|
||||||
|
faction = Factions.getInstance().getFactionById(logTimer.getFactionId());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type != null) {
|
||||||
|
Map<LogTimer.TimerSubType, Timer> timers = (Map) logTimer.get(type);
|
||||||
|
if (timers != null && faction != null) {
|
||||||
|
logTimer.pushLogs(faction, type);
|
||||||
|
}
|
||||||
|
} else if (faction != null) {
|
||||||
|
Faction finalFaction = faction;
|
||||||
|
logTimer.keySet().forEach((timerType) -> logTimer.pushLogs(finalFaction, timerType));
|
||||||
|
logTimer.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == null) {
|
||||||
|
getLogTimers().clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveLogs() {
|
||||||
|
if (saving) {
|
||||||
|
Bukkit.getLogger().info("Ignoring saveLogs due to saving==true!");
|
||||||
|
} else {
|
||||||
|
saving = true;
|
||||||
|
|
||||||
|
try {
|
||||||
|
pushPendingLogs(null);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Bukkit.getLogger().info("error pushing pending logs: " + e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
JSONUtils.saveJSONToFile(logFile, factionLogMap,logToken);
|
||||||
|
} catch (Exception e1) {
|
||||||
|
Bukkit.getLogger().info("ERRRO SAVING JSON LOGS: " + e1.getMessage());
|
||||||
|
e1.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
saving = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, FactionLogs> getFactionLogMap() {
|
||||||
|
return factionLogMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<UUID, LogTimer> getLogTimers() {
|
||||||
|
return logTimers;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
package com.massivecraft.factions.zcore.faudit;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.util.XMaterial;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
|
||||||
|
public enum FLogType {
|
||||||
|
|
||||||
|
INVITES("Roster Edits", XMaterial.WRITABLE_BOOK.parseMaterial(), "&e%s&7 &a%s&7 &e%s", 3),
|
||||||
|
BANS("Player Bans", XMaterial.ANVIL.parseMaterial(), "&e%s&7 &e%s&6 &e%s", 3),
|
||||||
|
CHUNK_CLAIMS("Claim Edits", XMaterial.WOODEN_AXE.parseMaterial(), "&e%s&7 %s&7 &e%s&7 near &e%s", 3),
|
||||||
|
PERM_EDIT_DEFAULTS("Default Perm Edits", XMaterial.WRITTEN_BOOK.parseMaterial(), "&e%s&7 %s&7 %s for &e%s", 4),
|
||||||
|
BANK_EDIT("/f money Edits", XMaterial.GOLD_INGOT.parseMaterial(), "&e%s&7 %s &e&l$&e%s", 3),
|
||||||
|
FCHEST_EDIT("/f chest Edits", XMaterial.CHEST.parseMaterial(), "&e%s&7 %s &f%s", 3),
|
||||||
|
RELATION_CHANGE("Relation Edits", XMaterial.GOLDEN_SWORD.parseMaterial(), "&e%s %s&e'd %s", 3),
|
||||||
|
FTAG_EDIT("/f tag Edits", XMaterial.NAME_TAG.parseMaterial(), "&e%s&7 set to &e'%s'", 2),
|
||||||
|
FDESC_EDIT("/f desc Edits", XMaterial.PAPER.parseMaterial(), "&e%s&7 set to &e'%s'", 2),
|
||||||
|
ROLE_PERM_EDIT("/f promote Edits", XMaterial.WRITTEN_BOOK.parseMaterial(), "&e%s&7&e %s &e%s &7to &e%s", 4),
|
||||||
|
SPAWNER_EDIT("Spawner Edits", XMaterial.SPAWNER.parseMaterial(), "&e%s&7 %s &e%s&7 %s", 4),
|
||||||
|
RANK_EDIT("Rank Edits", XMaterial.GOLDEN_HELMET.parseMaterial(), "&e%s&7 set &e%s&7 to %s", 3),
|
||||||
|
F_TNT("/f tnt Edits", XMaterial.TNT.parseMaterial(), "&e%s&7 %s &e%s", 3);
|
||||||
|
|
||||||
|
private String displayName;
|
||||||
|
private Material displayMaterial;
|
||||||
|
private String msg;
|
||||||
|
private int requiredArgs;
|
||||||
|
|
||||||
|
public String getDisplayName() {
|
||||||
|
return this.displayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Material getDisplayMaterial() {
|
||||||
|
return this.displayMaterial;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMsg() {
|
||||||
|
return this.msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRequiredArgs() {
|
||||||
|
return this.requiredArgs;
|
||||||
|
}
|
||||||
|
|
||||||
|
FLogType(String displayName, Material displayMaterial, String msg, int requiredArgs) {
|
||||||
|
this.displayName = displayName;
|
||||||
|
this.displayMaterial = displayMaterial;
|
||||||
|
this.msg = msg;
|
||||||
|
this.requiredArgs = requiredArgs;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
package com.massivecraft.factions.zcore.faudit;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
public class FactionLogs {
|
||||||
|
private Map<FLogType, LinkedList<FactionLog>> mostRecentLogs = new ConcurrentHashMap();
|
||||||
|
public static transient SimpleDateFormat format = new SimpleDateFormat("MM/dd hh:mmaa");
|
||||||
|
private static transient int MAX_LOG_SIZE = 60;
|
||||||
|
|
||||||
|
public FactionLogs() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void log(FLogType type, String... arguments) {
|
||||||
|
if (type.getRequiredArgs() > arguments.length) {
|
||||||
|
Bukkit.getLogger().info("INVALID ARGUMENT COUNT MET: " + type.getRequiredArgs() + " REQUIRED: ");
|
||||||
|
Thread.dumpStack();
|
||||||
|
} else {
|
||||||
|
LinkedList<FactionLog> logs = this.mostRecentLogs.computeIfAbsent(type, (lists) -> new LinkedList());
|
||||||
|
logs.add(new FactionLog(System.currentTimeMillis(), Lists.newArrayList(arguments)));
|
||||||
|
int maxLog = type == FLogType.F_TNT ? 200 : 60;
|
||||||
|
if (logs.size() > maxLog) {
|
||||||
|
logs.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isEmpty() {
|
||||||
|
return this.mostRecentLogs.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkExpired() {
|
||||||
|
long duration = TimeUnit.DAYS.toMillis(7L);
|
||||||
|
List<FLogType> toRemove = Lists.newArrayList();
|
||||||
|
mostRecentLogs.forEach((logType, logs) -> {
|
||||||
|
if (logs == null) {
|
||||||
|
toRemove.add(logType);
|
||||||
|
} else if (logType != FLogType.F_TNT) {
|
||||||
|
Iterator iter = logs.iterator();
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
try {
|
||||||
|
FactionLog log = (FactionLog) iter.next();
|
||||||
|
if (log == null || log.isExpired(duration)) {
|
||||||
|
iter.remove();
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
Bukkit.getLogger().info("ERROR TRYING TO GET next FACTION LOG: " + e.getMessage());
|
||||||
|
try {
|
||||||
|
iter.remove();
|
||||||
|
} catch (Exception e1) {
|
||||||
|
e1.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (logs.size() <= 0)
|
||||||
|
toRemove.add(logType);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
toRemove.forEach((rem) -> {
|
||||||
|
LinkedList linkedList = this.mostRecentLogs.remove(rem);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<FLogType, LinkedList<FactionLog>> getMostRecentLogs() {
|
||||||
|
return this.mostRecentLogs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class FactionLog {
|
||||||
|
private long t;
|
||||||
|
private List<String> a;
|
||||||
|
|
||||||
|
public FactionLog(long t, List<String> a) {
|
||||||
|
this.t = t;
|
||||||
|
this.a = a;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isExpired(long duration) {
|
||||||
|
return System.currentTimeMillis() - this.t >= duration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLogLine(FLogType type, boolean timestamp) {
|
||||||
|
String[] args = this.a.toArray(new String[0]);
|
||||||
|
String timeFormat = "";
|
||||||
|
if (timestamp) {
|
||||||
|
timeFormat = FactionLogs.format.format(this.t);
|
||||||
|
if (timeFormat.startsWith("0")) {
|
||||||
|
timeFormat = timeFormat.substring(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return String.format(ChatColor.translateAlternateColorCodes('&', type.getMsg()), (String[])args) + (timestamp ? ChatColor.GRAY + " - " + timeFormat : "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
package com.massivecraft.factions.zcore.faudit;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.Faction;
|
||||||
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.material.MaterialData;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
|
public class LogTimer extends ConcurrentHashMap<LogTimer.TimerType, Map<LogTimer.TimerSubType, LogTimer.Timer>> {
|
||||||
|
private String factionId;
|
||||||
|
private String username;
|
||||||
|
|
||||||
|
public LogTimer(String username, String factionId) {
|
||||||
|
this.username = username;
|
||||||
|
this.factionId = factionId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<LogTimer.TimerSubType, LogTimer.Timer> getCurrentTimersOrCreate(LogTimer.TimerType type) {
|
||||||
|
return this.computeIfAbsent(type, (m) -> new ConcurrentHashMap());
|
||||||
|
}
|
||||||
|
|
||||||
|
public LogTimer.Timer attemptLog(LogTimer.TimerType type, LogTimer.TimerSubType subType, long increment) {
|
||||||
|
return this.getCurrentTimersOrCreate(type).computeIfAbsent(subType, (e) -> new Timer(System.currentTimeMillis(), 0L, null)).increment(increment);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void pushLogs(Faction faction, LogTimer.TimerType type) {
|
||||||
|
StringBuilder soldString = new StringBuilder();
|
||||||
|
forEach((timerType, map) -> {
|
||||||
|
if (timerType == type) {
|
||||||
|
if (timerType == LogTimer.TimerType.SPAWNER_EDIT) {
|
||||||
|
map.forEach((subTimer, timer) -> {
|
||||||
|
Map<EntityType, AtomicInteger> entityCounts = new HashMap();
|
||||||
|
Map<MaterialData, AtomicInteger> currentCounts = (Map) timer.getExtraData();
|
||||||
|
if (currentCounts != null) {
|
||||||
|
currentCounts.forEach((data, ints) -> {
|
||||||
|
EntityType types = EntityType.fromId(data.getData());
|
||||||
|
if (types == null) {
|
||||||
|
Bukkit.getLogger().info("Unable to find EntityType for " + data.getData() + " for " + subTimer + " for fac " + this.factionId + "!");
|
||||||
|
} else {
|
||||||
|
entityCounts.computeIfAbsent(types, (e) -> new AtomicInteger(0)).addAndGet(ints.get());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
entityCounts.forEach((entityType, count) -> FactionsPlugin.instance.getFlogManager().log(faction, FLogType.SPAWNER_EDIT, this.username, subTimer == TimerSubType.SPAWNER_BREAK ? "broke" : "placed", count.get() + "x", StringUtils.capitaliseAllWords(entityType.name().toLowerCase().replace("_", " "))));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.remove(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFactionId() {
|
||||||
|
return this.factionId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUsername() {
|
||||||
|
return this.username;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Timer {
|
||||||
|
private long startTime;
|
||||||
|
private long count;
|
||||||
|
private Object extraData;
|
||||||
|
|
||||||
|
LogTimer.Timer increment(long amount) {
|
||||||
|
this.count += amount;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isReadyToLog(long expiration) {
|
||||||
|
return System.currentTimeMillis() - this.startTime >= expiration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Timer(long startTime, long count, Object extraData) {
|
||||||
|
this.startTime = startTime;
|
||||||
|
this.count = count;
|
||||||
|
this.extraData = extraData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getStartTime() {
|
||||||
|
return this.startTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getCount() {
|
||||||
|
return this.count;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getExtraData() {
|
||||||
|
return this.extraData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStartTime(long startTime) {
|
||||||
|
this.startTime = startTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCount(long count) {
|
||||||
|
this.count = count;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setExtraData(Object extraData) {
|
||||||
|
this.extraData = extraData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum TimerSubType {
|
||||||
|
SPAWNER_BREAK,
|
||||||
|
SPAWNER_PLACE;
|
||||||
|
TimerSubType() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum TimerType {
|
||||||
|
SPAWNER_EDIT;
|
||||||
|
TimerType() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,14 +3,17 @@ package com.massivecraft.factions.zcore.fperms.gui;
|
|||||||
import com.github.stefvanschie.inventoryframework.Gui;
|
import com.github.stefvanschie.inventoryframework.Gui;
|
||||||
import com.github.stefvanschie.inventoryframework.GuiItem;
|
import com.github.stefvanschie.inventoryframework.GuiItem;
|
||||||
import com.github.stefvanschie.inventoryframework.pane.PaginatedPane;
|
import com.github.stefvanschie.inventoryframework.pane.PaginatedPane;
|
||||||
|
import com.massivecraft.factions.FLocation;
|
||||||
import com.massivecraft.factions.FPlayer;
|
import com.massivecraft.factions.FPlayer;
|
||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
import com.massivecraft.factions.util.XMaterial;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
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.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
@@ -47,10 +50,12 @@ public class PermissableActionFrame {
|
|||||||
case LEFT:
|
case LEFT:
|
||||||
access = Access.ALLOW;
|
access = Access.ALLOW;
|
||||||
success = fplayer.getFaction().setPermission(perm, action, access);
|
success = fplayer.getFaction().setPermission(perm, action, access);
|
||||||
|
FactionsPlugin.instance.logFactionEvent(fplayer.getFaction(), FLogType.PERM_EDIT_DEFAULTS,fplayer.getName(), ChatColor.GREEN.toString() + ChatColor.BOLD + "ALLOWED", action.getName(), perm.name());
|
||||||
break;
|
break;
|
||||||
case RIGHT:
|
case RIGHT:
|
||||||
access = Access.DENY;
|
access = Access.DENY;
|
||||||
success = fplayer.getFaction().setPermission(perm, action, access);
|
success = fplayer.getFaction().setPermission(perm, action, access);
|
||||||
|
FactionsPlugin.instance.logFactionEvent(fplayer.getFaction(), FLogType.PERM_EDIT_DEFAULTS,fplayer.getName(), ChatColor.RED.toString() + ChatColor.BOLD + "DENIED", action.getName(), perm.name());
|
||||||
break;
|
break;
|
||||||
case MIDDLE:
|
case MIDDLE:
|
||||||
access = Access.UNDEFINED;
|
access = Access.UNDEFINED;
|
||||||
|
|||||||
@@ -17,8 +17,10 @@ import com.massivecraft.factions.struct.Relation;
|
|||||||
import com.massivecraft.factions.struct.Role;
|
import com.massivecraft.factions.struct.Role;
|
||||||
import com.massivecraft.factions.util.RelationUtil;
|
import com.massivecraft.factions.util.RelationUtil;
|
||||||
import com.massivecraft.factions.util.WarmUpUtil;
|
import com.massivecraft.factions.util.WarmUpUtil;
|
||||||
|
import com.massivecraft.factions.zcore.faudit.FLogType;
|
||||||
import com.massivecraft.factions.zcore.fperms.Access;
|
import com.massivecraft.factions.zcore.fperms.Access;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.CC;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import mkremins.fanciful.FancyMessage;
|
import mkremins.fanciful.FancyMessage;
|
||||||
import net.milkbowl.vault.economy.Economy;
|
import net.milkbowl.vault.economy.Economy;
|
||||||
@@ -78,6 +80,7 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
protected transient boolean shouldTakeFallDamage = true;
|
protected transient boolean shouldTakeFallDamage = true;
|
||||||
protected boolean isStealthEnabled = false;
|
protected boolean isStealthEnabled = false;
|
||||||
protected boolean notificationsEnabled = true;
|
protected boolean notificationsEnabled = true;
|
||||||
|
protected boolean titlesEnabled = true;
|
||||||
protected boolean isAlt = false;
|
protected boolean isAlt = false;
|
||||||
boolean inspectMode = false;
|
boolean inspectMode = false;
|
||||||
|
|
||||||
@@ -217,7 +220,12 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
public boolean hasNotificationsEnabled() {
|
public boolean hasNotificationsEnabled() {
|
||||||
return this.notificationsEnabled;
|
return this.notificationsEnabled;
|
||||||
}
|
}
|
||||||
|
public boolean hasTitlesEnabled() {
|
||||||
|
return this.titlesEnabled;
|
||||||
|
}
|
||||||
|
public void setTitlesEnabled(Boolean b) {
|
||||||
|
this.titlesEnabled = b;
|
||||||
|
}
|
||||||
public String getFactionId() {
|
public String getFactionId() {
|
||||||
return this.factionId;
|
return this.factionId;
|
||||||
}
|
}
|
||||||
@@ -783,6 +791,7 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.resetFactionData();
|
this.resetFactionData();
|
||||||
|
FactionsPlugin.instance.logFactionEvent(myFaction, FLogType.INVITES, this.getName(), CC.Red + "left", "the faction");
|
||||||
setFlying(false);
|
setFlying(false);
|
||||||
|
|
||||||
if (myFaction.isNormal() && !perm && myFaction.getFPlayers().isEmpty()) {
|
if (myFaction.isNormal() && !perm && myFaction.getFPlayers().isEmpty()) {
|
||||||
@@ -1225,7 +1234,7 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// if economy is enabled and they're not on the bypass list, make sure they can pay
|
// if economy is enabled and they're not on the bypass list, make sure they can pay
|
||||||
boolean mustPay = Econ.shouldBeUsed() && !this.isAdminBypassing() && !forFaction.isSafeZone() && !forFaction.isWarZone();
|
boolean mustPay = Econ.shouldBeUsed() && !this.isAdminBypassing() && !forFaction.isSafeZone() && !forFaction.isWarZone() && (Conf.econCostClaimWilderness != 0);
|
||||||
double cost = 0.0;
|
double cost = 0.0;
|
||||||
EconomyParticipator payee = null;
|
EconomyParticipator payee = null;
|
||||||
if (mustPay) {
|
if (mustPay) {
|
||||||
|
|||||||
@@ -160,7 +160,6 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
this.checks = new ConcurrentHashMap<>();
|
this.checks = new ConcurrentHashMap<>();
|
||||||
this.playerWallCheckCount = new ConcurrentHashMap<>();
|
this.playerWallCheckCount = new ConcurrentHashMap<>();
|
||||||
this.playerBufferCheckCount = new ConcurrentHashMap<>();
|
this.playerBufferCheckCount = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
resetPerms(); // Reset on new Faction so it has default values.
|
resetPerms(); // Reset on new Faction so it has default values.
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -564,7 +563,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setGuildId(final String guildId) {
|
public void setGuildId(String guildId) {
|
||||||
this.guildId = guildId;
|
this.guildId = guildId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -584,7 +583,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setWallNotifyChannelId(final String wallNotifyChannelId) {
|
public void setWallNotifyChannelId(String wallNotifyChannelId) {
|
||||||
this.wallNotifyChannelId = wallNotifyChannelId;
|
this.wallNotifyChannelId = wallNotifyChannelId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -594,7 +593,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setBufferNotifyChannelId(final String bufferNotifyChannelId) {
|
public void setBufferNotifyChannelId(String bufferNotifyChannelId) {
|
||||||
this.bufferNotifyChannelId = bufferNotifyChannelId;
|
this.bufferNotifyChannelId = bufferNotifyChannelId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -604,7 +603,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setWeeWooChannelId(final String weeWooChannelId) {
|
public void setWeeWooChannelId(String weeWooChannelId) {
|
||||||
this.weeWooChannelId = weeWooChannelId;
|
this.weeWooChannelId = weeWooChannelId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -614,7 +613,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setNotifyFormat(final String notifyFormat) {
|
public void setNotifyFormat(String notifyFormat) {
|
||||||
this.notifyFormat = notifyFormat;
|
this.notifyFormat = notifyFormat;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -624,17 +623,17 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setWeeWooFormat(final String weeWooFormat) {
|
public void setWeeWooFormat(String weeWooFormat) {
|
||||||
this.weeWooFormat = weeWooFormat;
|
this.weeWooFormat = weeWooFormat;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setFactionChatChannelId(final String factionChatChannelId) {
|
public void setFactionChatChannelId(String factionChatChannelId) {
|
||||||
this.factionChatChannelId = factionChatChannelId;
|
this.factionChatChannelId = factionChatChannelId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setMemberRoleId(final String memberRoleId) {
|
public void setMemberRoleId(String memberRoleId) {
|
||||||
this.memberRoleId = memberRoleId;
|
this.memberRoleId = memberRoleId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -774,7 +773,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
msg("<b>Your faction home has been un-set since it is no longer in your territory.");
|
msg(TL.COMMAND_HOME_UNSET);
|
||||||
this.home = null;
|
this.home = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -866,16 +865,13 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public Access getAccess(FPlayer player, PermissableAction permissableAction) {
|
public Access getAccess(FPlayer player, PermissableAction permissableAction) {
|
||||||
if (player == null || permissableAction == null) {
|
if (player == null || permissableAction == null) return Access.UNDEFINED;
|
||||||
return Access.UNDEFINED;
|
|
||||||
}
|
|
||||||
|
|
||||||
Permissable perm = player.getFaction() == null ? player.getRole() : player.getFaction().getRelationTo(this);
|
|
||||||
|
Permissable perm = player.getFaction() == this ? player.getRole() : player.getFaction().getRelationTo(this);
|
||||||
|
|
||||||
Map<PermissableAction, Access> accessMap = permissions.get(perm);
|
Map<PermissableAction, Access> accessMap = permissions.get(perm);
|
||||||
if (accessMap != null && accessMap.containsKey(permissableAction)) {
|
if (accessMap != null && accessMap.containsKey(permissableAction)) return accessMap.get(permissableAction);
|
||||||
return accessMap.get(permissableAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Access.UNDEFINED;
|
return Access.UNDEFINED;
|
||||||
}
|
}
|
||||||
@@ -890,7 +886,6 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
|
|
||||||
public void resetPerms() {
|
public void resetPerms() {
|
||||||
FactionsPlugin.getInstance().log(Level.WARNING, "Resetting permissions for Faction: " + tag);
|
FactionsPlugin.getInstance().log(Level.WARNING, "Resetting permissions for Faction: " + tag);
|
||||||
|
|
||||||
permissions.clear();
|
permissions.clear();
|
||||||
|
|
||||||
// First populate a map with undefined as the permission for each action.
|
// First populate a map with undefined as the permission for each action.
|
||||||
@@ -1306,7 +1301,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (FPlayer fplayer : FPlayers.getInstance().getOnlinePlayers()) {
|
for (FPlayer fplayer : FPlayers.getInstance().getOnlinePlayers()) {
|
||||||
fplayer.msg("The faction %s<i> was disbanded.", this.getTag(fplayer));
|
fplayer.msg(TL.COMMAND_DISBAND_BROADCAST_GENERIC, this.getTag(fplayer));
|
||||||
}
|
}
|
||||||
|
|
||||||
FactionDisbandEvent disbandEvent = new FactionDisbandEvent(null, getId(), autoLeave ? PlayerDisbandReason.INACTIVITY : PlayerDisbandReason.LEAVE);
|
FactionDisbandEvent disbandEvent = new FactionDisbandEvent(null, getId(), autoLeave ? PlayerDisbandReason.INACTIVITY : PlayerDisbandReason.LEAVE);
|
||||||
@@ -1318,8 +1313,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
oldLeader.setRole(Role.NORMAL);
|
oldLeader.setRole(Role.NORMAL);
|
||||||
}
|
}
|
||||||
replacements.get(0).setRole(Role.LEADER);
|
replacements.get(0).setRole(Role.LEADER);
|
||||||
//TODO:TL
|
this.msg(TL.COMMAND_ADMIN_PROMOTED_AUTOLEAVE, oldLeader == null ? "" : oldLeader.getName(), replacements.get(0).getName());
|
||||||
this.msg("<i>Faction admin <h>%s<i> has been removed. %s<i> has been promoted as the new faction admin.", oldLeader == null ? "" : oldLeader.getName(), replacements.get(0).getName());
|
|
||||||
FactionsPlugin.getInstance().log("Faction " + this.getTag() + " (" + this.getId() + ") admin was removed. Replacement admin: " + replacements.get(0).getName());
|
FactionsPlugin.getInstance().log("Faction " + this.getTag() + " (" + this.getId() + ") admin was removed. Replacement admin: " + replacements.get(0).getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1453,8 +1447,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
ownerList.append(", ");
|
ownerList.append(", ");
|
||||||
}
|
}
|
||||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(UUID.fromString(anOwnerData));
|
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(UUID.fromString(anOwnerData));
|
||||||
//TODO:TL
|
ownerList.append(offlinePlayer != null ? offlinePlayer.getName() : TL.GENERIC_NULLPLAYER.toString());
|
||||||
ownerList.append(offlinePlayer != null ? offlinePlayer.getName() : "null player");
|
|
||||||
}
|
}
|
||||||
return ownerList.toString();
|
return ownerList.toString();
|
||||||
}
|
}
|
||||||
|
|||||||
92
src/main/java/com/massivecraft/factions/zcore/util/CC.java
Normal file
92
src/main/java/com/massivecraft/factions/zcore/util/CC.java
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
package com.massivecraft.factions.zcore.util;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
|
||||||
|
public class CC {
|
||||||
|
public static String Black = ChatColor.BLACK.toString();
|
||||||
|
public static String BlackB = ChatColor.BLACK + ChatColor.BOLD.toString();
|
||||||
|
public static String BlackI = ChatColor.BLACK + ChatColor.ITALIC.toString();;
|
||||||
|
public static String BlackU = ChatColor.BLACK + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String DarkBlue = ChatColor.DARK_BLUE.toString();
|
||||||
|
public static String DarkBlueB = ChatColor.DARK_BLUE + ChatColor.BOLD.toString();
|
||||||
|
public static String DarkBlueI = ChatColor.DARK_BLUE + ChatColor.ITALIC.toString();
|
||||||
|
public static String DarkBlueU = ChatColor.DARK_BLUE + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String DarkGreen = ChatColor.DARK_GREEN.toString();
|
||||||
|
public static String DarkGreenB = ChatColor.DARK_GREEN + ChatColor.BOLD.toString();
|
||||||
|
public static String DarkGreenI = ChatColor.DARK_GREEN + ChatColor.ITALIC.toString();
|
||||||
|
public static String DarkGreenU = ChatColor.DARK_GREEN + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String DarkAqua = ChatColor.DARK_AQUA.toString();
|
||||||
|
public static String DarkAquaB = ChatColor.DARK_AQUA + ChatColor.BOLD.toString();
|
||||||
|
public static String DarkAquaI = ChatColor.DARK_AQUA + ChatColor.ITALIC.toString();
|
||||||
|
public static String DarkAquaU = ChatColor.DARK_AQUA + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String DarkRed = ChatColor.DARK_RED.toString();
|
||||||
|
public static String DarkRedB = ChatColor.DARK_RED + ChatColor.BOLD.toString();
|
||||||
|
public static String DarkRedI = ChatColor.DARK_RED + ChatColor.ITALIC.toString();
|
||||||
|
public static String DarkRedU = ChatColor.DARK_RED + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String DarkPurple = ChatColor.DARK_PURPLE.toString();
|
||||||
|
public static String DarkPurpleB = ChatColor.DARK_PURPLE + ChatColor.BOLD.toString();
|
||||||
|
public static String DarkPurpleI = ChatColor.DARK_PURPLE + ChatColor.ITALIC.toString();
|
||||||
|
public static String DarkPurpleU = ChatColor.DARK_PURPLE + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String Gold = ChatColor.GOLD.toString();
|
||||||
|
public static String GoldB = ChatColor.GOLD + ChatColor.BOLD.toString();
|
||||||
|
public static String GoldI = ChatColor.GOLD + ChatColor.ITALIC.toString();
|
||||||
|
public static String GoldU = ChatColor.GOLD + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String Gray = ChatColor.GRAY.toString();
|
||||||
|
public static String GrayB = ChatColor.GRAY + ChatColor.BOLD.toString();
|
||||||
|
public static String GrayI = ChatColor.GRAY + ChatColor.ITALIC.toString();
|
||||||
|
public static String GrayU = ChatColor.GRAY + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String DarkGray = ChatColor.DARK_GRAY.toString();
|
||||||
|
public static String DarkGrayB = ChatColor.DARK_GRAY + ChatColor.BOLD.toString();
|
||||||
|
public static String DarkGrayI = ChatColor.DARK_GRAY + ChatColor.ITALIC.toString();
|
||||||
|
public static String DarkGrayU = ChatColor.DARK_GRAY + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String Blue = ChatColor.BLUE.toString();
|
||||||
|
public static String BlueB = ChatColor.BLUE + ChatColor.BOLD.toString();
|
||||||
|
public static String BlueI = ChatColor.BLUE + ChatColor.ITALIC.toString();
|
||||||
|
public static String BlueU = ChatColor.BLUE + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String Green = ChatColor.GREEN.toString();
|
||||||
|
public static String GreenB = ChatColor.GREEN + ChatColor.BOLD.toString();
|
||||||
|
public static String GreenI = ChatColor.GREEN + ChatColor.ITALIC.toString();
|
||||||
|
public static String GreenU = ChatColor.GREEN + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String Aqua = ChatColor.AQUA.toString();
|
||||||
|
public static String AquaB = ChatColor.AQUA + ChatColor.BOLD.toString();
|
||||||
|
public static String AquaI = ChatColor.AQUA + ChatColor.ITALIC.toString();
|
||||||
|
public static String AquaU = ChatColor.AQUA + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String Red = ChatColor.RED.toString();
|
||||||
|
public static String RedB = ChatColor.RED + ChatColor.BOLD.toString();
|
||||||
|
public static String RedI = ChatColor.RED + ChatColor.ITALIC.toString();
|
||||||
|
public static String RedU = ChatColor.RED + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String LightPurple = ChatColor.LIGHT_PURPLE.toString();
|
||||||
|
public static String LightPurpleB = ChatColor.LIGHT_PURPLE + ChatColor.BOLD.toString();
|
||||||
|
public static String LightPurpleI = ChatColor.LIGHT_PURPLE + ChatColor.ITALIC.toString();
|
||||||
|
public static String LightPurpleU = ChatColor.LIGHT_PURPLE + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String Yellow = ChatColor.YELLOW.toString();
|
||||||
|
public static String YellowB = ChatColor.YELLOW + ChatColor.BOLD.toString();
|
||||||
|
public static String YellowI = ChatColor.YELLOW + ChatColor.ITALIC.toString();
|
||||||
|
public static String YellowU = ChatColor.YELLOW + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String White = ChatColor.WHITE.toString();
|
||||||
|
public static String WhiteB = ChatColor.WHITE + ChatColor.BOLD.toString();
|
||||||
|
public static String WhiteI = ChatColor.WHITE + ChatColor.ITALIC.toString();
|
||||||
|
public static String WhiteU = ChatColor.WHITE + ChatColor.UNDERLINE.toString();
|
||||||
|
public static String Bold = ChatColor.BOLD.toString();
|
||||||
|
public static String Strike = ChatColor.STRIKETHROUGH.toString();
|
||||||
|
public static String Underline = ChatColor.UNDERLINE.toString();
|
||||||
|
public static String Magic = ChatColor.MAGIC.toString();
|
||||||
|
public static String Italic = ChatColor.ITALIC.toString();
|
||||||
|
public static String Reset = ChatColor.RESET.toString();
|
||||||
|
public static String Go = GreenB + "<!> " + Green;
|
||||||
|
public static String Wait = YellowB + "<!> " + Yellow;
|
||||||
|
public static String Stop = RedB + "<!> " + Red;
|
||||||
|
|
||||||
|
public static String prefix(char color) {
|
||||||
|
return translate("&" + color + "&l<!> &" + color);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String translate(String string) {
|
||||||
|
return ChatColor.translateAlternateColorCodes('&', string);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String strip(String string) {
|
||||||
|
return ChatColor.stripColor(string);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package com.massivecraft.factions.zcore.util;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.util.XMaterial;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.SkullMeta;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class ItemUtil {
|
||||||
|
private static Map<String, ItemStack> cachedSkulls = new HashMap();
|
||||||
|
|
||||||
|
public ItemUtil() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getItemCount(Inventory inventory) {
|
||||||
|
if (inventory == null) {
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
int itemsFound = 0;
|
||||||
|
|
||||||
|
for(int i = 0; i < inventory.getSize(); ++i) {
|
||||||
|
ItemStack item = inventory.getItem(i);
|
||||||
|
if (item != null && item.getType() != Material.AIR) {
|
||||||
|
++itemsFound;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return itemsFound;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ItemStack createPlayerHead(String name) {
|
||||||
|
ItemStack skull = cachedSkulls.get(name);
|
||||||
|
if (skull != null) {
|
||||||
|
return skull.clone();
|
||||||
|
} else {
|
||||||
|
skull = new ItemStack(XMaterial.PLAYER_HEAD.parseMaterial());
|
||||||
|
SkullMeta sm = (SkullMeta)skull.getItemMeta();
|
||||||
|
sm.setOwner(name);
|
||||||
|
skull.setItemMeta(sm);
|
||||||
|
cachedSkulls.put(name, skull.clone());
|
||||||
|
return skull;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
package com.massivecraft.factions.zcore.util;
|
||||||
|
|
||||||
|
import com.google.common.reflect.TypeToken;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.lang.reflect.Type;
|
||||||
|
|
||||||
|
public class JSONUtils {
|
||||||
|
public static Gson gson = (new GsonBuilder()).enableComplexMapKeySerialization().create();
|
||||||
|
|
||||||
|
public JSONUtils() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static File getOrCreateFile(File parent, String string) throws IOException {
|
||||||
|
if (!parent.exists()) {
|
||||||
|
parent.mkdir();
|
||||||
|
Bukkit.getLogger().info("Creating directory " + parent.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
File f = new File(parent, string);
|
||||||
|
if (!f.exists()) {
|
||||||
|
Bukkit.getLogger().info("Creating new file " + string + " due to it not existing!");
|
||||||
|
f.createNewFile();
|
||||||
|
}
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static File getOrCreateFile(String fileName) throws IOException {
|
||||||
|
File f = new File(fileName);
|
||||||
|
if (!f.exists()) {
|
||||||
|
Bukkit.getLogger().info("Creating new file " + fileName + " due to it not existing!");
|
||||||
|
f.createNewFile();
|
||||||
|
}
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Object fromJson(String fileName, Object token) throws IOException {
|
||||||
|
File f = getOrCreateFile(fileName);
|
||||||
|
return fromJson(f, token);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Object fromJson(File f, Object clazz) throws FileNotFoundException {
|
||||||
|
return gson.fromJson(new FileReader(f), getTypeFromObject(clazz));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Object fromJson(File f, Object clazz, Object defaultObj) throws FileNotFoundException {
|
||||||
|
Object retr = gson.fromJson(new FileReader(f), getTypeFromObject(clazz));
|
||||||
|
return retr == null ? defaultObj : retr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Object fromJson(File f, Type token) throws FileNotFoundException {
|
||||||
|
return fromJson(f, token, gson);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Object fromJson(File f, Type token, Gson gson) throws FileNotFoundException {
|
||||||
|
return gson.fromJson(new FileReader(f), token);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String toJSON(Object object, Object token) {
|
||||||
|
return toJSON(object, token, gson);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String toJSON(Object object, Object token, Gson gson) {
|
||||||
|
return gson.toJson(object, getTypeFromObject(token));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean saveJSONToFile(String fileName, Object toSave, Object token) throws IOException {
|
||||||
|
return saveJSONToFile(getOrCreateFile(fileName), toSave, token);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean saveJSONToFile(File f, Object toSave, Object token, Gson gson) throws IOException {
|
||||||
|
String str = toJSON(toSave, token, gson);
|
||||||
|
FileWriter writer = new FileWriter(f);
|
||||||
|
writer.write(str);
|
||||||
|
writer.flush();
|
||||||
|
writer.close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean saveJSONToFile(File f, Object toSave, Object token) throws IOException {
|
||||||
|
try {
|
||||||
|
return saveJSONToFile(f, toSave, token, gson);
|
||||||
|
} catch (Throwable var4) {
|
||||||
|
throw var4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Type getTypeFromObject(Object object) {
|
||||||
|
return object instanceof Type ? (Type)object : getTypeFromClass(object.getClass());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Type getTypeFromClass(Class<?> clazz) {
|
||||||
|
return TypeToken.of(clazz).getType();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -126,6 +126,8 @@ public enum TL {
|
|||||||
COMMAND_CONTEXT_ADMINISTER_MOD_REQUIRED("&c[!] You must be a faction moderator to do that."),
|
COMMAND_CONTEXT_ADMINISTER_MOD_REQUIRED("&c[!] You must be a faction moderator to do that."),
|
||||||
|
|
||||||
COMMAND_UPGRADES_DESCRIPTION("&cOpen the Upgrades Menu"),
|
COMMAND_UPGRADES_DESCRIPTION("&cOpen the Upgrades Menu"),
|
||||||
|
COMMAND_UPGRADES_DISABLED("&c[!] &7Faction Upgrades are &cdisabled&7."),
|
||||||
|
|
||||||
COMMAND_CORNER_CANT_CLAIM("&c&l[!] &cYou may not claim this corner!"),
|
COMMAND_CORNER_CANT_CLAIM("&c&l[!] &cYou may not claim this corner!"),
|
||||||
COMMAND_CORNER_CLAIMED("\n&2&l[!] &aYou have claimed the corner successfully, totalling in &b%1$d &achunks!\n"),
|
COMMAND_CORNER_CLAIMED("\n&2&l[!] &aYou have claimed the corner successfully, totalling in &b%1$d &achunks!\n"),
|
||||||
COMMAND_CORNER_ATTEMPTING_CLAIM("&c&l[!] &7Attempting to claim corner..."),
|
COMMAND_CORNER_ATTEMPTING_CLAIM("&c&l[!] &7Attempting to claim corner..."),
|
||||||
@@ -141,6 +143,7 @@ public enum TL {
|
|||||||
COMMAND_ADMIN_DEMOTED("&c&l[!] &cYou have been demoted from the position of faction admin by &7%1$s&c"),
|
COMMAND_ADMIN_DEMOTED("&c&l[!] &cYou have been demoted from the position of faction admin by &7%1$s&c"),
|
||||||
COMMAND_ADMIN_PROMOTES("&e&l[!] &eYou have promoted &6%1$s &eto the position of faction admin."),
|
COMMAND_ADMIN_PROMOTES("&e&l[!] &eYou have promoted &6%1$s &eto the position of faction admin."),
|
||||||
COMMAND_ADMIN_PROMOTED("&e&l[!] &6%1$s &egave &6%2$s ðe leadership of &6%3$s&e."),
|
COMMAND_ADMIN_PROMOTED("&e&l[!] &6%1$s &egave &6%2$s ðe leadership of &6%3$s&e."),
|
||||||
|
COMMAND_ADMIN_PROMOTED_AUTOLEAVE("&e&l[!] &7Faction admin &c%s&7 has been removed. &c%s&7 has been promoted as the new faction admin."),
|
||||||
COMMAND_ADMIN_DESCRIPTION("Hand over your admin rights"),
|
COMMAND_ADMIN_DESCRIPTION("Hand over your admin rights"),
|
||||||
COMMAND_ADMIN_NOMEMBERS("&e&l[!] &cNo one else to promote, please disband faction."),
|
COMMAND_ADMIN_NOMEMBERS("&e&l[!] &cNo one else to promote, please disband faction."),
|
||||||
|
|
||||||
@@ -368,6 +371,7 @@ public enum TL {
|
|||||||
COMMAND_DISBAND_IMMUTABLE("&c&l[!]&7 &7You &ccannot&7 disband &2Wilderness&7,&e SafeZone&7, or &4WarZone."),
|
COMMAND_DISBAND_IMMUTABLE("&c&l[!]&7 &7You &ccannot&7 disband &2Wilderness&7,&e SafeZone&7, or &4WarZone."),
|
||||||
COMMAND_DISBAND_MARKEDPERMANENT("&c&l[!]&7 This faction is designated as&c permanent&7, so you cannot disband it."),
|
COMMAND_DISBAND_MARKEDPERMANENT("&c&l[!]&7 This faction is designated as&c permanent&7, so you cannot disband it."),
|
||||||
COMMAND_DISBAND_BROADCAST_YOURS("&c&l[!]&7 &c%1$s&7 disbanded your &cfaction."),
|
COMMAND_DISBAND_BROADCAST_YOURS("&c&l[!]&7 &c%1$s&7 disbanded your &cfaction."),
|
||||||
|
COMMAND_DISBAND_BROADCAST_GENERIC("&c&l[!]&7 The Faction &c%1$s&7 was disbanded."),
|
||||||
COMMAND_DISBAND_BROADCAST_NOTYOURS("&c&l[!]&7 &c%1$s &7disbanded the faction &c%2$s."),
|
COMMAND_DISBAND_BROADCAST_NOTYOURS("&c&l[!]&7 &c%1$s &7disbanded the faction &c%2$s."),
|
||||||
COMMAND_DISBAND_HOLDINGS("&c&l[!]&7 &7You have been given the disbanded &cfaction's bank&7, totaling &c%1$s."),
|
COMMAND_DISBAND_HOLDINGS("&c&l[!]&7 &7You have been given the disbanded &cfaction's bank&7, totaling &c%1$s."),
|
||||||
COMMAND_DISBAND_PLAYER("&c&l[!] &7You have disbanded your &cfaction"),
|
COMMAND_DISBAND_PLAYER("&c&l[!] &7You have disbanded your &cfaction"),
|
||||||
@@ -411,6 +415,7 @@ public enum TL {
|
|||||||
COMMAND_HOME_DISABLED("&c&l[!]&7 Sorry, Faction homes are &cdisabled on this server."),
|
COMMAND_HOME_DISABLED("&c&l[!]&7 Sorry, Faction homes are &cdisabled on this server."),
|
||||||
COMMAND_HOME_TELEPORTDISABLED("&c&l[!]&7 Sorry, the ability to &cteleport &7to Faction homes is &cdisabled &7on this server."),
|
COMMAND_HOME_TELEPORTDISABLED("&c&l[!]&7 Sorry, the ability to &cteleport &7to Faction homes is &cdisabled &7on this server."),
|
||||||
COMMAND_HOME_NOHOME("&c&l[!]&7 Your faction does &cnot &7have a home. "),
|
COMMAND_HOME_NOHOME("&c&l[!]&7 Your faction does &cnot &7have a home. "),
|
||||||
|
COMMAND_HOME_UNSET("&c&l[!]&7 Sorry, your faction home has been &cun-set &7since it is no longer in your territory."),
|
||||||
COMMAND_HOME_INENEMY("&c&l[!]&7 You &ccannot teleport &7to your &cfaction home&7 while in the territory of an &cenemy faction&7."),
|
COMMAND_HOME_INENEMY("&c&l[!]&7 You &ccannot teleport &7to your &cfaction home&7 while in the territory of an &cenemy faction&7."),
|
||||||
COMMAND_HOME_WRONGWORLD("&c&l[!]&7 You &ccannot &7teleport to your &cfaction home&7 while in a different world."),
|
COMMAND_HOME_WRONGWORLD("&c&l[!]&7 You &ccannot &7teleport to your &cfaction home&7 while in a different world."),
|
||||||
COMMAND_HOME_ENEMYNEAR("&c&l[!]&7 You &ccannot teleport&7 to your faction home while an enemy is within &c%s&7 blocks of you."),
|
COMMAND_HOME_ENEMYNEAR("&c&l[!]&7 You &ccannot teleport&7 to your faction home while an enemy is within &c%s&7 blocks of you."),
|
||||||
@@ -547,6 +552,9 @@ public enum TL {
|
|||||||
COMMAND_MONEY_LONG("&c&l[!]&7 The faction money commands."),
|
COMMAND_MONEY_LONG("&c&l[!]&7 The faction money commands."),
|
||||||
COMMAND_MONEY_DESCRIPTION("Faction money commands"),
|
COMMAND_MONEY_DESCRIPTION("Faction money commands"),
|
||||||
|
|
||||||
|
COMMAND_MONEY_CANTAFFORD("&c&l[!]&7 &c%1$s&7 can't afford &c%2$s&7 %3$s"),
|
||||||
|
COMMAND_MONEY_GAINED("&c&l[!]&7 &c%1$s&7 gained &c%2$s %2%6"),
|
||||||
|
|
||||||
COMMAND_MONEYBALANCE_SHORT("show faction balance"),
|
COMMAND_MONEYBALANCE_SHORT("show faction balance"),
|
||||||
COMMAND_MONEYBALANCE_DESCRIPTION("Show your factions current money balance"),
|
COMMAND_MONEYBALANCE_DESCRIPTION("Show your factions current money balance"),
|
||||||
|
|
||||||
@@ -555,6 +563,8 @@ public enum TL {
|
|||||||
|
|
||||||
COMMAND_MONEYTRANSFERFF_DESCRIPTION("Transfer f -> f"),
|
COMMAND_MONEYTRANSFERFF_DESCRIPTION("Transfer f -> f"),
|
||||||
COMMAND_MONEYTRANSFERFF_TRANSFER("&c&l[!]&7 &c%1$s&7 transferred&c %2$s &7from the faction &c\"%3$s\"&7 to the faction&c \"%4$s\"&7"),
|
COMMAND_MONEYTRANSFERFF_TRANSFER("&c&l[!]&7 &c%1$s&7 transferred&c %2$s &7from the faction &c\"%3$s\"&7 to the faction&c \"%4$s\"&7"),
|
||||||
|
COMMAND_MONEYTRANSFERFF_TRANSFERCANTAFFORD("&c&l[!]&7 &c%1$s&7 can't afford to transfer &c%2$s &7to %3$s"),
|
||||||
|
|
||||||
|
|
||||||
COMMAND_MONEYTRANSFERFP_DESCRIPTION("Transfer f -> plugin"),
|
COMMAND_MONEYTRANSFERFP_DESCRIPTION("Transfer f -> plugin"),
|
||||||
COMMAND_MONEYTRANSFERFP_TRANSFER("&c&l[!]&7 &c%1$s &7transferred&c %2$s &7from the faction&c \"%3$s\" &7to the player &c\"%4$s\""),
|
COMMAND_MONEYTRANSFERFP_TRANSFER("&c&l[!]&7 &c%1$s &7transferred&c %2$s &7from the faction&c \"%3$s\" &7to the player &c\"%4$s\""),
|
||||||
@@ -867,6 +877,10 @@ public enum TL {
|
|||||||
COMMAND_TITLE_CHANGED("%1$s changed a title: %2$s"),
|
COMMAND_TITLE_CHANGED("%1$s changed a title: %2$s"),
|
||||||
COMMAND_TITLE_DESCRIPTION("Set or remove a players title"),
|
COMMAND_TITLE_DESCRIPTION("Set or remove a players title"),
|
||||||
|
|
||||||
|
COMMAND_TITLETOGGLE_TOGGLED("You have changed your title setting to &c%1$s"),
|
||||||
|
COMMAND_TITLETOGGLE_DESCRIPTION("Toggle titles to be served to you"),
|
||||||
|
|
||||||
|
|
||||||
COMMAND_TOGGLEALLIANCECHAT_DESCRIPTION("Toggles whether or not you will see alliance chat"),
|
COMMAND_TOGGLEALLIANCECHAT_DESCRIPTION("Toggles whether or not you will see alliance chat"),
|
||||||
COMMAND_TOGGLEALLIANCECHAT_IGNORE("Alliance chat is now ignored"),
|
COMMAND_TOGGLEALLIANCECHAT_IGNORE("Alliance chat is now ignored"),
|
||||||
COMMAND_TOGGLEALLIANCECHAT_UNIGNORE("Alliance chat is no longer ignored"),
|
COMMAND_TOGGLEALLIANCECHAT_UNIGNORE("Alliance chat is no longer ignored"),
|
||||||
@@ -1004,6 +1018,7 @@ public enum TL {
|
|||||||
GENERIC_YOU("you"),
|
GENERIC_YOU("you"),
|
||||||
GENERIC_YOURFACTION("your faction"),
|
GENERIC_YOURFACTION("your faction"),
|
||||||
GENERIC_NOPERMISSION("You don't have permission to %1$s."),
|
GENERIC_NOPERMISSION("You don't have permission to %1$s."),
|
||||||
|
GENERIC_ACTION_NOPERMISSION("You don't have permission to use %1$s"),
|
||||||
GENERIC_FPERM_NOPERMISSION("&7The faction leader does not allow you to &c%1$s."),
|
GENERIC_FPERM_NOPERMISSION("&7The faction leader does not allow you to &c%1$s."),
|
||||||
GENERIC_DOTHAT("do that"), //Ugh nuke this from high orbit
|
GENERIC_DOTHAT("do that"), //Ugh nuke this from high orbit
|
||||||
GENERIC_NOPLAYERMATCH("No player match found for \"<plugin>%1$s\"."),
|
GENERIC_NOPLAYERMATCH("No player match found for \"<plugin>%1$s\"."),
|
||||||
@@ -1015,9 +1030,11 @@ public enum TL {
|
|||||||
GENERIC_PUBLICLAND("Public faction land."),
|
GENERIC_PUBLICLAND("Public faction land."),
|
||||||
GENERIC_FACTIONLESS("factionless"),
|
GENERIC_FACTIONLESS("factionless"),
|
||||||
GENERIC_SERVERADMIN("A server admin"),
|
GENERIC_SERVERADMIN("A server admin"),
|
||||||
|
GENERIC_SERVER("Server"),
|
||||||
GENERIC_DISABLED("disabled"),
|
GENERIC_DISABLED("disabled"),
|
||||||
GENERIC_ENABLED("enabled"),
|
GENERIC_ENABLED("enabled"),
|
||||||
GENERIC_INFINITY("∞"),
|
GENERIC_INFINITY("∞"),
|
||||||
|
GENERIC_NULLPLAYER("null player"),
|
||||||
GENERIC_CONSOLEONLY("This command cannot be run as a player."),
|
GENERIC_CONSOLEONLY("This command cannot be run as a player."),
|
||||||
GENERIC_PLAYERONLY("This command can only be used by ingame players."),
|
GENERIC_PLAYERONLY("This command can only be used by ingame players."),
|
||||||
GENERIC_ASKYOURLEADER(" Ask your leader to:"),
|
GENERIC_ASKYOURLEADER(" Ask your leader to:"),
|
||||||
@@ -1038,7 +1055,7 @@ public enum TL {
|
|||||||
GENERIC_YOUMUSTBE("&cYour must be atleast %1$s to do this!"),
|
GENERIC_YOUMUSTBE("&cYour must be atleast %1$s to do this!"),
|
||||||
GENERIC_MEMBERONLY("&cYou must be in a faction to do this!"),
|
GENERIC_MEMBERONLY("&cYou must be in a faction to do this!"),
|
||||||
|
|
||||||
|
// MISSION_CREATED_COOLDOWN("&c&l[!] &7Due to your immediate faction creation, you may not start missions for &b%1$s minutes&7!"),
|
||||||
MISSION_MISSION_STARTED("&f%1$s &dstarted the %2$s &fmission"),
|
MISSION_MISSION_STARTED("&f%1$s &dstarted the %2$s &fmission"),
|
||||||
MISSION_ALREAD_COMPLETED("&c&l[!] &7You may not restart a mission you have already completed"),
|
MISSION_ALREAD_COMPLETED("&c&l[!] &7You may not restart a mission you have already completed"),
|
||||||
MISSION_MISSION_ACTIVE("&c&l[!] &7This mission is currently active!"),
|
MISSION_MISSION_ACTIVE("&c&l[!] &7This mission is currently active!"),
|
||||||
@@ -1081,8 +1098,19 @@ public enum TL {
|
|||||||
|
|
||||||
ECON_OFF("no %s"), // no balance, no value, no refund, etc
|
ECON_OFF("no %s"), // no balance, no value, no refund, etc
|
||||||
ECON_FORMAT("###,###.###"),
|
ECON_FORMAT("###,###.###"),
|
||||||
|
ECON_MONEYTRASFERREDFROM("%1$s was transferred from %2$s to %3$s."),
|
||||||
|
ECON_PERSONGAVEMONEYTO("%1$s gave %2$s to %3$s."),
|
||||||
|
ECON_PERSONTOOKMONEYFROM("%1$s took %2$s from %3$s."),
|
||||||
ECON_DISABLED("Factions econ is disabled."),
|
ECON_DISABLED("Factions econ is disabled."),
|
||||||
ECON_OVER_BAL_CAP("&4The amount &e%s &4is over Essentials' balance cap."),
|
ECON_OVER_BAL_CAP("&4The amount &e%s &4is over Essentials' balance cap."),
|
||||||
|
ECON_MONEYLOST("&c%s &7lost &c%s &7%s."),
|
||||||
|
ECON_CANTAFFORD("&c%s &7can't afford &c%s&7 %s."),
|
||||||
|
ECON_UNABLETOTRANSFER("&7Unable to transfer &c%s&7 to &c%s&7 from &c%s&7."),
|
||||||
|
ECON_PLAYERBALANCE("&c%s&7's balance is &c%s&7."),
|
||||||
|
ECON_DEPOSITFAILED("&c%s&7 would have gained &c%s&7 %s, but the deposit failed."),
|
||||||
|
ECON_CANTCONTROLMONEY("&c%s&7 lacks permission to control &c%s&7's money."),
|
||||||
|
ECON_MONEYTRASFERREDFROMPERSONTOPERSON("%1$s transferred %2$s from %3$s to %4$s."),
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Relations
|
* Relations
|
||||||
|
|||||||
@@ -535,7 +535,7 @@ fperm-gui:
|
|||||||
- ''
|
- ''
|
||||||
- '&4&l* &cStatus: &f{action-access-color}{action-access}'
|
- '&4&l* &cStatus: &f{action-access-color}{action-access}'
|
||||||
- ''
|
- ''
|
||||||
- '&2&l* &aLeft click to &alAllow&a.'
|
- '&2&l* &aLeft click to &a&lAllow&a.'
|
||||||
- '&4&l* &cRight click to &c&lDeny&c.'
|
- '&4&l* &cRight click to &c&lDeny&c.'
|
||||||
- '&8&l* &7Middle click to &7&lUndefine&7.'
|
- '&8&l* &7Middle click to &7&lUndefine&7.'
|
||||||
# Back item will be take you to the previous GUI
|
# Back item will be take you to the previous GUI
|
||||||
@@ -1292,7 +1292,7 @@ fbanners:
|
|||||||
- SPEED:2
|
- SPEED:2
|
||||||
BannerHolo: '&c{Faction}''s War Banner'
|
BannerHolo: '&c{Faction}''s War Banner'
|
||||||
Placeable:
|
Placeable:
|
||||||
Warzone: true
|
Warzone: false
|
||||||
Enemy: true
|
Enemy: true
|
||||||
|
|
||||||
#Title when moving between chunks
|
#Title when moving between chunks
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ permissions:
|
|||||||
factions.show: true
|
factions.show: true
|
||||||
factions.stuck: true
|
factions.stuck: true
|
||||||
factions.tag: true
|
factions.tag: true
|
||||||
|
factions.toggletitles: true
|
||||||
factions.title: true
|
factions.title: true
|
||||||
factions.version: true
|
factions.version: true
|
||||||
factions.unclaim: true
|
factions.unclaim: true
|
||||||
|
|||||||
Reference in New Issue
Block a user