Compare commits
104 Commits
2.3.3-STAB
...
2.3.8-RC
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b7d991c0dd | ||
|
|
6372245fcd | ||
|
|
f2c0f725b7 | ||
|
|
0b677cb4de | ||
|
|
e8642a3108 | ||
|
|
a355b1d0c8 | ||
|
|
929c34d850 | ||
|
|
903129e462 | ||
|
|
e84c69f2b0 | ||
|
|
3e530487d7 | ||
|
|
14776b8877 | ||
|
|
7f927189ea | ||
|
|
6f293dce17 | ||
|
|
2676f048d6 | ||
|
|
24aaa0ed6f | ||
|
|
2a01682fbe | ||
|
|
ba59310548 | ||
|
|
bec09168b6 | ||
|
|
4fe6484db9 | ||
|
|
71a099beeb | ||
|
|
ddd3150732 | ||
|
|
ec1501bf4f | ||
|
|
8ad2fdf848 | ||
|
|
1ee62c2267 | ||
|
|
7e6646b4df | ||
|
|
0d08ff4cec | ||
|
|
cf3ce62023 | ||
|
|
30d6b3c248 | ||
|
|
c22e3a5227 | ||
|
|
cf71603eeb | ||
|
|
c45b68a95f | ||
|
|
67a9a6db28 | ||
|
|
0ea56fe5d2 | ||
|
|
7d3c4d6e33 | ||
|
|
4d05b4a376 | ||
|
|
c29850eaaa | ||
|
|
ece5dd0bb7 | ||
|
|
bbaee8ab06 | ||
|
|
c42949ec59 | ||
|
|
f5f8e6aad2 | ||
|
|
447bfedbb1 | ||
|
|
1d4a1c2a1a | ||
|
|
31b8f0be25 | ||
|
|
e2d85d83f3 | ||
|
|
66f2fd22f6 | ||
|
|
842eb097c6 | ||
|
|
2f18da3cfb | ||
|
|
5fb8d06d98 | ||
|
|
868e7f4102 | ||
|
|
d8b08ef6d7 | ||
|
|
7bffed2d34 | ||
|
|
541e1fc69b | ||
|
|
07dce634af | ||
|
|
75faaa4bb5 | ||
|
|
17e2a86717 | ||
|
|
f384100925 | ||
|
|
b8c695c2f4 | ||
|
|
78a5e65e5c | ||
|
|
33761fee2b | ||
|
|
bf23521309 | ||
|
|
55fd5ffdfd | ||
|
|
04273de995 | ||
|
|
7fc1ad19ad | ||
|
|
01913e7286 | ||
|
|
ae7bb670d7 | ||
|
|
499d41dea0 | ||
|
|
e0d2e6b4db | ||
|
|
e37745eff9 | ||
|
|
86cba0e24c | ||
|
|
69a4651e23 | ||
|
|
f2c6d0b9da | ||
|
|
8f343a5344 | ||
|
|
8665d92476 | ||
|
|
b89db7b082 | ||
|
|
00cb78fd9b | ||
|
|
aca075b5c7 | ||
|
|
03886aa84e | ||
|
|
22472f63f1 | ||
|
|
6d72e5d167 | ||
|
|
69765e472c | ||
|
|
4f55b10c7d | ||
|
|
0395280a9e | ||
|
|
d1252df3ba | ||
|
|
9707226762 | ||
|
|
cf075c270e | ||
|
|
f088b42bbe | ||
|
|
baee5d2158 | ||
|
|
f871787b0c | ||
|
|
749fca0690 | ||
|
|
319940d9b3 | ||
|
|
7ea81a6c10 | ||
|
|
6205bbca9f | ||
|
|
241a16bc2a | ||
|
|
3aa98121e5 | ||
|
|
144798b2dd | ||
|
|
dac07178e5 | ||
|
|
f8421c09cf | ||
|
|
932a5768b0 | ||
|
|
861f88a916 | ||
|
|
5b7f3b0f0e | ||
|
|
304662fa9b | ||
|
|
5a6c660f7f | ||
|
|
0fc736cdf5 | ||
|
|
ef7db546a3 |
@@ -1,6 +1,7 @@
|
|||||||
# SaberFactions
|
# SaberFactions
|
||||||
|
|
||||||
 [](https://www.codefactor.io/repository/github/driftay/saber-factions) [](https://github.com/SaberLLC/Saber-Factions/blob/1.6.x/LICENSE) 
|
 [](https://www.codefactor.io/repository/github/driftay/saber-factions) [](https://github.com/SaberLLC/Saber-Factions/blob/1.6.x/LICENSE)  [](https://jitpack.io/#SaberLLC/Saber-Factions)
|
||||||
|
|
||||||
|
|
||||||
SaberFactions is an exotic, performance optimized, and feature rich factions plugin that focuses on not only making the player experience as great as possibly but maintaining this aspect with the cost of NOTHING! We strive to continue development for SaberFactions as the factions community is strongly growing and seeking new players every day.
|
SaberFactions is an exotic, performance optimized, and feature rich factions plugin that focuses on not only making the player experience as great as possibly but maintaining this aspect with the cost of NOTHING! We strive to continue development for SaberFactions as the factions community is strongly growing and seeking new players every day.
|
||||||
|
|
||||||
@@ -32,7 +33,7 @@ Some of our features include the following
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.SaberLLC</groupId>
|
<groupId>com.github.SaberLLC</groupId>
|
||||||
<artifactId>Saber-Factions</artifactId>
|
<artifactId>Saber-Factions</artifactId>
|
||||||
<version>2.2.7-STABLE</version>
|
<version>2.3.3-STABLE</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
## Moving Forward
|
## Moving Forward
|
||||||
|
|||||||
27
pom.xml
27
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-2.3.3-RC</version>
|
<version>1.6.9.5-2.3.8-RC</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>SaberFactions</name>
|
<name>SaberFactions</name>
|
||||||
@@ -41,6 +41,10 @@
|
|||||||
<configuration>
|
<configuration>
|
||||||
<createDependencyReducedPom>false</createDependencyReducedPom>
|
<createDependencyReducedPom>false</createDependencyReducedPom>
|
||||||
<relocations>
|
<relocations>
|
||||||
|
<relocation>
|
||||||
|
<pattern>com.github.cryptomorin</pattern>
|
||||||
|
<shadedPattern>com.massivecraft.factions.shade.github.cryptomorin</shadedPattern>
|
||||||
|
</relocation>
|
||||||
<relocation>
|
<relocation>
|
||||||
<pattern>com.github.stefvanschie.inventoryframework</pattern>
|
<pattern>com.github.stefvanschie.inventoryframework</pattern>
|
||||||
<shadedPattern>com.massivecraft.factions.shade.stefvanschie.inventoryframework</shadedPattern>
|
<shadedPattern>com.massivecraft.factions.shade.stefvanschie.inventoryframework</shadedPattern>
|
||||||
@@ -109,6 +113,7 @@
|
|||||||
<groupId>com.github.stefvanschie.inventoryframework</groupId>
|
<groupId>com.github.stefvanschie.inventoryframework</groupId>
|
||||||
<artifactId>IF</artifactId>
|
<artifactId>IF</artifactId>
|
||||||
<version>0.5.8</version>
|
<version>0.5.8</version>
|
||||||
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.spigotmc</groupId>
|
<groupId>org.spigotmc</groupId>
|
||||||
@@ -138,6 +143,18 @@
|
|||||||
</exclusion>
|
</exclusion>
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.cryptomorin</groupId>
|
||||||
|
<artifactId>XSeries</artifactId>
|
||||||
|
<version>5.3.1</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>joda-time</groupId>
|
||||||
|
<artifactId>joda-time</artifactId>
|
||||||
|
<version>2.10.6</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.ocpsoft.prettytime</groupId>
|
<groupId>org.ocpsoft.prettytime</groupId>
|
||||||
<artifactId>prettytime</artifactId>
|
<artifactId>prettytime</artifactId>
|
||||||
@@ -437,10 +454,10 @@
|
|||||||
<id>net.coreprotect</id>
|
<id>net.coreprotect</id>
|
||||||
<url>http://maven.playpro.com/</url>
|
<url>http://maven.playpro.com/</url>
|
||||||
</repository>
|
</repository>
|
||||||
<repository>
|
<repository>
|
||||||
<id>codemc-repo</id>
|
<id>codemc-repo</id>
|
||||||
<url>https://repo.codemc.org/repository/maven-public/</url>
|
<url>https://repo.codemc.org/repository/maven-public/</url>
|
||||||
</repository>
|
</repository>
|
||||||
<repository>
|
<repository>
|
||||||
<id>ess-repo</id>
|
<id>ess-repo</id>
|
||||||
<url>http://ci.ender.zone/plugin/repository/everything/</url>
|
<url>http://ci.ender.zone/plugin/repository/everything/</url>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.massivecraft.factions;
|
package com.massivecraft.factions;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.massivecraft.factions.integration.dynmap.DynmapStyle;
|
import com.massivecraft.factions.integration.dynmap.DynmapStyle;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
import com.massivecraft.factions.zcore.fperms.DefaultPermissions;
|
import com.massivecraft.factions.zcore.fperms.DefaultPermissions;
|
||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@@ -98,10 +98,19 @@ public class Conf {
|
|||||||
public static double autoLeaveRoutineRunsEveryXMinutes = 5.0;
|
public static double autoLeaveRoutineRunsEveryXMinutes = 5.0;
|
||||||
public static int autoLeaveRoutineMaxMillisecondsPerTick = 5; // 1 server tick is roughly 50ms, so default max 10% of a tick
|
public static int autoLeaveRoutineMaxMillisecondsPerTick = 5; // 1 server tick is roughly 50ms, so default max 10% of a tick
|
||||||
public static boolean removePlayerDataWhenBanned = true;
|
public static boolean removePlayerDataWhenBanned = true;
|
||||||
|
public static String removePlayerDataWhenBannedReason = "Banned by admin.";
|
||||||
public static boolean autoLeaveDeleteFPlayerData = true; // Let them just remove player from Faction.
|
public static boolean autoLeaveDeleteFPlayerData = true; // Let them just remove player from Faction.
|
||||||
public static boolean worldGuardChecking = false;
|
public static boolean worldGuardChecking = false;
|
||||||
public static boolean worldGuardBuildPriority = false;
|
public static boolean worldGuardBuildPriority = false;
|
||||||
|
|
||||||
|
//SHIELDS
|
||||||
|
public static boolean useFShieldSystem = true;
|
||||||
|
public static int shieldTimeHours = 12;
|
||||||
|
public static int shieldFrameChangeCooldownHours = 24;
|
||||||
|
|
||||||
|
//RADIUS CLAIMING
|
||||||
|
public static boolean useRadiusClaimSystem = true;
|
||||||
|
|
||||||
//FRIENDLY FIRE
|
//FRIENDLY FIRE
|
||||||
public static boolean friendlyFireFPlayersCommand = false;
|
public static boolean friendlyFireFPlayersCommand = false;
|
||||||
|
|
||||||
@@ -122,7 +131,7 @@ public class Conf {
|
|||||||
public static boolean useDisbandGUI = true;
|
public static boolean useDisbandGUI = true;
|
||||||
|
|
||||||
//SEALTH
|
//SEALTH
|
||||||
public static boolean useSealthSystem = true;
|
public static boolean useStealthSystem = true;
|
||||||
|
|
||||||
//STRIKES
|
//STRIKES
|
||||||
public static boolean useStrikeSystem = true;
|
public static boolean useStrikeSystem = true;
|
||||||
@@ -275,8 +284,7 @@ public class Conf {
|
|||||||
/// Useful for HCF features.
|
/// Useful for HCF features.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Set<Material> territoryBypassProtectedMaterials = EnumSet.noneOf(Material.class);
|
public static Set<Material> territoryBypassProtectedMaterials = EnumSet.noneOf(Material.class);
|
||||||
// Dependency check
|
|
||||||
public static boolean dependencyCheck = true;
|
|
||||||
public static boolean enableClickToClaim = true;
|
public static boolean enableClickToClaim = true;
|
||||||
|
|
||||||
public static Set<Material> territoryCancelAndAllowItemUseMaterial = new HashSet<>();
|
public static Set<Material> territoryCancelAndAllowItemUseMaterial = new HashSet<>();
|
||||||
@@ -423,6 +431,10 @@ public class Conf {
|
|||||||
public static HashMap<String, DefaultPermissions> defaultFactionPermissions = new HashMap<>();
|
public static HashMap<String, DefaultPermissions> defaultFactionPermissions = new HashMap<>();
|
||||||
public static HashSet<PermissableAction> lockedPermissions = new HashSet<>();
|
public static HashSet<PermissableAction> lockedPermissions = new HashSet<>();
|
||||||
|
|
||||||
|
public static boolean useComplexFly = true;
|
||||||
|
|
||||||
|
public static boolean wildLoadChunkBeforeTeleport = true;
|
||||||
|
|
||||||
private static transient Conf i = new Conf();
|
private static transient Conf i = new Conf();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
@@ -553,7 +565,6 @@ public class Conf {
|
|||||||
territoryDenyUsageMaterials.add(Material.ARMOR_STAND);
|
territoryDenyUsageMaterials.add(Material.ARMOR_STAND);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
territoryProtectedMaterialsWhenOffline.add(Material.BEACON);
|
territoryProtectedMaterialsWhenOffline.add(Material.BEACON);
|
||||||
|
|
||||||
territoryDenyUsageMaterialsWhenOffline.add(XMaterial.FIRE_CHARGE.parseMaterial());
|
territoryDenyUsageMaterialsWhenOffline.add(XMaterial.FIRE_CHARGE.parseMaterial());
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.massivecraft.factions;
|
package com.massivecraft.factions;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.cmd.shields.struct.frame.ShieldFramePersistence;
|
||||||
import com.massivecraft.factions.event.FactionDisbandEvent.PlayerDisbandReason;
|
import com.massivecraft.factions.event.FactionDisbandEvent.PlayerDisbandReason;
|
||||||
import com.massivecraft.factions.iface.EconomyParticipator;
|
import com.massivecraft.factions.iface.EconomyParticipator;
|
||||||
import com.massivecraft.factions.iface.RelationParticipator;
|
import com.massivecraft.factions.iface.RelationParticipator;
|
||||||
@@ -59,6 +60,24 @@ public interface Faction extends EconomyParticipator {
|
|||||||
|
|
||||||
void setDiscord(String link);
|
void setDiscord(String link);
|
||||||
|
|
||||||
|
boolean isProtected();
|
||||||
|
|
||||||
|
void setProtected();
|
||||||
|
|
||||||
|
void setUnprotected();
|
||||||
|
|
||||||
|
ShieldFramePersistence getShieldFrame();
|
||||||
|
|
||||||
|
void setupShieldChange(ShieldFramePersistence frame);
|
||||||
|
|
||||||
|
boolean pendingShieldChange();
|
||||||
|
|
||||||
|
long getShieldChangeTime();
|
||||||
|
|
||||||
|
ShieldFramePersistence getNewFrame();
|
||||||
|
|
||||||
|
void applyShield();
|
||||||
|
|
||||||
void checkPerms();
|
void checkPerms();
|
||||||
|
|
||||||
double getReinforcedArmor();
|
double getReinforcedArmor();
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ import com.massivecraft.factions.cmd.chest.AntiChestListener;
|
|||||||
import com.massivecraft.factions.cmd.reserve.ListParameterizedType;
|
import com.massivecraft.factions.cmd.reserve.ListParameterizedType;
|
||||||
import com.massivecraft.factions.cmd.reserve.ReserveAdapter;
|
import com.massivecraft.factions.cmd.reserve.ReserveAdapter;
|
||||||
import com.massivecraft.factions.cmd.reserve.ReserveObject;
|
import com.massivecraft.factions.cmd.reserve.ReserveObject;
|
||||||
|
import com.massivecraft.factions.cmd.shields.struct.ShieldTCMP;
|
||||||
|
import com.massivecraft.factions.cmd.shields.struct.frame.ShieldFrame;
|
||||||
|
import com.massivecraft.factions.cmd.shields.struct.tasks.ShieldManagement;
|
||||||
import com.massivecraft.factions.discord.Discord;
|
import com.massivecraft.factions.discord.Discord;
|
||||||
import com.massivecraft.factions.discord.DiscordListener;
|
import com.massivecraft.factions.discord.DiscordListener;
|
||||||
import com.massivecraft.factions.integration.Econ;
|
import com.massivecraft.factions.integration.Econ;
|
||||||
@@ -21,7 +24,6 @@ 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.missions.MissionHandler;
|
import com.massivecraft.factions.missions.MissionHandler;
|
||||||
import com.massivecraft.factions.struct.ChatMode;
|
|
||||||
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.util.*;
|
import com.massivecraft.factions.util.*;
|
||||||
@@ -39,15 +41,15 @@ import me.lucko.commodore.CommodoreProvider;
|
|||||||
import net.milkbowl.vault.economy.Economy;
|
import net.milkbowl.vault.economy.Economy;
|
||||||
import net.milkbowl.vault.permission.Permission;
|
import net.milkbowl.vault.permission.Permission;
|
||||||
import org.bstats.bukkit.Metrics;
|
import org.bstats.bukkit.Metrics;
|
||||||
import org.bukkit.*;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||||
|
|
||||||
@@ -66,6 +68,7 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
// Our single plugin instance.
|
// Our single plugin instance.
|
||||||
// Single 4 life.
|
// Single 4 life.
|
||||||
public static FactionsPlugin instance;
|
public static FactionsPlugin instance;
|
||||||
|
public static boolean cachedRadiusClaim;
|
||||||
public static Permission perms = null;
|
public static Permission perms = null;
|
||||||
// This plugin sets the boolean true when fully enabled.
|
// This plugin sets the boolean true when fully enabled.
|
||||||
// Plugins can check this boolean while hooking in have
|
// Plugins can check this boolean while hooking in have
|
||||||
@@ -82,7 +85,6 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
public boolean mc114 = false;
|
public boolean mc114 = false;
|
||||||
public boolean mc115 = false;
|
public boolean mc115 = false;
|
||||||
public boolean useNonPacketParticles = false;
|
public boolean useNonPacketParticles = false;
|
||||||
public boolean factionsFlight = false;
|
|
||||||
public List<String> itemList = getConfig().getStringList("fchest.Items-Not-Allowed");
|
public List<String> itemList = getConfig().getStringList("fchest.Items-Not-Allowed");
|
||||||
SkriptAddon skriptAddon;
|
SkriptAddon skriptAddon;
|
||||||
private FactionsPlayerListener factionsPlayerListener;
|
private FactionsPlayerListener factionsPlayerListener;
|
||||||
@@ -129,28 +131,20 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
this.setAutoSave(val);
|
this.setAutoSave(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void playSoundForAll(String sound) {
|
|
||||||
for (Player pl : Bukkit.getOnlinePlayers()) playSound(pl, sound);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void playSoundForAll(List<String> sounds) {
|
|
||||||
for (Player pl : Bukkit.getOnlinePlayers()) playSound(pl, sounds);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void playSound(Player p, List<String> sounds) {
|
|
||||||
for (String sound : sounds) playSound(p, sound);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void playSound(Player p, String sound) {
|
|
||||||
float pitch = Float.parseFloat(sound.split(":")[1]);
|
|
||||||
sound = sound.split(":")[0];
|
|
||||||
p.playSound(p.getLocation(), Sound.valueOf(sound), pitch, 5.0F);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
log("==== Setup ====");
|
log("==== Setup ====");
|
||||||
|
|
||||||
|
if (getServer().getPluginManager().getPlugin("Vault") == null) {
|
||||||
|
divider();
|
||||||
|
System.out.println("You are missing dependencies!");
|
||||||
|
System.out.println("Please verify [Vault] is installed!");
|
||||||
|
Conf.save();
|
||||||
|
Bukkit.getPluginManager().disablePlugin(instance);
|
||||||
|
divider();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int version = Integer.parseInt(ReflectionUtils.PackageType.getServerVersion().split("_")[1]);
|
int version = Integer.parseInt(ReflectionUtils.PackageType.getServerVersion().split("_")[1]);
|
||||||
switch (version) {
|
switch (version) {
|
||||||
case 7:
|
case 7:
|
||||||
@@ -183,37 +177,26 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
int pluginId = 7013;
|
int pluginId = 7013;
|
||||||
Metrics metrics = new Metrics(this, pluginId);
|
Metrics metrics = new Metrics(this, pluginId);
|
||||||
|
|
||||||
|
if (!preEnable()) {
|
||||||
if (!preEnable()) return;
|
this.loadSuccessful = false;
|
||||||
this.loadSuccessful = false;
|
return;
|
||||||
|
|
||||||
if (!new File(this.getDataFolder() + "/config.yml").exists()) {
|
|
||||||
this.saveResource("config.yml", false);
|
|
||||||
this.reloadConfig();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
saveDefaultConfig();
|
||||||
|
reloadConfig();
|
||||||
//Start wait task executor
|
//Start wait task executor
|
||||||
WaitExecutor.startTask();
|
WaitExecutor.startTask();
|
||||||
// Load Conf from disk
|
// Load Conf from disk
|
||||||
fileManager = new FileManager();
|
|
||||||
getFileManager().setupFiles();
|
|
||||||
Conf.load();
|
Conf.load();
|
||||||
|
|
||||||
|
fileManager = new FileManager();
|
||||||
|
fileManager.setupFiles();
|
||||||
|
|
||||||
fLogManager = new FLogManager();
|
fLogManager = new FLogManager();
|
||||||
//Dependency checks
|
|
||||||
if (Conf.dependencyCheck && (!Bukkit.getPluginManager().isPluginEnabled("Vault"))) {
|
|
||||||
divider();
|
|
||||||
System.out.println("You are missing dependencies!");
|
|
||||||
System.out.println("Please verify [Vault] is installed!");
|
|
||||||
Conf.save();
|
|
||||||
Bukkit.getPluginManager().disablePlugin(instance);
|
|
||||||
divider();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//Update their config if needed
|
|
||||||
// Updater.updateIfNeeded(getConfig());
|
|
||||||
RegisteredServiceProvider<Economy> rsp = FactionsPlugin.this.getServer().getServicesManager().getRegistration(Economy.class);
|
|
||||||
com.massivecraft.factions.integration.Essentials.setup();
|
com.massivecraft.factions.integration.Essentials.setup();
|
||||||
hookedPlayervaults = setupPlayervaults();
|
hookedPlayervaults = setupPlayervaults();
|
||||||
|
new ShieldTCMP();
|
||||||
FPlayers.getInstance().load();
|
FPlayers.getInstance().load();
|
||||||
Factions.getInstance().load();
|
Factions.getInstance().load();
|
||||||
|
|
||||||
@@ -228,9 +211,16 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
else faction.addFPlayer(fPlayer);
|
else faction.addFPlayer(fPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Factions.getInstance().getAllFactions().forEach(Faction::refreshFPlayers);
|
||||||
|
|
||||||
|
if (getConfig().getBoolean("enable-faction-flight", true)) {
|
||||||
|
UtilFly.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Board.getInstance().load();
|
Board.getInstance().load();
|
||||||
Board.getInstance().clean();
|
Board.getInstance().clean();
|
||||||
|
new ShieldManagement();
|
||||||
//Load command aliases
|
//Load command aliases
|
||||||
Aliases.load();
|
Aliases.load();
|
||||||
// Add Base Commands
|
// Add Base Commands
|
||||||
@@ -247,15 +237,15 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
// start up task which runs the autoLeaveAfterDaysOfInactivity routine
|
// start up task which runs the autoLeaveAfterDaysOfInactivity routine
|
||||||
startAutoLeaveTask(false);
|
startAutoLeaveTask(false);
|
||||||
|
|
||||||
|
cachedRadiusClaim = Conf.useRadiusClaimSystem;
|
||||||
|
|
||||||
if (version > 8) {
|
if (version > 8) {
|
||||||
useNonPacketParticles = true;
|
useNonPacketParticles = true;
|
||||||
log("Minecraft Version 1.9 or higher found, using non packet based particle API");
|
log("Minecraft Version 1.9 or higher found, using non packet based particle API");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getConfig().getBoolean("enable-faction-flight")) factionsFlight = true;
|
|
||||||
|
|
||||||
if (getServer().getPluginManager().getPlugin("Skript") != null) {
|
if (getServer().getPluginManager().getPlugin("Skript") != null) {
|
||||||
log("Skript was found! Registering FactionsPlugin Addon...");
|
log("Skript was found! Registering SaberFactions Addon...");
|
||||||
skriptAddon = Skript.registerAddon(this);
|
skriptAddon = Skript.registerAddon(this);
|
||||||
try {
|
try {
|
||||||
skriptAddon.loadClasses("com.massivecraft.factions.skript", "expressions");
|
skriptAddon.loadClasses("com.massivecraft.factions.skript", "expressions");
|
||||||
@@ -264,6 +254,7 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
}
|
}
|
||||||
log("Skript addon registered!");
|
log("Skript addon registered!");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Conf.useCheckSystem) {
|
if (Conf.useCheckSystem) {
|
||||||
int minute = 1200;
|
int minute = 1200;
|
||||||
this.getServer().getScheduler().runTaskTimerAsynchronously(this, new CheckTask(this, 3), 0L, minute * 3);
|
this.getServer().getScheduler().runTaskTimerAsynchronously(this, new CheckTask(this, 3), 0L, minute * 3);
|
||||||
@@ -295,16 +286,20 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
new MissionHandler(this),
|
new MissionHandler(this),
|
||||||
new FChestListener(),
|
new FChestListener(),
|
||||||
new MenuListener(),
|
new MenuListener(),
|
||||||
timerManager.graceTimer,
|
|
||||||
new AntiChestListener()
|
new AntiChestListener()
|
||||||
};
|
};
|
||||||
|
|
||||||
for (Listener eventListener : eventsListener)
|
for (Listener eventListener : eventsListener)
|
||||||
getServer().getPluginManager().registerEvents(eventListener, this);
|
getServer().getPluginManager().registerEvents(eventListener, this);
|
||||||
|
|
||||||
|
if (Conf.useGraceSystem) {
|
||||||
|
getServer().getPluginManager().registerEvents(timerManager.graceTimer, this);
|
||||||
|
}
|
||||||
|
|
||||||
this.getCommand(refCommand).setExecutor(cmdBase);
|
this.getCommand(refCommand).setExecutor(cmdBase);
|
||||||
|
|
||||||
if (!CommodoreProvider.isSupported()) this.getCommand(refCommand).setTabCompleter(this);
|
if (!CommodoreProvider.isSupported()) this.getCommand(refCommand).setTabCompleter(this);
|
||||||
|
|
||||||
reserveObjects = new ArrayList<>();
|
reserveObjects = new ArrayList<>();
|
||||||
String path = Paths.get(this.getDataFolder().getAbsolutePath()).toAbsolutePath().toString() + File.separator + "reserves.json";
|
String path = Paths.get(this.getDataFolder().getAbsolutePath()).toAbsolutePath().toString() + File.separator + "reserves.json";
|
||||||
File file = new File(path);
|
File file = new File(path);
|
||||||
@@ -340,10 +335,6 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
FactionsPlugin.startupFinished = true;
|
FactionsPlugin.startupFinished = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SkriptAddon getSkriptAddon() {
|
|
||||||
return skriptAddon;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void setupPlaceholderAPI() {
|
private void setupPlaceholderAPI() {
|
||||||
Plugin clip = getServer().getPluginManager().getPlugin("PlaceholderAPI");
|
Plugin clip = getServer().getPluginManager().getPlugin("PlaceholderAPI");
|
||||||
@@ -439,6 +430,7 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
.registerTypeAdapter(Inventory.class, new InventoryTypeAdapter())
|
.registerTypeAdapter(Inventory.class, new InventoryTypeAdapter())
|
||||||
.registerTypeAdapter(ReserveObject.class, new ReserveAdapter())
|
.registerTypeAdapter(ReserveObject.class, new ReserveAdapter())
|
||||||
.registerTypeAdapter(Location.class, new LocationTypeAdapter())
|
.registerTypeAdapter(Location.class, new LocationTypeAdapter())
|
||||||
|
.registerTypeAdapter(ShieldFrame.class, new ShieldFrameAdapter())
|
||||||
.registerTypeAdapterFactory(EnumTypeAdapter.ENUM_FACTORY);
|
.registerTypeAdapterFactory(EnumTypeAdapter.ENUM_FACTORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -450,8 +442,19 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
super.onDisable();
|
if (this.AutoLeaveTask != null) {
|
||||||
|
getServer().getScheduler().cancelTask(this.AutoLeaveTask);
|
||||||
|
this.AutoLeaveTask = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Conf.saveSync();
|
||||||
timerManager.saveTimerData();
|
timerManager.saveTimerData();
|
||||||
|
DiscordListener.saveGuilds();
|
||||||
|
|
||||||
|
if (Discord.jda != null) Discord.jda.shutdownNow();
|
||||||
|
|
||||||
|
fLogManager.saveLogs();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String path = Paths.get(getDataFolder().getAbsolutePath()).toAbsolutePath().toString() + File.separator + "reserves.json";
|
String path = Paths.get(getDataFolder().getAbsolutePath()).toAbsolutePath().toString() + File.separator + "reserves.json";
|
||||||
File file = new File(path);
|
File file = new File(path);
|
||||||
@@ -464,23 +467,7 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
// only save data if plugin actually completely loaded successfully
|
super.onDisable();
|
||||||
if (this.loadSuccessful) Conf.saveSync();
|
|
||||||
|
|
||||||
|
|
||||||
if (AutoLeaveTask != null) {
|
|
||||||
this.getServer().getScheduler().cancelTask(AutoLeaveTask);
|
|
||||||
AutoLeaveTask = null;
|
|
||||||
}
|
|
||||||
DiscordListener.saveGuilds();
|
|
||||||
if (Discord.jda != null) {
|
|
||||||
Discord.jda.shutdownNow();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
fLogManager.saveLogs();
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startAutoLeaveTask(boolean restartIfRunning) {
|
public void startAutoLeaveTask(boolean restartIfRunning) {
|
||||||
@@ -501,26 +488,8 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
Conf.save();
|
Conf.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack createItem(Material material, int amount, short datavalue, String name, List<String> lore) {
|
|
||||||
ItemStack item = new ItemStack(XMaterial.matchXMaterial(material.toString()).get().parseMaterial(), amount, datavalue);
|
|
||||||
ItemMeta meta = item.getItemMeta();
|
|
||||||
meta.setDisplayName(color(name));
|
|
||||||
meta.setLore(colorList(lore));
|
|
||||||
item.setItemMeta(meta);
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack createLazyItem(Material material, int amount, short datavalue, String name, String lore) {
|
|
||||||
ItemStack item = new ItemStack(material, amount, datavalue);
|
|
||||||
ItemMeta meta = item.getItemMeta();
|
|
||||||
meta.setDisplayName(color(FactionsPlugin.instance.getConfig().getString(name)));
|
|
||||||
meta.setLore(colorList(FactionsPlugin.instance.getConfig().getStringList(lore)));
|
|
||||||
item.setItemMeta(meta);
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Economy getEcon() {
|
public Economy getEcon() {
|
||||||
RegisteredServiceProvider<Economy> rsp = FactionsPlugin.instance.getServer().getServicesManager().getRegistration(Economy.class);
|
RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
|
||||||
return rsp.getProvider();
|
return rsp.getProvider();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -545,7 +514,6 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
List<FCommand> commandsList = cmdBase.subCommands;
|
List<FCommand> commandsList = cmdBase.subCommands;
|
||||||
FCommand commandsEx = cmdBase;
|
FCommand commandsEx = cmdBase;
|
||||||
List<String> completions = new ArrayList<>();
|
List<String> completions = new ArrayList<>();
|
||||||
|
|
||||||
// Check for "" first arg because spigot is mangled.
|
// Check for "" first arg because spigot is mangled.
|
||||||
if (context.args.get(0).equals("")) {
|
if (context.args.get(0).equals("")) {
|
||||||
for (FCommand subCommand : commandsEx.subCommands) {
|
for (FCommand subCommand : commandsEx.subCommands) {
|
||||||
@@ -593,70 +561,11 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
// Functions for other plugins to hook into
|
// Functions for other plugins to hook into
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
// This value will be updated whenever new hooks are added
|
|
||||||
public int hookSupportVersion() {
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If another plugin is handling insertion of chat tags, this should be used to notify Factions
|
// If another plugin is handling insertion of chat tags, this should be used to notify Factions
|
||||||
public void handleFactionTagExternally(boolean notByFactions) {
|
public void handleFactionTagExternally(boolean notByFactions) {
|
||||||
Conf.chatTagHandledByAnotherPlugin = notByFactions;
|
Conf.chatTagHandledByAnotherPlugin = notByFactions;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Simply put, should this chat event be left for Factions to handle? For now, that means players with Faction Chat
|
|
||||||
// enabled or use of the Factions f command without a slash; combination of isPlayerFactionChatting() and isFactionsCommand()
|
|
||||||
|
|
||||||
public boolean shouldLetFactionsHandleThisChat(AsyncPlayerChatEvent event) {
|
|
||||||
return event != null && (isPlayerFactionChatting(event.getPlayer()) || isFactionsCommand(event.getMessage()));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Does player have Faction Chat enabled? If so, chat plugins should preferably not do channels,
|
|
||||||
// local chat, or anything else which targets individual recipients, so Faction Chat can be done
|
|
||||||
public boolean isPlayerFactionChatting(Player player) {
|
|
||||||
if (player == null) return false;
|
|
||||||
FPlayer me = FPlayers.getInstance().getByPlayer(player);
|
|
||||||
return me != null && me.getChatMode().isAtLeast(ChatMode.ALLIANCE);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Is this chat message actually a Factions command, and thus should be left alone by other plugins?
|
|
||||||
|
|
||||||
// TODO: GET THIS BACK AND WORKING
|
|
||||||
|
|
||||||
public boolean isFactionsCommand(String check) {
|
|
||||||
return !(check == null || check.isEmpty()) && this.handleCommand(null, check, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get a player's faction tag (faction name), mainly for usage by chat plugins for local/channel chat
|
|
||||||
public String getPlayerFactionTag(Player player) {
|
|
||||||
return getPlayerFactionTagRelation(player, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Same as above, but with relation (enemy/neutral/ally) coloring potentially added to the tag
|
|
||||||
public String getPlayerFactionTagRelation(Player speaker, Player listener) {
|
|
||||||
String tag = "~";
|
|
||||||
|
|
||||||
if (speaker == null) return tag;
|
|
||||||
|
|
||||||
|
|
||||||
FPlayer me = FPlayers.getInstance().getByPlayer(speaker);
|
|
||||||
if (me == null) return tag;
|
|
||||||
// if listener isn't set, or config option is disabled, give back uncolored tag
|
|
||||||
if (listener == null || !Conf.chatTagRelationColored) {
|
|
||||||
tag = me.getChatTag().trim();
|
|
||||||
} else {
|
|
||||||
FPlayer you = FPlayers.getInstance().getByPlayer(listener);
|
|
||||||
if (you == null) {
|
|
||||||
tag = me.getChatTag().trim();
|
|
||||||
} else { // everything checks out, give the colored tag
|
|
||||||
tag = me.getChatTag(you).trim();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (tag.isEmpty()) tag = "~";
|
|
||||||
return tag;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public FLogManager getFlogManager() {
|
public FLogManager getFlogManager() {
|
||||||
return fLogManager;
|
return fLogManager;
|
||||||
}
|
}
|
||||||
@@ -665,14 +574,6 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
this.fLogManager.log(faction, type, arguments);
|
this.fLogManager.log(faction, type, arguments);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get a player's title within their faction, mainly for usage by chat plugins for local/channel chat
|
|
||||||
public String getPlayerTitle(Player player) {
|
|
||||||
if (player == null) return "";
|
|
||||||
FPlayer me = FPlayers.getInstance().getByPlayer(player);
|
|
||||||
if (me == null) return "";
|
|
||||||
return me.getTitle().trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String color(String line) {
|
public String color(String line) {
|
||||||
line = ChatColor.translateAlternateColorCodes('&', line);
|
line = ChatColor.translateAlternateColorCodes('&', line);
|
||||||
return line;
|
return line;
|
||||||
@@ -684,38 +585,10 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
return lore;
|
return lore;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get a list of all faction tags (names)
|
|
||||||
public Set<String> getFactionTags() {
|
|
||||||
return Factions.getInstance().getFactionTags();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ReserveObject> getFactionReserves() {
|
public List<ReserveObject> getFactionReserves() {
|
||||||
return this.reserveObjects;
|
return this.reserveObjects;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get a list of all players in the specified faction
|
|
||||||
public Set<String> getPlayersInFaction(String factionTag) {
|
|
||||||
Set<String> players = new HashSet<>();
|
|
||||||
Faction faction = Factions.getInstance().getByTag(factionTag);
|
|
||||||
if (faction != null) {
|
|
||||||
for (FPlayer fplayer : faction.getFPlayers()) players.add(fplayer.getName());
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get a list of all online players in the specified faction
|
|
||||||
public Set<String> getOnlinePlayersInFaction(String factionTag) {
|
|
||||||
Set<String> players = new HashSet<>();
|
|
||||||
Faction faction = Factions.getInstance().getByTag(factionTag);
|
|
||||||
if (faction != null) {
|
|
||||||
for (FPlayer fplayer : faction.getFPlayersWhereOnline(true)) players.add(fplayer.getName());
|
|
||||||
}
|
|
||||||
return players;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isHookedPlayervaults() {
|
|
||||||
return hookedPlayervaults;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPrimaryGroup(OfflinePlayer player) {
|
public String getPrimaryGroup(OfflinePlayer player) {
|
||||||
return perms == null || !perms.hasGroupSupport() ? " " : perms.getPrimaryGroup(Bukkit.getWorlds().get(0).toString(), player);
|
return perms == null || !perms.hasGroupSupport() ? " " : perms.getPrimaryGroup(Bukkit.getWorlds().get(0).toString(), player);
|
||||||
@@ -737,7 +610,4 @@ public class FactionsPlugin extends MPlugin {
|
|||||||
debug(Level.INFO, s);
|
debug(Level.INFO, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Worldguard getWg() {
|
|
||||||
return wg;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,10 @@ public class CmdAdmin extends FCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fyou.isAlt()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// only perform a FPlayerJoinEvent when newLeader isn't actually in the faction
|
// only perform a FPlayerJoinEvent when newLeader isn't actually in the faction
|
||||||
if (fyou.getFaction() != targetFaction) {
|
if (fyou.getFaction() != targetFaction) {
|
||||||
FPlayerJoinEvent event = new FPlayerJoinEvent(FPlayers.getInstance().getByPlayer(context.player), targetFaction, FPlayerJoinEvent.PlayerJoinReason.LEADER);
|
FPlayerJoinEvent event = new FPlayerJoinEvent(FPlayers.getInstance().getByPlayer(context.player), targetFaction, FPlayerJoinEvent.PlayerJoinReason.LEADER);
|
||||||
@@ -86,24 +90,20 @@ public class CmdAdmin extends FCommand {
|
|||||||
FactionsPlugin.instance.getFlogManager().log(targetFaction, FLogType.RANK_EDIT, context.fPlayer.getName(), fyou.getName(), ChatColor.RED + "Admin");
|
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()) {
|
if (FactionsPlugin.instance.getConfig().getBoolean("faction-leader-broadcast")) {
|
||||||
fplayer.msg(TL.COMMAND_ADMIN_PROMOTED,
|
for (FPlayer fplayer : FPlayers.getInstance().getOnlinePlayers()) {
|
||||||
context.player == null ? TL.GENERIC_SERVERADMIN.toString() : context.fPlayer.describeTo(fplayer, true),
|
fplayer.msg(TL.COMMAND_ADMIN_PROMOTED, context.player == null ? TL.GENERIC_SERVERADMIN.toString() : context.fPlayer.describeTo(fplayer, true), fyou.describeTo(fplayer), targetFaction.describeTo(fplayer));
|
||||||
fyou.describeTo(fplayer), targetFaction.describeTo(fplayer));
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setRole(FPlayer fp, Role r) {
|
private void setRole(FPlayer fp, Role r) {
|
||||||
FactionsPlugin.getInstance().getServer().getScheduler().runTask(FactionsPlugin.instance, () -> {
|
FactionsPlugin.getInstance().getServer().getScheduler().runTask(FactionsPlugin.instance, () -> fp.setRole(r));
|
||||||
fp.setRole(r);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void promoteNewLeader(Faction f) {
|
private void promoteNewLeader(Faction f) {
|
||||||
FactionsPlugin.getInstance().getServer().getScheduler().runTask(FactionsPlugin.instance, () -> {
|
FactionsPlugin.getInstance().getServer().getScheduler().runTask(FactionsPlugin.instance, (Runnable) f::promoteNewLeader);
|
||||||
f.promoteNewLeader();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public TL getUsageTranslation() {
|
public TL getUsageTranslation() {
|
||||||
|
|||||||
@@ -2,7 +2,10 @@ package com.massivecraft.factions.cmd;
|
|||||||
|
|
||||||
import com.massivecraft.factions.*;
|
import com.massivecraft.factions.*;
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
|
import com.massivecraft.factions.struct.Role;
|
||||||
import com.massivecraft.factions.util.WarmUpUtil;
|
import com.massivecraft.factions.util.WarmUpUtil;
|
||||||
|
import com.massivecraft.factions.zcore.fperms.Access;
|
||||||
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
|
|
||||||
public class CmdCheckpoint extends FCommand {
|
public class CmdCheckpoint extends FCommand {
|
||||||
@@ -17,10 +20,7 @@ public class CmdCheckpoint extends FCommand {
|
|||||||
|
|
||||||
this.optionalArgs.put("set", "");
|
this.optionalArgs.put("set", "");
|
||||||
|
|
||||||
this.requirements = new CommandRequirements.Builder(Permission.CHECKPOINT)
|
this.requirements = new CommandRequirements.Builder(Permission.CHECKPOINT).playerOnly().memberOnly().build();
|
||||||
.playerOnly()
|
|
||||||
.memberOnly()
|
|
||||||
.build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -29,18 +29,39 @@ public class CmdCheckpoint extends FCommand {
|
|||||||
context.msg(TL.COMMAND_CHECKPOINT_DISABLED);
|
context.msg(TL.COMMAND_CHECKPOINT_DISABLED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (context.args.size() == 1) {
|
if (context.args.size() == 1 && context.args.get(0).equalsIgnoreCase("set")) {
|
||||||
FLocation myLocation = new FLocation(context.player.getLocation());
|
if (context.fPlayer.getRole() == Role.LEADER) {
|
||||||
Faction myLocFaction = Board.getInstance().getFactionAt(myLocation);
|
FLocation myLocation = new FLocation(context.player.getLocation());
|
||||||
if (myLocFaction == Factions.getInstance().getWilderness() || myLocFaction == context.faction) {
|
Faction myLocFaction = Board.getInstance().getFactionAt(myLocation);
|
||||||
context.faction.setCheckpoint(context.player.getLocation());
|
if (myLocFaction == Factions.getInstance().getWilderness() || myLocFaction == context.faction) {
|
||||||
context.msg(TL.COMMAND_CHECKPOINT_SET);
|
context.faction.setCheckpoint(context.player.getLocation());
|
||||||
return;
|
context.msg(TL.COMMAND_CHECKPOINT_SET);
|
||||||
|
return;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
context.msg(TL.COMMAND_CHECKPOINT_INVALIDLOCATION);
|
context.msg(TL.COMMAND_CHECKPOINT_INVALIDLOCATION);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PermissableAction action = PermissableAction.SETWARP;
|
||||||
|
Access access = context.faction.getAccess(context.fPlayer, action);
|
||||||
|
if (access == Access.DENY) {
|
||||||
|
context.msg(TL.GENERIC_FPERM_NOPERMISSION, action.getName());
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
FLocation myLocation = new FLocation(context.player.getLocation());
|
||||||
|
Faction myLocFaction = Board.getInstance().getFactionAt(myLocation);
|
||||||
|
if (myLocFaction == Factions.getInstance().getWilderness() || myLocFaction == context.faction) {
|
||||||
|
context.faction.setCheckpoint(context.player.getLocation());
|
||||||
|
context.msg(TL.COMMAND_CHECKPOINT_SET);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
context.msg(TL.COMMAND_CHECKPOINT_INVALIDLOCATION);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (context.faction.getCheckpoint() == null) {
|
if (context.faction.getCheckpoint() == null) {
|
||||||
context.msg(TL.COMMAND_CHECKPOINT_NOT_SET);
|
context.msg(TL.COMMAND_CHECKPOINT_NOT_SET);
|
||||||
return;
|
return;
|
||||||
@@ -57,8 +78,6 @@ public class CmdCheckpoint extends FCommand {
|
|||||||
} else {
|
} else {
|
||||||
context.msg(TL.COMMAND_CHECKPOINT_CLAIMED);
|
context.msg(TL.COMMAND_CHECKPOINT_CLAIMED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -55,6 +55,10 @@ public class CmdColeader extends FCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (you.isAlt()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (context.fPlayer != null && context.fPlayer.getRole() != Role.LEADER && !permAny) {
|
if (context.fPlayer != null && context.fPlayer.getRole() != Role.LEADER && !permAny) {
|
||||||
context.msg(TL.COMMAND_COLEADER_NOTADMIN);
|
context.msg(TL.COMMAND_COLEADER_NOTADMIN);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public class CmdCreate extends FCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Cooldown.isOnCooldown(context.fPlayer.getPlayer(), "createCooldown") && !context.fPlayer.isAdminBypassing()){
|
if (Cooldown.isOnCooldown(context.fPlayer.getPlayer(), "createCooldown") && !context.fPlayer.isAdminBypassing()) {
|
||||||
context.msg(TL.COMMAND_COOLDOWN);
|
context.msg(TL.COMMAND_COOLDOWN);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,10 +3,7 @@ package com.massivecraft.factions.cmd;
|
|||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.FPlayer;
|
import com.massivecraft.factions.FPlayer;
|
||||||
import com.massivecraft.factions.FPlayers;
|
import com.massivecraft.factions.FPlayers;
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
import com.massivecraft.factions.struct.Role;
|
|
||||||
import com.massivecraft.factions.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;
|
||||||
import mkremins.fanciful.FancyMessage;
|
import mkremins.fanciful.FancyMessage;
|
||||||
@@ -25,36 +22,17 @@ public class CmdDeinvite extends FCommand {
|
|||||||
this.optionalArgs.put("player name", "name");
|
this.optionalArgs.put("player name", "name");
|
||||||
|
|
||||||
this.requirements = new CommandRequirements.Builder(Permission.DEINVITE)
|
this.requirements = new CommandRequirements.Builder(Permission.DEINVITE)
|
||||||
|
.withAction(PermissableAction.INVITE)
|
||||||
.memberOnly()
|
.memberOnly()
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void perform(CommandContext context) {
|
public void perform(CommandContext context) {
|
||||||
if (context.args.size() == 0) {
|
|
||||||
FancyMessage msg = new FancyMessage(TL.COMMAND_DEINVITE_CANDEINVITE.toString()).color(ChatColor.GOLD);
|
|
||||||
for (String id : context.faction.getInvites()) {
|
|
||||||
FPlayer fp = FPlayers.getInstance().getById(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);
|
|
||||||
}
|
|
||||||
context.sendFancyMessage(msg);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
FPlayer you = context.argAsBestFPlayerMatch(0);
|
FPlayer you = context.argAsBestFPlayerMatch(0);
|
||||||
if (!context.fPlayer.isAdminBypassing()) {
|
|
||||||
Access access = context.faction.getAccess(context.fPlayer, PermissableAction.INVITE);
|
|
||||||
if (access != Access.ALLOW && context.fPlayer.getRole() != Role.LEADER) {
|
|
||||||
context.msg(TL.GENERIC_FPERM_NOPERMISSION, "manage invites");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
||||||
@@ -65,12 +43,14 @@ public class CmdDeinvite extends FCommand {
|
|||||||
|
|
||||||
if (you.getFaction() == context.faction) {
|
if (you.getFaction() == context.faction) {
|
||||||
context.msg(TL.COMMAND_DEINVITE_ALREADYMEMBER, you.getName(), context.faction.getTag());
|
context.msg(TL.COMMAND_DEINVITE_ALREADYMEMBER, you.getName(), context.faction.getTag());
|
||||||
context.msg(TL.COMMAND_DEINVITE_MIGHTWANT, FactionsPlugin.getInstance().cmdBase.cmdKick.getUsageTemplate(context));
|
context.msg(TL.COMMAND_DEINVITE_MIGHTWANT, FCmdRoot.instance.cmdKick.getUsageTemplate(context));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
context.faction.deinvite(you);
|
context.faction.deinvite(you);
|
||||||
|
|
||||||
you.msg(TL.COMMAND_DEINVITE_REVOKED, context.fPlayer.describeTo(you), context.faction.describeTo(you));
|
you.msg(TL.COMMAND_DEINVITE_REVOKED, context.fPlayer.describeTo(you), context.faction.describeTo(you));
|
||||||
|
|
||||||
context.faction.msg(TL.COMMAND_DEINVITE_REVOKES, context.fPlayer.describeTo(context.faction), you.describeTo(context.faction));
|
context.faction.msg(TL.COMMAND_DEINVITE_REVOKES, context.fPlayer.describeTo(context.faction), you.describeTo(context.faction));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ public class CmdDisband extends FCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Cooldown.isOnCooldown(context.fPlayer.getPlayer(), "disbandCooldown") && !context.fPlayer.isAdminBypassing()){
|
if (Cooldown.isOnCooldown(context.fPlayer.getPlayer(), "disbandCooldown") && !context.fPlayer.isAdminBypassing()) {
|
||||||
context.msg(TL.COMMAND_COOLDOWN);
|
context.msg(TL.COMMAND_COOLDOWN);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -82,7 +82,7 @@ public class CmdDisband extends FCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!access) {
|
if (!access) {
|
||||||
if (Conf.useDisbandGUI && !context.fPlayer.isAdminBypassing() || !context.player.isOp()) {
|
if (Conf.useDisbandGUI && (!context.fPlayer.isAdminBypassing() || !context.player.isOp())) {
|
||||||
if (!disbandMap.containsKey(context.player.getUniqueId().toString())) {
|
if (!disbandMap.containsKey(context.player.getUniqueId().toString())) {
|
||||||
new FDisbandFrame(context.faction).buildGUI(context.fPlayer);
|
new FDisbandFrame(context.faction).buildGUI(context.fPlayer);
|
||||||
return;
|
return;
|
||||||
@@ -101,27 +101,15 @@ public class CmdDisband extends FCommand {
|
|||||||
String amountString = context.sender instanceof ConsoleCommandSender ? TL.GENERIC_SERVERADMIN.toString() : context.fPlayer.describeTo(follower);
|
String amountString = context.sender instanceof ConsoleCommandSender ? TL.GENERIC_SERVERADMIN.toString() : context.fPlayer.describeTo(follower);
|
||||||
if (follower.getFaction() == faction) {
|
if (follower.getFaction() == faction) {
|
||||||
follower.msg(TL.COMMAND_DISBAND_BROADCAST_YOURS, amountString);
|
follower.msg(TL.COMMAND_DISBAND_BROADCAST_YOURS, amountString);
|
||||||
if (!follower.canFlyAtLocation() && FactionsPlugin.getInstance().getConfig().getBoolean("enable-faction-flight")) {
|
|
||||||
follower.setFFlying(false, false);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
follower.msg(TL.COMMAND_DISBAND_BROADCAST_NOTYOURS, amountString, faction.getTag(follower));
|
follower.msg(TL.COMMAND_DISBAND_BROADCAST_NOTYOURS, amountString, faction.getTag(follower));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (FactionsPlugin.getInstance().getConfig().getBoolean("enable-faction-flight")) {
|
|
||||||
faction.disband(context.player, PlayerDisbandReason.COMMAND);
|
|
||||||
context.fPlayer.setFFlying(false, false);
|
|
||||||
Cooldown.setCooldown(context.fPlayer.getPlayer(), "disbandCooldown", FactionsPlugin.getInstance().getConfig().getInt("fcooldowns.f-disband"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
context.player.sendMessage(String.valueOf(TL.COMMAND_DISBAND_PLAYER));
|
context.player.sendMessage(String.valueOf(TL.COMMAND_DISBAND_PLAYER));
|
||||||
}
|
}
|
||||||
faction.disband(context.player, PlayerDisbandReason.COMMAND);
|
faction.disband(context.player, PlayerDisbandReason.COMMAND);
|
||||||
Cooldown.setCooldown(context.fPlayer.getPlayer(), "disbandCooldown", FactionsPlugin.getInstance().getConfig().getInt("fcooldowns.f-disband"));
|
Cooldown.setCooldown(context.fPlayer.getPlayer(), "disbandCooldown", FactionsPlugin.getInstance().getConfig().getInt("fcooldowns.f-disband"));
|
||||||
if (!context.fPlayer.canFlyAtLocation() && FactionsPlugin.getInstance().getConfig().getBoolean("enable-faction-flight")) {
|
|
||||||
context.fPlayer.setFFlying(false, false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
|
|
||||||
public class CmdFly extends FCommand {
|
public class CmdFly extends FCommand {
|
||||||
|
|
||||||
|
public static final boolean fly = FactionsPlugin.getInstance().getConfig().getBoolean("enable-faction-flight");
|
||||||
/**
|
/**
|
||||||
* @author FactionsUUID Team
|
* @author FactionsUUID Team
|
||||||
*/
|
*/
|
||||||
@@ -26,8 +27,6 @@ public class CmdFly extends FCommand {
|
|||||||
|
|
||||||
public static ConcurrentHashMap<String, Boolean> flyMap = new ConcurrentHashMap<>();
|
public static ConcurrentHashMap<String, Boolean> flyMap = new ConcurrentHashMap<>();
|
||||||
public static BukkitTask particleTask = null;
|
public static BukkitTask particleTask = null;
|
||||||
public static BukkitTask flyTask = null;
|
|
||||||
public static boolean autoenable = FactionsPlugin.instance.getConfig().getBoolean("ffly.AutoEnable");
|
|
||||||
|
|
||||||
|
|
||||||
public CmdFly() {
|
public CmdFly() {
|
||||||
@@ -42,15 +41,12 @@ public class CmdFly extends FCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void startParticles() {
|
public static void startParticles() {
|
||||||
|
|
||||||
particleTask = Bukkit.getScheduler().runTaskTimerAsynchronously(FactionsPlugin.instance, () -> {
|
particleTask = Bukkit.getScheduler().runTaskTimerAsynchronously(FactionsPlugin.instance, () -> {
|
||||||
for (String name : flyMap.keySet()) {
|
for (String name : flyMap.keySet()) {
|
||||||
Player player = Bukkit.getPlayer(name);
|
Player player = Bukkit.getPlayer(name);
|
||||||
if (player == null) continue;
|
if (player == null) continue;
|
||||||
if (!player.isFlying()) continue;
|
if (!player.isFlying()) continue;
|
||||||
if (!FactionsPlugin.getInstance().mc17) {
|
if (!FactionsPlugin.getInstance().mc17 && player.getGameMode() == GameMode.SPECTATOR) continue;
|
||||||
if (player.getGameMode() == GameMode.SPECTATOR) continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
FPlayer fplayer = FPlayers.getInstance().getByPlayer(player);
|
FPlayer fplayer = FPlayers.getInstance().getByPlayer(player);
|
||||||
fplayer.isVanished();
|
fplayer.isVanished();
|
||||||
@@ -62,75 +58,44 @@ public class CmdFly extends FCommand {
|
|||||||
}, 10L, 3L);
|
}, 10L, 3L);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void startFlyCheck() {
|
public static boolean checkBypassPerms(FPlayer fme, Player me, Faction toFac, boolean sendMessage) {
|
||||||
flyTask = Bukkit.getScheduler().runTaskTimerAsynchronously(FactionsPlugin.instance, () -> {
|
if (Conf.denyFlightIfInNoClaimingWorld && !Conf.worldsNoClaiming.isEmpty() && Conf.worldsNoClaiming.stream().anyMatch(me.getWorld().getName()::equalsIgnoreCase))
|
||||||
checkTaskState();
|
return false;
|
||||||
if (flyMap.keySet().size() != 0) {
|
|
||||||
for (String name : flyMap.keySet()) {
|
|
||||||
if (name == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
Player player = Bukkit.getPlayer(name);
|
|
||||||
if (player == null
|
|
||||||
|| !player.isFlying()
|
|
||||||
|| player.getGameMode() == GameMode.CREATIVE
|
|
||||||
|| !FactionsPlugin.getInstance().mc17 && player.getGameMode() == GameMode.SPECTATOR) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
FPlayer fPlayer = FPlayers.getInstance().getByPlayer(player);
|
|
||||||
if (fPlayer.isAdminBypassing()) continue;
|
|
||||||
if (!player.hasPermission("factions.fly.bypassnearbyenemycheck")) {
|
|
||||||
if (fPlayer.hasEnemiesNearby()) {
|
|
||||||
disableFlightSync(fPlayer);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
checkEnemiesSync(fPlayer);
|
|
||||||
}
|
|
||||||
FLocation myFloc = new FLocation(player.getLocation());
|
|
||||||
if (!checkFly(fPlayer, player, Board.getInstance().getFactionAt(myFloc))) {
|
|
||||||
disableFlightSync(fPlayer);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
if (toFac != fme.getFaction()) {
|
||||||
|
if (!me.hasPermission(Permission.FLY_WILDERNESS.node) && toFac.isWilderness() || !me.hasPermission(Permission.FLY_SAFEZONE.node) && toFac.isSafeZone() || !me.hasPermission(Permission.FLY_WARZONE.node) && toFac.isWarZone()) {
|
||||||
|
if (sendMessage) fme.msg(TL.COMMAND_FLY_NO_ACCESS, toFac.getTag(fme));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Access access = toFac.getAccess(fme, PermissableAction.FLY);
|
||||||
|
if ((!(me.hasPermission(Permission.FLY_ENEMY.node) || access == Access.ALLOW)) && toFac.getRelationTo(fme.getFaction()) == Relation.ENEMY) {
|
||||||
|
if (sendMessage) fme.msg(TL.COMMAND_FLY_NO_ACCESS, toFac.getTag(fme));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!(me.hasPermission(Permission.FLY_ALLY.node) || access == Access.ALLOW) && toFac.getRelationTo(fme.getFaction()) == Relation.ALLY) {
|
||||||
|
if (sendMessage) fme.msg(TL.COMMAND_FLY_NO_ACCESS, toFac.getTag(fme));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!(me.hasPermission(Permission.FLY_TRUCE.node) || access == Access.ALLOW) && toFac.getRelationTo(fme.getFaction()) == Relation.TRUCE) {
|
||||||
|
if (sendMessage) fme.msg(TL.COMMAND_FLY_NO_ACCESS, toFac.getTag(fme));
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}, 20L, 15L);
|
if (!(me.hasPermission(Permission.FLY_NEUTRAL.node) || access == Access.ALLOW) && toFac.getRelationTo(fme.getFaction()) == Relation.NEUTRAL && !toFac.isSystemFaction()) {
|
||||||
}
|
if (sendMessage) fme.msg(TL.COMMAND_FLY_NO_ACCESS, toFac.getTag(fme));
|
||||||
|
return false;
|
||||||
public static boolean checkFly(FPlayer fme, Player me, Faction toFac) {
|
}
|
||||||
if ((Conf.denyFlightIfInNoClaimingWorld && !Conf.worldsNoClaiming.isEmpty() && Conf.worldsNoClaiming.stream().anyMatch(me.getWorld().getName()::equalsIgnoreCase)) || me.hasPermission(Permission.FLY_FLY.node))
|
return me.hasPermission(Permission.FLY_FLY.node) && (access != Access.DENY || toFac.isSystemFaction());
|
||||||
return false;
|
|
||||||
if (toFac.getAccess(fme, PermissableAction.FLY) == Access.ALLOW) return true;
|
|
||||||
if (fme.getFaction().isWilderness()) return false;
|
|
||||||
if (toFac.isSystemFaction())
|
|
||||||
return me.hasPermission(toFac.isWilderness() ? Permission.FLY_WILDERNESS.node : toFac.isSafeZone() ? Permission.FLY_SAFEZONE.node : Permission.FLY_WARZONE.node);
|
|
||||||
Relation relationTo = toFac.getRelationTo(fme.getFaction());
|
|
||||||
if (!relationTo.isEnemy() && !relationTo.isMember())
|
|
||||||
return me.hasPermission(Permission.valueOf("FLY_" + relationTo.name()).node);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static void checkTaskState() {
|
|
||||||
if (flyMap.isEmpty()) {
|
|
||||||
flyTask.cancel();
|
|
||||||
flyTask = null;
|
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void disableFlight(final FPlayer fme) {
|
public static void disableFlight(final FPlayer fme) {
|
||||||
fme.setFlying(false);
|
fme.setFlying(false);
|
||||||
flyMap.remove(fme.getPlayer().getName());
|
flyMap.remove(fme.getPlayer().getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void disableFlightSync(FPlayer fme) {
|
|
||||||
Bukkit.getScheduler().runTask(FactionsPlugin.instance, () -> fme.setFFlying(false, false));
|
|
||||||
flyMap.remove(fme.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void checkEnemiesSync(FPlayer fp) {
|
|
||||||
Bukkit.getScheduler().runTask(FactionsPlugin.instance, fp::checkIfNearbyEnemies);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isInFlightChecker(Player player) {
|
public boolean isInFlightChecker(Player player) {
|
||||||
return flyMap.containsKey(player.getName());
|
return flyMap.containsKey(player.getName());
|
||||||
@@ -155,7 +120,7 @@ public class CmdFly extends FCommand {
|
|||||||
|
|
||||||
FLocation myfloc = new FLocation(context.player.getLocation());
|
FLocation myfloc = new FLocation(context.player.getLocation());
|
||||||
Faction toFac = Board.getInstance().getFactionAt(myfloc);
|
Faction toFac = Board.getInstance().getFactionAt(myfloc);
|
||||||
if (!checkFly(context.fPlayer, context.player, toFac)) {
|
if (!checkBypassPerms(context.fPlayer, context.player, toFac, false)) {
|
||||||
context.fPlayer.sendMessage(TL.COMMAND_FLY_NO_ACCESS.format(toFac.getTag()));
|
context.fPlayer.sendMessage(TL.COMMAND_FLY_NO_ACCESS.format(toFac.getTag()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -175,17 +140,15 @@ public class CmdFly extends FCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
context.doWarmUp(WarmUpUtil.Warmup.FLIGHT, TL.WARMUPS_NOTIFY_FLIGHT, "Fly", () -> {
|
if (fme.canFlyAtLocation()) {
|
||||||
fme.setFlying(true);
|
context.doWarmUp(WarmUpUtil.Warmup.FLIGHT, TL.WARMUPS_NOTIFY_FLIGHT, "Fly", () -> {
|
||||||
flyMap.put(fme.getPlayer().getName(), true);
|
fme.setFlying(true);
|
||||||
if (particleTask == null) {
|
flyMap.put(fme.getPlayer().getName(), true);
|
||||||
startParticles();
|
if (particleTask == null) startParticles();
|
||||||
}
|
}, FactionsPlugin.getInstance().getConfig().getLong("warmups.f-fly", 0));
|
||||||
|
} else {
|
||||||
if (flyTask == null) {
|
fme.msg(TL.COMMAND_FLY_NO_ACCESS, Board.getInstance().getFactionAt(fme.getLastStoodAt()).getTag());
|
||||||
startFlyCheck();
|
}
|
||||||
}
|
|
||||||
}, FactionsPlugin.getInstance().getConfig().getLong("warmups.f-fly", 0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import com.massivecraft.factions.zcore.util.TL;
|
|||||||
*/
|
*/
|
||||||
public class CmdFriendlyFire extends FCommand {
|
public class CmdFriendlyFire extends FCommand {
|
||||||
|
|
||||||
public CmdFriendlyFire(){
|
public CmdFriendlyFire() {
|
||||||
super();
|
super();
|
||||||
this.aliases.addAll(Aliases.friendlyFire);
|
this.aliases.addAll(Aliases.friendlyFire);
|
||||||
|
|
||||||
@@ -23,12 +23,12 @@ public class CmdFriendlyFire extends FCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void perform(CommandContext context) {
|
public void perform(CommandContext context) {
|
||||||
if(!Conf.friendlyFireFPlayersCommand){
|
if (!Conf.friendlyFireFPlayersCommand) {
|
||||||
context.msg(TL.GENERIC_DISABLED, "friendly fire");
|
context.msg(TL.GENERIC_DISABLED, "friendly fire");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(context.fPlayer.hasFriendlyFire()){
|
if (context.fPlayer.hasFriendlyFire()) {
|
||||||
context.fPlayer.setFriendlyFire(false);
|
context.fPlayer.setFriendlyFire(false);
|
||||||
context.msg(TL.COMMAND_FRIENDLY_FIRE_TOGGLE_OFF);
|
context.msg(TL.COMMAND_FRIENDLY_FIRE_TOGGLE_OFF);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ package com.massivecraft.factions.cmd;
|
|||||||
|
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
|
import com.massivecraft.factions.util.ItemBuilder;
|
||||||
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.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.Inventory;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
public class CmdGetVault extends FCommand {
|
public class CmdGetVault extends FCommand {
|
||||||
@@ -30,9 +30,13 @@ public class CmdGetVault extends FCommand {
|
|||||||
context.fPlayer.msg(TL.GENERIC_DISABLED, "Faction Vaults");
|
context.fPlayer.msg(TL.GENERIC_DISABLED, "Faction Vaults");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Location vaultLocation = context.faction.getVault();
|
|
||||||
ItemStack vault = FactionsPlugin.getInstance().createItem(Material.CHEST, 1, (short) 0, FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fvault.Item.Name")), FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().getConfig().getStringList("fvault.Item.Lore")));
|
|
||||||
|
|
||||||
|
Location vaultLocation = context.faction.getVault();
|
||||||
|
ItemStack vault = new ItemBuilder(Material.CHEST)
|
||||||
|
.amount(1)
|
||||||
|
.name(FactionsPlugin.getInstance().getConfig().getString("fvault.Item.Name"))
|
||||||
|
.lore(FactionsPlugin.getInstance().getConfig().getStringList("fvault.Item.Lore"))
|
||||||
|
.build();
|
||||||
|
|
||||||
//check if vault is set
|
//check if vault is set
|
||||||
if (vaultLocation != null) {
|
if (vaultLocation != null) {
|
||||||
@@ -40,36 +44,19 @@ public class CmdGetVault extends FCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//has enough money?
|
//has enough money?
|
||||||
int amount = FactionsPlugin.getInstance().getConfig().getInt("fvault.Price");
|
int amount = FactionsPlugin.getInstance().getConfig().getInt("fvault.Price");
|
||||||
if (!context.fPlayer.hasMoney(amount)) {
|
if (!context.fPlayer.hasMoney(amount)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!context.fPlayer.takeMoney(amount)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//success :)
|
//success :)
|
||||||
|
context.fPlayer.takeMoney(amount);
|
||||||
context.player.getInventory().addItem(vault);
|
context.player.getInventory().addItem(vault);
|
||||||
context.fPlayer.msg(TL.COMMAND_GETVAULT_RECEIVE);
|
context.fPlayer.msg(TL.COMMAND_GETVAULT_RECEIVE);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean inventoryContains(Inventory inventory, ItemStack item) {
|
|
||||||
int count = 0;
|
|
||||||
ItemStack[] items = inventory.getContents();
|
|
||||||
for (int i = 0; i < items.length; i++) {
|
|
||||||
if (items[i] != null && items[i].getType() == item.getType() && items[i].getDurability() == item.getDurability()) {
|
|
||||||
count += items[i].getAmount();
|
|
||||||
}
|
|
||||||
if (count >= item.getAmount()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TL getUsageTranslation() {
|
public TL getUsageTranslation() {
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import com.massivecraft.factions.util.CC;
|
|||||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import mkremins.fanciful.FancyMessage;
|
import mkremins.fanciful.FancyMessage;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
|
|
||||||
public class CmdInvite extends FCommand {
|
public class CmdInvite extends FCommand {
|
||||||
|
|
||||||
@@ -60,14 +59,11 @@ public class CmdInvite extends FCommand {
|
|||||||
// Send the invitation to the target player when online, otherwise just ignore
|
// Send the invitation to the target player when online, otherwise just ignore
|
||||||
if (target.isOnline()) {
|
if (target.isOnline()) {
|
||||||
// Tooltips, colors, and commands only apply to the string immediately before it.
|
// Tooltips, colors, and commands only apply to the string immediately before it.
|
||||||
FancyMessage message = new FancyMessage(context.fPlayer.describeTo(target, true))
|
FancyMessage message = new FancyMessage(TL.COMMAND_INVITE_INVITEDYOU.toString()
|
||||||
|
.replace("%1$s", context.fPlayer.describeTo(target, true))
|
||||||
|
.replace("%2$s", context.faction.getTag())
|
||||||
|
.replaceAll("&", "§"))
|
||||||
.tooltip(TL.COMMAND_INVITE_CLICKTOJOIN.toString())
|
.tooltip(TL.COMMAND_INVITE_CLICKTOJOIN.toString())
|
||||||
.command("/" + Conf.baseCommandAliases.get(0) + " join " + context.faction.getTag())
|
|
||||||
.then(TL.COMMAND_INVITE_INVITEDYOU.toString())
|
|
||||||
.color(ChatColor.YELLOW)
|
|
||||||
.tooltip(TL.COMMAND_INVITE_CLICKTOJOIN.toString())
|
|
||||||
.command("/" + Conf.baseCommandAliases.get(0) + " join " + context.faction.getTag())
|
|
||||||
.then(context.faction.describeTo(target)).tooltip(TL.COMMAND_INVITE_CLICKTOJOIN.toString())
|
|
||||||
.command("/" + Conf.baseCommandAliases.get(0) + " join " + context.faction.getTag());
|
.command("/" + Conf.baseCommandAliases.get(0) + " join " + context.faction.getTag());
|
||||||
message.send(target.getPlayer());
|
message.send(target.getPlayer());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,25 +1,14 @@
|
|||||||
package com.massivecraft.factions.cmd;
|
package com.massivecraft.factions.cmd;
|
||||||
|
|
||||||
import com.massivecraft.factions.*;
|
import com.massivecraft.factions.*;
|
||||||
import com.massivecraft.factions.cmd.audit.FLogType;
|
|
||||||
import com.massivecraft.factions.discord.Discord;
|
|
||||||
import com.massivecraft.factions.event.FPlayerJoinEvent;
|
import com.massivecraft.factions.event.FPlayerJoinEvent;
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
import com.massivecraft.factions.util.CC;
|
|
||||||
import com.massivecraft.factions.zcore.frame.fupgrades.UpgradeType;
|
import com.massivecraft.factions.zcore.frame.fupgrades.UpgradeType;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import net.dv8tion.jda.core.entities.Member;
|
|
||||||
import net.dv8tion.jda.core.exceptions.HierarchyException;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
public class CmdJoin extends FCommand {
|
public class CmdJoin extends FCommand {
|
||||||
|
|
||||||
/**
|
|
||||||
* @author FactionsUUID Team
|
|
||||||
*/
|
|
||||||
|
|
||||||
public CmdJoin() {
|
public CmdJoin() {
|
||||||
super();
|
super();
|
||||||
this.aliases.addAll(Aliases.join);
|
this.aliases.addAll(Aliases.join);
|
||||||
@@ -127,28 +116,13 @@ public class CmdJoin extends FCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
faction.deinvite(fplayer);
|
faction.deinvite(fplayer);
|
||||||
|
context.fPlayer.setRole(faction.getDefaultRole());
|
||||||
try {
|
|
||||||
context.fPlayer.setRole(faction.getDefaultRole());
|
|
||||||
FactionsPlugin.instance.logFactionEvent(faction, FLogType.INVITES, context.fPlayer.getName(), CC.Green + "joined", "the faction");
|
|
||||||
if (Discord.useDiscord && context.fPlayer.discordSetup() && Discord.isInMainGuild(context.fPlayer.discordUser()) && Discord.mainGuild != null) {
|
|
||||||
Member m = Discord.mainGuild.getMember(context.fPlayer.discordUser());
|
|
||||||
if (Conf.factionRoles) {
|
|
||||||
Discord.mainGuild.getController().addSingleRoleToMember(m, Objects.requireNonNull(Discord.createFactionRole(faction.getTag()))).queue();
|
|
||||||
}
|
|
||||||
if (Conf.factionDiscordTags) {
|
|
||||||
Discord.mainGuild.getController().setNickname(m, Discord.getNicknameString(context.fPlayer)).queue();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (HierarchyException e) {
|
|
||||||
System.out.print(e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Conf.logFactionJoin) {
|
if (Conf.logFactionJoin) {
|
||||||
if (samePlayer) {
|
if (samePlayer) {
|
||||||
FactionsPlugin.getInstance().log(TL.COMMAND_JOIN_JOINEDLOG.toString(), fplayer.getName(), faction.getTag());
|
FactionsPlugin.instance.log(TL.COMMAND_JOIN_JOINEDLOG.toString(), fplayer.getName(), faction.getTag());
|
||||||
} else {
|
} else {
|
||||||
FactionsPlugin.getInstance().log(TL.COMMAND_JOIN_MOVEDLOG.toString(), context.fPlayer.getName(), fplayer.getName(), faction.getTag());
|
FactionsPlugin.instance.log(TL.COMMAND_JOIN_MOVEDLOG.toString(), context.fPlayer.getName(), fplayer.getName(), faction.getTag());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ public class CmdKick extends FCommand {
|
|||||||
toKickFaction.msg(TL.COMMAND_KICK_FACTION, context.fPlayer.describeTo(toKickFaction, true), toKick.describeTo(toKickFaction, true));
|
toKickFaction.msg(TL.COMMAND_KICK_FACTION, context.fPlayer.describeTo(toKickFaction, true), toKick.describeTo(toKickFaction, true));
|
||||||
|
|
||||||
toKick.msg(TL.COMMAND_KICK_KICKED, context.fPlayer.describeTo(toKick, true), toKickFaction.describeTo(toKick));
|
toKick.msg(TL.COMMAND_KICK_KICKED, context.fPlayer.describeTo(toKick, true), toKickFaction.describeTo(toKick));
|
||||||
|
|
||||||
if (toKickFaction != context.faction) {
|
if (toKickFaction != context.faction) {
|
||||||
context.fPlayer.msg(TL.COMMAND_KICK_KICKS, toKick.describeTo(context.fPlayer), toKickFaction.describeTo(context.fPlayer));
|
context.fPlayer.msg(TL.COMMAND_KICK_KICKS, toKick.describeTo(context.fPlayer), toKickFaction.describeTo(context.fPlayer));
|
||||||
}
|
}
|
||||||
@@ -127,6 +128,9 @@ public class CmdKick extends FCommand {
|
|||||||
FactionsPlugin.instance.logFactionEvent(toKickFaction, FLogType.INVITES, context.fPlayer.getName(), CC.Red + "kicked", toKick.getName());
|
FactionsPlugin.instance.logFactionEvent(toKickFaction, FLogType.INVITES, context.fPlayer.getName(), CC.Red + "kicked", toKick.getName());
|
||||||
toKickFaction.deinvite(toKick);
|
toKickFaction.deinvite(toKick);
|
||||||
toKick.resetFactionData();
|
toKick.resetFactionData();
|
||||||
|
if (!CmdFly.checkBypassPerms(toKick, toKick.getPlayer(), toKickFaction, false)) {
|
||||||
|
CmdFly.disableFlight(toKick);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -42,76 +42,75 @@ public class CmdList extends FCommand {
|
|||||||
// if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay
|
// if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay
|
||||||
if (!context.payForCommand(Conf.econCostList, "to list the factions", "for listing the factions"))
|
if (!context.payForCommand(Conf.econCostList, "to list the factions", "for listing the factions"))
|
||||||
return;
|
return;
|
||||||
FactionsPlugin.getInstance().getServer().getScheduler().runTaskAsynchronously(FactionsPlugin.instance, () -> {
|
|
||||||
|
|
||||||
ArrayList<Faction> factionList = Factions.getInstance().getAllFactions();
|
ArrayList<Faction> factionList = Factions.getInstance().getAllFactions();
|
||||||
factionList.remove(Factions.getInstance().getWilderness());
|
factionList.remove(Factions.getInstance().getWilderness());
|
||||||
factionList.remove(Factions.getInstance().getSafeZone());
|
factionList.remove(Factions.getInstance().getSafeZone());
|
||||||
factionList.remove(Factions.getInstance().getWarZone());
|
factionList.remove(Factions.getInstance().getWarZone());
|
||||||
|
|
||||||
// remove exempt factions
|
// remove exempt factions
|
||||||
if (context.fPlayer != null && context.fPlayer.getPlayer() != null && !context.fPlayer.getPlayer().hasPermission("factions.show.bypassexempt")) {
|
if (context.fPlayer != null && context.fPlayer.getPlayer() != null && !context.fPlayer.getPlayer().hasPermission("factions.show.bypassexempt")) {
|
||||||
List<String> exemptFactions = FactionsPlugin.getInstance().getConfig().getStringList("show-exempt");
|
List<String> exemptFactions = FactionsPlugin.getInstance().getConfig().getStringList("show-exempt");
|
||||||
|
|
||||||
factionList.removeIf(next -> exemptFactions.contains(next.getTag()));
|
factionList.removeIf(next -> exemptFactions.contains(next.getTag()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sort by total followers first
|
||||||
|
factionList.sort((f1, f2) -> {
|
||||||
|
int f1Size = f1.getFPlayers().size();
|
||||||
|
int f2Size = f2.getFPlayers().size();
|
||||||
|
if (f1Size < f2Size) {
|
||||||
|
return 1;
|
||||||
|
} else if (f1Size > f2Size) {
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
// Sort by total followers first
|
|
||||||
factionList.sort((f1, f2) -> {
|
|
||||||
int f1Size = f1.getFPlayers().size();
|
|
||||||
int f2Size = f2.getFPlayers().size();
|
|
||||||
if (f1Size < f2Size) {
|
|
||||||
return 1;
|
|
||||||
} else if (f1Size > f2Size) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Then sort by how many members are online now
|
|
||||||
factionList.sort((f1, f2) -> {
|
|
||||||
int f1Size = f1.getFPlayersWhereOnline(true).size();
|
|
||||||
int f2Size = f2.getFPlayersWhereOnline(true).size();
|
|
||||||
if (f1Size < f2Size) {
|
|
||||||
return 1;
|
|
||||||
} else if (f1Size > f2Size) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
|
|
||||||
ArrayList<String> lines = new ArrayList<>();
|
|
||||||
|
|
||||||
factionList.add(0, Factions.getInstance().getWilderness());
|
|
||||||
|
|
||||||
final int pageheight = 9;
|
|
||||||
int pagenumber = context.argAsInt(0, 1);
|
|
||||||
int pagecount = (factionList.size() / pageheight) + 1;
|
|
||||||
if (pagenumber > pagecount) {
|
|
||||||
pagenumber = pagecount;
|
|
||||||
} else if (pagenumber < 1) {
|
|
||||||
pagenumber = 1;
|
|
||||||
}
|
|
||||||
int start = (pagenumber - 1) * pageheight;
|
|
||||||
int end = start + pageheight;
|
|
||||||
if (end > factionList.size()) {
|
|
||||||
end = factionList.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
String header = FactionsPlugin.getInstance().getConfig().getString("list.header", defaults[0]);
|
|
||||||
header = header.replace("{pagenumber}", String.valueOf(pagenumber)).replace("{pagecount}", String.valueOf(pagecount));
|
|
||||||
lines.add(FactionsPlugin.getInstance().txt.parse(header));
|
|
||||||
|
|
||||||
for (Faction faction : factionList.subList(start, end)) {
|
|
||||||
if (faction.isWilderness()) {
|
|
||||||
lines.add(FactionsPlugin.getInstance().txt.parse(TagUtil.parsePlain(faction, FactionsPlugin.getInstance().getConfig().getString("list.factionless", defaults[1]))));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
lines.add(FactionsPlugin.getInstance().txt.parse(TagUtil.parsePlain(faction, context.fPlayer, FactionsPlugin.getInstance().getConfig().getString("list.entry", defaults[2]))));
|
|
||||||
}
|
|
||||||
context.sendMessage(lines);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Then sort by how many members are online now
|
||||||
|
factionList.sort((f1, f2) -> {
|
||||||
|
int f1Size = f1.getFPlayersWhereOnline(true).size();
|
||||||
|
int f2Size = f2.getFPlayersWhereOnline(true).size();
|
||||||
|
if (f1Size < f2Size) {
|
||||||
|
return 1;
|
||||||
|
} else if (f1Size > f2Size) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
|
||||||
|
ArrayList<String> lines = new ArrayList<>();
|
||||||
|
|
||||||
|
factionList.add(0, Factions.getInstance().getWilderness());
|
||||||
|
|
||||||
|
final int pageheight = 9;
|
||||||
|
int pagenumber = context.argAsInt(0, 1);
|
||||||
|
int pagecount = (factionList.size() / pageheight) + 1;
|
||||||
|
if (pagenumber > pagecount) {
|
||||||
|
pagenumber = pagecount;
|
||||||
|
} else if (pagenumber < 1) {
|
||||||
|
pagenumber = 1;
|
||||||
|
}
|
||||||
|
int start = (pagenumber - 1) * pageheight;
|
||||||
|
int end = start + pageheight;
|
||||||
|
if (end > factionList.size()) {
|
||||||
|
end = factionList.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
String header = FactionsPlugin.getInstance().getConfig().getString("list.header", defaults[0]);
|
||||||
|
assert header != null;
|
||||||
|
header = header.replace("{pagenumber}", String.valueOf(pagenumber)).replace("{pagecount}", String.valueOf(pagecount));
|
||||||
|
lines.add(FactionsPlugin.getInstance().txt.parse(header));
|
||||||
|
|
||||||
|
for (Faction faction : factionList.subList(start, end)) {
|
||||||
|
if (faction.isWilderness()) {
|
||||||
|
lines.add(FactionsPlugin.getInstance().txt.parse(TagUtil.parsePlain(faction, FactionsPlugin.getInstance().getConfig().getString("list.factionless", defaults[1]))));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
lines.add(FactionsPlugin.getInstance().txt.parse(TagUtil.parsePlain(faction, context.fPlayer, FactionsPlugin.getInstance().getConfig().getString("list.entry", defaults[2]))));
|
||||||
|
}
|
||||||
|
context.sendMessage(lines);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -50,6 +50,10 @@ public class CmdMod extends FCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (you.isAlt()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (context.fPlayer != null && context.fPlayer.getRole() != Role.LEADER && !permAny) {
|
if (context.fPlayer != null && context.fPlayer.getRole() != Role.LEADER && !permAny) {
|
||||||
context.msg(TL.COMMAND_MOD_NOTADMIN);
|
context.msg(TL.COMMAND_MOD_NOTADMIN);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public class CmdOpen extends FCommand {
|
|||||||
|
|
||||||
String open = context.faction.getOpen() ? TL.COMMAND_OPEN_OPEN.toString() : TL.COMMAND_OPEN_CLOSED.toString();
|
String open = context.faction.getOpen() ? TL.COMMAND_OPEN_OPEN.toString() : TL.COMMAND_OPEN_CLOSED.toString();
|
||||||
|
|
||||||
if(Cooldown.isOnCooldown(context.fPlayer.getPlayer(), "openCooldown") && !context.fPlayer.isAdminBypassing()){
|
if (Cooldown.isOnCooldown(context.fPlayer.getPlayer(), "openCooldown") && !context.fPlayer.isAdminBypassing()) {
|
||||||
context.msg(TL.COMMAND_COOLDOWN);
|
context.msg(TL.COMMAND_COOLDOWN);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -51,7 +51,7 @@ public class CmdOpen extends FCommand {
|
|||||||
Cooldown.setCooldown(fplayer.getPlayer(), "openCooldown", FactionsPlugin.getInstance().getConfig().getInt("fcooldowns.f-open"));
|
Cooldown.setCooldown(fplayer.getPlayer(), "openCooldown", FactionsPlugin.getInstance().getConfig().getInt("fcooldowns.f-open"));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(FactionsPlugin.getInstance().getConfig().getBoolean("faction-open-broadcast")) return;
|
if (FactionsPlugin.getInstance().getConfig().getBoolean("faction-open-broadcast")) return;
|
||||||
fplayer.msg(TL.COMMAND_OPEN_CHANGED, context.faction.getTag(fplayer.getFaction()), open);
|
fplayer.msg(TL.COMMAND_OPEN_CHANGED, context.faction.getTag(fplayer.getFaction()), open);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -30,10 +30,6 @@ public class CmdReload extends FCommand {
|
|||||||
FactionsPlugin.getInstance().loadLang();
|
FactionsPlugin.getInstance().loadLang();
|
||||||
|
|
||||||
|
|
||||||
if (FactionsPlugin.getInstance().getConfig().getBoolean("enable-faction-flight", false)) {
|
|
||||||
FactionsPlugin.getInstance().factionsFlight = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!FactionsPlugin.getInstance().mc17) {
|
if (!FactionsPlugin.getInstance().mc17) {
|
||||||
FactionsPlayerListener.loadCorners();
|
FactionsPlayerListener.loadCorners();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.massivecraft.factions.cmd;
|
package com.massivecraft.factions.cmd;
|
||||||
|
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
import com.massivecraft.factions.FLocation;
|
import com.massivecraft.factions.FLocation;
|
||||||
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.util.ParticleEffect;
|
import com.massivecraft.factions.util.ParticleEffect;
|
||||||
import com.massivecraft.factions.util.VisualizeUtil;
|
import com.massivecraft.factions.util.VisualizeUtil;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|||||||
@@ -24,17 +24,21 @@ public class CmdShow extends FCommand {
|
|||||||
this.aliases.addAll(Aliases.show_show);
|
this.aliases.addAll(Aliases.show_show);
|
||||||
|
|
||||||
// add defaults to /f show in case config doesnt have it
|
// add defaults to /f show in case config doesnt have it
|
||||||
defaults.add("{header}");
|
defaults.add("&8&m--------------&7 &8<&e{faction}&8> &8&m--------------");
|
||||||
defaults.add("<a>Description: <i>{description}");
|
defaults.add("&4* &cOwner: &f{leader}");
|
||||||
defaults.add("<a>Joining: <i>{joining} {peaceful}");
|
defaults.add("&4* &cDescription: &f{description}");
|
||||||
defaults.add("<a>Land / Power / Maxpower: <i> {chunks} / {power} / {maxPower}");
|
defaults.add("&4* &cLand / Power / Max Power: &f{chunks} &8/ &f{power} &8/ &f{maxPower}");
|
||||||
defaults.add("<a>Founded: <i>{create-date}");
|
defaults.add("&4* &cFaction Strikes: &f{strikes}");
|
||||||
defaults.add("<a>This faction is permanent, remaining even with no members.");
|
defaults.add("&4* &cFaction Points: &f{faction-points}");
|
||||||
defaults.add("<a>Land value: <i>{land-value} {land-refund}");
|
defaults.add("&4* &cFounded: &f{create-date}");
|
||||||
defaults.add("<a>Balance: <i>{faction-balance}");
|
defaults.add("&4* &cBalance: &f{faction-balance}");
|
||||||
defaults.add("<a>Allies(<i>{allies}<a>/<i>{max-allies}<a>): {allies-list}");
|
defaults.add("&4* &cAllies: &a{allies-list}");
|
||||||
defaults.add("<a>Online: (<i>{online}<a>/<i>{members}<a>): {online-list}");
|
defaults.add("&4* &cEnemies: &4{enemies-list}");
|
||||||
defaults.add("<a>Offline: (<i>{offline}<a>/<i>{members}<a>): {offline-list}");
|
defaults.add("&4* &cOnline Members: &8[&f{online}/{members}&8] &a{online-list}");
|
||||||
|
defaults.add("&4* &cOffline Members: &8[&f{offline}/{members}&8] &a{offline-list}");
|
||||||
|
defaults.add("&4* &cAlts: &f{alts}");
|
||||||
|
defaults.add("&4* &cBans: &f{faction-bancount}");
|
||||||
|
defaults.add("&8&m----------------------------------------");
|
||||||
|
|
||||||
// this.requiredArgs.add("");
|
// this.requiredArgs.add("");
|
||||||
this.optionalArgs.put("faction tag", "yours");
|
this.optionalArgs.put("faction tag", "yours");
|
||||||
@@ -45,6 +49,7 @@ public class CmdShow extends FCommand {
|
|||||||
@Override
|
@Override
|
||||||
public void perform(CommandContext context) {
|
public void perform(CommandContext context) {
|
||||||
Faction faction = context.faction;
|
Faction faction = context.faction;
|
||||||
|
FactionsPlugin instance = FactionsPlugin.getInstance();
|
||||||
if (context.argIsSet(0))
|
if (context.argIsSet(0))
|
||||||
faction = context.argAsFaction(0);
|
faction = context.argAsFaction(0);
|
||||||
|
|
||||||
@@ -52,7 +57,7 @@ public class CmdShow extends FCommand {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (context.fPlayer != null && !context.player.getPlayer().hasPermission("factions.show.bypassexempt")
|
if (context.fPlayer != null && !context.player.getPlayer().hasPermission("factions.show.bypassexempt")
|
||||||
&& FactionsPlugin.getInstance().getConfig().getStringList("show-exempt").contains(faction.getTag())) {
|
&& instance.getConfig().getStringList("show-exempt").contains(faction.getTag())) {
|
||||||
context.msg(TL.COMMAND_SHOW_EXEMPT);
|
context.msg(TL.COMMAND_SHOW_EXEMPT);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -62,7 +67,7 @@ public class CmdShow extends FCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> show = FactionsPlugin.getInstance().getConfig().getStringList("show");
|
List<String> show = instance.getConfig().getStringList("show");
|
||||||
if (show == null || show.isEmpty())
|
if (show == null || show.isEmpty())
|
||||||
show = defaults;
|
show = defaults;
|
||||||
|
|
||||||
@@ -71,41 +76,49 @@ public class CmdShow extends FCommand {
|
|||||||
// send header and that's all
|
// send header and that's all
|
||||||
String header = show.get(0);
|
String header = show.get(0);
|
||||||
if (TagReplacer.HEADER.contains(header)) {
|
if (TagReplacer.HEADER.contains(header)) {
|
||||||
context.msg(FactionsPlugin.getInstance().txt.titleize(tag));
|
context.msg(instance.txt.titleize(tag));
|
||||||
} else {
|
} else {
|
||||||
context.msg(FactionsPlugin.getInstance().txt.parse(TagReplacer.FACTION.replace(header, tag)));
|
context.msg(instance.txt.parse(TagReplacer.FACTION.replace(header, tag)));
|
||||||
}
|
}
|
||||||
return; // we only show header for non-normal factions
|
return; // we only show header for non-normal factions
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String raw : show) {
|
List<FancyMessage> fancy = new ArrayList<>();
|
||||||
String parsed = TagUtil.parsePlain(faction, context.fPlayer, raw); // use relations
|
List<String> finalShow = show;
|
||||||
if (parsed == null) {
|
Faction finalFaction = faction;
|
||||||
continue; // Due to minimal f show.
|
instance.getServer().getScheduler().runTaskAsynchronously(instance, () -> {
|
||||||
}
|
for (String raw : finalShow) {
|
||||||
|
String parsed = TagUtil.parsePlain(finalFaction, context.fPlayer, raw); // use relations
|
||||||
if (context.fPlayer != null) {
|
if (parsed == null) {
|
||||||
parsed = TagUtil.parsePlaceholders(context.fPlayer.getPlayer(), parsed);
|
continue; // Due to minimal f show.
|
||||||
}
|
|
||||||
|
|
||||||
if (TagUtil.hasFancy(parsed)) {
|
|
||||||
List<FancyMessage> fancy = TagUtil.parseFancy(faction, context.fPlayer, parsed);
|
|
||||||
if (fancy != null)
|
|
||||||
context.sendFancyMessage(fancy);
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (!parsed.contains("{notFrozen}") && !parsed.contains("{notPermanent}")) {
|
|
||||||
if (parsed.contains("{ig}")) {
|
|
||||||
// replaces all variables with no home TL
|
|
||||||
parsed = parsed.substring(0, parsed.indexOf("{ig}")) + TL.COMMAND_SHOW_NOHOME.toString();
|
|
||||||
}
|
}
|
||||||
if (parsed.contains("%")) {
|
|
||||||
parsed = parsed.replaceAll("%", ""); // Just in case it got in there before we disallowed it.
|
if (context.fPlayer != null) {
|
||||||
|
parsed = TagUtil.parsePlaceholders(context.fPlayer.getPlayer(), parsed);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TagUtil.hasFancy(parsed)) {
|
||||||
|
List<FancyMessage> localFancy = TagUtil.parseFancy(finalFaction, context.fPlayer, parsed);
|
||||||
|
if (localFancy != null)
|
||||||
|
fancy.addAll(localFancy);
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!parsed.contains("{notFrozen}") && !parsed.contains("{notPermanent}")) {
|
||||||
|
if (parsed.contains("{ig}")) {
|
||||||
|
// replaces all variables with no home TL
|
||||||
|
parsed = parsed.substring(0, parsed.indexOf("{ig}")) + TL.COMMAND_SHOW_NOHOME.toString();
|
||||||
|
}
|
||||||
|
if (parsed.contains("%")) {
|
||||||
|
parsed = parsed.replaceAll("%", ""); // Just in case it got in there before we disallowed it.
|
||||||
|
}
|
||||||
|
parsed = FactionsPlugin.getInstance().txt.parse(parsed);
|
||||||
|
FancyMessage localFancy = instance.txt.parseFancy(parsed);
|
||||||
|
fancy.add(localFancy);
|
||||||
}
|
}
|
||||||
context.msg(FactionsPlugin.getInstance().txt.parse(parsed));
|
|
||||||
}
|
}
|
||||||
}
|
instance.getServer().getScheduler().runTask(instance, () -> context.sendFancyMessage(fancy));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.google.common.collect.ArrayListMultimap;
|
|||||||
import com.google.common.collect.ListMultimap;
|
import com.google.common.collect.ListMultimap;
|
||||||
import com.massivecraft.factions.FLocation;
|
import com.massivecraft.factions.FLocation;
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
|
|
||||||
public class CmdShowClaims extends FCommand {
|
public class CmdShowClaims extends FCommand {
|
||||||
@@ -16,6 +17,7 @@ public class CmdShowClaims extends FCommand {
|
|||||||
this.aliases.addAll(Aliases.show_claims);
|
this.aliases.addAll(Aliases.show_claims);
|
||||||
|
|
||||||
this.requirements = new CommandRequirements.Builder(Permission.SHOWCLAIMS)
|
this.requirements = new CommandRequirements.Builder(Permission.SHOWCLAIMS)
|
||||||
|
.withAction(PermissableAction.TERRITORY)
|
||||||
.playerOnly()
|
.playerOnly()
|
||||||
.memberOnly()
|
.memberOnly()
|
||||||
.build();
|
.build();
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ public class CmdShowInvites extends FCommand {
|
|||||||
String name = fp != null ? fp.getName() : id;
|
String name = fp != null ? fp.getName() : id;
|
||||||
msg.then(name + " ").color(ChatColor.WHITE).tooltip(TL.COMMAND_SHOWINVITES_CLICKTOREVOKE.format(name)).command("/" + Conf.baseCommandAliases.get(0) + " deinvite " + name);
|
msg.then(name + " ").color(ChatColor.WHITE).tooltip(TL.COMMAND_SHOWINVITES_CLICKTOREVOKE.format(name)).command("/" + Conf.baseCommandAliases.get(0) + " deinvite " + name);
|
||||||
}
|
}
|
||||||
|
context.sendFancyMessage(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ public class CmdStealth extends FCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void perform(CommandContext context) {
|
public void perform(CommandContext context) {
|
||||||
if (!Conf.useSealthSystem) {
|
if (!Conf.useStealthSystem) {
|
||||||
context.msg(TL.GENERIC_DISABLED, "Factions Stealth");
|
context.msg(TL.GENERIC_DISABLED, "Factions Stealth");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public class CmdTag extends FCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Cooldown.isOnCooldown(context.player, "tagCooldown") && !context.fPlayer.isAdminBypassing()){
|
if (Cooldown.isOnCooldown(context.player, "tagCooldown") && !context.fPlayer.isAdminBypassing()) {
|
||||||
context.msg(TL.COMMAND_COOLDOWN);
|
context.msg(TL.COMMAND_COOLDOWN);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -72,7 +72,6 @@ public class CmdTag extends FCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
String oldtag = context.faction.getTag();
|
String oldtag = context.faction.getTag();
|
||||||
context.faction.setTag(tag);
|
context.faction.setTag(tag);
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ public class CmdUnban extends FCommand {
|
|||||||
context.faction.unban(target);
|
context.faction.unban(target);
|
||||||
|
|
||||||
context.msg(TL.COMMAND_UNBAN_UNBANNED, context.fPlayer.getName(), target.getName());
|
context.msg(TL.COMMAND_UNBAN_UNBANNED, context.fPlayer.getName(), target.getName());
|
||||||
target.msg(TL.COMMAND_UNBAN_TARGET, context.faction.getTag(target));
|
target.msg(TL.COMMAND_UNBAN_TARGETUNBANNED, context.faction.getTag(target));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import com.massivecraft.factions.cmd.relational.CmdRelationTruce;
|
|||||||
import com.massivecraft.factions.cmd.reserve.CmdReserve;
|
import com.massivecraft.factions.cmd.reserve.CmdReserve;
|
||||||
import com.massivecraft.factions.cmd.roles.CmdDemote;
|
import com.massivecraft.factions.cmd.roles.CmdDemote;
|
||||||
import com.massivecraft.factions.cmd.roles.CmdPromote;
|
import com.massivecraft.factions.cmd.roles.CmdPromote;
|
||||||
|
import com.massivecraft.factions.cmd.shields.CmdShield;
|
||||||
import com.massivecraft.factions.cmd.tnt.CmdTnt;
|
import com.massivecraft.factions.cmd.tnt.CmdTnt;
|
||||||
import com.massivecraft.factions.cmd.tnt.CmdTntFill;
|
import com.massivecraft.factions.cmd.tnt.CmdTntFill;
|
||||||
import com.massivecraft.factions.cmd.wild.CmdWild;
|
import com.massivecraft.factions.cmd.wild.CmdWild;
|
||||||
@@ -26,6 +27,7 @@ import com.massivecraft.factions.discord.CmdInviteBot;
|
|||||||
import com.massivecraft.factions.discord.CmdSetGuild;
|
import com.massivecraft.factions.discord.CmdSetGuild;
|
||||||
import com.massivecraft.factions.missions.CmdMissions;
|
import com.massivecraft.factions.missions.CmdMissions;
|
||||||
import com.massivecraft.factions.shop.CmdShop;
|
import com.massivecraft.factions.shop.CmdShop;
|
||||||
|
import com.massivecraft.factions.shop.ShopGUIFrame;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import me.lucko.commodore.CommodoreProvider;
|
import me.lucko.commodore.CommodoreProvider;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@@ -170,6 +172,7 @@ public class FCmdRoot extends FCommand implements CommandExecutor {
|
|||||||
public CmdClaimFill cmdClaimFill = new CmdClaimFill();
|
public CmdClaimFill cmdClaimFill = new CmdClaimFill();
|
||||||
public CmdNotifications cmdNotifications = new CmdNotifications();
|
public CmdNotifications cmdNotifications = new CmdNotifications();
|
||||||
public CmdFriendlyFire cmdFriendlyFire = new CmdFriendlyFire();
|
public CmdFriendlyFire cmdFriendlyFire = new CmdFriendlyFire();
|
||||||
|
public CmdShield cmdShield = new CmdShield();
|
||||||
|
|
||||||
//Variables to know if we already setup certain sub commands
|
//Variables to know if we already setup certain sub commands
|
||||||
public Boolean discordEnabled = false;
|
public Boolean discordEnabled = false;
|
||||||
@@ -305,6 +308,7 @@ public class FCmdRoot extends FCommand implements CommandExecutor {
|
|||||||
this.addSubCommand(this.cmdLookup);
|
this.addSubCommand(this.cmdLookup);
|
||||||
this.addSubCommand(this.cmdNotifications);
|
this.addSubCommand(this.cmdNotifications);
|
||||||
this.addSubCommand(this.cmdFriendlyFire);
|
this.addSubCommand(this.cmdFriendlyFire);
|
||||||
|
this.addSubCommand(this.cmdShield);
|
||||||
addVariableCommands();
|
addVariableCommands();
|
||||||
if (CommodoreProvider.isSupported()) brigadierManager.build();
|
if (CommodoreProvider.isSupported()) brigadierManager.build();
|
||||||
}
|
}
|
||||||
@@ -377,6 +381,7 @@ public class FCmdRoot extends FCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
if (FactionsPlugin.getInstance().getConfig().getBoolean("F-Shop.Enabled", false) && !fShopEnabled) {
|
if (FactionsPlugin.getInstance().getConfig().getBoolean("F-Shop.Enabled", false) && !fShopEnabled) {
|
||||||
this.addSubCommand(this.cmdShop);
|
this.addSubCommand(this.cmdShop);
|
||||||
|
new ShopGUIFrame(null).checkShopConfig();
|
||||||
fShopEnabled = true;
|
fShopEnabled = true;
|
||||||
}
|
}
|
||||||
if (FactionsPlugin.getInstance().getConfig().getBoolean("f-inventory-see.Enabled", false) && !invSeeEnabled) {
|
if (FactionsPlugin.getInstance().getConfig().getBoolean("f-inventory-see.Enabled", false) && !invSeeEnabled) {
|
||||||
@@ -399,11 +404,9 @@ public class FCmdRoot extends FCommand implements CommandExecutor {
|
|||||||
addSubCommand(this.cmdFocus);
|
addSubCommand(this.cmdFocus);
|
||||||
fFocusEnabled = true;
|
fFocusEnabled = true;
|
||||||
}
|
}
|
||||||
if (FactionsPlugin.getInstance().getConfig().getBoolean("enable-faction-flight", false) && !fFlyEnabled) {
|
if (FactionsPlugin.getInstance().getConfig().getBoolean("enable-faction-flight", true) && !fFlyEnabled) {
|
||||||
this.addSubCommand(this.cmdFly);
|
this.addSubCommand(this.cmdFly);
|
||||||
fFlyEnabled = true;
|
fFlyEnabled = true;
|
||||||
CmdFly.startFlyCheck();
|
|
||||||
CmdFly.startParticles();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.massivecraft.factions.cmd.audit;
|
package com.massivecraft.factions.cmd.audit;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
package com.massivecraft.factions.cmd.check;
|
package com.massivecraft.factions.cmd.check;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
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.zcore.frame.FactionGUI;
|
import com.massivecraft.factions.zcore.frame.FactionGUI;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.DyeColor;
|
import org.bukkit.DyeColor;
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.massivecraft.factions.cmd.check;
|
package com.massivecraft.factions.cmd.check;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
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.zcore.frame.FactionGUI;
|
import com.massivecraft.factions.zcore.frame.FactionGUI;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
|||||||
@@ -27,9 +27,10 @@ public class AntiChestListener implements Listener {
|
|||||||
if (e.isCancelled()) return;
|
if (e.isCancelled()) return;
|
||||||
|
|
||||||
Inventory clicked = e.getClickedInventory();
|
Inventory clicked = e.getClickedInventory();
|
||||||
|
Inventory clicker = e.getWhoClicked().getInventory();
|
||||||
|
|
||||||
if (e.getClick().isShiftClick()) {
|
if (e.getClick().isShiftClick()) {
|
||||||
if (clicked == e.getWhoClicked().getInventory()) {
|
if (clicked == clicker) {
|
||||||
ItemStack clickedOn = e.getCurrentItem();
|
ItemStack clickedOn = e.getCurrentItem();
|
||||||
if (clickedOn != null && FactionsPlugin.getInstance().itemList.contains(clickedOn.getType().toString())) {
|
if (clickedOn != null && FactionsPlugin.getInstance().itemList.contains(clickedOn.getType().toString())) {
|
||||||
fPlayer.msg(TL.CHEST_ITEM_DENIED_TRANSFER, clickedOn.getType().toString());
|
fPlayer.msg(TL.CHEST_ITEM_DENIED_TRANSFER, clickedOn.getType().toString());
|
||||||
@@ -38,11 +39,17 @@ public class AntiChestListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (clicked != e.getWhoClicked().getInventory()) {
|
if (clicked != clicker) {
|
||||||
ItemStack onCursor = e.getCursor();
|
ItemStack onCursor = e.getCursor();
|
||||||
if (onCursor != null && FactionsPlugin.getInstance().itemList.contains(onCursor.getType().toString())) {
|
if (onCursor != null && FactionsPlugin.getInstance().itemList.contains(onCursor.getType().toString())) {
|
||||||
fPlayer.msg(TL.CHEST_ITEM_DENIED_TRANSFER, onCursor.getType().toString());
|
fPlayer.msg(TL.CHEST_ITEM_DENIED_TRANSFER, onCursor.getType().toString());
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
|
} else if (e.getClick().isKeyboardClick()) {
|
||||||
|
ItemStack item = clicker.getItem(e.getHotbarButton());
|
||||||
|
if (item != null && FactionsPlugin.getInstance().itemList.contains(item.getType().toString())) {
|
||||||
|
fPlayer.msg(TL.CHEST_ITEM_DENIED_TRANSFER, item.getType().toString());
|
||||||
|
e.setCancelled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.massivecraft.factions.cmd.claim;
|
package com.massivecraft.factions.cmd.claim;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.Board;
|
||||||
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.FactionsPlugin;
|
||||||
@@ -62,11 +63,15 @@ public class CmdAutoClaim extends FCommand {
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Faction at = Board.getInstance().getFactionAt(new FLocation(context.fPlayer.getPlayer().getLocation()));
|
||||||
context.fPlayer.setAutoClaimFor(forFaction);
|
context.fPlayer.setAutoClaimFor(forFaction);
|
||||||
FactionsPlugin.instance.logFactionEvent(forFaction, FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.GreenB + "CLAIMED", "1", new FLocation(context.fPlayer.getPlayer().getLocation()).formatXAndZ(","));
|
FactionsPlugin.instance.logFactionEvent(forFaction, FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.GreenB + "CLAIMED", "1", new FLocation(context.fPlayer.getPlayer().getLocation()).formatXAndZ(","));
|
||||||
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);
|
if (FactionsPlugin.cachedRadiusClaim && context.fPlayer.attemptClaim(forFaction, context.player.getLocation(), true)) {
|
||||||
|
context.fPlayer.getFaction().getFPlayersWhereOnline(true).forEach(f -> f.msg(TL.CLAIM_CLAIMED, context.fPlayer.describeTo(f, true), context.fPlayer.getFaction().describeTo(f), at.describeTo(f)));
|
||||||
|
} else {
|
||||||
|
context.fPlayer.attemptClaim(forFaction, context.fPlayer.getPlayer().getLocation(), true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
package com.massivecraft.factions.cmd.claim;
|
package com.massivecraft.factions.cmd.claim;
|
||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.*;
|
||||||
import com.massivecraft.factions.FLocation;
|
|
||||||
import com.massivecraft.factions.Faction;
|
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
|
||||||
import com.massivecraft.factions.cmd.Aliases;
|
import com.massivecraft.factions.cmd.Aliases;
|
||||||
import com.massivecraft.factions.cmd.CommandContext;
|
import com.massivecraft.factions.cmd.CommandContext;
|
||||||
import com.massivecraft.factions.cmd.CommandRequirements;
|
import com.massivecraft.factions.cmd.CommandRequirements;
|
||||||
@@ -59,8 +56,14 @@ public class CmdClaim extends FCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Faction at = Board.getInstance().getFactionAt(new FLocation(context.fPlayer.getPlayer().getLocation()));
|
||||||
|
|
||||||
if (radius < 2) {
|
if (radius < 2) {
|
||||||
// single chunk
|
if (FactionsPlugin.cachedRadiusClaim && context.fPlayer.attemptClaim(forFaction, context.player.getLocation(), false)) {
|
||||||
|
context.fPlayer.getFaction().getFPlayersWhereOnline(true).forEach(f -> f.msg(TL.CLAIM_CLAIMED, context.fPlayer.describeTo(f, true), context.fPlayer.getFaction().describeTo(f), at.describeTo(f)));
|
||||||
|
FactionsPlugin.instance.logFactionEvent(forFaction, FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.GreenB + "CLAIMED", "1", (new FLocation(context.fPlayer.getPlayer().getLocation())).formatXAndZ(","));
|
||||||
|
return;
|
||||||
|
}
|
||||||
context.fPlayer.attemptClaim(forFaction, context.player.getLocation(), true);
|
context.fPlayer.attemptClaim(forFaction, context.player.getLocation(), true);
|
||||||
FactionsPlugin.instance.logFactionEvent(forFaction, FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.GreenB + "CLAIMED", "1", (new FLocation(context.fPlayer.getPlayer().getLocation())).formatXAndZ(","));
|
FactionsPlugin.instance.logFactionEvent(forFaction, FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.GreenB + "CLAIMED", "1", (new FLocation(context.fPlayer.getPlayer().getLocation())).formatXAndZ(","));
|
||||||
} else {
|
} else {
|
||||||
@@ -68,16 +71,17 @@ public class CmdClaim extends FCommand {
|
|||||||
if (!Permission.CLAIM_RADIUS.has(context.sender, true)) {
|
if (!Permission.CLAIM_RADIUS.has(context.sender, true)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
new SpiralTask(new FLocation(context.player), radius) {
|
new SpiralTask(new FLocation(context.player), radius) {
|
||||||
private final int limit = Conf.radiusClaimFailureLimit - 1;
|
private final int limit = Conf.radiusClaimFailureLimit - 1;
|
||||||
private int failCount = 0;
|
private int failCount = 0;
|
||||||
|
private int successfulClaims = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean work() {
|
public boolean work() {
|
||||||
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;
|
||||||
|
successfulClaims++;
|
||||||
FactionsPlugin.instance.logFactionEvent(forFaction, FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.GreenB + "CLAIMED", "1", (new FLocation(context.fPlayer.getPlayer().getLocation())).formatXAndZ(","));
|
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();
|
||||||
@@ -85,6 +89,15 @@ public class CmdClaim extends FCommand {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void finish() {
|
||||||
|
if (FactionsPlugin.cachedRadiusClaim) {
|
||||||
|
if (successfulClaims > 0) {
|
||||||
|
context.fPlayer.getFaction().getFPlayersWhereOnline(true).forEach(f -> f.msg(TL.CLAIM_RADIUS_CLAIM, context.fPlayer.describeTo(f, true), String.valueOf(successfulClaims), context.fPlayer.getPlayer().getLocation().getChunk().getX(), context.fPlayer.getPlayer().getLocation().getChunk().getZ()));
|
||||||
|
stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.massivecraft.factions.cmd.claim;
|
|||||||
|
|
||||||
import com.massivecraft.factions.Board;
|
import com.massivecraft.factions.Board;
|
||||||
import com.massivecraft.factions.FLocation;
|
import com.massivecraft.factions.FLocation;
|
||||||
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.cmd.Aliases;
|
import com.massivecraft.factions.cmd.Aliases;
|
||||||
import com.massivecraft.factions.cmd.CommandContext;
|
import com.massivecraft.factions.cmd.CommandContext;
|
||||||
@@ -39,6 +40,15 @@ public class CmdClaimAt extends FCommand {
|
|||||||
int x = context.argAsInt(1);
|
int x = context.argAsInt(1);
|
||||||
int z = context.argAsInt(2);
|
int z = context.argAsInt(2);
|
||||||
FLocation location = new FLocation(context.argAsString(0), x, z);
|
FLocation location = new FLocation(context.argAsString(0), x, z);
|
||||||
|
|
||||||
|
Faction at = Board.getInstance().getFactionAt(new FLocation(context.fPlayer.getPlayer().getLocation()));
|
||||||
|
|
||||||
|
if (FactionsPlugin.cachedRadiusClaim && context.fPlayer.attemptClaim(context.fPlayer.getFaction(), context.player.getLocation(), true)) {
|
||||||
|
context.fPlayer.getFaction().getFPlayersWhereOnline(true).forEach(f -> f.msg(TL.CLAIM_CLAIMED, context.fPlayer.describeTo(f, true), context.fPlayer.getFaction().describeTo(f), at.describeTo(f)));
|
||||||
|
FactionsPlugin.instance.logFactionEvent(context.fPlayer.getFaction(), FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.GreenB + "CLAIMED", "1", (new FLocation(context.fPlayer.getPlayer().getLocation())).formatXAndZ(","));
|
||||||
|
showMap(context);
|
||||||
|
return;
|
||||||
|
}
|
||||||
context.fPlayer.attemptClaim(context.faction, location, true);
|
context.fPlayer.attemptClaim(context.faction, location, true);
|
||||||
FactionsPlugin.instance.logFactionEvent(context.fPlayer.getFaction(), FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.GreenB + "CLAIMED", "1", (location).formatXAndZ(","));
|
FactionsPlugin.instance.logFactionEvent(context.fPlayer.getFaction(), FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.GreenB + "CLAIMED", "1", (location).formatXAndZ(","));
|
||||||
showMap(context);
|
showMap(context);
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
package com.massivecraft.factions.cmd.claim;
|
package com.massivecraft.factions.cmd.claim;
|
||||||
|
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.*;
|
||||||
import com.massivecraft.factions.FLocation;
|
|
||||||
import com.massivecraft.factions.Faction;
|
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
|
||||||
import com.massivecraft.factions.cmd.Aliases;
|
import com.massivecraft.factions.cmd.Aliases;
|
||||||
import com.massivecraft.factions.cmd.CommandContext;
|
import com.massivecraft.factions.cmd.CommandContext;
|
||||||
import com.massivecraft.factions.cmd.CommandRequirements;
|
import com.massivecraft.factions.cmd.CommandRequirements;
|
||||||
@@ -71,6 +68,7 @@ public class CmdClaimLine extends FCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final Faction forFaction = context.argAsFaction(2, context.faction);
|
final Faction forFaction = context.argAsFaction(2, context.faction);
|
||||||
|
Faction at = Board.getInstance().getFactionAt(new FLocation(context.fPlayer.getPlayer().getLocation()));
|
||||||
|
|
||||||
if (forFaction != context.fPlayer.getFaction()) {
|
if (forFaction != context.fPlayer.getFaction()) {
|
||||||
if (!context.fPlayer.isAdminBypassing()) {
|
if (!context.fPlayer.isAdminBypassing()) {
|
||||||
@@ -84,11 +82,20 @@ public class CmdClaimLine extends FCommand {
|
|||||||
Location location = context.player.getLocation();
|
Location location = context.player.getLocation();
|
||||||
|
|
||||||
// TODO: make this a task like claiming a radius?
|
// TODO: make this a task like claiming a radius?
|
||||||
|
int claims = 0;
|
||||||
|
|
||||||
for (int i = 0; i < amount; i++) {
|
for (int i = 0; i < amount; i++) {
|
||||||
context.fPlayer.attemptClaim(forFaction, location, true);
|
if (FactionsPlugin.cachedRadiusClaim && context.fPlayer.attemptClaim(forFaction, context.player.getLocation(), false)) {
|
||||||
|
claims++;
|
||||||
|
} else {
|
||||||
|
context.fPlayer.attemptClaim(forFaction, location, true);
|
||||||
|
claims++;
|
||||||
|
}
|
||||||
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(","));
|
FactionsPlugin.instance.logFactionEvent(forFaction, FLogType.CHUNK_CLAIMS, context.fPlayer.getName(), CC.GreenB + "CLAIMED", String.valueOf(i), new FLocation(context.player.getLocation()).formatXAndZ(","));
|
||||||
}
|
}
|
||||||
|
int cachedClaims = claims;
|
||||||
|
context.fPlayer.getFaction().getFPlayersWhereOnline(true).forEach(f -> f.msg(TL.CLAIM_RADIUS_CLAIM, context.fPlayer.describeTo(f, true), String.valueOf(cachedClaims), context.fPlayer.getPlayer().getLocation().getChunk().getX(), context.fPlayer.getPlayer().getLocation().getChunk().getZ()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -63,6 +63,11 @@ public class CmdUnclaim extends FCommand {
|
|||||||
boolean didUnClaim = unClaim(new FLocation(context.player), context);
|
boolean didUnClaim = unClaim(new FLocation(context.player), context);
|
||||||
if (didUnClaim && !context.fPlayer.canFlyAtLocation())
|
if (didUnClaim && !context.fPlayer.canFlyAtLocation())
|
||||||
context.fPlayer.setFFlying(false, false);
|
context.fPlayer.setFFlying(false, false);
|
||||||
|
|
||||||
|
for(FPlayer fPlayer : context.faction.getFPlayersWhereOnline(true)){
|
||||||
|
if(!fPlayer.canFlyAtLocation())
|
||||||
|
fPlayer.setFFlying(false, false);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// radius claim
|
// radius claim
|
||||||
if (!Permission.CLAIM_RADIUS.has(context.sender, false)) {
|
if (!Permission.CLAIM_RADIUS.has(context.sender, false)) {
|
||||||
@@ -83,10 +88,13 @@ public class CmdUnclaim extends FCommand {
|
|||||||
this.stop();
|
this.stop();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
boolean didUnClaim = unClaim(new FLocation(context.player), context);
|
||||||
|
if (didUnClaim && !context.fPlayer.canFlyAtLocation())
|
||||||
|
context.fPlayer.setFFlying(false, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,14 +57,8 @@ public class CmdUnclaimall extends FCommand {
|
|||||||
}
|
}
|
||||||
if (Econ.shouldBeUsed()) {
|
if (Econ.shouldBeUsed()) {
|
||||||
double refund = Econ.calculateTotalLandRefund(target.getLandRounded());
|
double refund = Econ.calculateTotalLandRefund(target.getLandRounded());
|
||||||
if (Conf.bankEnabled && Conf.bankFactionPaysLandCosts) {
|
if (!Econ.modifyMoney(target, refund, TL.COMMAND_UNCLAIMALL_TOUNCLAIM.toString(), TL.COMMAND_UNCLAIMALL_FORUNCLAIM.toString())) {
|
||||||
if (!Econ.modifyMoney(target, refund, TL.COMMAND_UNCLAIMALL_TOUNCLAIM.toString(), TL.COMMAND_UNCLAIMALL_FORUNCLAIM.toString())) {
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!Econ.modifyMoney(target, refund, TL.COMMAND_UNCLAIMALL_TOUNCLAIM.toString(), TL.COMMAND_UNCLAIMALL_FORUNCLAIM.toString())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ public class CmdGrace extends FCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(context.args.size() == 1) {
|
if (context.args.size() == 1) {
|
||||||
if (context.sender.hasPermission(String.valueOf(Permission.GRACETOGGLE))) {
|
if (context.sender.hasPermission(String.valueOf(Permission.GRACETOGGLE))) {
|
||||||
if (context.argAsString(0).equalsIgnoreCase("on") || context.argAsString(0).equalsIgnoreCase("start")) {
|
if (context.argAsString(0).equalsIgnoreCase("on") || context.argAsString(0).equalsIgnoreCase("start")) {
|
||||||
FactionsPlugin.getInstance().getTimerManager().graceTimer.setPaused(false);
|
FactionsPlugin.getInstance().getTimerManager().graceTimer.setPaused(false);
|
||||||
@@ -61,7 +61,7 @@ public class CmdGrace extends FCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(FactionsPlugin.getInstance().getTimerManager().graceTimer.getRemaining() <= 0L) {
|
if (FactionsPlugin.getInstance().getTimerManager().graceTimer.getRemaining() <= 0L) {
|
||||||
context.fPlayer.msg(TL.COMMAND_GRACE_DISABLED_NO_FORMAT.toString());
|
context.fPlayer.msg(TL.COMMAND_GRACE_DISABLED_NO_FORMAT.toString());
|
||||||
} else {
|
} else {
|
||||||
context.fPlayer.msg(TL.COMMAND_GRACE_TIME_REMAINING, String.valueOf(TimerManager.getRemaining(FactionsPlugin.getInstance().getTimerManager().graceTimer.getRemaining(), true)));
|
context.fPlayer.msg(TL.COMMAND_GRACE_TIME_REMAINING, String.valueOf(TimerManager.getRemaining(FactionsPlugin.getInstance().getTimerManager().graceTimer.getRemaining(), true)));
|
||||||
|
|||||||
@@ -39,9 +39,9 @@ public abstract class FRelationCommand extends FCommand {
|
|||||||
@Override
|
@Override
|
||||||
public void perform(CommandContext context) {
|
public void perform(CommandContext context) {
|
||||||
Faction them = context.argAsFaction(0);
|
Faction them = context.argAsFaction(0);
|
||||||
if (them == null) {
|
if (them == null) return;
|
||||||
return;
|
|
||||||
}
|
if (!context.faction.isNormal()) return;
|
||||||
|
|
||||||
if (!them.isNormal()) {
|
if (!them.isNormal()) {
|
||||||
context.msg(TL.COMMAND_RELATIONS_ALLTHENOPE);
|
context.msg(TL.COMMAND_RELATIONS_ALLTHENOPE);
|
||||||
|
|||||||
@@ -57,6 +57,16 @@ 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 with same or higher rank than their.
|
||||||
|
if (context.fPlayer.getRole().value <= target.getRole().value) {
|
||||||
|
context.msg(TL.COMMAND_PROMOTE_HIGHER_RANK, target.getName());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Don't allow people to demote people who already have the lowest rank.
|
||||||
|
if (current.value == 0 && relative <= 0) {
|
||||||
|
context.msg(TL.COMMAND_PROMOTE_LOWEST_RANK, target.getName());
|
||||||
|
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);
|
||||||
@@ -64,11 +74,20 @@ public class FPromoteCommand extends FCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (promotion == null) {
|
if (target.isAlt()) {
|
||||||
context.msg(TL.COMMAND_PROMOTE_NOTTHATPLAYER);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Don't allow people to demote people who already have the lowest rank.
|
||||||
|
if (current.value == 0 && relative <= 0) {
|
||||||
|
context.msg(TL.COMMAND_PROMOTE_LOWEST_RANK, target.getName());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Don't allow people to promote people who already have the highest rank.
|
||||||
|
if (current.value == 4 && relative > 0) {
|
||||||
|
context.msg(TL.COMMAND_PROMOTE_HIGHEST_RANK, target.getName());
|
||||||
|
return;
|
||||||
|
}
|
||||||
// Don't allow people to promote people to their same or higher rnak.
|
// Don't allow people to promote people to their same or higher rnak.
|
||||||
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);
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.massivecraft.factions.cmd.shields;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.cmd.CommandContext;
|
||||||
|
import com.massivecraft.factions.cmd.CommandRequirements;
|
||||||
|
import com.massivecraft.factions.cmd.FCommand;
|
||||||
|
import com.massivecraft.factions.cmd.shields.struct.frame.ShieldFrame;
|
||||||
|
import com.massivecraft.factions.struct.Permission;
|
||||||
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||||
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factions - Developed by ImCarib.
|
||||||
|
* All rights reserved 2020.
|
||||||
|
* Creation Date: 5/23/2020
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class CmdShield extends FCommand {
|
||||||
|
|
||||||
|
public CmdShield() {
|
||||||
|
this.aliases.add("shield");
|
||||||
|
this.requirements = new CommandRequirements.Builder(Permission.SHIELD)
|
||||||
|
.playerOnly()
|
||||||
|
.memberOnly()
|
||||||
|
.withAction(PermissableAction.SHIELD)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void perform(CommandContext context) {
|
||||||
|
if (!Conf.useFShieldSystem) {
|
||||||
|
context.msg(TL.GENERIC_DISABLED);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
(new ShieldFrame()).build(context.fPlayer);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TL getUsageTranslation() {
|
||||||
|
return TL.COMMAND_SHIELD_DESCRIPTION;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package com.massivecraft.factions.cmd.shields.struct;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.Conf;
|
||||||
|
import com.massivecraft.factions.cmd.shields.struct.frame.ShieldFramePersistence;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factions - Developed by ImCarib.
|
||||||
|
* All rights reserved 2020.
|
||||||
|
* Creation Date: 5/23/2020
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class ShieldTCMP {
|
||||||
|
private static ShieldTCMP instance;
|
||||||
|
|
||||||
|
private List<ShieldFramePersistence> frames = new ArrayList<>();
|
||||||
|
|
||||||
|
public ShieldTCMP() {
|
||||||
|
instance = this;
|
||||||
|
for (int x = 0; x <= 23; x++) {
|
||||||
|
int end = (x + Conf.shieldTimeHours > 23) ? (x + Conf.shieldTimeHours - 24) : (x + Conf.shieldTimeHours);
|
||||||
|
this.frames.add(new ShieldFramePersistence(x, end));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ShieldTCMP getInstance() {
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ShieldFramePersistence getByStart(int start) {
|
||||||
|
if (start > 23) return null;
|
||||||
|
return this.frames.get(start);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ShieldFramePersistence> getFrames() {
|
||||||
|
return this.frames;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
package com.massivecraft.factions.cmd.shields.struct.frame;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
|
import com.github.stefvanschie.inventoryframework.Gui;
|
||||||
|
import com.github.stefvanschie.inventoryframework.GuiItem;
|
||||||
|
import com.github.stefvanschie.inventoryframework.pane.PaginatedPane;
|
||||||
|
import com.massivecraft.factions.FPlayer;
|
||||||
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
|
import com.massivecraft.factions.cmd.shields.struct.tasks.ShieldManagement;
|
||||||
|
import com.massivecraft.factions.util.ItemBuilder;
|
||||||
|
import com.massivecraft.factions.util.Placeholder;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factions - Developed by ImCarib.
|
||||||
|
* All rights reserved 2020.
|
||||||
|
* Creation Date: 5/23/2020
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class ShieldConfirmationFrame {
|
||||||
|
private Gui gui;
|
||||||
|
|
||||||
|
public ShieldConfirmationFrame() {
|
||||||
|
this.gui = new Gui(FactionsPlugin.getInstance(),
|
||||||
|
FactionsPlugin.getInstance().getConfig().getInt("Shields.Frame.Change.Size"),
|
||||||
|
FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("Shields.Frame.Change.Title")));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void build(FPlayer fme, ShieldFramePersistence frame) {
|
||||||
|
PaginatedPane pane = new PaginatedPane(0, 0, 9, this.gui.getRows());
|
||||||
|
List<GuiItem> GUIItems = new ArrayList<>();
|
||||||
|
for (int x = 0; x <= this.gui.getRows() * 9 - 1; ) {
|
||||||
|
GUIItems.add(new GuiItem(XMaterial.AIR.parseItem(), e -> e.setCancelled(true)));
|
||||||
|
x++;
|
||||||
|
}
|
||||||
|
ItemStack[] assets = buildAssets(frame);
|
||||||
|
GUIItems.set(4, new GuiItem(assets[0], e -> e.setCancelled(true)));
|
||||||
|
GUIItems.set(11, new GuiItem(assets[1], e -> {
|
||||||
|
e.setCancelled(true);
|
||||||
|
fme.getFaction().setupShieldChange(frame);
|
||||||
|
(new ShieldFrame()).build(fme);
|
||||||
|
}));
|
||||||
|
GUIItems.set(15, new GuiItem(assets[2], e -> {
|
||||||
|
e.setCancelled(true);
|
||||||
|
(new ShieldFrame()).build(fme);
|
||||||
|
}));
|
||||||
|
pane.populateWithGuiItems(GUIItems);
|
||||||
|
this.gui.addPane(pane);
|
||||||
|
this.gui.update();
|
||||||
|
this.gui.show(fme.getPlayer());
|
||||||
|
}
|
||||||
|
|
||||||
|
private ItemStack[] buildAssets(ShieldFramePersistence frame) {
|
||||||
|
String path = "Shields.Frame.Change.Items.";
|
||||||
|
return new ItemStack[]{new ItemBuilder(
|
||||||
|
XMaterial.matchXMaterial(FactionsPlugin.getInstance().getConfig().getString(path + "Info.Type")).get().parseItem())
|
||||||
|
.name(FactionsPlugin.getInstance().getConfig().getString(path + "Info.Display-Name"))
|
||||||
|
.lore(FactionsPlugin.getInstance().replacePlaceholders(FactionsPlugin.getInstance().getConfig().getStringList(path + "Info.Lore"),
|
||||||
|
new Placeholder("{start-time}", frame.getStartTime()),
|
||||||
|
new Placeholder("{end-time}", frame.getEndTime()),
|
||||||
|
new Placeholder("{current-time}", ShieldManagement.getCurrentTime()))).build(),
|
||||||
|
|
||||||
|
new ItemBuilder(
|
||||||
|
XMaterial.matchXMaterial(FactionsPlugin.getInstance().getConfig().getString(path + "Accept.Type")).get().parseItem())
|
||||||
|
.name(FactionsPlugin.getInstance().getConfig().getString(path + "Accept.Display-Name"))
|
||||||
|
.lore(FactionsPlugin.getInstance().getConfig().getStringList(path + "Accept.Lore")).build(),
|
||||||
|
|
||||||
|
new ItemBuilder(XMaterial.matchXMaterial(FactionsPlugin.getInstance().getConfig().getString(path + "Deny.Type")).get().parseItem())
|
||||||
|
.name(FactionsPlugin.getInstance().getConfig().getString(path + "Deny.Display-Name"))
|
||||||
|
.lore(FactionsPlugin.getInstance().getConfig().getStringList(path + "Deny.Lore")).build()};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,171 @@
|
|||||||
|
package com.massivecraft.factions.cmd.shields.struct.frame;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
|
import com.github.stefvanschie.inventoryframework.Gui;
|
||||||
|
import com.github.stefvanschie.inventoryframework.GuiItem;
|
||||||
|
import com.github.stefvanschie.inventoryframework.pane.PaginatedPane;
|
||||||
|
import com.massivecraft.factions.FPlayer;
|
||||||
|
import com.massivecraft.factions.Faction;
|
||||||
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
|
import com.massivecraft.factions.cmd.shields.struct.ShieldTCMP;
|
||||||
|
import com.massivecraft.factions.cmd.shields.struct.tasks.ShieldManagement;
|
||||||
|
import com.massivecraft.factions.util.ItemBuilder;
|
||||||
|
import com.massivecraft.factions.util.Placeholder;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factions - Developed by ImCarib.
|
||||||
|
* All rights reserved 2020.
|
||||||
|
* Creation Date: 5/21/2020
|
||||||
|
*/
|
||||||
|
public class ShieldFrame {
|
||||||
|
public Gui gui;
|
||||||
|
|
||||||
|
public ShieldFrame() {
|
||||||
|
this.gui = new Gui(FactionsPlugin.getInstance(), 5, FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("Shields.Frame.Main-Menu.Title")));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String formatTimeMilliseconds(long milliseconds) {
|
||||||
|
long seconds = milliseconds / 1000L;
|
||||||
|
long minutes = seconds / 60L;
|
||||||
|
seconds %= 60L;
|
||||||
|
long hours = minutes / 60L;
|
||||||
|
minutes %= 60L;
|
||||||
|
long days = hours / 24L;
|
||||||
|
hours %= 24L;
|
||||||
|
long months = days / 31L;
|
||||||
|
days %= 31L;
|
||||||
|
if (months != 0L)
|
||||||
|
return months + "M " + days + "d " + hours + "h ";
|
||||||
|
if (days != 0L)
|
||||||
|
return days + "d " + hours + "h " + minutes + "m ";
|
||||||
|
if (hours != 0L)
|
||||||
|
return hours + "h " + minutes + "m " + seconds + "s";
|
||||||
|
if (minutes != 0L)
|
||||||
|
return minutes + "m " + seconds + "s";
|
||||||
|
if (seconds != 0L)
|
||||||
|
return seconds + "s";
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void build(FPlayer fme) {
|
||||||
|
PaginatedPane pane = new PaginatedPane(0, 0, 9, this.gui.getRows());
|
||||||
|
List<GuiItem> GUIItems = new ArrayList<>();
|
||||||
|
for (int x = 0; x <= this.gui.getRows() * 9 - 1; x++)
|
||||||
|
GUIItems.add(new GuiItem(new ItemStack(Material.AIR), e -> e.setCancelled(true)));
|
||||||
|
for (int slot : FactionsPlugin.getInstance().getConfig().getIntegerList("Shields.Frame.Frame-Type.Barrier.Slots")) {
|
||||||
|
GUIItems.set(slot, new GuiItem(buildBarrierDummyItem(), e -> e.setCancelled(true)));
|
||||||
|
}
|
||||||
|
int x = 0;
|
||||||
|
for (ShieldFramePersistence frame : ShieldTCMP.getInstance().getFrames()) {
|
||||||
|
ItemStack item = buildShieldFrames(fme.getFaction(), frame);
|
||||||
|
if (fme.getFaction().getShieldFrame() != null &&
|
||||||
|
fme.getFaction().getShieldFrame().equals(frame)) {
|
||||||
|
GUIItems.set(x, new GuiItem(item, e -> e.setCancelled(true)));
|
||||||
|
x++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (fme.getFaction().getNewFrame() != null &&
|
||||||
|
fme.getFaction().getNewFrame().equals(frame)) {
|
||||||
|
GUIItems.set(x, new GuiItem(item, e -> e.setCancelled(true)));
|
||||||
|
x++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
GUIItems.set(x, new GuiItem(item, e -> {
|
||||||
|
e.setCancelled(true);
|
||||||
|
(new ShieldConfirmationFrame()).build(fme, frame);
|
||||||
|
}));
|
||||||
|
x++;
|
||||||
|
}
|
||||||
|
ItemStack[] assets = getAssets(fme.getFaction());
|
||||||
|
GUIItems.set(39, new GuiItem(assets[0], e -> e.setCancelled(true)));
|
||||||
|
GUIItems.set(41, new GuiItem(assets[1], e -> e.setCancelled(true)));
|
||||||
|
pane.populateWithGuiItems(GUIItems);
|
||||||
|
this.gui.addPane(pane);
|
||||||
|
this.gui.update();
|
||||||
|
this.gui.show(fme.getPlayer());
|
||||||
|
}
|
||||||
|
|
||||||
|
private ItemStack[] getAssets(Faction f) {
|
||||||
|
ItemStack change;
|
||||||
|
ConfigurationSection sec = FactionsPlugin.getInstance().getConfig().getConfigurationSection("Shields.Frame.Frame-Type.");
|
||||||
|
assert sec != null;
|
||||||
|
ItemStack info = (new ItemBuilder(XMaterial.matchXMaterial(sec.getString("Info-Item.Type")).get().parseItem()).name(sec.getString("Info-Item.Display-Name")).lore(sec.getStringList("Info-Item.Lore")).build());
|
||||||
|
if (f.pendingShieldChange()) {
|
||||||
|
change = (new ItemBuilder(XMaterial.matchXMaterial(sec.getString("Shield-Pending.Type")).get().parseItem()).name(sec.getString("Shield-Pending.Display-Name")).lore(FactionsPlugin.getInstance().replacePlaceholders(sec.getStringList("Shield-Pending.Lore"),
|
||||||
|
new Placeholder("{remaining-time}", timeUntilChange(f)),
|
||||||
|
new Placeholder("{new-start}", f.getNewFrame().getStartTime()),
|
||||||
|
new Placeholder("{new-end}", f.getNewFrame().getEndTime())))).build();
|
||||||
|
} else {
|
||||||
|
change = (new ItemBuilder(XMaterial.matchXMaterial(sec.getString("NoShield-Pending.Type")).get().parseItem()).name(sec.getString("NoShield-Pending.Display-Name")).lore(sec.getStringList("NoShield-Pending.Lore")).build());
|
||||||
|
}
|
||||||
|
return new ItemStack[]{info, change};
|
||||||
|
}
|
||||||
|
|
||||||
|
private String timeUntilChange(Faction f) {
|
||||||
|
long time = f.getShieldChangeTime();
|
||||||
|
time -= System.currentTimeMillis();
|
||||||
|
return formatTimeMilliseconds(time);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ItemStack buildShieldFrames(Faction faction, ShieldFramePersistence frame) {
|
||||||
|
ConfigurationSection config = FactionsPlugin.getInstance().getConfig().getConfigurationSection("Shields.Frame.Frame-Type");
|
||||||
|
if (faction.getShieldFrame() != null && faction.getShieldFrame().equals(frame)) {
|
||||||
|
ItemStack item = XMaterial.matchXMaterial(config.getString("Current-Frame.Type")).get().parseItem();
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
meta.setLore(FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().replacePlaceholders(config.getStringList("Current-Frame.Lore"),
|
||||||
|
new Placeholder("{time-currently}", ShieldManagement.getCurrentTime()),
|
||||||
|
new Placeholder("{remaining-time}", timeUntilChange(faction)),
|
||||||
|
new Placeholder("{start-time}", frame.getStartTime()),
|
||||||
|
new Placeholder("{end-time}", frame.getEndTime()))));
|
||||||
|
meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Current-Frame.Display-Name")));
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
if (faction.getNewFrame() != null && faction.getNewFrame().equals(frame)) {
|
||||||
|
ItemStack item = XMaterial.matchXMaterial(config.getString("New-Frame.Type")).get().parseItem();
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
meta.setLore(FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().replacePlaceholders(config.getStringList("New-Frame.Lore"),
|
||||||
|
new Placeholder("{time-currently}", ShieldManagement.getCurrentTime()),
|
||||||
|
new Placeholder("{remaining-time}", timeUntilChange(faction)),
|
||||||
|
new Placeholder("{start-time}", frame.getStartTime()),
|
||||||
|
new Placeholder("{end-time}", frame.getEndTime()))));
|
||||||
|
meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("New-Frame.Display-Name")));
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
ItemStack item = XMaterial.matchXMaterial(config.getString("Regular-Frame.Type")).get().parseItem();
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
meta.setLore(FactionsPlugin.getInstance().colorList(FactionsPlugin.getInstance().replacePlaceholders(config.getStringList("Regular-Frame.Lore"),
|
||||||
|
new Placeholder("{time-currently}", ShieldManagement.getCurrentTime()),
|
||||||
|
new Placeholder("{remaining-time}", timeUntilChange(faction)),
|
||||||
|
new Placeholder("{start-time}", frame.getStartTime()),
|
||||||
|
new Placeholder("{end-time}", frame.getEndTime()))));
|
||||||
|
meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Regular-Frame.Display-Name")));
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ItemStack buildBarrierDummyItem() {
|
||||||
|
ConfigurationSection config = FactionsPlugin.getInstance().getConfig().getConfigurationSection("Shields.Frame.Frame-Type.Barrier.");
|
||||||
|
ItemStack item = XMaterial.matchXMaterial(config.getString("Type")).get().parseItem();
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
if (meta != null) {
|
||||||
|
List<String> lore = new ArrayList<>();
|
||||||
|
for (String s : config.getStringList("Lore")) lore.add(FactionsPlugin.getInstance().color(s));
|
||||||
|
meta.setLore(lore);
|
||||||
|
meta.setDisplayName(FactionsPlugin.getInstance().color(Objects.requireNonNull(config.getString("Name"))));
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
}
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
package com.massivecraft.factions.cmd.shields.struct.frame;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.cmd.shields.struct.tasks.ShieldManagement;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factions - Developed by ImCarib.
|
||||||
|
* All rights reserved 2020.
|
||||||
|
* Creation Date: 5/23/2020
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class ShieldFramePersistence {
|
||||||
|
private int start;
|
||||||
|
|
||||||
|
private int end;
|
||||||
|
|
||||||
|
public ShieldFramePersistence(int start, int end) {
|
||||||
|
this.start = start;
|
||||||
|
this.end = end;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getEndParsed() {
|
||||||
|
return this.end;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getStartParsed() {
|
||||||
|
return this.start;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStartTime() {
|
||||||
|
return toClockFormat(this.start);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEndTime() {
|
||||||
|
return toClockFormat(this.end);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isHourProtected(int hour) {
|
||||||
|
if (this.end < this.start) return hour >= this.start;
|
||||||
|
|
||||||
|
return (hour >= this.start && hour < this.end);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isProtectedCurrent() {
|
||||||
|
return isHourProtected(ShieldManagement.getCurrentHour());
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toClockFormat(int x) {
|
||||||
|
if (x == 0) return "12:00 am";
|
||||||
|
if (x == 12) return "12:00 pm";
|
||||||
|
if (x > 12) return (x - 12) + ":00 pm";
|
||||||
|
return x + ":00 am";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
package com.massivecraft.factions.cmd.shields.struct.tasks;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.Factions;
|
||||||
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
|
import com.massivecraft.factions.cmd.shields.struct.ShieldTCMP;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.joda.time.DateTime;
|
||||||
|
import org.joda.time.DateTimeZone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factions - Developed by ImCarib.
|
||||||
|
* All rights reserved 2020.
|
||||||
|
* Creation Date: 5/23/2020
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class ShieldManagement implements Runnable {
|
||||||
|
private static DateTimeZone zone = DateTimeZone.forID("Canada/Eastern");
|
||||||
|
private int lastHour;
|
||||||
|
|
||||||
|
public ShieldManagement() {
|
||||||
|
new ShieldTCMP();
|
||||||
|
this.lastHour = 25;
|
||||||
|
Bukkit.getScheduler().scheduleSyncRepeatingTask(FactionsPlugin.getInstance(), this, 20L, 1200L);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getCurrentHour() {
|
||||||
|
DateTime time = new DateTime(zone);
|
||||||
|
return time.getHourOfDay();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getCurrentTime() {
|
||||||
|
DateTime time = new DateTime(zone);
|
||||||
|
int hour = time.getHourOfDay();
|
||||||
|
if (hour == 0) hour = 12;
|
||||||
|
|
||||||
|
if (hour > 12)
|
||||||
|
return (hour - 12) + ":" + ((time.getMinuteOfHour() < 10) ? ("0" + time.getMinuteOfHour()) : Integer.valueOf(time.getMinuteOfHour())) + " pm";
|
||||||
|
|
||||||
|
return hour + ":" + ((time.getMinuteOfHour() < 10) ? ("0" + time.getMinuteOfHour()) : Integer.valueOf(time.getMinuteOfHour())) + " am";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
DateTime time = new DateTime(zone);
|
||||||
|
int hour = time.getHourOfDay();
|
||||||
|
if (this.lastHour == 25 || this.lastHour != hour) {
|
||||||
|
long now = System.currentTimeMillis();
|
||||||
|
Factions.getInstance().getAllFactions().forEach(faction -> {
|
||||||
|
if (faction.pendingShieldChange() && faction.getShieldChangeTime() < now) faction.applyShield();
|
||||||
|
if (faction.getShieldFrame() != null) {
|
||||||
|
if (faction.getShieldFrame().isHourProtected(hour)) faction.setProtected();
|
||||||
|
} else {
|
||||||
|
faction.setUnprotected();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.massivecraft.factions.cmd.tnt;
|
package com.massivecraft.factions.cmd.tnt;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.cmd.Aliases;
|
import com.massivecraft.factions.cmd.Aliases;
|
||||||
import com.massivecraft.factions.cmd.CommandContext;
|
import com.massivecraft.factions.cmd.CommandContext;
|
||||||
@@ -7,7 +8,6 @@ import com.massivecraft.factions.cmd.CommandRequirements;
|
|||||||
import com.massivecraft.factions.cmd.FCommand;
|
import com.massivecraft.factions.cmd.FCommand;
|
||||||
import com.massivecraft.factions.cmd.audit.FLogType;
|
import com.massivecraft.factions.cmd.audit.FLogType;
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
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;
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
package com.massivecraft.factions.cmd.wild;
|
package com.massivecraft.factions.cmd.wild;
|
||||||
|
|
||||||
|
|
||||||
import com.massivecraft.factions.Board;
|
import com.massivecraft.factions.*;
|
||||||
import com.massivecraft.factions.FLocation;
|
|
||||||
import com.massivecraft.factions.FPlayers;
|
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
|
||||||
import com.massivecraft.factions.cmd.Aliases;
|
import com.massivecraft.factions.cmd.Aliases;
|
||||||
import com.massivecraft.factions.cmd.CommandContext;
|
import com.massivecraft.factions.cmd.CommandContext;
|
||||||
import com.massivecraft.factions.cmd.CommandRequirements;
|
import com.massivecraft.factions.cmd.CommandRequirements;
|
||||||
@@ -22,8 +19,12 @@ import org.bukkit.potion.PotionEffectType;
|
|||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DroppingAnvil
|
||||||
|
*/
|
||||||
public class CmdWild extends FCommand implements WaitedTask {
|
public class CmdWild extends FCommand implements WaitedTask {
|
||||||
public static HashMap<Player, String> teleportRange;
|
public static HashMap<Player, String> teleportRange;
|
||||||
public static HashSet<Player> teleporting;
|
public static HashSet<Player> teleporting;
|
||||||
@@ -44,8 +45,6 @@ public class CmdWild extends FCommand implements WaitedTask {
|
|||||||
public void perform(CommandContext context) {
|
public void perform(CommandContext context) {
|
||||||
if (!teleportRange.containsKey(context.player)) {
|
if (!teleportRange.containsKey(context.player)) {
|
||||||
context.player.openInventory(new WildGUI(context.player, context.fPlayer).getInventory());
|
context.player.openInventory(new WildGUI(context.player, context.fPlayer).getInventory());
|
||||||
} else {
|
|
||||||
context.fPlayer.msg(TL.COMMAND_WILD_WAIT);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,16 +54,18 @@ public class CmdWild extends FCommand implements WaitedTask {
|
|||||||
int tries = 0;
|
int tries = 0;
|
||||||
ConfigurationSection c = FactionsPlugin.getInstance().getConfig().getConfigurationSection("Wild.Zones." + teleportRange.get(p));
|
ConfigurationSection c = FactionsPlugin.getInstance().getConfig().getConfigurationSection("Wild.Zones." + teleportRange.get(p));
|
||||||
while (tries < 5) {
|
while (tries < 5) {
|
||||||
|
assert c != null;
|
||||||
int x = new Random().nextInt((c.getInt("Range.MaxX") - c.getInt("Range.MinX")) + 1) + c.getInt("Range.MinX");
|
int x = new Random().nextInt((c.getInt("Range.MaxX") - c.getInt("Range.MinX")) + 1) + c.getInt("Range.MinX");
|
||||||
int z = new Random().nextInt((c.getInt("Range.MaxZ") - c.getInt("Range.MinZ")) + 1) + c.getInt("Range.MinZ");
|
int z = new Random().nextInt((c.getInt("Range.MaxZ") - c.getInt("Range.MinZ")) + 1) + c.getInt("Range.MinZ");
|
||||||
if (Board.getInstance().getFactionAt(new FLocation(p.getWorld().getName(), x, z)).isWilderness()) {
|
if (Board.getInstance().getFactionAt(new FLocation(p.getWorld().getName(), x, z)).isWilderness()) {
|
||||||
success = true;
|
success = true;
|
||||||
FLocation loc = new FLocation(p.getWorld().getName(), x, z);
|
FLocation loc = new FLocation(Objects.requireNonNull(c.getString("World", "World")), x, z);
|
||||||
teleportRange.remove(p);
|
teleportRange.remove(p);
|
||||||
if (!FPlayers.getInstance().getByPlayer(p).takeMoney(c.getInt("Cost"))) {
|
if (!FPlayers.getInstance().getByPlayer(p).takeMoney(c.getInt("Cost"))) {
|
||||||
p.sendMessage(TL.GENERIC_NOTENOUGHMONEY.toString());
|
p.sendMessage(TL.GENERIC_NOTENOUGHMONEY.toString());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (Conf.wildLoadChunkBeforeTeleport && !loc.getChunk().isLoaded()) loc.getChunk().load();
|
||||||
teleportPlayer(p, loc);
|
teleportPlayer(p, loc);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -72,15 +73,16 @@ public class CmdWild extends FCommand implements WaitedTask {
|
|||||||
}
|
}
|
||||||
if (!success) {
|
if (!success) {
|
||||||
p.sendMessage(TL.COMMAND_WILD_FAILED.toString());
|
p.sendMessage(TL.COMMAND_WILD_FAILED.toString());
|
||||||
|
teleportRange.remove(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void teleportPlayer(Player p, FLocation loc) {
|
public void teleportPlayer(Player p, FLocation loc) {
|
||||||
Location finalLoc;
|
Location finalLoc;
|
||||||
if (FactionsPlugin.getInstance().getConfig().getBoolean("Wild.Arrival.SpawnAbove")) {
|
if (FactionsPlugin.getInstance().getConfig().getBoolean("Wild.Arrival.SpawnAbove")) {
|
||||||
finalLoc = new Location(p.getWorld(), loc.getX(), p.getWorld().getHighestBlockYAt(Math.round(loc.getX()), Math.round(loc.getZ())) + FactionsPlugin.getInstance().getConfig().getInt("Wild.Arrival.SpawnAboveBlocks", 1), loc.getZ());
|
finalLoc = new Location(loc.getWorld(), loc.getX(), loc.getWorld().getHighestBlockYAt(Math.round(loc.getX()), Math.round(loc.getZ())) + FactionsPlugin.getInstance().getConfig().getInt("Wild.Arrival.SpawnAboveBlocks", 1), loc.getZ());
|
||||||
} else {
|
} else {
|
||||||
finalLoc = new Location(p.getWorld(), loc.getX(), p.getWorld().getHighestBlockYAt(Math.round(loc.getX()), Math.round(loc.getZ())), loc.getZ());
|
finalLoc = new Location(loc.getWorld(), loc.getX(), loc.getWorld().getHighestBlockYAt(Math.round(loc.getX()), Math.round(loc.getZ())), loc.getZ());
|
||||||
}
|
}
|
||||||
p.teleport(finalLoc, PlayerTeleportEvent.TeleportCause.PLUGIN);
|
p.teleport(finalLoc, PlayerTeleportEvent.TeleportCause.PLUGIN);
|
||||||
setTeleporting(p);
|
setTeleporting(p);
|
||||||
@@ -89,7 +91,7 @@ public class CmdWild extends FCommand implements WaitedTask {
|
|||||||
|
|
||||||
public void applyEffects(Player p) {
|
public void applyEffects(Player p) {
|
||||||
for (String s : FactionsPlugin.getInstance().getConfig().getStringList("Wild.Arrival.Effects")) {
|
for (String s : FactionsPlugin.getInstance().getConfig().getStringList("Wild.Arrival.Effects")) {
|
||||||
p.addPotionEffect(new PotionEffect(PotionEffectType.getByName(s), 40, 1));
|
p.addPotionEffect(new PotionEffect(Objects.requireNonNull(PotionEffectType.getByName(s)), 40, 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,6 +113,6 @@ public class CmdWild extends FCommand implements WaitedTask {
|
|||||||
@Override
|
@Override
|
||||||
public void handleFailure(Player player) {
|
public void handleFailure(Player player) {
|
||||||
player.sendMessage(TL.COMMAND_WILD_INTERUPTED.toString());
|
player.sendMessage(TL.COMMAND_WILD_INTERUPTED.toString());
|
||||||
|
teleportRange.remove(player);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.massivecraft.factions.cmd.wild;
|
package com.massivecraft.factions.cmd.wild;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
import com.massivecraft.factions.FPlayer;
|
import com.massivecraft.factions.FPlayer;
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
import com.massivecraft.factions.util.wait.WaitExecutor;
|
import com.massivecraft.factions.util.wait.WaitExecutor;
|
||||||
import com.massivecraft.factions.util.wait.WaitTask;
|
import com.massivecraft.factions.util.wait.WaitTask;
|
||||||
import com.massivecraft.factions.zcore.frame.FactionGUI;
|
import com.massivecraft.factions.zcore.frame.FactionGUI;
|
||||||
@@ -20,6 +20,9 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DroppingAnvil
|
||||||
|
*/
|
||||||
public class WildGUI implements FactionGUI {
|
public class WildGUI implements FactionGUI {
|
||||||
Player player;
|
Player player;
|
||||||
FPlayer fplayer;
|
FPlayer fplayer;
|
||||||
@@ -37,7 +40,7 @@ public class WildGUI implements FactionGUI {
|
|||||||
if (map.containsKey(slot)) {
|
if (map.containsKey(slot)) {
|
||||||
String zone = map.get(slot);
|
String zone = map.get(slot);
|
||||||
if (fplayer.hasMoney(FactionsPlugin.getInstance().getConfig().getInt("Wild.Zones." + zone + ".Cost"))) {
|
if (fplayer.hasMoney(FactionsPlugin.getInstance().getConfig().getInt("Wild.Zones." + zone + ".Cost"))) {
|
||||||
WaitExecutor.taskMap.put(player, new WaitTask(FactionsPlugin.getInstance().getConfig().getInt("Wild.Wait"), TL.COMMAND_WILD_INPROGRESS, player, CmdWild.instance));
|
WaitExecutor.taskMap.put(player, new WaitTask(FactionsPlugin.getInstance().getConfig().getInt("Wild.Wait"), TL.COMMAND_WILD_WAIT, player, CmdWild.instance));
|
||||||
CmdWild.teleportRange.put(player, zone);
|
CmdWild.teleportRange.put(player, zone);
|
||||||
fplayer.msg(TL.COMMAND_WILD_WAIT, FactionsPlugin.getInstance().getConfig().getInt("Wild.Wait") + " Seconds");
|
fplayer.msg(TL.COMMAND_WILD_WAIT, FactionsPlugin.getInstance().getConfig().getInt("Wild.Wait") + " Seconds");
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
@@ -57,7 +60,8 @@ public class WildGUI implements FactionGUI {
|
|||||||
inv.setItem(fill, fillItem);
|
inv.setItem(fill, fillItem);
|
||||||
}
|
}
|
||||||
for (String key : Objects.requireNonNull(FactionsPlugin.getInstance().getConfig().getConfigurationSection("Wild.Zones")).getKeys(false)) {
|
for (String key : Objects.requireNonNull(FactionsPlugin.getInstance().getConfig().getConfigurationSection("Wild.Zones")).getKeys(false)) {
|
||||||
ItemStack zoneItem = XMaterial.matchXMaterial(FactionsPlugin.getInstance().getConfig().getString("Wild.Zones." + key + ".Material")).get().parseItem();
|
ItemStack zoneItem = XMaterial.matchXMaterial(Objects.requireNonNull(FactionsPlugin.getInstance().getConfig().getString("Wild.Zones." + key + ".Material"))).get().parseItem();
|
||||||
|
assert zoneItem != null;
|
||||||
ItemMeta zoneMeta = zoneItem.getItemMeta();
|
ItemMeta zoneMeta = zoneItem.getItemMeta();
|
||||||
if (zoneMeta == null) return;
|
if (zoneMeta == null) return;
|
||||||
List<String> lore = new ArrayList<>();
|
List<String> lore = new ArrayList<>();
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.massivecraft.factions.event;
|
package com.massivecraft.factions.event;
|
||||||
|
|
||||||
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 org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
@@ -10,51 +9,20 @@ import org.bukkit.event.Cancellable;
|
|||||||
*/
|
*/
|
||||||
public class PowerRegenEvent extends FactionPlayerEvent implements Cancellable {
|
public class PowerRegenEvent extends FactionPlayerEvent implements Cancellable {
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Illyria Team
|
|
||||||
*/
|
|
||||||
|
|
||||||
private boolean cancelled = false;
|
private boolean cancelled = false;
|
||||||
private double modified = 0;
|
private double delta;
|
||||||
|
|
||||||
public PowerRegenEvent(Faction f, FPlayer p) {
|
public PowerRegenEvent(Faction f, FPlayer p, double delta) {
|
||||||
super(f, p);
|
super(f, p);
|
||||||
|
this.delta = delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public double getDelta() {
|
||||||
* Get the amount of power this player will regen by default
|
return delta;
|
||||||
*
|
|
||||||
* @return power amount gained as a Double.
|
|
||||||
*/
|
|
||||||
public double getDefaultPowerGained() {
|
|
||||||
return fPlayer.getMillisPassed() * Conf.powerPerMinute / 60000;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public void setDelta(double delta) {
|
||||||
* Get the amount of custom power this player will gain. Ignored if less than or equal to 0.
|
this.delta = delta;
|
||||||
*
|
|
||||||
* @return Custom power as a double
|
|
||||||
*/
|
|
||||||
public double getCustomPower() {
|
|
||||||
return modified;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the custom power gain for this event.
|
|
||||||
*
|
|
||||||
* @param gain Amount of power to be added to player.
|
|
||||||
*/
|
|
||||||
public void setCustomPower(Double gain) {
|
|
||||||
modified = gain;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get if we will be using the custom power gain instead of default.
|
|
||||||
*
|
|
||||||
* @return If we will process the event custom returned as a Boolean.
|
|
||||||
*/
|
|
||||||
public boolean usingCustomPower() {
|
|
||||||
return modified > 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -67,4 +35,4 @@ public class PowerRegenEvent extends FactionPlayerEvent implements Cancellable {
|
|||||||
this.cancelled = c;
|
this.cancelled = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -32,9 +32,8 @@ public class Econ {
|
|||||||
private static Economy econ = null;
|
private static Economy econ = null;
|
||||||
|
|
||||||
public static void setup() {
|
public static void setup() {
|
||||||
if (isSetup()) {
|
if (isSetup()) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String integrationFail = "Economy integration is " + (Conf.econEnabled ? "enabled, but" : "disabled, and") + " the plugin \"Vault\" ";
|
String integrationFail = "Economy integration is " + (Conf.econEnabled ? "enabled, but" : "disabled, and") + " the plugin \"Vault\" ";
|
||||||
|
|
||||||
@@ -42,20 +41,15 @@ public class Econ {
|
|||||||
FactionsPlugin.getInstance().log(integrationFail + "is not installed.");
|
FactionsPlugin.getInstance().log(integrationFail + "is not installed.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
RegisteredServiceProvider<Economy> rsp = Bukkit.getServer().getServicesManager().getRegistration(Economy.class);
|
RegisteredServiceProvider<Economy> rsp = Bukkit.getServer().getServicesManager().getRegistration(Economy.class);
|
||||||
if (rsp == null) {
|
if (rsp == null) {
|
||||||
FactionsPlugin.getInstance().log(integrationFail + "is not hooked into an economy plugin.");
|
FactionsPlugin.getInstance().log(integrationFail + "is not hooked into an economy plugin.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
econ = rsp.getProvider();
|
econ = rsp.getProvider();
|
||||||
|
|
||||||
FactionsPlugin.getInstance().log("Economy integration through Vault plugin successful.");
|
FactionsPlugin.getInstance().log("Economy integration through Vault plugin successful.");
|
||||||
|
if (!Conf.econEnabled)
|
||||||
if (!Conf.econEnabled) {
|
|
||||||
FactionsPlugin.getInstance().log("NOTE: Economy is disabled. You can enable it with the command: f config econEnabled true");
|
FactionsPlugin.getInstance().log("NOTE: Economy is disabled. You can enable it with the command: f config econEnabled true");
|
||||||
}
|
|
||||||
|
|
||||||
//FactionsPlugin.getInstance().cmdBase.cmdHelp.updateHelp();
|
//FactionsPlugin.getInstance().cmdBase.cmdHelp.updateHelp();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,26 +62,24 @@ public class Econ {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void modifyUniverseMoney(double delta) {
|
public static void modifyUniverseMoney(double delta) {
|
||||||
if (!shouldBeUsed()) {
|
if (!shouldBeUsed()) return;
|
||||||
return;
|
if (Conf.econUniverseAccount == null) return;
|
||||||
}
|
if (Conf.econUniverseAccount.length() == 0) return;
|
||||||
|
if (!econ.hasAccount(Conf.econUniverseAccount)) return;
|
||||||
if (Conf.econUniverseAccount == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Conf.econUniverseAccount.length() == 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!econ.hasAccount(Conf.econUniverseAccount)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
modifyBalance(Conf.econUniverseAccount, delta);
|
modifyBalance(Conf.econUniverseAccount, delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void sendBalanceInfo(FPlayer to, EconomyParticipator about) {
|
||||||
|
if (!shouldBeUsed()) {
|
||||||
|
FactionsPlugin.instance.log(Level.WARNING, "Vault does not appear to be hooked into an economy plugin.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
to.msg(TL.ECON_PLAYERBALANCE, about.describeTo(to, true), Econ.moneyString(econ.getBalance(about.getAccountId())));
|
||||||
|
}
|
||||||
|
|
||||||
public static void sendBalanceInfo(CommandSender to, Faction about) {
|
public static void sendBalanceInfo(CommandSender to, Faction about) {
|
||||||
if (!shouldBeUsed()) {
|
if (!shouldBeUsed()) {
|
||||||
FactionsPlugin.getInstance().log(Level.WARNING, "Vault does not appear to be hooked into an economy plugin.");
|
FactionsPlugin.instance.log(Level.WARNING, "Vault does not appear to be hooked into an economy plugin.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
to.sendMessage(String.format(TL.ECON_PLAYERBALANCE.toString(), about.getTag(), Econ.moneyString(econ.getBalance(about.getAccountId()))));
|
to.sendMessage(String.format(TL.ECON_PLAYERBALANCE.toString(), about.getTag(), Econ.moneyString(econ.getBalance(about.getAccountId()))));
|
||||||
@@ -98,37 +90,20 @@ public class Econ {
|
|||||||
Faction fYou = RelationUtil.getFaction(you);
|
Faction fYou = RelationUtil.getFaction(you);
|
||||||
|
|
||||||
// This is a system invoker. Accept it.
|
// This is a system invoker. Accept it.
|
||||||
if (fI == null) {
|
if (fI == null) return true;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bypassing players can do any kind of transaction
|
// Bypassing players can do any kind of transaction
|
||||||
if (i instanceof FPlayer && ((FPlayer) i).isAdminBypassing()) {
|
if (i instanceof FPlayer && ((FPlayer) i).isAdminBypassing()) return true;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Players with the any withdraw can do.
|
// Players with the any withdraw can do.
|
||||||
if (i instanceof FPlayer && Permission.MONEY_WITHDRAW_ANY.has(((FPlayer) i).getPlayer())) {
|
if (i instanceof FPlayer && Permission.MONEY_WITHDRAW_ANY.has(((FPlayer) i).getPlayer())) return true;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// You can deposit to anywhere you feel like. It's your loss if you can't withdraw it again.
|
// You can deposit to anywhere you feel like. It's your loss if you can't withdraw it again.
|
||||||
if (i == you) {
|
if (i == you) return true;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// A faction can always transfer away the money of it's members and its own money...
|
// A faction can always transfer away the money of it's members and its own money...
|
||||||
// This will however probably never happen as a faction does not have free will.
|
// This will however probably never happen as a faction does not have free will.
|
||||||
// Ohh by the way... Yes it could. For daily rent to the faction.
|
// Ohh by the way... Yes it could. For daily rent to the faction.
|
||||||
if (i == fI && fI == fYou) {
|
if (i == fI && fI == fYou) return true;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Factions can be controlled by members that are moderators... or any member if any member can withdraw.
|
// Factions can be controlled by members that are moderators... or any member if any member can withdraw.
|
||||||
if (i instanceof FPlayer && you instanceof Faction && fI == fYou && (Conf.bankMembersCanWithdraw || ((FPlayer) i).getRole().value >= Role.MODERATOR.value)) {
|
if (you instanceof Faction && fI == fYou && (Conf.bankMembersCanWithdraw || (i instanceof FPlayer && ((FPlayer) i).getRole().value >= Role.MODERATOR.value)))
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
|
|
||||||
// Otherwise you may not!;,,;
|
// Otherwise you may not!;,,;
|
||||||
i.msg(TL.ECON_CANTCONTROLMONEY, i.describeTo(i, true), you.describeTo(i));
|
i.msg(TL.ECON_CANTCONTROLMONEY, i.describeTo(i, true), you.describeTo(i));
|
||||||
return false;
|
return false;
|
||||||
@@ -140,7 +115,7 @@ public class Econ {
|
|||||||
|
|
||||||
public static boolean transferMoney(EconomyParticipator invoker, EconomyParticipator from, EconomyParticipator to, double amount, boolean notify) {
|
public static boolean transferMoney(EconomyParticipator invoker, EconomyParticipator from, EconomyParticipator to, double amount, boolean notify) {
|
||||||
if (!shouldBeUsed()) {
|
if (!shouldBeUsed()) {
|
||||||
invoker.msg(TL.ECON_OFF);
|
invoker.msg(TL.ECON_DISABLED);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,30 +129,21 @@ public class Econ {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check the rights
|
// Check the rights
|
||||||
if (!canIControllYou(invoker, from)) {
|
if (!canIControllYou(invoker, from)) return false;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
OfflinePlayer fromAcc;
|
OfflinePlayer fromAcc;
|
||||||
OfflinePlayer toAcc;
|
OfflinePlayer toAcc;
|
||||||
|
|
||||||
if (isUUID(from.getAccountId())) {
|
if (isUUID(from.getAccountId())) {
|
||||||
fromAcc = Bukkit.getOfflinePlayer(UUID.fromString(from.getAccountId()));
|
fromAcc = Bukkit.getOfflinePlayer(UUID.fromString(from.getAccountId()));
|
||||||
if (fromAcc.getName() == null) {
|
if (fromAcc.getName() == null) return false;
|
||||||
return false;
|
} else fromAcc = Bukkit.getOfflinePlayer(from.getAccountId());
|
||||||
}
|
|
||||||
} else {
|
|
||||||
fromAcc = Bukkit.getOfflinePlayer(from.getAccountId());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isUUID(to.getAccountId())) {
|
if (isUUID(to.getAccountId())) {
|
||||||
toAcc = Bukkit.getOfflinePlayer(UUID.fromString(to.getAccountId()));
|
toAcc = Bukkit.getOfflinePlayer(UUID.fromString(to.getAccountId()));
|
||||||
if (toAcc.getName() == null) {
|
if (toAcc.getName() == null) return false;
|
||||||
return false;
|
} else toAcc = Bukkit.getOfflinePlayer(to.getAccountId());
|
||||||
}
|
|
||||||
} else {
|
|
||||||
toAcc = Bukkit.getOfflinePlayer(to.getAccountId());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Is there enough money for the transaction to happen?
|
// Is there enough money for the transaction to happen?
|
||||||
if (!econ.has(fromAcc, amount)) {
|
if (!econ.has(fromAcc, amount)) {
|
||||||
@@ -185,13 +151,6 @@ public class Econ {
|
|||||||
if (invoker != null && notify) {
|
if (invoker != null && notify) {
|
||||||
invoker.msg(TL.COMMAND_MONEYTRANSFERFF_TRANSFERCANTAFFORD, 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if the new balance is over Essential's money cap.
|
|
||||||
if (Essentials.isOverBalCap(to, econ.getBalance(toAcc) + amount)) {
|
|
||||||
invoker.msg(TL.ECON_OVER_BAL_CAP, amount);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,21 +160,15 @@ public class Econ {
|
|||||||
if (erw.transactionSuccess()) {
|
if (erw.transactionSuccess()) {
|
||||||
EconomyResponse erd = econ.depositPlayer(toAcc, amount);
|
EconomyResponse erd = econ.depositPlayer(toAcc, amount);
|
||||||
if (erd.transactionSuccess()) {
|
if (erd.transactionSuccess()) {
|
||||||
if (notify) {
|
if (notify) sendTransferInfo(invoker, from, to, amount);
|
||||||
sendTransferInfo(invoker, from, to, amount);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else econ.depositPlayer(fromAcc, amount);
|
||||||
// transaction failed, refund account
|
|
||||||
econ.depositPlayer(fromAcc, amount);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// if we get here something with the transaction failed
|
// if we get here something with the transaction failed
|
||||||
if (notify) {
|
if (notify)
|
||||||
invoker.msg(TL.ECON_UNABLETOTRANSFER, 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,28 +193,22 @@ public class Econ {
|
|||||||
recipients.addAll(getFplayers(to));
|
recipients.addAll(getFplayers(to));
|
||||||
|
|
||||||
if (invoker == null) {
|
if (invoker == null) {
|
||||||
for (FPlayer recipient : recipients) {
|
for (FPlayer recipient : recipients)
|
||||||
recipient.msg(TL.ECON_MONEYTRASFERREDFROM, 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(TL.ECON_PERSONGAVEMONEYTO, 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(TL.ECON_PERSONTOOKMONEYFROM, 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(TL.ECON_MONEYTRASFERREDFROMPERSONTOPERSON, 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));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean hasAtLeast(EconomyParticipator ep, double delta, String toDoThis) {
|
public static boolean hasAtLeast(EconomyParticipator ep, double delta, String toDoThis) {
|
||||||
if (!shouldBeUsed()) {
|
if (!shouldBeUsed()) return true;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// going the hard way round as econ.has refuses to work.
|
// going the hard way round as econ.has refuses to work.
|
||||||
boolean affordable = false;
|
boolean affordable = false;
|
||||||
@@ -269,85 +216,59 @@ public class Econ {
|
|||||||
|
|
||||||
if (isUUID(ep.getAccountId())) {
|
if (isUUID(ep.getAccountId())) {
|
||||||
OfflinePlayer offline = Bukkit.getOfflinePlayer(UUID.fromString(ep.getAccountId()));
|
OfflinePlayer offline = Bukkit.getOfflinePlayer(UUID.fromString(ep.getAccountId()));
|
||||||
if (offline.getName() != null) {
|
if (offline.getName() != null)
|
||||||
currentBalance = econ.getBalance(Bukkit.getOfflinePlayer(UUID.fromString(ep.getAccountId())));
|
currentBalance = econ.getBalance(Bukkit.getOfflinePlayer(UUID.fromString(ep.getAccountId())));
|
||||||
} else {
|
else currentBalance = 0;
|
||||||
currentBalance = 0;
|
} else currentBalance = econ.getBalance(ep.getAccountId());
|
||||||
}
|
if (currentBalance >= delta) affordable = true;
|
||||||
} else {
|
|
||||||
currentBalance = econ.getBalance(ep.getAccountId());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentBalance >= delta) {
|
|
||||||
affordable = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!affordable) {
|
if (!affordable) {
|
||||||
if (toDoThis != null && !toDoThis.isEmpty()) {
|
if (toDoThis != null && !toDoThis.isEmpty())
|
||||||
ep.msg(TL.COMMAND_MONEY_CANTAFFORD, ep.describeTo(ep, true), moneyString(delta), toDoThis);
|
ep.msg(TL.COMMAND_MONEY_CANTAFFORD, ep.describeTo(ep, true), moneyString(delta), toDoThis);
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean modifyMoney(EconomyParticipator ep, double delta, String toDoThis, String forDoingThis) {
|
public static boolean modifyMoney(EconomyParticipator ep, double delta, String toDoThis, String forDoingThis) {
|
||||||
if (!shouldBeUsed()) {
|
if (!shouldBeUsed()) return false;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
OfflinePlayer acc;
|
OfflinePlayer acc;
|
||||||
|
|
||||||
if (isUUID(ep.getAccountId())) {
|
if (isUUID(ep.getAccountId())) {
|
||||||
acc = Bukkit.getOfflinePlayer(UUID.fromString(ep.getAccountId()));
|
acc = Bukkit.getOfflinePlayer(UUID.fromString(ep.getAccountId()));
|
||||||
if (acc.getName() == null) {
|
if (acc.getName() == null) return false;
|
||||||
return false;
|
} else acc = Bukkit.getOfflinePlayer(ep.getAccountId());
|
||||||
}
|
|
||||||
} else {
|
|
||||||
acc = Bukkit.getOfflinePlayer(ep.getAccountId());
|
|
||||||
}
|
|
||||||
|
|
||||||
String You = ep.describeTo(ep, true);
|
String You = ep.describeTo(ep, true);
|
||||||
|
|
||||||
if (delta == 0) {
|
if (delta == 0) return true;
|
||||||
// no money actually transferred?
|
else if (delta > 0) {
|
||||||
// ep.msg("<h>%s<i> didn't have to pay anything %s.", You, forDoingThis); // might be for gains, might be for losses
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (delta > 0) {
|
|
||||||
// The player should gain money
|
// The player should gain money
|
||||||
// The account might not have enough space
|
// The account might not have enough space
|
||||||
EconomyResponse er = econ.depositPlayer(acc, delta);
|
EconomyResponse er = econ.depositPlayer(acc, delta);
|
||||||
if (er.transactionSuccess()) {
|
if (er.transactionSuccess()) {
|
||||||
modifyUniverseMoney(-delta);
|
modifyUniverseMoney(-delta);
|
||||||
if (forDoingThis != null && !forDoingThis.isEmpty()) {
|
if (forDoingThis != null && !forDoingThis.isEmpty())
|
||||||
ep.msg(TL.COMMAND_MONEY_GAINED, 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(TL.ECON_DEPOSITFAILED, You, moneyString(delta), forDoingThis);
|
ep.msg(TL.ECON_DEPOSITFAILED, You, moneyString(delta), forDoingThis);
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// The player should loose money
|
// The player should loose money
|
||||||
// The player might not have enough.
|
// The player might not have enough.
|
||||||
|
|
||||||
if (econ.has(acc, -delta) && econ.withdrawPlayer(acc, -delta).transactionSuccess()) {
|
if (econ.has(acc, -delta) && econ.withdrawPlayer(acc, -delta).transactionSuccess()) {
|
||||||
// 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(TL.ECON_MONEYLOST, 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(TL.ECON_CANTAFFORD, You, moneyString(-delta), toDoThis);
|
ep.msg(TL.ECON_CANTAFFORD, You, moneyString(-delta), toDoThis);
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -359,10 +280,7 @@ public class Econ {
|
|||||||
|
|
||||||
// calculate the cost for claiming land
|
// calculate the cost for claiming land
|
||||||
public static double calculateClaimCost(int ownedLand, boolean takingFromAnotherFaction) {
|
public static double calculateClaimCost(int ownedLand, boolean takingFromAnotherFaction) {
|
||||||
if (!shouldBeUsed()) {
|
if (!shouldBeUsed()) return 0d;
|
||||||
return 0d;
|
|
||||||
}
|
|
||||||
|
|
||||||
// basic claim cost, plus land inflation cost, minus the potential bonus given for claiming from another faction
|
// basic claim cost, plus land inflation cost, minus the potential bonus given for claiming from another faction
|
||||||
return Conf.econCostClaimWilderness + (Conf.econCostClaimWilderness * Conf.econClaimAdditionalMultiplier * ownedLand) - (takingFromAnotherFaction ? Conf.econCostClaimFromFactionBonus : 0);
|
return Conf.econCostClaimWilderness + (Conf.econCostClaimWilderness * Conf.econClaimAdditionalMultiplier * ownedLand) - (takingFromAnotherFaction ? Conf.econCostClaimFromFactionBonus : 0);
|
||||||
}
|
}
|
||||||
@@ -375,9 +293,7 @@ public class Econ {
|
|||||||
// calculate value of all owned land
|
// calculate value of all owned land
|
||||||
public static double calculateTotalLandValue(int ownedLand) {
|
public static double calculateTotalLandValue(int ownedLand) {
|
||||||
double amount = 0;
|
double amount = 0;
|
||||||
for (int x = 0; x < ownedLand; x++) {
|
for (int x = 0; x < ownedLand; x++) amount += calculateClaimCost(x, false);
|
||||||
amount += calculateClaimCost(x, false);
|
|
||||||
}
|
|
||||||
return amount;
|
return amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -401,9 +317,7 @@ public class Econ {
|
|||||||
|
|
||||||
public static String getFriendlyBalance(UUID uuid) {
|
public static String getFriendlyBalance(UUID uuid) {
|
||||||
OfflinePlayer offline = Bukkit.getOfflinePlayer(uuid);
|
OfflinePlayer offline = Bukkit.getOfflinePlayer(uuid);
|
||||||
if (offline.getName() == null) {
|
if (offline.getName() == null) return "0";
|
||||||
return "0";
|
|
||||||
}
|
|
||||||
return format.format(econ.getBalance(offline));
|
return format.format(econ.getBalance(offline));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -413,19 +327,13 @@ public class Econ {
|
|||||||
|
|
||||||
public static boolean setBalance(String account, double amount) {
|
public static boolean setBalance(String account, double amount) {
|
||||||
double current = econ.getBalance(account);
|
double current = econ.getBalance(account);
|
||||||
if (current > amount) {
|
if (current > amount) return econ.withdrawPlayer(account, current - amount).transactionSuccess();
|
||||||
return econ.withdrawPlayer(account, current - amount).transactionSuccess();
|
else return econ.depositPlayer(account, amount - current).transactionSuccess();
|
||||||
} else {
|
|
||||||
return econ.depositPlayer(account, amount - current).transactionSuccess();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean modifyBalance(String account, double amount) {
|
public static boolean modifyBalance(String account, double amount) {
|
||||||
if (amount < 0) {
|
if (amount < 0) return econ.withdrawPlayer(account, -amount).transactionSuccess();
|
||||||
return econ.withdrawPlayer(account, -amount).transactionSuccess();
|
else return econ.depositPlayer(account, amount).transactionSuccess();
|
||||||
} else {
|
|
||||||
return econ.depositPlayer(account, amount).transactionSuccess();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean deposit(String account, double amount) {
|
public static boolean deposit(String account, double amount) {
|
||||||
|
|||||||
@@ -4,47 +4,30 @@ import com.earth2me.essentials.Teleport;
|
|||||||
import com.earth2me.essentials.Trade;
|
import com.earth2me.essentials.Trade;
|
||||||
import com.earth2me.essentials.User;
|
import com.earth2me.essentials.User;
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.iface.EconomyParticipator;
|
|
||||||
import net.ess3.api.IEssentials;
|
import net.ess3.api.IEssentials;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.metadata.MetadataValue;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
public class Essentials {
|
public class Essentials {
|
||||||
|
|
||||||
/**
|
|
||||||
* @author FactionsUUID Team
|
|
||||||
*/
|
|
||||||
|
|
||||||
private static IEssentials essentials;
|
private static IEssentials essentials;
|
||||||
|
|
||||||
public static void setup() {
|
public static void setup() {
|
||||||
Plugin ess = Bukkit.getPluginManager().getPlugin("Essentials");
|
essentials = (IEssentials) Bukkit.getPluginManager().getPlugin("Essentials");
|
||||||
if (ess != null) {
|
|
||||||
essentials = (IEssentials) ess;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isOverBalCap(EconomyParticipator participator, double amount) {
|
|
||||||
if (essentials == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return amount > essentials.getSettings().getMaxMoney().doubleValue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// return false if feature is disabled or Essentials isn't available
|
// return false if feature is disabled or Essentials isn't available
|
||||||
public static boolean handleTeleport(Player player, Location loc) {
|
public static boolean handleTeleport(Player player, Location loc) {
|
||||||
if (!Conf.homesTeleportCommandEssentialsIntegration || essentials == null) {
|
if (!Conf.homesTeleportCommandEssentialsIntegration || essentials == null) return false;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Teleport teleport = essentials.getUser(player).getTeleport();
|
Teleport teleport = essentials.getUser(player).getTeleport();
|
||||||
Trade trade = new Trade(new BigDecimal(Conf.econCostHome), essentials);
|
Trade trade = new Trade(BigDecimal.valueOf(Conf.econCostHome), essentials);
|
||||||
try {
|
try {
|
||||||
teleport.teleport(loc, trade, TeleportCause.PLUGIN);
|
teleport.teleport(loc, trade, TeleportCause.PLUGIN);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -54,8 +37,21 @@ public class Essentials {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isVanished(Player player) {
|
public static boolean isVanished(Player player) {
|
||||||
if (essentials == null) return false;
|
// Edge case handling.
|
||||||
User user = essentials.getUser(player);
|
if (player == null) return false;
|
||||||
return user != null && user.isVanished();
|
boolean vanish = false;
|
||||||
|
if (essentials != null) {
|
||||||
|
User user = essentials.getUser(player);
|
||||||
|
if (user != null && user.isVanished()) return true;
|
||||||
|
}
|
||||||
|
if (player.hasMetadata("vanished"))
|
||||||
|
for (MetadataValue meta : player.getMetadata("vanished")) {
|
||||||
|
if (meta == null) continue;
|
||||||
|
if (meta.asBoolean()) {
|
||||||
|
vanish = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return vanish;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ import org.dynmap.DynmapAPI;
|
|||||||
import org.dynmap.markers.*;
|
import org.dynmap.markers.*;
|
||||||
import org.dynmap.utils.TileFlags;
|
import org.dynmap.utils.TileFlags;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.util.List;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
@@ -50,6 +52,8 @@ public class EngineDynmap {
|
|||||||
public MarkerAPI markerApi;
|
public MarkerAPI markerApi;
|
||||||
public MarkerSet markerset;
|
public MarkerSet markerset;
|
||||||
|
|
||||||
|
List<List<Point>> polyLine = new ArrayList<List<Point>>();
|
||||||
|
|
||||||
private EngineDynmap() {
|
private EngineDynmap() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,9 +84,7 @@ public class EngineDynmap {
|
|||||||
for (int i = 0; i < string.length(); i++) {
|
for (int i = 0; i < string.length(); i++) {
|
||||||
char c = string.charAt(i);
|
char c = string.charAt(i);
|
||||||
if (c > 127 || c == '"' || c == '<' || c == '>' || c == '&') {
|
if (c > 127 || c == '"' || c == '<' || c == '>' || c == '&') {
|
||||||
out.append("&#")
|
out.append("&#").append((int) c).append(';');
|
||||||
.append((int) c)
|
|
||||||
.append(';');
|
|
||||||
} else {
|
} else {
|
||||||
out.append(c);
|
out.append(c);
|
||||||
}
|
}
|
||||||
@@ -121,10 +123,12 @@ public class EngineDynmap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Shedule non thread safe sync at the end!
|
// Shedule non thread safe sync at the end!
|
||||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(FactionsPlugin.getInstance(), () -> {
|
Bukkit.getScheduler().scheduleSyncRepeatingTask(FactionsPlugin.getInstance(), () ->
|
||||||
|
{
|
||||||
|
|
||||||
final Map<String, TempMarker> homes = createHomes();
|
final Map<String, TempMarker> homes = createHomes();
|
||||||
final Map<String, TempAreaMarker> areas = createAreas();
|
final Map<String, TempAreaMarker> areas = createAreas();
|
||||||
|
final Map<String, TempPolyLineMarker> polys = createPolys(areas);
|
||||||
final Map<String, Set<String>> playerSets = createPlayersets();
|
final Map<String, Set<String>> playerSets = createPlayersets();
|
||||||
|
|
||||||
if (!updateCore()) {
|
if (!updateCore()) {
|
||||||
@@ -138,6 +142,7 @@ public class EngineDynmap {
|
|||||||
|
|
||||||
updateHomes(homes);
|
updateHomes(homes);
|
||||||
updateAreas(areas);
|
updateAreas(areas);
|
||||||
|
updatePolys(polys);
|
||||||
updatePlayersets(playerSets);
|
updatePlayersets(playerSets);
|
||||||
}, 100L, 100L);
|
}, 100L, 100L);
|
||||||
}
|
}
|
||||||
@@ -239,6 +244,7 @@ public class EngineDynmap {
|
|||||||
// NOTE: That way what is left at the end will be outdated markers to remove.
|
// NOTE: That way what is left at the end will be outdated markers to remove.
|
||||||
Marker marker = markers.remove(markerId);
|
Marker marker = markers.remove(markerId);
|
||||||
if (marker == null) {
|
if (marker == null) {
|
||||||
|
marker = temp.create(this.markerApi, this.markerset, markerId);
|
||||||
marker = temp.create(this.markerApi, this.markerset, markerId);
|
marker = temp.create(this.markerApi, this.markerset, markerId);
|
||||||
if (marker == null) {
|
if (marker == null) {
|
||||||
EngineDynmap.severe("Could not get/create the home marker " + markerId);
|
EngineDynmap.severe("Could not get/create the home marker " + markerId);
|
||||||
@@ -260,6 +266,29 @@ public class EngineDynmap {
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
// Thread Safe: YES
|
// Thread Safe: YES
|
||||||
|
|
||||||
|
public Map<String, TempPolyLineMarker> createPolys(Map<String, TempAreaMarker> areas) {
|
||||||
|
Map<String, TempPolyLineMarker> ret = new HashMap<String, TempPolyLineMarker>();
|
||||||
|
for (Entry<String, TempAreaMarker> entry : areas.entrySet()) {
|
||||||
|
String markerID = entry.getKey();
|
||||||
|
TempAreaMarker area = entry.getValue();
|
||||||
|
|
||||||
|
int counter = 0;
|
||||||
|
for (List<Point> points : area.getPolyLine()) {
|
||||||
|
markerID = markerID + "_poly_" + counter;
|
||||||
|
TempPolyLineMarker tempPoly = new TempPolyLineMarker();
|
||||||
|
tempPoly.polyLine = points;
|
||||||
|
tempPoly.lineColor = area.lineColor;
|
||||||
|
tempPoly.lineOpacity = area.lineOpacity;
|
||||||
|
tempPoly.lineWeight = area.lineWeight;
|
||||||
|
tempPoly.world = area.world;
|
||||||
|
ret.put(markerID, tempPoly);
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
public Map<String, TempAreaMarker> createAreas() {
|
public Map<String, TempAreaMarker> createAreas() {
|
||||||
Map<String, Map<Faction, Set<FLocation>>> worldFactionChunks = createWorldFactionChunks();
|
Map<String, Map<Faction, Set<FLocation>>> worldFactionChunks = createWorldFactionChunks();
|
||||||
return createAreas(worldFactionChunks);
|
return createAreas(worldFactionChunks);
|
||||||
@@ -351,12 +380,11 @@ public class EngineDynmap {
|
|||||||
|
|
||||||
// Loop through until we don't find more areas
|
// Loop through until we don't find more areas
|
||||||
while (allChunks != null) {
|
while (allChunks != null) {
|
||||||
|
|
||||||
TileFlags ourChunkFlags = null;
|
TileFlags ourChunkFlags = null;
|
||||||
LinkedList<FLocation> ourChunks = null;
|
LinkedList<FLocation> ourChunks = null;
|
||||||
LinkedList<FLocation> newChunks = null;
|
LinkedList<FLocation> newChunks = null;
|
||||||
|
|
||||||
int minimumX = Integer.MAX_VALUE;
|
|
||||||
int minimumZ = Integer.MAX_VALUE;
|
|
||||||
for (FLocation chunk : allChunks) {
|
for (FLocation chunk : allChunks) {
|
||||||
int chunkX = (int) chunk.getX();
|
int chunkX = (int) chunk.getX();
|
||||||
int chunkZ = (int) chunk.getZ();
|
int chunkZ = (int) chunk.getZ();
|
||||||
@@ -367,18 +395,10 @@ public class EngineDynmap {
|
|||||||
ourChunks = new LinkedList<>();
|
ourChunks = new LinkedList<>();
|
||||||
floodFillTarget(allChunkFlags, ourChunkFlags, chunkX, chunkZ); // Copy shape
|
floodFillTarget(allChunkFlags, ourChunkFlags, chunkX, chunkZ); // Copy shape
|
||||||
ourChunks.add(chunk); // Add it to our chunk list
|
ourChunks.add(chunk); // Add it to our chunk list
|
||||||
minimumX = chunkX;
|
|
||||||
minimumZ = chunkZ;
|
|
||||||
}
|
}
|
||||||
// If shape found, and we're in it, add to our node list
|
// If shape found, and we're in it, add to our node list
|
||||||
else if (ourChunkFlags != null && ourChunkFlags.getFlag(chunkX, chunkZ)) {
|
else if (ourChunkFlags != null && ourChunkFlags.getFlag(chunkX, chunkZ)) {
|
||||||
ourChunks.add(chunk);
|
ourChunks.add(chunk);
|
||||||
if (chunkX < minimumX) {
|
|
||||||
minimumX = chunkX;
|
|
||||||
minimumZ = chunkZ;
|
|
||||||
} else if (chunkX == minimumX && chunkZ < minimumZ) {
|
|
||||||
minimumZ = chunkZ;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// Else, keep it in the list for the next polygon
|
// Else, keep it in the list for the next polygon
|
||||||
else {
|
else {
|
||||||
@@ -391,86 +411,129 @@ public class EngineDynmap {
|
|||||||
|
|
||||||
// Replace list (null if no more to process)
|
// Replace list (null if no more to process)
|
||||||
allChunks = newChunks;
|
allChunks = newChunks;
|
||||||
|
|
||||||
if (ourChunkFlags == null) {
|
if (ourChunkFlags == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
List<TempLine> outputLines = new ArrayList<TempLine>();
|
||||||
|
Map<TempLine, Integer> lines = new HashMap<TempLine, Integer>();
|
||||||
|
|
||||||
// Trace outline of blocks - start from minx, minz going to x+
|
if (ourChunks == null) {
|
||||||
int initialX = minimumX;
|
continue;
|
||||||
int initialZ = minimumZ;
|
}
|
||||||
int currentX = minimumX;
|
|
||||||
int currentZ = minimumZ;
|
for (FLocation loc : ourChunks) {
|
||||||
Direction direction = Direction.XPLUS;
|
int x = loc.getChunk().getX();
|
||||||
ArrayList<int[]> linelist = new ArrayList<>();
|
int z = loc.getChunk().getZ();
|
||||||
linelist.add(new int[]{initialX, initialZ}); // Add start point
|
|
||||||
while ((currentX != initialX) || (currentZ != initialZ) || (direction != Direction.ZMINUS)) {
|
TempLine line = new TempLine(new Point(x * 16, z * 16), new Point(x * 16 + 16, z * 16));
|
||||||
switch (direction) {
|
if (lines.containsKey(line)) {
|
||||||
case XPLUS: // Segment in X+ direction
|
lines.put(line, lines.get(line) + 1);
|
||||||
if (!ourChunkFlags.getFlag(currentX + 1, currentZ)) { // Right turn?
|
} else {
|
||||||
linelist.add(new int[]{currentX + 1, currentZ}); // Finish line
|
lines.put(line, 1);
|
||||||
direction = Direction.ZPLUS; // Change direction
|
}
|
||||||
} else if (!ourChunkFlags.getFlag(currentX + 1, currentZ - 1)) { // Straight?
|
|
||||||
currentX++;
|
line = new TempLine(new Point(x * 16 + 16, z * 16), new Point(x * 16 + 16, z * 16 + 16));
|
||||||
} else { // Left turn
|
if (lines.containsKey(line)) {
|
||||||
linelist.add(new int[]{currentX + 1, currentZ}); // Finish line
|
lines.put(line, lines.get(line) + 1);
|
||||||
direction = Direction.ZMINUS;
|
} else {
|
||||||
currentX++;
|
lines.put(line, 1);
|
||||||
currentZ--;
|
}
|
||||||
}
|
|
||||||
break;
|
line = new TempLine(new Point(x * 16 + 16, z * 16 + 16), new Point(x * 16, z * 16 + 16));
|
||||||
case ZPLUS: // Segment in Z+ direction
|
if (lines.containsKey(line)) {
|
||||||
if (!ourChunkFlags.getFlag(currentX, currentZ + 1)) { // Right turn?
|
lines.put(line, lines.get(line) + 1);
|
||||||
linelist.add(new int[]{currentX + 1, currentZ + 1}); // Finish line
|
} else {
|
||||||
direction = Direction.XMINUS; // Change direction
|
lines.put(line, 1);
|
||||||
} else if (!ourChunkFlags.getFlag(currentX + 1, currentZ + 1)) { // Straight?
|
}
|
||||||
currentZ++;
|
|
||||||
} else { // Left turn
|
line = new TempLine(new Point(x * 16, z * 16 + 16), new Point(x * 16, z * 16));
|
||||||
linelist.add(new int[]{currentX + 1, currentZ + 1}); // Finish line
|
if (lines.containsKey(line)) {
|
||||||
direction = Direction.XPLUS;
|
lines.put(line, lines.get(line) + 1);
|
||||||
currentX++;
|
} else {
|
||||||
currentZ++;
|
lines.put(line, 1);
|
||||||
}
|
|
||||||
break;
|
|
||||||
case XMINUS: // Segment in X- direction
|
|
||||||
if (!ourChunkFlags.getFlag(currentX - 1, currentZ)) { // Right turn?
|
|
||||||
linelist.add(new int[]{currentX, currentZ + 1}); // Finish line
|
|
||||||
direction = Direction.ZMINUS; // Change direction
|
|
||||||
} else if (!ourChunkFlags.getFlag(currentX - 1, currentZ + 1)) { // Straight?
|
|
||||||
currentX--;
|
|
||||||
} else { // Left turn
|
|
||||||
linelist.add(new int[]{currentX, currentZ + 1}); // Finish line
|
|
||||||
direction = Direction.ZPLUS;
|
|
||||||
currentX--;
|
|
||||||
currentZ++;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ZMINUS: // Segment in Z- direction
|
|
||||||
if (!ourChunkFlags.getFlag(currentX, currentZ - 1)) { // Right turn?
|
|
||||||
linelist.add(new int[]{currentX, currentZ}); // Finish line
|
|
||||||
direction = Direction.XPLUS; // Change direction
|
|
||||||
} else if (!ourChunkFlags.getFlag(currentX - 1, currentZ - 1)) { // Straight?
|
|
||||||
currentZ--;
|
|
||||||
} else { // Left turn
|
|
||||||
linelist.add(new int[]{currentX, currentZ}); // Finish line
|
|
||||||
direction = Direction.XMINUS;
|
|
||||||
currentX--;
|
|
||||||
currentZ--;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int sz = linelist.size();
|
Iterator<Entry<TempLine, Integer>> iterator = lines.entrySet().iterator();
|
||||||
double[] x = new double[sz];
|
|
||||||
double[] z = new double[sz];
|
List<TempLine> lineList = new ArrayList<TempLine>();
|
||||||
for (int i = 0; i < sz; i++) {
|
lineList.addAll(lines.keySet());
|
||||||
int[] line = linelist.get(i);
|
|
||||||
x[i] = (double) line[0] * (double) BLOCKS_PER_CHUNK;
|
while (iterator.hasNext()) {
|
||||||
z[i] = (double) line[1] * (double) BLOCKS_PER_CHUNK;
|
Entry<TempLine, Integer> entry = iterator.next();
|
||||||
|
if (entry.getValue() > 1) {
|
||||||
|
lineList.remove(entry.getKey());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Find the leftmost MCRWPoint
|
||||||
|
|
||||||
|
TempLine l = null;
|
||||||
|
for (Iterator<TempLine> it = lineList.iterator(); it.hasNext(); ) {
|
||||||
|
TempLine tl = it.next();
|
||||||
|
if (l == null || tl.getP1().x < l.getP1().x)
|
||||||
|
l = tl;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Iterator<TempLine> it = lineList.iterator(); it.hasNext(); ) {
|
||||||
|
TempLine tl = it.next();
|
||||||
|
if (tl.getP2().x < l.getP2().x)
|
||||||
|
l = tl;
|
||||||
|
}
|
||||||
|
|
||||||
|
outputLines.add(l);
|
||||||
|
lineList.remove(l);
|
||||||
|
while (lineList.size() > 0) {
|
||||||
|
// MCRWPoint targetp = new MCRWPoint((int) lastLine.x1, (int) lastLine.y1);
|
||||||
|
// MCRWPointWLines.get(targetp);
|
||||||
|
|
||||||
|
TempLine nextLine = null;
|
||||||
|
for (Iterator<TempLine> it = lineList.iterator(); it.hasNext(); ) {
|
||||||
|
TempLine line = it.next();
|
||||||
|
if (l.getP2().x == line.getP1().x && l.getP2().y == line.getP1().y) {
|
||||||
|
|
||||||
|
nextLine = line;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nextLine != null) {
|
||||||
|
outputLines.add(nextLine);
|
||||||
|
lineList.remove(nextLine);
|
||||||
|
l = nextLine;
|
||||||
|
} else {
|
||||||
|
outputLines.get(outputLines.size() - 1).addAdditionLines(CamScan1(lineList));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
List<Point> outputPoints = new ArrayList<Point>();
|
||||||
|
|
||||||
|
List<Point> polyPoints = new ArrayList<Point>();
|
||||||
|
|
||||||
|
for (int i = 0; i < outputLines.size(); i++) {
|
||||||
|
Point p = new Point(outputLines.get(i).getP1().x, outputLines.get(i).getP1().y);
|
||||||
|
outputPoints.add(p);
|
||||||
|
polyPoints.add(p);
|
||||||
|
if (outputLines.get(i).getConnectedLines().size() > 0) {
|
||||||
|
|
||||||
|
outputPoints.addAll(addRecursivePoints(new Point(outputLines.get(i).getP1().x, outputLines.get(i).getP1().y), outputLines.get(i)));
|
||||||
|
}
|
||||||
|
p = new Point(outputLines.get(i).getP2().x, outputLines.get(i).getP2().y);
|
||||||
|
outputPoints.add(p);
|
||||||
|
polyPoints.add(p);
|
||||||
|
}
|
||||||
|
polyLine.add(polyPoints);
|
||||||
|
|
||||||
// Build information for specific area
|
// Build information for specific area
|
||||||
|
double[] x = new double[outputPoints.size()];
|
||||||
|
double[] z = new double[outputPoints.size()];
|
||||||
|
|
||||||
|
for (int i = 0; i < outputPoints.size(); i++) {
|
||||||
|
x[i] = outputPoints.get(i).x;
|
||||||
|
z[i] = outputPoints.get(i).y;
|
||||||
|
}
|
||||||
|
|
||||||
String markerId = FACTIONS_ + world + "__" + faction.getId() + "__" + markerIndex;
|
String markerId = FACTIONS_ + world + "__" + faction.getId() + "__" + markerIndex;
|
||||||
|
|
||||||
TempAreaMarker temp = new TempAreaMarker();
|
TempAreaMarker temp = new TempAreaMarker();
|
||||||
@@ -488,8 +551,10 @@ public class EngineDynmap {
|
|||||||
temp.fillOpacity = style.getFillOpacity();
|
temp.fillOpacity = style.getFillOpacity();
|
||||||
|
|
||||||
temp.boost = style.getBoost();
|
temp.boost = style.getBoost();
|
||||||
|
temp.setPolyLine(polyLine);
|
||||||
|
|
||||||
ret.put(markerId, temp);
|
ret.put(markerId, temp);
|
||||||
|
polyLine.clear();
|
||||||
|
|
||||||
markerIndex++;
|
markerIndex++;
|
||||||
}
|
}
|
||||||
@@ -497,10 +562,114 @@ public class EngineDynmap {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Point> addRecursivePoints(Point returnPoint, TempLine line) {
|
||||||
|
List<Point> ret = new ArrayList<Point>();
|
||||||
|
boolean shouldReturn = false;
|
||||||
|
List<TempLine> connectedLines = line.getConnectedLines();
|
||||||
|
List<Point> polyPoints = new ArrayList<Point>();
|
||||||
|
for (TempLine line2 : connectedLines) {
|
||||||
|
Point p = new Point(line2.getP1().x, line2.getP1().y);
|
||||||
|
ret.add(p);
|
||||||
|
polyPoints.add(p);
|
||||||
|
shouldReturn = true;
|
||||||
|
if (line2.getConnectedLines().size() > 0) {
|
||||||
|
ret.addAll(addRecursivePoints(new Point(line2.getP1().x, line2.getP1().y), line2));
|
||||||
|
}
|
||||||
|
p = new Point(line2.getP2().x, line2.getP2().y);
|
||||||
|
ret.add(p);
|
||||||
|
polyPoints.add(p);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (shouldReturn) {
|
||||||
|
ret.add(returnPoint);
|
||||||
|
}
|
||||||
|
polyLine.add(polyPoints);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<TempLine> CamScan1(List<TempLine> lineList) {
|
||||||
|
List<TempLine> ret = new ArrayList<TempLine>();
|
||||||
|
|
||||||
|
// Find the leftmost MCRWPoint
|
||||||
|
|
||||||
|
TempLine l = null;
|
||||||
|
for (Iterator<TempLine> it = lineList.iterator(); it.hasNext(); ) {
|
||||||
|
|
||||||
|
TempLine tl = it.next();
|
||||||
|
if (l == null || tl.getP1().x < l.getP1().x)
|
||||||
|
l = tl;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Iterator<TempLine> it = lineList.iterator(); it.hasNext(); ) {
|
||||||
|
TempLine tl = it.next();
|
||||||
|
if (tl.getP2().x < l.getP2().x)
|
||||||
|
l = tl;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret.add(l);
|
||||||
|
lineList.remove(l);
|
||||||
|
while (lineList.size() > 0) {
|
||||||
|
// MCRWPoint targetp = new MCRWPoint((int) lastLine.x1, (int) lastLine.y1);
|
||||||
|
// MCRWPointWLines.get(targetp);
|
||||||
|
|
||||||
|
TempLine thisChunkLine = null;
|
||||||
|
for (Iterator<TempLine> it = lineList.iterator(); it.hasNext(); ) {
|
||||||
|
TempLine line = it.next();
|
||||||
|
if (l.getP2().x == line.getP1().x && l.getP2().y == line.getP1().y) {
|
||||||
|
|
||||||
|
thisChunkLine = line;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if (thisChunkLine != null) {
|
||||||
|
ret.add(thisChunkLine);
|
||||||
|
lineList.remove(thisChunkLine);
|
||||||
|
l = thisChunkLine;
|
||||||
|
} else {
|
||||||
|
// break;
|
||||||
|
ret.get(ret.size() - 1).addAdditionLines(CamScan1(lineList));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// UTIL & SHARED
|
// UTIL & SHARED
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public void updatePolys(Map<String, TempPolyLineMarker> polys) {
|
||||||
|
// Map Current
|
||||||
|
Map<String, PolyLineMarker> markers = new HashMap<>();
|
||||||
|
for (PolyLineMarker marker : this.markerset.getPolyLineMarkers()) {
|
||||||
|
markers.put(marker.getMarkerID(), marker);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Loop New
|
||||||
|
for (Entry<String, TempPolyLineMarker> entry : polys.entrySet()) {
|
||||||
|
String markerId = entry.getKey();
|
||||||
|
TempPolyLineMarker temp = entry.getValue();
|
||||||
|
|
||||||
|
// Get Creative
|
||||||
|
// NOTE: I remove from the map created just in the beginning of this method.
|
||||||
|
// NOTE: That way what is left at the end will be outdated markers to remove.
|
||||||
|
PolyLineMarker marker = markers.remove(markerId);
|
||||||
|
if (marker == null) {
|
||||||
|
marker = temp.create(this.markerset, markerId);
|
||||||
|
if (marker == null) {
|
||||||
|
severe("Could not get/create the area marker " + markerId);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
temp.update(marker);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only old/outdated should now be left. Delete them.
|
||||||
|
for (PolyLineMarker marker : markers.values()) {
|
||||||
|
marker.deleteMarker();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Thread Safe: NO
|
// Thread Safe: NO
|
||||||
public void updateAreas(Map<String, TempAreaMarker> areas) {
|
public void updateAreas(Map<String, TempAreaMarker> areas) {
|
||||||
// Map Current
|
// Map Current
|
||||||
@@ -658,7 +827,6 @@ public class EngineDynmap {
|
|||||||
money = String.format("%.2f", Econ.getBalance(faction.getAccountId()));
|
money = String.format("%.2f", Econ.getBalance(faction.getAccountId()));
|
||||||
ret = ret.replace("%money%", money);
|
ret = ret.replace("%money%", money);
|
||||||
|
|
||||||
|
|
||||||
// Players
|
// Players
|
||||||
Set<FPlayer> playersList = faction.getFPlayers();
|
Set<FPlayer> playersList = faction.getFPlayers();
|
||||||
String playersCount = String.valueOf(playersList.size());
|
String playersCount = String.valueOf(playersList.size());
|
||||||
@@ -675,7 +843,6 @@ public class EngineDynmap {
|
|||||||
String playersModeratorsCount = String.valueOf(playersModeratorsList.size());
|
String playersModeratorsCount = String.valueOf(playersModeratorsList.size());
|
||||||
String playersModerators = getHtmlPlayerString(playersModeratorsList);
|
String playersModerators = getHtmlPlayerString(playersModeratorsList);
|
||||||
|
|
||||||
|
|
||||||
ArrayList<FPlayer> playersNormalsList = faction.getFPlayersWhereRole(Role.NORMAL);
|
ArrayList<FPlayer> playersNormalsList = faction.getFPlayersWhereRole(Role.NORMAL);
|
||||||
String playersNormalsCount = String.valueOf(playersNormalsList.size());
|
String playersNormalsCount = String.valueOf(playersNormalsList.size());
|
||||||
String playersNormals = getHtmlPlayerString(playersNormalsList);
|
String playersNormals = getHtmlPlayerString(playersNormalsList);
|
||||||
|
|||||||
@@ -3,6 +3,10 @@ package com.massivecraft.factions.integration.dynmap;
|
|||||||
import org.dynmap.markers.AreaMarker;
|
import org.dynmap.markers.AreaMarker;
|
||||||
import org.dynmap.markers.MarkerSet;
|
import org.dynmap.markers.MarkerSet;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class TempAreaMarker {
|
public class TempAreaMarker {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,15 +22,13 @@ public class TempAreaMarker {
|
|||||||
public double[] x;
|
public double[] x;
|
||||||
public double[] z;
|
public double[] z;
|
||||||
public String description;
|
public String description;
|
||||||
|
|
||||||
public int lineColor;
|
public int lineColor;
|
||||||
public double lineOpacity;
|
public double lineOpacity;
|
||||||
public int lineWeight;
|
public int lineWeight;
|
||||||
|
|
||||||
public int fillColor;
|
public int fillColor;
|
||||||
public double fillOpacity;
|
public double fillOpacity;
|
||||||
|
|
||||||
public boolean boost;
|
public boolean boost;
|
||||||
|
private List<List<Point>> polyLine = new ArrayList<List<Point>>();
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// CREATE
|
// CREATE
|
||||||
@@ -54,6 +56,15 @@ public class TempAreaMarker {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<List<Point>> getPolyLine() {
|
||||||
|
return polyLine;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPolyLine(List<List<Point>> points) {
|
||||||
|
polyLine.clear();
|
||||||
|
polyLine.addAll(points);
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// UPDATE
|
// UPDATE
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
@@ -61,16 +72,17 @@ public class TempAreaMarker {
|
|||||||
public AreaMarker create(MarkerSet markerset, String markerId) {
|
public AreaMarker create(MarkerSet markerset, String markerId) {
|
||||||
AreaMarker ret = markerset.createAreaMarker(markerId, this.label, false, this.world, this.x, this.z, false // not persistent
|
AreaMarker ret = markerset.createAreaMarker(markerId, this.label, false, this.world, this.x, this.z, false // not persistent
|
||||||
);
|
);
|
||||||
|
|
||||||
if (ret == null) {
|
if (ret == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int counter = 0;
|
||||||
|
|
||||||
// Description
|
// Description
|
||||||
ret.setDescription(this.description);
|
ret.setDescription(this.description);
|
||||||
|
|
||||||
// Line Style
|
// Line Style
|
||||||
ret.setLineStyle(this.lineWeight, this.lineOpacity, this.lineColor);
|
ret.setLineStyle(0, 0, 0);
|
||||||
|
|
||||||
// Fill Style
|
// Fill Style
|
||||||
ret.setFillStyle(this.fillOpacity, this.fillColor);
|
ret.setFillStyle(this.fillOpacity, this.fillColor);
|
||||||
@@ -80,7 +92,6 @@ public class TempAreaMarker {
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// UTIL
|
// UTIL
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
@@ -95,18 +106,15 @@ public class TempAreaMarker {
|
|||||||
if (!marker.getLabel().equals(this.label)) {
|
if (!marker.getLabel().equals(this.label)) {
|
||||||
marker.setLabel(this.label);
|
marker.setLabel(this.label);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Description
|
|
||||||
if (!marker.getDescription().equals(this.description)) {
|
if (!marker.getDescription().equals(this.description)) {
|
||||||
marker.setDescription(this.description);
|
marker.setDescription(this.description);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Line Style
|
// // Line Style
|
||||||
if (marker.getLineWeight() != this.lineWeight ||
|
// if (marker.getLineWeight() != this.lineWeight || marker.getLineOpacity() != this.lineOpacity || marker.getLineColor() != this.lineColor)
|
||||||
marker.getLineOpacity() != this.lineOpacity ||
|
// {
|
||||||
marker.getLineColor() != this.lineColor) {
|
// marker.setLineStyle(this.lineWeight, this.lineOpacity, this.lineColor);
|
||||||
marker.setLineStyle(this.lineWeight, this.lineOpacity, this.lineColor);
|
// }
|
||||||
}
|
|
||||||
|
|
||||||
// Fill Style
|
// Fill Style
|
||||||
if ((marker.getFillOpacity() != this.fillOpacity) || (marker.getFillColor() != this.fillColor)) {
|
if ((marker.getFillOpacity() != this.fillOpacity) || (marker.getFillColor() != this.fillColor)) {
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
package com.massivecraft.factions.integration.dynmap;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class TempLine {
|
||||||
|
private Point p1;
|
||||||
|
private Point p2;
|
||||||
|
private List<TempLine> connectedLines = new ArrayList<TempLine>();
|
||||||
|
|
||||||
|
TempLine(Point p1, Point p2) {
|
||||||
|
this.p1 = p1;
|
||||||
|
this.p2 = p2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Point getP1() {
|
||||||
|
return p1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Point getP2() {
|
||||||
|
return p2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addAdditionLines(List<TempLine> connectedLines) {
|
||||||
|
this.connectedLines = connectedLines;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<TempLine> getConnectedLines() {
|
||||||
|
return connectedLines;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
TempLine line = (TempLine) o;
|
||||||
|
if (line.p1.x == this.p1.x && line.p2.x == this.p2.x && line.p1.y == this.p1.y && line.p2.y == this.p2.y) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return line.p1.x == this.p2.x && line.p2.x == this.p1.x && line.p1.y == this.p2.y && line.p2.y == this.p1.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
String test = "" + (p1.x + p2.x);
|
||||||
|
test += " " + (p1.y + p2.y);
|
||||||
|
return test.hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
package com.massivecraft.factions.integration.dynmap;
|
||||||
|
|
||||||
|
import org.dynmap.markers.MarkerSet;
|
||||||
|
import org.dynmap.markers.PolyLineMarker;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class TempPolyLineMarker {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author FactionsUUID Team
|
||||||
|
*/
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// FIELDS
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public String world;
|
||||||
|
|
||||||
|
public List<Point> polyLine = new ArrayList<Point>();
|
||||||
|
|
||||||
|
public int lineColor;
|
||||||
|
public double lineOpacity;
|
||||||
|
public int lineWeight;
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// CREATE
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public static boolean equals(PolyLineMarker marker, List<Point> points) {
|
||||||
|
int length = marker.getCornerCount();
|
||||||
|
|
||||||
|
if (points.size() != length) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < length; i++) {
|
||||||
|
if (marker.getCornerX(i) != points.get(i).x) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (marker.getCornerZ(i) != points.get(i).y) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// UPDATE
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public PolyLineMarker create(MarkerSet markerset, String markerId) {
|
||||||
|
double[] polyX = new double[polyLine.size()];
|
||||||
|
double[] polyY = new double[polyLine.size()];
|
||||||
|
double[] polyZ = new double[polyLine.size()];
|
||||||
|
for (int i = 0; i < polyLine.size(); i++) {
|
||||||
|
Point p = polyLine.get(i);
|
||||||
|
polyX[i] = p.getX();
|
||||||
|
polyY[i] = 64;
|
||||||
|
polyZ[i] = p.getY();
|
||||||
|
}
|
||||||
|
PolyLineMarker poly = markerset.createPolyLineMarker(markerId, "", false, this.world, polyX, polyY, polyZ, false);
|
||||||
|
// Poly Line Style
|
||||||
|
if (poly != null) {
|
||||||
|
poly.setLineStyle(this.lineWeight, this.lineOpacity, this.lineColor);
|
||||||
|
}
|
||||||
|
return poly;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// UTIL
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public void update(PolyLineMarker marker) {
|
||||||
|
// Corner Locations
|
||||||
|
if (!equals(marker, polyLine)) {
|
||||||
|
double[] polyX = new double[polyLine.size()];
|
||||||
|
double[] polyY = new double[polyLine.size()];
|
||||||
|
double[] polyZ = new double[polyLine.size()];
|
||||||
|
for (int i = 0; i < polyLine.size(); i++) {
|
||||||
|
Point p = polyLine.get(i);
|
||||||
|
polyX[i] = p.getX();
|
||||||
|
polyY[i] = 64;
|
||||||
|
polyZ[i] = p.getY();
|
||||||
|
}
|
||||||
|
marker.setCornerLocations(polyX, polyY, polyZ);
|
||||||
|
marker.setLineStyle(this.lineWeight, this.lineOpacity, this.lineColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Line Style
|
||||||
|
if (marker.getLineWeight() != this.lineWeight || marker.getLineOpacity() != this.lineOpacity || marker.getLineColor() != this.lineColor) {
|
||||||
|
marker.setLineStyle(this.lineWeight, this.lineOpacity, this.lineColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.massivecraft.factions.listeners;
|
package com.massivecraft.factions.listeners;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
import com.massivecraft.factions.*;
|
import com.massivecraft.factions.*;
|
||||||
import com.massivecraft.factions.cmd.audit.FLogManager;
|
import com.massivecraft.factions.cmd.audit.FLogManager;
|
||||||
import com.massivecraft.factions.cmd.audit.LogTimer;
|
import com.massivecraft.factions.cmd.audit.LogTimer;
|
||||||
@@ -8,7 +9,6 @@ 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.util.ItemBuilder;
|
import com.massivecraft.factions.util.ItemBuilder;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
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;
|
||||||
@@ -27,7 +27,6 @@ import org.bukkit.event.EventPriority;
|
|||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.*;
|
import org.bukkit.event.block.*;
|
||||||
import org.bukkit.event.entity.EntityChangeBlockEvent;
|
import org.bukkit.event.entity.EntityChangeBlockEvent;
|
||||||
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;
|
||||||
@@ -180,12 +179,18 @@ public class FactionsBlockListener implements Listener {
|
|||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
public void onBlockFromTo(BlockFromToEvent event) {
|
public void onBlockFromTo(BlockFromToEvent event) {
|
||||||
if (!Conf.handleExploitLiquidFlow) return;
|
if (!Conf.handleExploitLiquidFlow) return;
|
||||||
|
|
||||||
if (event.getBlock().isLiquid()) {
|
if (event.getBlock().isLiquid()) {
|
||||||
if (event.getToBlock().isEmpty()) {
|
if (event.getToBlock().isEmpty()) {
|
||||||
Faction from = Board.getInstance().getFactionAt(new FLocation(event.getBlock()));
|
Faction from = Board.getInstance().getFactionAt(new FLocation(event.getBlock()));
|
||||||
Faction to = Board.getInstance().getFactionAt(new FLocation(event.getToBlock()));
|
Faction to = Board.getInstance().getFactionAt(new FLocation(event.getToBlock()));
|
||||||
if (from == to) return;
|
if (from == to) return;
|
||||||
// from faction != to faction
|
// from faction != to faction
|
||||||
|
if (to.isSystemFaction()) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (to.isNormal()) {
|
if (to.isNormal()) {
|
||||||
if (from.isNormal() && from.getRelationTo(to).isAlly()) {
|
if (from.isNormal() && from.getRelationTo(to).isAlly()) {
|
||||||
return;
|
return;
|
||||||
@@ -425,7 +430,8 @@ public class FactionsBlockListener implements Listener {
|
|||||||
if (!justCheck) fPlayer.setLastFrostwalkerMessage();
|
if (!justCheck) fPlayer.setLastFrostwalkerMessage();
|
||||||
|
|
||||||
// Check if they have build permissions here. If not, block this from happening.
|
// Check if they have build permissions here. If not, block this from happening.
|
||||||
if (!playerCanBuildDestroyBlock(player, location, PermissableAction.FROST_WALK.toString(), justCheck)) event.setCancelled(true);
|
if (!playerCanBuildDestroyBlock(player, location, PermissableAction.FROST_WALK.toString(), justCheck))
|
||||||
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|||||||
@@ -257,6 +257,7 @@ public class FactionsEntityListener implements Listener {
|
|||||||
|
|
||||||
private boolean checkExplosionForBlock(Entity boomer, Block block) {
|
private boolean checkExplosionForBlock(Entity boomer, Block block) {
|
||||||
Faction faction = Board.getInstance().getFactionAt(new FLocation(block.getLocation()));
|
Faction faction = Board.getInstance().getFactionAt(new FLocation(block.getLocation()));
|
||||||
|
if (faction.isProtected()) return false;
|
||||||
|
|
||||||
if (faction.noExplosionsInTerritory() || (faction.isPeaceful() && Conf.peacefulTerritoryDisableBoom))
|
if (faction.noExplosionsInTerritory() || (faction.isPeaceful() && Conf.peacefulTerritoryDisableBoom))
|
||||||
return false;
|
return false;
|
||||||
@@ -327,7 +328,6 @@ public class FactionsEntityListener implements Listener {
|
|||||||
|
|
||||||
public boolean isPlayerInSafeZone(Entity damagee) {
|
public boolean isPlayerInSafeZone(Entity damagee) {
|
||||||
if (!(damagee instanceof Player)) return false;
|
if (!(damagee instanceof Player)) return false;
|
||||||
|
|
||||||
return Board.getInstance().getFactionAt(new FLocation(damagee.getLocation())).isSafeZone();
|
return Board.getInstance().getFactionAt(new FLocation(damagee.getLocation())).isSafeZone();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -338,12 +338,8 @@ public class FactionsEntityListener implements Listener {
|
|||||||
public boolean canDamagerHurtDamagee(EntityDamageByEntityEvent sub, boolean notify) {
|
public boolean canDamagerHurtDamagee(EntityDamageByEntityEvent sub, boolean notify) {
|
||||||
Entity damager = sub.getDamager();
|
Entity damager = sub.getDamager();
|
||||||
Entity damagee = sub.getEntity();
|
Entity damagee = sub.getEntity();
|
||||||
|
|
||||||
if (!(damagee instanceof Player)) return true;
|
if (!(damagee instanceof Player)) return true;
|
||||||
|
|
||||||
FPlayer defender = FPlayers.getInstance().getByPlayer((Player) damagee);
|
FPlayer defender = FPlayers.getInstance().getByPlayer((Player) damagee);
|
||||||
|
|
||||||
|
|
||||||
if (damager instanceof Player) {
|
if (damager instanceof Player) {
|
||||||
FPlayer attacker = FPlayers.getInstance().getByPlayer((Player) damager);
|
FPlayer attacker = FPlayers.getInstance().getByPlayer((Player) damager);
|
||||||
if (defender == null || defender.getPlayer() == null) return true;
|
if (defender == null || defender.getPlayer() == null) return true;
|
||||||
@@ -358,12 +354,8 @@ public class FactionsEntityListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Location defenderLoc = defender.getPlayer().getLocation();
|
Location defenderLoc = defender.getPlayer().getLocation();
|
||||||
Faction defLocFaction = Board.getInstance().getFactionAt(new FLocation(defenderLoc));
|
Faction defLocFaction = Board.getInstance().getFactionAt(new FLocation(defenderLoc));
|
||||||
|
|
||||||
|
|
||||||
// for damage caused by projectiles, getDamager() returns the projectile... what we need to know is the source
|
// for damage caused by projectiles, getDamager() returns the projectile... what we need to know is the source
|
||||||
if (damager instanceof Projectile) {
|
if (damager instanceof Projectile) {
|
||||||
Projectile projectile = (Projectile) damager;
|
Projectile projectile = (Projectile) damager;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.massivecraft.factions.listeners;
|
package com.massivecraft.factions.listeners;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
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;
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
package com.massivecraft.factions.listeners;
|
package com.massivecraft.factions.listeners;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
import com.massivecraft.factions.*;
|
import com.massivecraft.factions.*;
|
||||||
import com.massivecraft.factions.cmd.CmdFGlobal;
|
import com.massivecraft.factions.cmd.CmdFGlobal;
|
||||||
import com.massivecraft.factions.cmd.CmdFly;
|
import com.massivecraft.factions.cmd.CmdFly;
|
||||||
import com.massivecraft.factions.cmd.CmdSeeChunk;
|
import com.massivecraft.factions.cmd.CmdSeeChunk;
|
||||||
import com.massivecraft.factions.cmd.FCmdRoot;
|
|
||||||
import com.massivecraft.factions.cmd.audit.FLogType;
|
import com.massivecraft.factions.cmd.audit.FLogType;
|
||||||
import com.massivecraft.factions.cmd.logout.LogoutHandler;
|
import com.massivecraft.factions.cmd.logout.LogoutHandler;
|
||||||
import com.massivecraft.factions.cmd.wild.CmdWild;
|
import com.massivecraft.factions.cmd.wild.CmdWild;
|
||||||
@@ -21,7 +21,6 @@ import com.massivecraft.factions.struct.Relation;
|
|||||||
import com.massivecraft.factions.struct.Role;
|
import com.massivecraft.factions.struct.Role;
|
||||||
import com.massivecraft.factions.util.CC;
|
import com.massivecraft.factions.util.CC;
|
||||||
import com.massivecraft.factions.util.VisualizeUtil;
|
import com.massivecraft.factions.util.VisualizeUtil;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
import com.massivecraft.factions.util.wait.WaitExecutor;
|
import com.massivecraft.factions.util.wait.WaitExecutor;
|
||||||
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;
|
||||||
@@ -55,9 +54,9 @@ import java.util.logging.Level;
|
|||||||
|
|
||||||
public class FactionsPlayerListener implements Listener {
|
public class FactionsPlayerListener implements Listener {
|
||||||
|
|
||||||
|
public final static Map<UUID, Location> lastLocations = new HashMap<>();
|
||||||
public static Set<FLocation> corners;
|
public static Set<FLocation> corners;
|
||||||
public static BukkitTask positionTask = null;
|
public static BukkitTask positionTask = null;
|
||||||
public static Map<UUID, Location> lastLocations = new HashMap<>();
|
|
||||||
/**
|
/**
|
||||||
* @author FactionsUUID Team
|
* @author FactionsUUID Team
|
||||||
*/
|
*/
|
||||||
@@ -309,7 +308,7 @@ public class FactionsPlayerListener implements Listener {
|
|||||||
if ((landOwned && factionToCheck.getOwnerListString(loc).contains(player.getName())) || (me.getRole() == Role.LEADER && me.getFactionId().equals(factionToCheck.getId()))) {
|
if ((landOwned && factionToCheck.getOwnerListString(loc).contains(player.getName())) || (me.getRole() == Role.LEADER && me.getFactionId().equals(factionToCheck.getId()))) {
|
||||||
return true;
|
return true;
|
||||||
} else if (landOwned && !factionToCheck.getOwnerListString(loc).contains(player.getName())) {
|
} else if (landOwned && !factionToCheck.getOwnerListString(loc).contains(player.getName())) {
|
||||||
me.msg(TL.ACTIONS_OWNEDTERRITORYDENY, factionToCheck.getOwnerListString(loc));
|
me.msg(TL.ACTIONS_OWNEDTERRITORYDENY.toString().replace("{owners}", factionToCheck.getOwnerListString(loc)));
|
||||||
if (doPain) player.damage(Conf.actionDeniedPainAmount);
|
if (doPain) player.damage(Conf.actionDeniedPainAmount);
|
||||||
return false;
|
return false;
|
||||||
} else if (!landOwned && access == Access.ALLOW) {
|
} else if (!landOwned && access == Access.ALLOW) {
|
||||||
@@ -336,128 +335,36 @@ public class FactionsPlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static PermissableAction GetPermissionFromUsableBlock(Material material) {
|
private static PermissableAction GetPermissionFromUsableBlock(Material material) {
|
||||||
// Check for doors that might have diff material name in old version.
|
if (material.name().contains("_BUTTON")
|
||||||
if (material.name().contains("DOOR") || material.name().contains("FENCE_GATE"))
|
|| material.name().contains("COMPARATOR")
|
||||||
return PermissableAction.DOOR;
|
|| material.name().contains("PRESSURE")
|
||||||
if (material.name().toUpperCase().contains("BUTTON") || material.name().toUpperCase().contains("PRESSURE") || material.name().contains("DIODE") || material.name().contains("COMPARATOR"))
|
|| material.name().contains("REPEATER")
|
||||||
return PermissableAction.BUTTON;
|
|| material.name().contains("DIODE")) return PermissableAction.BUTTON;
|
||||||
if (FactionsPlugin.instance.mc113 || FactionsPlugin.instance.mc114 || FactionsPlugin.getInstance().mc115) {
|
if (material.name().contains("_DOOR")
|
||||||
switch (material) {
|
|| material.name().contains("_TRAPDOOR")
|
||||||
case LEVER:
|
|| material.name().contains("_FENCE_GATE")
|
||||||
return PermissableAction.LEVER;
|
|| material.name().startsWith("FENCE_GATE")) return PermissableAction.DOOR;
|
||||||
case ACACIA_BUTTON:
|
if (material.name().contains("SHULKER_BOX")
|
||||||
case BIRCH_BUTTON:
|
|| material.name().endsWith("ANVIL")
|
||||||
case DARK_OAK_BUTTON:
|
|| material.name().startsWith("CHEST_MINECART")
|
||||||
case JUNGLE_BUTTON:
|
|| material.name().endsWith("CHEST")
|
||||||
case OAK_BUTTON:
|
|| material.name().endsWith("JUKEBOX")
|
||||||
case SPRUCE_BUTTON:
|
|| material.name().endsWith("CAULDRON")
|
||||||
case STONE_BUTTON:
|
|| material.name().endsWith("FURNACE")
|
||||||
case COMPARATOR:
|
|| material.name().endsWith("HOPPER")
|
||||||
case REPEATER:
|
|| material.name().endsWith("BEACON")
|
||||||
return PermissableAction.BUTTON;
|
|| material.name().startsWith("TRAPPED_CHEST")
|
||||||
|
|| material.name().equalsIgnoreCase("ENCHANTING_TABLE")
|
||||||
case ACACIA_DOOR:
|
|| material.name().equalsIgnoreCase("ENCHANTMENT_TABLE")
|
||||||
case BIRCH_DOOR:
|
|| material.name().endsWith("BREWING_STAND")
|
||||||
case IRON_DOOR:
|
|| material.name().equalsIgnoreCase("BARREL")) return PermissableAction.CONTAINER;
|
||||||
case JUNGLE_DOOR:
|
if (material.name().endsWith("LEVER")) return PermissableAction.LEVER;
|
||||||
case OAK_DOOR:
|
switch (material) {
|
||||||
case SPRUCE_DOOR:
|
case DISPENSER:
|
||||||
case DARK_OAK_DOOR:
|
case DROPPER:
|
||||||
|
return PermissableAction.CONTAINER;
|
||||||
case ACACIA_TRAPDOOR:
|
default:
|
||||||
case BIRCH_TRAPDOOR:
|
return null;
|
||||||
case DARK_OAK_TRAPDOOR:
|
|
||||||
case IRON_TRAPDOOR:
|
|
||||||
case JUNGLE_TRAPDOOR:
|
|
||||||
case OAK_TRAPDOOR:
|
|
||||||
case SPRUCE_TRAPDOOR:
|
|
||||||
|
|
||||||
case ACACIA_FENCE_GATE:
|
|
||||||
case BIRCH_FENCE_GATE:
|
|
||||||
case DARK_OAK_FENCE_GATE:
|
|
||||||
case JUNGLE_FENCE_GATE:
|
|
||||||
case OAK_FENCE_GATE:
|
|
||||||
case SPRUCE_FENCE_GATE:
|
|
||||||
return PermissableAction.DOOR;
|
|
||||||
|
|
||||||
case CHEST:
|
|
||||||
case TRAPPED_CHEST:
|
|
||||||
case CHEST_MINECART:
|
|
||||||
|
|
||||||
case BARREL:
|
|
||||||
|
|
||||||
case SHULKER_BOX:
|
|
||||||
case BLACK_SHULKER_BOX:
|
|
||||||
case BLUE_SHULKER_BOX:
|
|
||||||
case BROWN_SHULKER_BOX:
|
|
||||||
case CYAN_SHULKER_BOX:
|
|
||||||
case GRAY_SHULKER_BOX:
|
|
||||||
case GREEN_SHULKER_BOX:
|
|
||||||
case LIGHT_BLUE_SHULKER_BOX:
|
|
||||||
case LIGHT_GRAY_SHULKER_BOX:
|
|
||||||
case LIME_SHULKER_BOX:
|
|
||||||
case MAGENTA_SHULKER_BOX:
|
|
||||||
case ORANGE_SHULKER_BOX:
|
|
||||||
case PINK_SHULKER_BOX:
|
|
||||||
case PURPLE_SHULKER_BOX:
|
|
||||||
case RED_SHULKER_BOX:
|
|
||||||
case WHITE_SHULKER_BOX:
|
|
||||||
case YELLOW_SHULKER_BOX:
|
|
||||||
|
|
||||||
case FURNACE:
|
|
||||||
case BLAST_FURNACE:
|
|
||||||
case SMOKER:
|
|
||||||
case DROPPER:
|
|
||||||
case DISPENSER:
|
|
||||||
case ENCHANTING_TABLE:
|
|
||||||
case BREWING_STAND:
|
|
||||||
case CAULDRON:
|
|
||||||
case HOPPER:
|
|
||||||
case BEACON:
|
|
||||||
case JUKEBOX:
|
|
||||||
case ANVIL:
|
|
||||||
case CHIPPED_ANVIL:
|
|
||||||
case DAMAGED_ANVIL:
|
|
||||||
return PermissableAction.CONTAINER;
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
switch (material) {
|
|
||||||
case LEVER:
|
|
||||||
return PermissableAction.LEVER;
|
|
||||||
case DARK_OAK_DOOR:
|
|
||||||
case ACACIA_DOOR:
|
|
||||||
case BIRCH_DOOR:
|
|
||||||
case IRON_DOOR:
|
|
||||||
case JUNGLE_DOOR:
|
|
||||||
case SPRUCE_DOOR:
|
|
||||||
case ACACIA_FENCE_GATE:
|
|
||||||
case BIRCH_FENCE_GATE:
|
|
||||||
case OAK_FENCE_GATE:
|
|
||||||
case DARK_OAK_FENCE_GATE:
|
|
||||||
case JUNGLE_FENCE_GATE:
|
|
||||||
case SPRUCE_FENCE_GATE:
|
|
||||||
return PermissableAction.DOOR;
|
|
||||||
case CHEST:
|
|
||||||
case ENDER_CHEST:
|
|
||||||
case TRAPPED_CHEST:
|
|
||||||
case DISPENSER:
|
|
||||||
case ENCHANTING_TABLE:
|
|
||||||
case DROPPER:
|
|
||||||
case FURNACE:
|
|
||||||
case BLAST_FURNACE:
|
|
||||||
case SMOKER:
|
|
||||||
case HOPPER:
|
|
||||||
case ANVIL:
|
|
||||||
case CHIPPED_ANVIL:
|
|
||||||
case DAMAGED_ANVIL:
|
|
||||||
case BREWING_STAND:
|
|
||||||
|
|
||||||
return PermissableAction.CONTAINER;
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -474,6 +381,8 @@ public class FactionsPlayerListener implements Listener {
|
|||||||
// Update the lastLoginTime for this fplayer
|
// Update the lastLoginTime for this fplayer
|
||||||
me.setLastLoginTime(System.currentTimeMillis());
|
me.setLastLoginTime(System.currentTimeMillis());
|
||||||
|
|
||||||
|
lastLocations.put(player.getUniqueId(), player.getLocation());
|
||||||
|
|
||||||
// Store player's current FLocation and notify them where they are
|
// Store player's current FLocation and notify them where they are
|
||||||
me.setLastStoodAt(new FLocation(player.getLocation()));
|
me.setLastStoodAt(new FLocation(player.getLocation()));
|
||||||
|
|
||||||
@@ -530,6 +439,7 @@ public class FactionsPlayerListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler(priority = EventPriority.NORMAL)
|
@EventHandler(priority = EventPriority.NORMAL)
|
||||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||||
|
Player this_ = event.getPlayer();
|
||||||
FPlayer me = FPlayers.getInstance().getByPlayer(event.getPlayer());
|
FPlayer me = FPlayers.getInstance().getByPlayer(event.getPlayer());
|
||||||
|
|
||||||
// Make sure player's power is up to date when they log off.
|
// Make sure player's power is up to date when they log off.
|
||||||
@@ -546,6 +456,8 @@ public class FactionsPlayerListener implements Listener {
|
|||||||
FactionsPlugin.instance.getTimers().remove(me.getPlayer().getUniqueId());
|
FactionsPlugin.instance.getTimers().remove(me.getPlayer().getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lastLocations.remove(this_.getUniqueId());
|
||||||
|
|
||||||
Faction myFaction = me.getFaction();
|
Faction myFaction = me.getFaction();
|
||||||
if (!myFaction.isWilderness()) myFaction.memberLoggedOff();
|
if (!myFaction.isWilderness()) myFaction.memberLoggedOff();
|
||||||
|
|
||||||
@@ -570,17 +482,19 @@ public class FactionsPlayerListener implements Listener {
|
|||||||
.replace("{leader}", faction.getFPlayerAdmin() + "");
|
.replace("{leader}", faction.getFPlayerAdmin() + "");
|
||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
@Deprecated
|
|
||||||
public void checkCanFly(FPlayer me) {
|
public void checkCanFly(FPlayer me) {
|
||||||
if (!FactionsPlugin.getInstance().getConfig().getBoolean("enable-faction-flight") || !FactionsPlugin.instance.getConfig().getBoolean("ffly.AutoEnable"))
|
if (!me.canFlyAtLocation() || me.checkIfNearbyEnemies()) {
|
||||||
|
if (me.isFlying())
|
||||||
|
me.setFFlying(false, false);
|
||||||
return;
|
return;
|
||||||
if (me.isFlying()) return;
|
|
||||||
if (me.getPlayer().hasPermission(Permission.FLY_FLY.node)) {
|
|
||||||
me.setFFlying(true, false);
|
|
||||||
CmdFly.flyMap.put(me.getName(), true);
|
|
||||||
if (CmdFly.particleTask == null)
|
|
||||||
CmdFly.startParticles();
|
|
||||||
}
|
}
|
||||||
|
if (me.isFlying() || !FactionsPlugin.instance.getConfig().getBoolean("ffly.AutoEnable"))
|
||||||
|
return;
|
||||||
|
me.setFFlying(true, false);
|
||||||
|
CmdFly.flyMap.put(me.getName(), true);
|
||||||
|
if (CmdFly.particleTask == null)
|
||||||
|
CmdFly.startParticles();
|
||||||
}
|
}
|
||||||
|
|
||||||
//inspect
|
//inspect
|
||||||
@@ -646,14 +560,12 @@ public class FactionsPlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void startPositionCheck() {
|
public void startPositionCheck() {
|
||||||
positionTask = Bukkit.getScheduler().runTaskTimer(FactionsPlugin.instance, () -> {
|
positionTask = Bukkit.getScheduler().runTaskTimer(FactionsPlugin.getInstance(), () -> {
|
||||||
if (Bukkit.getOnlinePlayers().size() > 0) {
|
if (lastLocations.isEmpty()) return;
|
||||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
for (Map.Entry<UUID, Location> check : lastLocations.entrySet()) {
|
||||||
if (!lastLocations.containsKey(player.getUniqueId())) {
|
Player player = Bukkit.getPlayer(check.getKey());
|
||||||
lastLocations.put(player.getUniqueId(), player.getLocation());
|
if (player != null) {
|
||||||
continue;
|
refreshPosition(player, check.getValue(), player.getLocation());
|
||||||
}
|
|
||||||
refreshPosition(player, lastLocations.get(player.getUniqueId()), player.getLocation());
|
|
||||||
lastLocations.put(player.getUniqueId(), player.getLocation());
|
lastLocations.put(player.getUniqueId(), player.getLocation());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -719,16 +631,16 @@ public class FactionsPlayerListener implements Listener {
|
|||||||
}, 5);
|
}, 5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (FCmdRoot.instance.fFlyEnabled && CmdFly.autoenable && CmdFly.checkFly(me, me.getPlayer(), factionTo)) {
|
|
||||||
me.setFFlying(true, false);
|
|
||||||
CmdFly.flyMap.put(me.getName(), true);
|
|
||||||
if (CmdFly.particleTask == null)
|
|
||||||
CmdFly.startParticles();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
checkCanFly(me);
|
||||||
|
|
||||||
|
Faction at = Board.getInstance().getFactionAt(new FLocation(me.getPlayer().getLocation()));
|
||||||
if (me.getAutoClaimFor() != null) {
|
if (me.getAutoClaimFor() != null) {
|
||||||
me.attemptClaim(me.getAutoClaimFor(), newLocation, true);
|
if (FactionsPlugin.cachedRadiusClaim && me.attemptClaim(me.getFaction(), me.getPlayer().getLocation(), true)) {
|
||||||
|
me.getFaction().getFPlayersWhereOnline(true).forEach(f -> f.msg(TL.CLAIM_CLAIMED, me.describeTo(f, true), me.getFaction().describeTo(f), at.describeTo(f)));
|
||||||
|
} else {
|
||||||
|
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(","));
|
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()) {
|
||||||
@@ -803,7 +715,11 @@ public class FactionsPlayerListener implements Listener {
|
|||||||
Material type;
|
Material type;
|
||||||
if (event.getItem() != null) {
|
if (event.getItem() != null) {
|
||||||
// Convert 1.8 Material Names -> 1.15
|
// Convert 1.8 Material Names -> 1.15
|
||||||
type = XMaterial.matchXMaterial(event.getItem().getType().toString()).get().parseMaterial();
|
try {
|
||||||
|
type = XMaterial.matchXMaterial(event.getItem().getType().toString()).get().parseMaterial();
|
||||||
|
} catch (NullPointerException npe) {
|
||||||
|
type = null;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
type = null;
|
type = null;
|
||||||
}
|
}
|
||||||
@@ -841,15 +757,12 @@ public class FactionsPlayerListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onInventorySee(InventoryClickEvent e) {
|
public void onInventorySee(InventoryClickEvent e) {
|
||||||
if (e.getCurrentItem() == null)
|
if (e.getCurrentItem() == null) return;
|
||||||
return;
|
if (!e.getView().getTitle().endsWith("'s Inventory")) return;
|
||||||
|
|
||||||
if (!e.getView().getTitle().endsWith("'s Inventory"))
|
|
||||||
return;
|
|
||||||
|
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerBoneMeal(PlayerInteractEvent event) {
|
public void onPlayerBoneMeal(PlayerInteractEvent event) {
|
||||||
Block block = event.getClickedBlock();
|
Block block = event.getClickedBlock();
|
||||||
@@ -969,7 +882,7 @@ public class FactionsPlayerListener implements Listener {
|
|||||||
if (badGuy == null) return;
|
if (badGuy == null) return;
|
||||||
|
|
||||||
// if player was banned (not just kicked), get rid of their stored info
|
// if player was banned (not just kicked), get rid of their stored info
|
||||||
if (Conf.removePlayerDataWhenBanned && event.getReason().equals("Banned by admin.")) {
|
if (Conf.removePlayerDataWhenBanned && event.getReason().equals(Conf.removePlayerDataWhenBannedReason)) {
|
||||||
if (badGuy.getRole() == Role.LEADER) badGuy.getFaction().promoteNewLeader();
|
if (badGuy.getRole() == Role.LEADER) badGuy.getFaction().promoteNewLeader();
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.massivecraft.factions.missions;
|
package com.massivecraft.factions.missions;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
import com.massivecraft.factions.FPlayer;
|
import com.massivecraft.factions.FPlayer;
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
import com.massivecraft.factions.zcore.frame.FactionGUI;
|
import com.massivecraft.factions.zcore.frame.FactionGUI;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
|||||||
@@ -31,7 +31,17 @@ public class FInfoSidebar extends FSidebarProvider {
|
|||||||
|
|
||||||
ListIterator<String> it = lines.listIterator();
|
ListIterator<String> it = lines.listIterator();
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
it.set(replaceTags(faction, fplayer, it.next()));
|
String next = it.next();
|
||||||
|
if (next == null) {
|
||||||
|
it.remove();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String replaced = replaceTags(faction, fplayer, next);
|
||||||
|
if (replaced == null) {
|
||||||
|
it.remove();
|
||||||
|
} else {
|
||||||
|
it.set(replaced);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return lines;
|
return lines;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.massivecraft.factions.shop;
|
package com.massivecraft.factions.shop;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
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;
|
||||||
@@ -7,10 +8,10 @@ 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.FactionsPlugin;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
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;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -20,6 +21,9 @@ import org.bukkit.inventory.meta.ItemMeta;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.logging.Level;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class ShopGUIFrame {
|
public class ShopGUIFrame {
|
||||||
@@ -31,29 +35,30 @@ public class ShopGUIFrame {
|
|||||||
private Gui gui;
|
private Gui gui;
|
||||||
|
|
||||||
public ShopGUIFrame(Faction f) {
|
public ShopGUIFrame(Faction f) {
|
||||||
gui = new Gui(FactionsPlugin.getInstance(),
|
gui = new Gui(FactionsPlugin.getInstance(), FactionsPlugin.getInstance().getConfig().getInt("F-Shop.GUI.Rows", 4), FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("F-Shop.GUI.Name")));
|
||||||
FactionsPlugin.getInstance().getConfig().getInt("F-Shop.GUI.Rows", 4),
|
|
||||||
FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("F-Shop.GUI.Name")));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void buildGUI(FPlayer fplayer) {
|
public void buildGUI(FPlayer fplayer) {
|
||||||
PaginatedPane pane = new PaginatedPane(0, 0, 9, gui.getRows());
|
PaginatedPane pane = new PaginatedPane(0, 0, 9, gui.getRows());
|
||||||
List<GuiItem> GUIItems = new ArrayList<>();
|
List<GuiItem> GUIItems = new ArrayList<>();
|
||||||
ItemStack dummy = buildDummyItem(fplayer.getFaction());
|
ItemStack dummy = buildDummyItem(fplayer.getFaction());
|
||||||
for (int x = 0; x <= (gui.getRows() * 9) - 1; x++) GUIItems.add(new GuiItem(dummy, e -> e.setCancelled(true)));
|
for (int x = 0; x <= (gui.getRows() * 9) - 1; x++)
|
||||||
|
GUIItems.add(new GuiItem(dummy, e -> e.setCancelled(true)));
|
||||||
|
|
||||||
|
Set<String> items = FactionsPlugin.getInstance().getFileManager().getShop().getConfig().getConfigurationSection("items").getKeys(false);
|
||||||
|
for (String s : items) {
|
||||||
|
if (!checkShopConfig(s)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
int items = FactionsPlugin.getInstance().getFileManager().getShop().getConfig().getConfigurationSection("items").getKeys(false).size();
|
|
||||||
for (int a = 1; a <= items; a++) {
|
|
||||||
String s = a + "";
|
|
||||||
int slot = FactionsPlugin.getInstance().getFileManager().getShop().fetchInt("items." + s + ".slot");
|
int slot = FactionsPlugin.getInstance().getFileManager().getShop().fetchInt("items." + s + ".slot");
|
||||||
ItemStack material = XMaterial.matchXMaterial(FactionsPlugin.getInstance().getFileManager().getShop().fetchString("items." + s + ".block")).get().parseItem();
|
ItemStack item = XMaterial.matchXMaterial(FactionsPlugin.getInstance().getFileManager().getShop().fetchString("items." + s + ".block")).get().parseItem();
|
||||||
int cost = FactionsPlugin.getInstance().getFileManager().getShop().fetchInt("items." + s + ".cost");
|
int cost = FactionsPlugin.getInstance().getFileManager().getShop().fetchInt("items." + s + ".cost");
|
||||||
String name = FactionsPlugin.getInstance().getFileManager().getShop().fetchString("items." + s + ".name");
|
String name = FactionsPlugin.getInstance().getFileManager().getShop().fetchString("items." + s + ".name");
|
||||||
boolean glowing = FactionsPlugin.getInstance().getFileManager().getShop().fetchBoolean("items." + s + ".glowing");
|
boolean glowing = FactionsPlugin.getInstance().getFileManager().getShop().fetchBoolean("items." + s + ".glowing");
|
||||||
List<String> lore = FactionsPlugin.getInstance().getFileManager().getShop().fetchStringList("items." + s + ".lore");
|
List<String> lore = FactionsPlugin.getInstance().getFileManager().getShop().fetchStringList("items." + s + ".lore");
|
||||||
|
|
||||||
|
assert item != null;
|
||||||
ItemStack item = new ItemStack(material);
|
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
meta.setDisplayName(FactionsPlugin.instance.color(name));
|
meta.setDisplayName(FactionsPlugin.instance.color(name));
|
||||||
meta.addItemFlags();
|
meta.addItemFlags();
|
||||||
@@ -61,23 +66,26 @@ public class ShopGUIFrame {
|
|||||||
meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
|
meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
|
||||||
meta.addEnchant(Enchantment.DURABILITY, 1, true);
|
meta.addEnchant(Enchantment.DURABILITY, 1, true);
|
||||||
}
|
}
|
||||||
if (!glowing) meta.removeEnchant(Enchantment.DURABILITY);
|
if (!glowing)
|
||||||
|
meta.removeEnchant(Enchantment.DURABILITY);
|
||||||
List<String> replacedLore = lore.stream().map(t -> t.replace("{cost}", cost + "")).collect(Collectors.toList());
|
List<String> replacedLore = lore.stream().map(t -> t.replace("{cost}", cost + "")).collect(Collectors.toList());
|
||||||
meta.setLore(FactionsPlugin.instance.colorList(replacedLore));
|
meta.setLore(FactionsPlugin.instance.colorList(replacedLore));
|
||||||
item.setItemMeta(meta);
|
item.setItemMeta(meta);
|
||||||
GUIItems.set(slot, new GuiItem(item, e -> {
|
GUIItems.set(slot, new GuiItem(item, e ->
|
||||||
|
{
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
FPlayer fme = FPlayers.getInstance().getByPlayer((Player) e.getWhoClicked());
|
FPlayer fme = FPlayers.getInstance().getByPlayer((Player) e.getWhoClicked());
|
||||||
if (fplayer.getFaction().getPoints() >= cost) {
|
if (fplayer.getFaction().getPoints() >= cost) {
|
||||||
fplayer.getFaction().setPoints(fplayer.getFaction().getPoints() - cost);
|
if (runCommands(FactionsPlugin.getInstance().getFileManager().getShop().fetchStringList("items." + s + ".cmds"), fplayer.getPlayer())) {
|
||||||
runCommands(FactionsPlugin.getInstance().getFileManager().getShop().fetchStringList("items." + s + ".cmds"), fplayer.getPlayer());
|
fplayer.getFaction().setPoints(fplayer.getFaction().getPoints() - cost);
|
||||||
for (FPlayer fplayerBuy : fplayer.getFaction().getFPlayers()) {
|
for (FPlayer fplayerBuy : fplayer.getFaction().getFPlayers()) {
|
||||||
fplayerBuy.getPlayer().sendMessage(TL.SHOP_BOUGHT_BROADCAST_FACTION.toString()
|
fplayerBuy.getPlayer().sendMessage(TL.SHOP_BOUGHT_BROADCAST_FACTION.toString().replace("{player}", fplayer.getPlayer().getName()).replace("{item}", ChatColor.stripColor(FactionsPlugin.getInstance().color(name)))
|
||||||
.replace("{player}", fplayer.getPlayer().getName())
|
.replace("{cost}", cost + ""));
|
||||||
.replace("{item}", ChatColor.stripColor(FactionsPlugin.getInstance().color(name)))
|
}
|
||||||
.replace("{cost}", cost + ""));
|
buildGUI(fme);
|
||||||
|
} else {
|
||||||
|
fplayer.msg(TL.SHOP_ERROR_DURING_PURCHASE);
|
||||||
}
|
}
|
||||||
buildGUI(fme);
|
|
||||||
} else {
|
} else {
|
||||||
fplayer.msg(TL.SHOP_NOT_ENOUGH_POINTS);
|
fplayer.msg(TL.SHOP_NOT_ENOUGH_POINTS);
|
||||||
}
|
}
|
||||||
@@ -89,7 +97,6 @@ public class ShopGUIFrame {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private ItemStack buildDummyItem(Faction f) {
|
private ItemStack buildDummyItem(Faction f) {
|
||||||
ConfigurationSection config = FactionsPlugin.getInstance().getConfig().getConfigurationSection("F-Shop.GUI.dummy-item");
|
ConfigurationSection config = FactionsPlugin.getInstance().getConfig().getConfigurationSection("F-Shop.GUI.dummy-item");
|
||||||
ItemStack item = XMaterial.matchXMaterial(config.getString("Type")).get().parseItem();
|
ItemStack item = XMaterial.matchXMaterial(config.getString("Type")).get().parseItem();
|
||||||
@@ -102,10 +109,83 @@ public class ShopGUIFrame {
|
|||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void runCommands(List<String> list, Player p) {
|
public boolean checkShopConfig() {
|
||||||
|
boolean ret = true;
|
||||||
|
Set<String> items = FactionsPlugin.getInstance().getFileManager().getShop().getConfig().getConfigurationSection("items").getKeys(false);
|
||||||
|
for (String s : items) {
|
||||||
|
if (checkShopConfig(s) == false) {
|
||||||
|
ret = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean checkShopConfig(String s) {
|
||||||
|
boolean ret = true;
|
||||||
|
if (!FactionsPlugin.getInstance().getFileManager().getShop().containsKey("items." + s + ".slot")) {
|
||||||
|
FactionsPlugin.getInstance().log(Level.WARNING, "Problem with config item '" + s + "' missing slot variable");
|
||||||
|
ret = false;
|
||||||
|
}
|
||||||
|
if (!FactionsPlugin.getInstance().getFileManager().getShop().containsKey("items." + s + ".block")) {
|
||||||
|
FactionsPlugin.getInstance().log(Level.WARNING, "Problem with config item '" + s + "' missing block variable");
|
||||||
|
ret = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!FactionsPlugin.getInstance().getFileManager().getShop().containsKey("items." + s + ".cmds")) {
|
||||||
|
FactionsPlugin.getInstance().log(Level.WARNING, "Problee with config item '" + s + "' missing cmds variable");
|
||||||
|
ret = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!FactionsPlugin.getInstance().getFileManager().getShop().containsKey("items." + s + ".cost")) {
|
||||||
|
FactionsPlugin.getInstance().log(Level.WARNING, "Problem with config item '" + s + "' missing cost variable this item will cost 0");
|
||||||
|
}
|
||||||
|
if (!FactionsPlugin.getInstance().getFileManager().getShop().containsKey("items." + s + ".name")) {
|
||||||
|
FactionsPlugin.getInstance().log(Level.WARNING, "Problem with config item '" + s + "' missing name variable");
|
||||||
|
ret = false;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param list The list of commands to be ran.
|
||||||
|
* @param p The player that is using the shop
|
||||||
|
* @return if all commands are able to be ran or if they did run.
|
||||||
|
*/
|
||||||
|
public boolean runCommands(List<String> list, Player p) {
|
||||||
|
for (String cmd : list) {
|
||||||
|
cmd = cmd.replace("%player%", p.getName());
|
||||||
|
if (cmd.toLowerCase().startsWith("give")) {
|
||||||
|
String[] args = cmd.split(" ");
|
||||||
|
if (args.length == 4) {
|
||||||
|
Material material = Material.matchMaterial(args[2]);
|
||||||
|
int amount = Integer.parseInt(args[3]);
|
||||||
|
Player player = Bukkit.getPlayer(args[1]);
|
||||||
|
if (!player.isOnline()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// See if the player has this item in their inventory;
|
||||||
|
if (player.getInventory().contains(material) && player.getInventory().firstEmpty() < 0) {
|
||||||
|
int spacesAvailable = 0;
|
||||||
|
Map<Integer, ? extends ItemStack> contents = player.getInventory().all(material);
|
||||||
|
for (ItemStack stack : contents.values()) {
|
||||||
|
spacesAvailable += stack.getMaxStackSize() - stack.getAmount();
|
||||||
|
}
|
||||||
|
if (spacesAvailable < amount) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (player.getInventory().firstEmpty() < 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
for (String cmd : list) {
|
for (String cmd : list) {
|
||||||
cmd = cmd.replace("%player%", p.getName());
|
cmd = cmd.replace("%player%", p.getName());
|
||||||
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), cmd);
|
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), cmd);
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,6 +134,7 @@ public enum Permission {
|
|||||||
SCOREBOARD("scoreboard"),
|
SCOREBOARD("scoreboard"),
|
||||||
SEECHUNK("seechunk"),
|
SEECHUNK("seechunk"),
|
||||||
SETWARP("setwarp"),
|
SETWARP("setwarp"),
|
||||||
|
SHIELD("shield"),
|
||||||
SHOP("shop"),
|
SHOP("shop"),
|
||||||
TOP("top"),
|
TOP("top"),
|
||||||
VIEWCHEST("viewchest"),
|
VIEWCHEST("viewchest"),
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.massivecraft.factions.struct;
|
package com.massivecraft.factions.struct;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
import com.massivecraft.factions.zcore.fperms.Permissable;
|
import com.massivecraft.factions.zcore.fperms.Permissable;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.massivecraft.factions.struct;
|
package com.massivecraft.factions.struct;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
import com.massivecraft.factions.Conf;
|
import com.massivecraft.factions.Conf;
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
import com.massivecraft.factions.zcore.fperms.Permissable;
|
import com.massivecraft.factions.zcore.fperms.Permissable;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
|||||||
@@ -149,10 +149,7 @@ public enum FactionTag implements Tag {
|
|||||||
if (!this.foundInString(text)) {
|
if (!this.foundInString(text)) {
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
String result = null;
|
String result = this.function == null ? this.biFunction.apply(faction, player) : this.function.apply(faction);
|
||||||
if (this.biFunction != null) {
|
|
||||||
result = this.function == null ? this.biFunction.apply(faction, player) : this.function.apply(faction);
|
|
||||||
}
|
|
||||||
return result == null ? null : text.replace(this.tag, result);
|
return result == null ? null : text.replace(this.tag, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ public enum PlayerTag implements Tag {
|
|||||||
}),
|
}),
|
||||||
PLAYER_BALANCE("{balance}", (fp) -> Econ.isSetup() ? Econ.getFriendlyBalance(fp) : (Tag.isMinimalShow() ? null : TL.ECON_OFF.format("balance"))),
|
PLAYER_BALANCE("{balance}", (fp) -> Econ.isSetup() ? Econ.getFriendlyBalance(fp) : (Tag.isMinimalShow() ? null : TL.ECON_OFF.format("balance"))),
|
||||||
PLAYER_POWER("{player-power}", (fp) -> String.valueOf(fp.getPowerRounded())),
|
PLAYER_POWER("{player-power}", (fp) -> String.valueOf(fp.getPowerRounded())),
|
||||||
|
ROLE("{player-role}", FPlayer::getRolePrefix),
|
||||||
PLAYER_MAXPOWER("{player-maxpower}", (fp) -> String.valueOf(fp.getPowerMaxRounded())),
|
PLAYER_MAXPOWER("{player-maxpower}", (fp) -> String.valueOf(fp.getPowerMaxRounded())),
|
||||||
PLAYER_KILLS("{player-kills}", (fp) -> String.valueOf(fp.getKills())),
|
PLAYER_KILLS("{player-kills}", (fp) -> String.valueOf(fp.getKills())),
|
||||||
PLAYER_DEATHS("{player-deaths}", (fp) -> String.valueOf(fp.getDeaths())),
|
PLAYER_DEATHS("{player-deaths}", (fp) -> String.valueOf(fp.getDeaths())),
|
||||||
|
|||||||
@@ -14,10 +14,16 @@ import org.bukkit.Bukkit;
|
|||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
public class ClipPlaceholderAPIManager extends PlaceholderExpansion implements Relational {
|
public class ClipPlaceholderAPIManager extends PlaceholderExpansion implements Relational {
|
||||||
|
|
||||||
|
private static void logInvalid(String placeholder) {
|
||||||
|
FactionsPlugin.getInstance().getLogger().log(Level.INFO, "Invalid request through PlaceholderAPI for placeholder '" + placeholder + "'");
|
||||||
|
}
|
||||||
|
|
||||||
// Identifier for this expansion
|
// Identifier for this expansion
|
||||||
@Override
|
@Override
|
||||||
public String getIdentifier() {
|
public String getIdentifier() {
|
||||||
@@ -210,17 +216,42 @@ public class ClipPlaceholderAPIManager extends PlaceholderExpansion implements R
|
|||||||
return String.valueOf(faction.getMaxVaults());
|
return String.valueOf(faction.getMaxVaults());
|
||||||
case "faction_relation_color":
|
case "faction_relation_color":
|
||||||
return fPlayer.getColorTo(faction).toString();
|
return fPlayer.getColorTo(faction).toString();
|
||||||
case "faction_grace_time":
|
case "grace_time":
|
||||||
return String.valueOf(TimerManager.getRemaining(FactionsPlugin.getInstance().getTimerManager().graceTimer.getRemaining(), true));
|
if (FactionsPlugin.getInstance().getTimerManager().graceTimer.getRemaining() >= 0) {
|
||||||
|
return String.valueOf(TimerManager.getRemaining(FactionsPlugin.getInstance().getTimerManager().graceTimer.getRemaining(), true));
|
||||||
|
} else {
|
||||||
|
return TL.GRACE_DISABLED_PLACEHOLDER.toString();
|
||||||
|
}
|
||||||
case "faction_name_at_location":
|
case "faction_name_at_location":
|
||||||
Faction factionAtLocation = Board.getInstance().getFactionAt(new FLocation(player.getLocation()));
|
Faction factionAtLocation = Board.getInstance().getFactionAt(new FLocation(player.getLocation()));
|
||||||
return factionAtLocation != null ? factionAtLocation.getTag() : Factions.getInstance().getWilderness().getTag();
|
return factionAtLocation != null ? factionAtLocation.getTag() : Factions.getInstance().getWilderness().getTag();
|
||||||
}
|
}
|
||||||
|
//If its not hardcoded lets try to grab it anyways
|
||||||
|
boolean targetFaction = false;
|
||||||
|
Object target = fPlayer;
|
||||||
|
String stripped = "";
|
||||||
|
if (placeholder.startsWith("faction_")) {
|
||||||
|
targetFaction = true;
|
||||||
|
target = faction;
|
||||||
|
stripped = placeholder.replace("faction_", "");
|
||||||
|
} else {
|
||||||
|
stripped = placeholder.replace("player_", "");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Object pulled;
|
||||||
|
if (targetFaction) {
|
||||||
|
pulled = Faction.class.getDeclaredMethod(stripped).invoke(target);
|
||||||
|
} else {
|
||||||
|
pulled = FPlayer.class.getDeclaredMethod(stripped).invoke(target);
|
||||||
|
}
|
||||||
|
return String.valueOf(pulled);
|
||||||
|
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
|
||||||
|
logInvalid(stripped);
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return TL.PLACEHOLDERAPI_NULL.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private int countOn(Faction f, Relation relation, Boolean status, FPlayer player) {
|
private int countOn(Faction f, Relation relation, Boolean status, FPlayer player) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (Faction faction : Factions.getInstance().getAllFactions()) {
|
for (Faction faction : Factions.getInstance().getAllFactions()) {
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.massivecraft.factions.util;
|
|||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
import org.bukkit.metadata.MetadataValue;
|
|
||||||
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.massivecraft.factions.util;
|
|||||||
|
|
||||||
import com.massivecraft.factions.FLocation;
|
import com.massivecraft.factions.FLocation;
|
||||||
import com.massivecraft.factions.FPlayer;
|
import com.massivecraft.factions.FPlayer;
|
||||||
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
@@ -26,7 +27,9 @@ public class CornerTask extends BukkitRunnable {
|
|||||||
cancel();
|
cancel();
|
||||||
} else {
|
} else {
|
||||||
FLocation fLocation = surrounding.remove(0);
|
FLocation fLocation = surrounding.remove(0);
|
||||||
if (fPlayer.attemptClaim(fPlayer.getFaction(), fLocation, true)) {
|
if (FactionsPlugin.cachedRadiusClaim && fPlayer.attemptClaim(fPlayer.getFaction(), fLocation, true)) {
|
||||||
|
++amount;
|
||||||
|
} else if (fPlayer.attemptClaim(fPlayer.getFaction(), fLocation, true)) {
|
||||||
++amount;
|
++amount;
|
||||||
} else {
|
} else {
|
||||||
fPlayer.sendMessage(TL.COMMAND_CORNER_FAIL_WITH_FEEDBACK.toString().replace("&", "§") + amount);
|
fPlayer.sendMessage(TL.COMMAND_CORNER_FAIL_WITH_FEEDBACK.toString().replace("&", "§") + amount);
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ public class MiscUtil {
|
|||||||
for (char c : str.toCharArray()) {
|
for (char c : str.toCharArray()) {
|
||||||
if (!substanceChars.contains(String.valueOf(c))) {
|
if (!substanceChars.contains(String.valueOf(c))) {
|
||||||
errors.add(FactionsPlugin.getInstance().txt.parse(TL.GENERIC_FACTIONTAG_ALPHANUMERIC.toString(), c));
|
errors.add(FactionsPlugin.getInstance().txt.parse(TL.GENERIC_FACTIONTAG_ALPHANUMERIC.toString(), c));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ package com.massivecraft.factions.util;
|
|||||||
* Creation Date: 4/4/2020
|
* Creation Date: 4/4/2020
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|||||||
@@ -15,8 +15,6 @@ public class UtilFly {
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static void run() {
|
public static void run() {
|
||||||
if (!FactionsPlugin.getInstance().getConfig().getBoolean("enable-faction-flight"))
|
|
||||||
return;
|
|
||||||
|
|
||||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(FactionsPlugin.getInstance(), () -> {
|
Bukkit.getScheduler().scheduleSyncRepeatingTask(FactionsPlugin.getInstance(), () -> {
|
||||||
for (FPlayer fp : FPlayers.getInstance().getOnlinePlayers()) {
|
for (FPlayer fp : FPlayers.getInstance().getOnlinePlayers()) {
|
||||||
@@ -28,8 +26,6 @@ public class UtilFly {
|
|||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static void setFly(FPlayer fp, boolean fly, boolean silent, boolean damage) {
|
public static void setFly(FPlayer fp, boolean fly, boolean silent, boolean damage) {
|
||||||
if (!FactionsPlugin.getInstance().getConfig().getBoolean("enable-faction-flight"))
|
|
||||||
return;
|
|
||||||
|
|
||||||
fp.getPlayer().setAllowFlight(fly);
|
fp.getPlayer().setAllowFlight(fly);
|
||||||
fp.getPlayer().setFlying(fly);
|
fp.getPlayer().setFlying(fly);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,37 @@
|
|||||||
|
package com.massivecraft.factions.util.adapters;
|
||||||
|
|
||||||
|
import com.google.gson.*;
|
||||||
|
import com.massivecraft.factions.cmd.shields.struct.ShieldTCMP;
|
||||||
|
import com.massivecraft.factions.cmd.shields.struct.frame.ShieldFramePersistence;
|
||||||
|
|
||||||
|
import java.lang.reflect.Type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factions - Developed by ImCarib.
|
||||||
|
* All rights reserved 2020.
|
||||||
|
* Creation Date: 5/23/2020
|
||||||
|
*/
|
||||||
|
public class ShieldFrameAdapter implements JsonDeserializer<ShieldFramePersistence>, JsonSerializer<ShieldFramePersistence> {
|
||||||
|
|
||||||
|
public ShieldFramePersistence deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||||
|
try {
|
||||||
|
JsonObject obj = json.getAsJsonObject();
|
||||||
|
int frame = obj.get("id").getAsInt();
|
||||||
|
return ShieldTCMP.getInstance().getByStart(frame);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public JsonElement serialize(ShieldFramePersistence src, Type typeOfSrc, JsonSerializationContext context) {
|
||||||
|
JsonObject obj = new JsonObject();
|
||||||
|
try {
|
||||||
|
obj.addProperty("id", src.getStartParsed());
|
||||||
|
return obj;
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,12 +1,5 @@
|
|||||||
package com.massivecraft.factions.util.timer;
|
package com.massivecraft.factions.util.timer;
|
||||||
|
|
||||||
import com.massivecraft.factions.util.Config;
|
|
||||||
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factions - Developed by Driftay.
|
* Factions - Developed by Driftay.
|
||||||
* All rights reserved 2020.
|
* All rights reserved 2020.
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import com.massivecraft.factions.util.Config;
|
|||||||
* Creation Date: 4/7/2020
|
* Creation Date: 4/7/2020
|
||||||
*/
|
*/
|
||||||
public abstract class Timer {
|
public abstract class Timer {
|
||||||
protected final String name;
|
|
||||||
public final long defaultCooldown;
|
public final long defaultCooldown;
|
||||||
|
protected final String name;
|
||||||
|
|
||||||
|
|
||||||
public Timer(String name, long defaultCooldown) {
|
public Timer(String name, long defaultCooldown) {
|
||||||
|
|||||||
@@ -16,14 +16,24 @@ import java.util.concurrent.TimeUnit;
|
|||||||
* Creation Date: 4/7/2020
|
* Creation Date: 4/7/2020
|
||||||
*/
|
*/
|
||||||
public class TimerManager implements Listener, Runnable {
|
public class TimerManager implements Listener, Runnable {
|
||||||
private final Set<Timer> timers;
|
|
||||||
private final FactionsPlugin plugin;
|
|
||||||
private final List<TimerRunnable> timerRunnableList = new ArrayList<>();
|
|
||||||
private Config config;
|
|
||||||
public GraceTimer graceTimer;
|
|
||||||
private static final long MINUTE = TimeUnit.MINUTES.toMillis(1L);
|
private static final long MINUTE = TimeUnit.MINUTES.toMillis(1L);
|
||||||
private static final long HOUR = TimeUnit.HOURS.toMillis(1L);
|
private static final long HOUR = TimeUnit.HOURS.toMillis(1L);
|
||||||
private static final long MULTI_HOUR = TimeUnit.HOURS.toMillis(10);
|
private static final long MULTI_HOUR = TimeUnit.HOURS.toMillis(10);
|
||||||
|
private final Set<Timer> timers;
|
||||||
|
private final FactionsPlugin plugin;
|
||||||
|
private final List<TimerRunnable> timerRunnableList = new ArrayList<>();
|
||||||
|
public GraceTimer graceTimer;
|
||||||
|
private Config config;
|
||||||
|
|
||||||
|
public TimerManager(FactionsPlugin plugin) {
|
||||||
|
this.timers = new HashSet<>();
|
||||||
|
this.plugin = plugin;
|
||||||
|
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||||
|
if (Conf.useGraceSystem) {
|
||||||
|
this.registerTimer(this.graceTimer = new GraceTimer());
|
||||||
|
}
|
||||||
|
plugin.getServer().getScheduler().runTaskTimer(plugin, this, 4, 4);
|
||||||
|
}
|
||||||
|
|
||||||
public static String getRemaining(long millis, boolean milliseconds) {
|
public static String getRemaining(long millis, boolean milliseconds) {
|
||||||
return getRemaining(millis, milliseconds, true);
|
return getRemaining(millis, milliseconds, true);
|
||||||
@@ -31,21 +41,11 @@ public class TimerManager implements Listener, Runnable {
|
|||||||
|
|
||||||
public static String getRemaining(long duration, boolean milliseconds, boolean trail) {
|
public static String getRemaining(long duration, boolean milliseconds, boolean trail) {
|
||||||
if ((milliseconds) && (duration < MINUTE)) {
|
if ((milliseconds) && (duration < MINUTE)) {
|
||||||
return ( (trail ? DateTimeFormats.REMAINING_SECONDS_TRAILING : DateTimeFormats.REMAINING_SECONDS).get()).format(duration * 0.001D) + 's';
|
return ((trail ? DateTimeFormats.REMAINING_SECONDS_TRAILING : DateTimeFormats.REMAINING_SECONDS).get()).format(duration * 0.001D) + 's';
|
||||||
}
|
}
|
||||||
return DurationFormatUtils.formatDuration(duration, (duration >= HOUR ? (duration >= MULTI_HOUR ? "d" : "") + "d:" : "") + "HH:mm:ss");
|
return DurationFormatUtils.formatDuration(duration, (duration >= HOUR ? (duration >= MULTI_HOUR ? "d" : "") + "d:" : "") + "HH:mm:ss");
|
||||||
}
|
}
|
||||||
|
|
||||||
public TimerManager(FactionsPlugin plugin) {
|
|
||||||
this.timers = new HashSet<>();
|
|
||||||
this.plugin = plugin;
|
|
||||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
|
||||||
if(Conf.useGraceSystem) {
|
|
||||||
this.registerTimer(this.graceTimer = new GraceTimer());
|
|
||||||
}
|
|
||||||
plugin.getServer().getScheduler().runTaskTimer(plugin, this, 4, 4);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Collection<Timer> getTimers() {
|
public Collection<Timer> getTimers() {
|
||||||
return this.timers;
|
return this.timers;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,15 +45,13 @@ public class TimerRunnable {
|
|||||||
return getRemaining(false);
|
return getRemaining(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getRemaining(long now) {
|
|
||||||
return getRemaining(false, now);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void setRemaining(long remaining) {
|
public void setRemaining(long remaining) {
|
||||||
setExpiryMillis(remaining);
|
setExpiryMillis(remaining);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getRemaining(long now) {
|
||||||
|
return getRemaining(false, now);
|
||||||
|
}
|
||||||
|
|
||||||
public long getRemaining(boolean ignorePaused) {
|
public long getRemaining(boolean ignorePaused) {
|
||||||
if ((!ignorePaused) && (this.pauseMillis != 0L)) return this.pauseMillis;
|
if ((!ignorePaused) && (this.pauseMillis != 0L)) return this.pauseMillis;
|
||||||
|
|||||||
@@ -26,14 +26,14 @@ public class GraceTimer extends GlobalTimer implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onBreak(EntityExplodeEvent e) {
|
public void onBreak(EntityExplodeEvent e) {
|
||||||
if(getRemaining() > 0)
|
if (getRemaining() > 0)
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onTNTPlace(BlockPlaceEvent event) {
|
public void onTNTPlace(BlockPlaceEvent event) {
|
||||||
FPlayer fp = FPlayers.getInstance().getByPlayer(event.getPlayer());
|
FPlayer fp = FPlayers.getInstance().getByPlayer(event.getPlayer());
|
||||||
if(getRemaining() > 0) {
|
if (getRemaining() > 0) {
|
||||||
if (!fp.isAdminBypassing()) {
|
if (!fp.isAdminBypassing()) {
|
||||||
if (event.getBlock().getType().equals(Material.TNT)) {
|
if (event.getBlock().getType().equals(Material.TNT)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|||||||
@@ -8,9 +8,7 @@ import org.bukkit.entity.Player;
|
|||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factions - Developed by Driftay.
|
* @author DroppingAnvil
|
||||||
* All rights reserved 2020.
|
|
||||||
* Creation Date: 4/4/2020
|
|
||||||
*/
|
*/
|
||||||
public class WaitExecutor {
|
public class WaitExecutor {
|
||||||
public static ConcurrentHashMap<Player, WaitTask> taskMap = new ConcurrentHashMap<>();
|
public static ConcurrentHashMap<Player, WaitTask> taskMap = new ConcurrentHashMap<>();
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import com.massivecraft.factions.zcore.util.TextUtil;
|
|||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.plugin.IllegalPluginAccessException;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
@@ -100,9 +99,7 @@ public abstract class MPlugin extends JavaPlugin {
|
|||||||
long saveTicks = (long) (20 * 60 * Conf.saveToFileEveryXMinutes); // Approximately every 30 min by default
|
long saveTicks = (long) (20 * 60 * Conf.saveToFileEveryXMinutes); // Approximately every 30 min by default
|
||||||
saveTask = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, new SaveTask(this), saveTicks, saveTicks);
|
saveTask = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, new SaveTask(this), saveTicks, saveTicks);
|
||||||
}
|
}
|
||||||
|
|
||||||
loadLang();
|
loadLang();
|
||||||
|
|
||||||
loadSuccessful = true;
|
loadSuccessful = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -178,20 +175,18 @@ public abstract class MPlugin extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
try {
|
if (saveTask != null) {
|
||||||
if (saveTask != null) {
|
this.getServer().getScheduler().cancelTask(saveTask);
|
||||||
this.getServer().getScheduler().cancelTask(saveTask);
|
saveTask = null;
|
||||||
saveTask = null;
|
|
||||||
}
|
|
||||||
// only save data if plugin actually loaded successfully
|
|
||||||
if (loadSuccessful) {
|
|
||||||
Factions.getInstance().forceSave();
|
|
||||||
FPlayers.getInstance().forceSave();
|
|
||||||
Board.getInstance().forceSave();
|
|
||||||
}
|
|
||||||
log("Disabled");
|
|
||||||
} catch (IllegalPluginAccessException e) {
|
|
||||||
}
|
}
|
||||||
|
// only save data if plugin actually loaded successfully
|
||||||
|
if (loadSuccessful) {
|
||||||
|
Factions.getInstance().forceSave();
|
||||||
|
FPlayers.getInstance().forceSave();
|
||||||
|
Board.getInstance().forceSave();
|
||||||
|
}
|
||||||
|
|
||||||
|
log("Disabled");
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|||||||
@@ -56,6 +56,10 @@ public class CustomFile {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean containsKey(String key) {
|
||||||
|
return getCachedObjects().containsKey(key) || getConfig().contains(key);
|
||||||
|
}
|
||||||
|
|
||||||
public String fetchString(String key) {
|
public String fetchString(String key) {
|
||||||
return (String) getObj(key, dataTypes.STRING);
|
return (String) getObj(key, dataTypes.STRING);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,14 +3,9 @@ package com.massivecraft.factions.zcore.fperms;
|
|||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
|
|
||||||
public enum Access {
|
public enum Access {
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Illyria Team
|
|
||||||
*/
|
|
||||||
|
|
||||||
ALLOW("Allow"),
|
ALLOW("Allow"),
|
||||||
DENY("Deny"),
|
UNDEFINED("Undefined"),
|
||||||
UNDEFINED("Undefined");
|
DENY("Deny");
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
@@ -31,11 +26,6 @@ public enum Access {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Access booleanToAccess(boolean access) {
|
|
||||||
if (access) return Access.ALLOW;
|
|
||||||
else return Access.DENY;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return this.name.toLowerCase();
|
return this.name.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ public class DefaultPermissions {
|
|||||||
public boolean chest;
|
public boolean chest;
|
||||||
public boolean check;
|
public boolean check;
|
||||||
public boolean drain;
|
public boolean drain;
|
||||||
|
public boolean shield;
|
||||||
public boolean spawner;
|
public boolean spawner;
|
||||||
|
|
||||||
public DefaultPermissions() {
|
public DefaultPermissions() {
|
||||||
@@ -68,6 +69,7 @@ public class DefaultPermissions {
|
|||||||
this.chest = def;
|
this.chest = def;
|
||||||
this.check = def;
|
this.check = def;
|
||||||
this.drain = def;
|
this.drain = def;
|
||||||
|
this.shield = def;
|
||||||
this.spawner = def;
|
this.spawner = def;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,6 +101,7 @@ public class DefaultPermissions {
|
|||||||
boolean canChest,
|
boolean canChest,
|
||||||
boolean canCheck,
|
boolean canCheck,
|
||||||
boolean canDrain,
|
boolean canDrain,
|
||||||
|
boolean canShield,
|
||||||
boolean canSpawners) {
|
boolean canSpawners) {
|
||||||
this.ban = canBan;
|
this.ban = canBan;
|
||||||
this.build = canBuild;
|
this.build = canBuild;
|
||||||
@@ -128,6 +131,7 @@ public class DefaultPermissions {
|
|||||||
this.chest = canChest;
|
this.chest = canChest;
|
||||||
this.check = canCheck;
|
this.check = canCheck;
|
||||||
this.drain = canDrain;
|
this.drain = canDrain;
|
||||||
|
this.shield = canShield;
|
||||||
this.spawner = canSpawners;
|
this.spawner = canSpawners;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,6 +165,7 @@ public class DefaultPermissions {
|
|||||||
else if (name == "chest") return this.chest;
|
else if (name == "chest") return this.chest;
|
||||||
else if (name == "check") return this.check;
|
else if (name == "check") return this.check;
|
||||||
else if (name == "drain") return this.drain;
|
else if (name == "drain") return this.drain;
|
||||||
|
else if (name == "shield") return this.shield;
|
||||||
else if (name == "spawner") return this.spawner;
|
else if (name == "spawner") return this.spawner;
|
||||||
else return false;
|
else return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
package com.massivecraft.factions.zcore.fperms;
|
package com.massivecraft.factions.zcore.fperms;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
import com.massivecraft.factions.FPlayer;
|
import com.massivecraft.factions.FPlayer;
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.util.Placeholder;
|
import com.massivecraft.factions.util.Placeholder;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
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;
|
||||||
@@ -46,6 +47,7 @@ public enum PermissableAction {
|
|||||||
WITHDRAW("withdraw"),
|
WITHDRAW("withdraw"),
|
||||||
CHEST("chest"),
|
CHEST("chest"),
|
||||||
CHECK("check"),
|
CHECK("check"),
|
||||||
|
SHIELD("shield"),
|
||||||
SPAWNER("spawner");
|
SPAWNER("spawner");
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
@@ -66,6 +68,7 @@ public enum PermissableAction {
|
|||||||
return permissableAction;
|
return permissableAction;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,16 +109,29 @@ public enum PermissableAction {
|
|||||||
ConfigurationSection section = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.action");
|
ConfigurationSection section = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.action");
|
||||||
ItemStack item = XMaterial.matchXMaterial(section.getString("Materials." + this.name)).get().parseItem();
|
ItemStack item = XMaterial.matchXMaterial(section.getString("Materials." + this.name)).get().parseItem();
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
if (meta != null) {
|
||||||
|
meta.setDisplayName(FactionsPlugin.getInstance().color(section.getString("placeholder-item.name").replace("{action}", this.name)));
|
||||||
|
List<String> lore = section.getStringList("placeholder-item.lore");
|
||||||
|
|
||||||
meta.setDisplayName(FactionsPlugin.getInstance().color(section.getString("placeholder-item.name").replace("{action}", this.name)));
|
// Reset permissions since a section is null so it was old permission storage.
|
||||||
List<String> lore = section.getStringList("placeholder-item.lore");
|
if (fme.getFaction().getPermissions().get(perm) == null) {
|
||||||
|
fme.getFaction().setDefaultPerms();
|
||||||
|
fme.getFaction().sendMessage(TL.SYSTEM_PERMISSIONS_RESET.toString());
|
||||||
|
}
|
||||||
|
|
||||||
lore = FactionsPlugin.getInstance().replacePlaceholders(lore,
|
// TEMP: This check is required for factions created before `Undefined` permission was removed
|
||||||
new Placeholder("{action-access-color}", fme.getFaction().getPermissions().get(perm).get(this).getColor()),
|
if (fme.getFaction().getPermissions().get(perm).get(this) == Access.UNDEFINED) {
|
||||||
new Placeholder("{action-access}", fme.getFaction().getPermissions().get(perm).get(this).getName()));
|
fme.getFaction().getPermissions().get(perm).put(this, Access.DENY);
|
||||||
|
}
|
||||||
|
|
||||||
|
lore = FactionsPlugin.getInstance().replacePlaceholders(lore,
|
||||||
|
new Placeholder("{action-access-color}", fme.getFaction().getPermissions().get(perm).get(this).getColor()),
|
||||||
|
new Placeholder("{action-access}", fme.getFaction().getPermissions().get(perm).get(this).getName()));
|
||||||
|
|
||||||
|
meta.setLore(FactionsPlugin.getInstance().colorList(lore));
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
}
|
||||||
|
|
||||||
meta.setLore(FactionsPlugin.getInstance().colorList(lore));
|
|
||||||
item.setItemMeta(meta);
|
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
package com.massivecraft.factions.zcore.fperms.gui;
|
package com.massivecraft.factions.zcore.fperms.gui;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
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.FPlayer;
|
import com.massivecraft.factions.FPlayer;
|
||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
import com.massivecraft.factions.cmd.audit.FLogType;
|
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
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;
|
||||||
@@ -22,14 +20,11 @@ import java.util.List;
|
|||||||
|
|
||||||
public class PermissableActionFrame {
|
public class PermissableActionFrame {
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Illyria Team
|
|
||||||
*/
|
|
||||||
|
|
||||||
private Gui gui;
|
private Gui gui;
|
||||||
|
private ConfigurationSection section;
|
||||||
|
|
||||||
public PermissableActionFrame(Faction f) {
|
public PermissableActionFrame(Faction f) {
|
||||||
ConfigurationSection section = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.action");
|
section = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.action");
|
||||||
gui = new Gui(FactionsPlugin.getInstance(),
|
gui = new Gui(FactionsPlugin.getInstance(),
|
||||||
section.getInt("rows", 3),
|
section.getInt("rows", 3),
|
||||||
FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fperm-gui.action.name").replace("{faction}", f.getTag())));
|
FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fperm-gui.action.name").replace("{faction}", f.getTag())));
|
||||||
@@ -40,8 +35,7 @@ public class PermissableActionFrame {
|
|||||||
List<GuiItem> GUIItems = new ArrayList<>();
|
List<GuiItem> GUIItems = new ArrayList<>();
|
||||||
ItemStack dumby = buildDummyItem();
|
ItemStack dumby = buildDummyItem();
|
||||||
// Fill background of GUI with dumbyitem & replace GUI assets after
|
// Fill background of GUI with dumbyitem & replace GUI assets after
|
||||||
for (int x = 0; x <= (gui.getRows() * 9) - 1; x++)
|
for (int x = 0; x <= (gui.getRows() * 9) - 1; x++) GUIItems.add(new GuiItem(dumby, e -> e.setCancelled(true)));
|
||||||
GUIItems.add(new GuiItem(dumby, e -> e.setCancelled(true)));
|
|
||||||
for (PermissableAction action : PermissableAction.values()) {
|
for (PermissableAction action : PermissableAction.values()) {
|
||||||
if (action.getSlot() == -1) continue;
|
if (action.getSlot() == -1) continue;
|
||||||
GUIItems.set(action.getSlot(), new GuiItem(action.buildAsset(fplayer, perm), e -> {
|
GUIItems.set(action.getSlot(), new GuiItem(action.buildAsset(fplayer, perm), e -> {
|
||||||
@@ -53,17 +47,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;
|
|
||||||
success = fplayer.getFaction().setPermission(perm, action, access);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -93,9 +82,11 @@ public class PermissableActionFrame {
|
|||||||
ConfigurationSection config = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.dummy-item");
|
ConfigurationSection config = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.dummy-item");
|
||||||
ItemStack item = XMaterial.matchXMaterial(config.getString("Type")).get().parseItem();
|
ItemStack item = XMaterial.matchXMaterial(config.getString("Type")).get().parseItem();
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
meta.setLore(FactionsPlugin.getInstance().colorList(config.getStringList("Lore")));
|
if (meta != null) {
|
||||||
meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Name")));
|
meta.setLore(FactionsPlugin.getInstance().colorList(config.getStringList("Lore")));
|
||||||
item.setItemMeta(meta);
|
meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Name")));
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
}
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,9 +94,14 @@ public class PermissableActionFrame {
|
|||||||
ConfigurationSection config = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.back-item");
|
ConfigurationSection config = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.back-item");
|
||||||
ItemStack item = XMaterial.matchXMaterial(config.getString("Type")).get().parseItem();
|
ItemStack item = XMaterial.matchXMaterial(config.getString("Type")).get().parseItem();
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
meta.setLore(FactionsPlugin.getInstance().colorList(config.getStringList("Lore")));
|
if (meta != null) {
|
||||||
meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Name")));
|
meta.setLore(FactionsPlugin.getInstance().colorList(config.getStringList("Lore")));
|
||||||
item.setItemMeta(meta);
|
meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Name")));
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
}
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.massivecraft.factions.zcore.fperms.gui;
|
package com.massivecraft.factions.zcore.fperms.gui;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
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;
|
||||||
@@ -8,7 +9,6 @@ import com.massivecraft.factions.Faction;
|
|||||||
import com.massivecraft.factions.FactionsPlugin;
|
import com.massivecraft.factions.FactionsPlugin;
|
||||||
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.util.XMaterial;
|
|
||||||
import com.massivecraft.factions.zcore.fperms.Permissable;
|
import com.massivecraft.factions.zcore.fperms.Permissable;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@@ -19,14 +19,11 @@ import java.util.List;
|
|||||||
|
|
||||||
public class PermissableRelationFrame {
|
public class PermissableRelationFrame {
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Illyria Team
|
|
||||||
*/
|
|
||||||
|
|
||||||
private Gui gui;
|
private Gui gui;
|
||||||
|
private ConfigurationSection section;
|
||||||
|
|
||||||
public PermissableRelationFrame(Faction f) {
|
public PermissableRelationFrame(Faction f) {
|
||||||
ConfigurationSection section = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.relation");
|
section = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.relation");
|
||||||
gui = new Gui(FactionsPlugin.getInstance(),
|
gui = new Gui(FactionsPlugin.getInstance(),
|
||||||
section.getInt("rows", 3),
|
section.getInt("rows", 3),
|
||||||
FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fperm-gui.relation.name").replace("{faction}", f.getTag())));
|
FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fperm-gui.relation.name").replace("{faction}", f.getTag())));
|
||||||
@@ -37,8 +34,7 @@ public class PermissableRelationFrame {
|
|||||||
List<GuiItem> GUIItems = new ArrayList<>();
|
List<GuiItem> GUIItems = new ArrayList<>();
|
||||||
ItemStack dumby = buildDummyItem();
|
ItemStack dumby = buildDummyItem();
|
||||||
// Fill background of GUI with dumbyitem & replace GUI assets after
|
// Fill background of GUI with dumbyitem & replace GUI assets after
|
||||||
for (int x = 0; x <= (gui.getRows() * 9) - 1; x++)
|
for (int x = 0; x <= (gui.getRows() * 9) - 1; x++) GUIItems.add(new GuiItem(dumby, e -> e.setCancelled(true)));
|
||||||
GUIItems.add(new GuiItem(dumby, e -> e.setCancelled(true)));
|
|
||||||
ConfigurationSection sec = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.relation");
|
ConfigurationSection sec = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.relation");
|
||||||
for (String key : sec.getConfigurationSection("slots").getKeys(false)) {
|
for (String key : sec.getConfigurationSection("slots").getKeys(false)) {
|
||||||
if (key == null || sec.getInt("slots." + key) < 0) continue;
|
if (key == null || sec.getInt("slots." + key) < 0) continue;
|
||||||
@@ -58,8 +54,10 @@ public class PermissableRelationFrame {
|
|||||||
private ItemStack buildAsset(String loc, String relation) {
|
private ItemStack buildAsset(String loc, String relation) {
|
||||||
ItemStack item = XMaterial.matchXMaterial(FactionsPlugin.getInstance().getConfig().getString(loc)).get().parseItem();
|
ItemStack item = XMaterial.matchXMaterial(FactionsPlugin.getInstance().getConfig().getString(loc)).get().parseItem();
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
meta.setDisplayName(FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fperm-gui.relation.Placeholder-Item.Name").replace("{relation}", relation)));
|
if (meta != null) {
|
||||||
item.setItemMeta(meta);
|
meta.setDisplayName(FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fperm-gui.relation.Placeholder-Item.Name").replace("{relation}", relation)));
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
}
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,9 +65,12 @@ public class PermissableRelationFrame {
|
|||||||
ConfigurationSection config = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.dummy-item");
|
ConfigurationSection config = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.dummy-item");
|
||||||
ItemStack item = XMaterial.matchXMaterial(config.getString("Type")).get().parseItem();
|
ItemStack item = XMaterial.matchXMaterial(config.getString("Type")).get().parseItem();
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
meta.setLore(FactionsPlugin.getInstance().colorList(config.getStringList("Lore")));
|
// So u can set it to air.
|
||||||
meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Name")));
|
if (meta != null) {
|
||||||
item.setItemMeta(meta);
|
meta.setLore(FactionsPlugin.getInstance().colorList(config.getStringList("Lore")));
|
||||||
|
meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Name")));
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
}
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,3 +84,4 @@ public class PermissableRelationFrame {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.massivecraft.factions.zcore.frame.fdisband;
|
package com.massivecraft.factions.zcore.frame.fdisband;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
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.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 org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
@@ -28,7 +28,7 @@ public class FDisbandFrame {
|
|||||||
private Gui gui;
|
private Gui gui;
|
||||||
|
|
||||||
public FDisbandFrame(Faction faction) {
|
public FDisbandFrame(Faction faction) {
|
||||||
this.gui = new Gui(FactionsPlugin.getInstance(), 1, "Confirm Disband");
|
this.gui = new Gui(FactionsPlugin.getInstance(), 1, ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(FactionsPlugin.getInstance().getConfig().getString("f-disband-gui.title"))));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void buildGUI(FPlayer fPlayer) {
|
public void buildGUI(FPlayer fPlayer) {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.massivecraft.factions.zcore.frame.fupgrades;
|
package com.massivecraft.factions.zcore.frame.fupgrades;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
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;
|
||||||
@@ -7,7 +8,6 @@ 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.FactionsPlugin;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -16,7 +16,6 @@ import org.bukkit.inventory.meta.ItemMeta;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Saser
|
* @author Saser
|
||||||
@@ -36,7 +35,8 @@ public class FUpgradeFrame {
|
|||||||
PaginatedPane pane = new PaginatedPane(0, 0, 9, this.gui.getRows());
|
PaginatedPane pane = new PaginatedPane(0, 0, 9, this.gui.getRows());
|
||||||
List<GuiItem> GUIItems = new ArrayList<>();
|
List<GuiItem> GUIItems = new ArrayList<>();
|
||||||
ItemStack dummy = buildDummyItem();
|
ItemStack dummy = buildDummyItem();
|
||||||
for (int x = 0; x <= this.gui.getRows() * 9 - 1; ++x) GUIItems.add(new GuiItem(dummy, e -> e.setCancelled(true)));
|
for (int x = 0; x <= this.gui.getRows() * 9 - 1; ++x)
|
||||||
|
GUIItems.add(new GuiItem(dummy, e -> e.setCancelled(true)));
|
||||||
for (UpgradeType value : UpgradeType.values()) {
|
for (UpgradeType value : UpgradeType.values()) {
|
||||||
if (value.getSlot() != -1) {
|
if (value.getSlot() != -1) {
|
||||||
GUIItems.set(value.getSlot(), new GuiItem(value.buildAsset(fplayer.getFaction()), e -> {
|
GUIItems.set(value.getSlot(), new GuiItem(value.buildAsset(fplayer.getFaction()), e -> {
|
||||||
@@ -44,19 +44,19 @@ public class FUpgradeFrame {
|
|||||||
FPlayer fme = FPlayers.getInstance().getByPlayer((Player) e.getWhoClicked());
|
FPlayer fme = FPlayers.getInstance().getByPlayer((Player) e.getWhoClicked());
|
||||||
if (fme.getFaction().getUpgrade(value) == value.getMaxLevel()) return;
|
if (fme.getFaction().getUpgrade(value) == value.getMaxLevel()) return;
|
||||||
int cost = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu." + value.toString() + ".Cost.level-" + (fme.getFaction().getUpgrade(value) + 1));
|
int cost = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu." + value.toString() + ".Cost.level-" + (fme.getFaction().getUpgrade(value) + 1));
|
||||||
if (fme.hasMoney(cost)) {
|
if (fme.hasMoney(cost)) {
|
||||||
fme.takeMoney(cost);
|
fme.takeMoney(cost);
|
||||||
if (value == UpgradeType.CHEST) updateChests(fme.getFaction());
|
if (value == UpgradeType.CHEST) updateChests(fme.getFaction());
|
||||||
|
|
||||||
if (value == UpgradeType.POWER) updateFactionPowerBoost(fme.getFaction());
|
if (value == UpgradeType.POWER) updateFactionPowerBoost(fme.getFaction());
|
||||||
|
|
||||||
if (value == UpgradeType.TNT) updateTNT(fme.getFaction());
|
if (value == UpgradeType.TNT) updateTNT(fme.getFaction());
|
||||||
|
|
||||||
if (value == UpgradeType.WARP) updateWarps(fme.getFaction());
|
if (value == UpgradeType.WARP) updateWarps(fme.getFaction());
|
||||||
|
|
||||||
fme.getFaction().setUpgrade(value, fme.getFaction().getUpgrade(value) + 1);
|
fme.getFaction().setUpgrade(value, fme.getFaction().getUpgrade(value) + 1);
|
||||||
buildGUI(fme);
|
buildGUI(fme);
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.massivecraft.factions.zcore.frame.fupgrades;
|
package com.massivecraft.factions.zcore.frame.fupgrades;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
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.Placeholder;
|
import com.massivecraft.factions.util.Placeholder;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
import com.mojang.authlib.GameProfile;
|
import com.mojang.authlib.GameProfile;
|
||||||
import com.mojang.authlib.properties.Property;
|
import com.mojang.authlib.properties.Property;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.massivecraft.factions.zcore.frame.fupgrades;
|
package com.massivecraft.factions.zcore.frame.fupgrades;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
import com.massivecraft.factions.*;
|
import com.massivecraft.factions.*;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
import org.bukkit.CropState;
|
import org.bukkit.CropState;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
@@ -25,22 +25,22 @@ public class UpgradesListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public static void onDamageReduction(EntityDamageByEntityEvent e) {
|
public static void onDamageReduction(EntityDamageByEntityEvent e) {
|
||||||
if (e.isCancelled()) {
|
if (e.isCancelled()) return;
|
||||||
return;
|
|
||||||
}
|
if (!(e.getDamager() instanceof Player) || !(e.getEntity() instanceof Player)) return;
|
||||||
if (!(e.getDamager() instanceof Player) || !(e.getEntity() instanceof Player)) {
|
if (e.getEntity() == null) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
FPlayer fme = FPlayers.getInstance().getByPlayer((Player) e.getEntity());
|
FPlayer fme = FPlayers.getInstance().getByPlayer((Player) e.getEntity());
|
||||||
FPlayer dame = FPlayers.getInstance().getByPlayer((Player) e.getDamager());
|
FPlayer dame = FPlayers.getInstance().getByPlayer((Player) e.getDamager());
|
||||||
if (fme == null || dame == null) {
|
|
||||||
return;
|
if (fme == null || dame == null) return;
|
||||||
}
|
|
||||||
FLocation floc = new FLocation(fme.getPlayer().getLocation());
|
FLocation floc = new FLocation(fme.getPlayer().getLocation());
|
||||||
|
|
||||||
|
if (floc == null) return;
|
||||||
|
|
||||||
if (Board.getInstance().getFactionAt(floc) == fme.getFaction()) {
|
if (Board.getInstance().getFactionAt(floc) == fme.getFaction()) {
|
||||||
if (dame.getFaction() == fme.getFaction()) {
|
if (dame.getFaction() == fme.getFaction()) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
double damage = e.getDamage();
|
double damage = e.getDamage();
|
||||||
int level = fme.getFaction().getUpgrade(UpgradeType.DAMAGEDECREASE);
|
int level = fme.getFaction().getUpgrade(UpgradeType.DAMAGEDECREASE);
|
||||||
double increase = FactionsPlugin.getInstance().getConfig().getDouble("fupgrades.MainMenu.DamageReduction.DamageReductionPercent.level-" + level);
|
double increase = FactionsPlugin.getInstance().getConfig().getDouble("fupgrades.MainMenu.DamageReduction.DamageReductionPercent.level-" + level);
|
||||||
@@ -50,20 +50,17 @@ public class UpgradesListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public static void onDamageIncrease(EntityDamageByEntityEvent e) {
|
public static void onDamageIncrease(EntityDamageByEntityEvent e) {
|
||||||
if (e == null) {
|
if (e == null) return;
|
||||||
return;
|
|
||||||
}
|
if (!(e.getDamager() instanceof Player) || !(e.getEntity() instanceof Player)) return;
|
||||||
if (!(e.getDamager() instanceof Player) || !(e.getEntity() instanceof Player)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e.getDamager().hasMetadata("NPC") || e.getEntity().hasMetadata("NPC")) return;
|
if (e.getDamager().hasMetadata("NPC") || e.getEntity().hasMetadata("NPC")) return;
|
||||||
|
|
||||||
FPlayer fme = FPlayers.getInstance().getByPlayer((Player) e.getEntity());
|
FPlayer fme = FPlayers.getInstance().getByPlayer((Player) e.getEntity());
|
||||||
FPlayer dame = FPlayers.getInstance().getByPlayer((Player) e.getDamager());
|
FPlayer dame = FPlayers.getInstance().getByPlayer((Player) e.getDamager());
|
||||||
if (fme == null || dame == null) {
|
if (fme == null || dame == null) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
FLocation floc = new FLocation(fme.getPlayer().getLocation());
|
FLocation floc = new FLocation(fme.getPlayer().getLocation());
|
||||||
|
|
||||||
@@ -87,9 +84,8 @@ public class UpgradesListener implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onDeath(EntityDeathEvent e) {
|
public void onDeath(EntityDeathEvent e) {
|
||||||
Entity killer = e.getEntity().getKiller();
|
Entity killer = e.getEntity().getKiller();
|
||||||
if (killer == null || !(killer instanceof Player)) {
|
if (killer == null || !(killer instanceof Player)) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
FLocation floc = new FLocation(e.getEntity().getLocation());
|
FLocation floc = new FLocation(e.getEntity().getLocation());
|
||||||
Faction faction = Board.getInstance().getFactionAt(floc);
|
Faction faction = Board.getInstance().getFactionAt(floc);
|
||||||
if (!faction.isWilderness()) {
|
if (!faction.isWilderness()) {
|
||||||
@@ -112,9 +108,7 @@ public class UpgradesListener implements Listener {
|
|||||||
Faction factionAtLoc = Board.getInstance().getFactionAt(floc);
|
Faction factionAtLoc = Board.getInstance().getFactionAt(floc);
|
||||||
if (!factionAtLoc.isWilderness()) {
|
if (!factionAtLoc.isWilderness()) {
|
||||||
int level = factionAtLoc.getUpgrade(UpgradeType.SPAWNER);
|
int level = factionAtLoc.getUpgrade(UpgradeType.SPAWNER);
|
||||||
if (level == 0) {
|
if (level == 0) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.lowerSpawnerDelay(e, FactionsPlugin.getInstance().getConfig().getDouble("fupgrades.MainMenu.Spawners.Spawner-Boost.level-" + level));
|
this.lowerSpawnerDelay(e, FactionsPlugin.getInstance().getConfig().getDouble("fupgrades.MainMenu.Spawners.Spawner-Boost.level-" + level));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -131,13 +125,10 @@ public class UpgradesListener implements Listener {
|
|||||||
if (!factionAtLoc.isWilderness()) {
|
if (!factionAtLoc.isWilderness()) {
|
||||||
int level = factionAtLoc.getUpgrade(UpgradeType.CROP);
|
int level = factionAtLoc.getUpgrade(UpgradeType.CROP);
|
||||||
int chance = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Crops.Crop-Boost.level-" + level);
|
int chance = FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Crops.Crop-Boost.level-" + level);
|
||||||
if (level == 0 || chance == 0) {
|
if (level == 0 || chance == 0) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
int randomNum = ThreadLocalRandom.current().nextInt(1, 101);
|
int randomNum = ThreadLocalRandom.current().nextInt(1, 101);
|
||||||
if (randomNum <= chance) {
|
if (randomNum <= chance) this.growCrop(e);
|
||||||
this.growCrop(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -173,21 +164,16 @@ public class UpgradesListener implements Listener {
|
|||||||
if (!factionAtLoc.isWilderness()) {
|
if (!factionAtLoc.isWilderness()) {
|
||||||
int level = factionAtLoc.getUpgrade(UpgradeType.REDSTONE);
|
int level = factionAtLoc.getUpgrade(UpgradeType.REDSTONE);
|
||||||
if (level != 0) {
|
if (level != 0) {
|
||||||
if (level == 1) {
|
if (level == 1) FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Redstone.Cost");
|
||||||
FactionsPlugin.getInstance().getConfig().getInt("fupgrades.MainMenu.Redstone.Cost");
|
if (unbreakable.contains(block)) e.setCancelled(true);
|
||||||
}
|
|
||||||
if (unbreakable.contains(block)) {
|
|
||||||
e.setCancelled(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onArmorDamage(PlayerItemDamageEvent e) {
|
public void onArmorDamage(PlayerItemDamageEvent e) {
|
||||||
if (FPlayers.getInstance().getByPlayer(e.getPlayer()) == null) {
|
if (FPlayers.getInstance().getByPlayer(e.getPlayer()) == null) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (e.getItem().getType().toString().contains("LEGGINGS") || e.getItem().getType().toString().contains("CHESTPLATE") || e.getItem().getType().toString().contains("HELMET") || e.getItem().getType().toString().contains("BOOTS")) {
|
if (e.getItem().getType().toString().contains("LEGGINGS") || e.getItem().getType().toString().contains("CHESTPLATE") || e.getItem().getType().toString().contains("HELMET") || e.getItem().getType().toString().contains("BOOTS")) {
|
||||||
int lvl = FPlayers.getInstance().getByPlayer(e.getPlayer()).getFaction().getUpgrade(UpgradeType.REINFORCEDARMOR);
|
int lvl = FPlayers.getInstance().getByPlayer(e.getPlayer()).getFaction().getUpgrade(UpgradeType.REINFORCEDARMOR);
|
||||||
double drop = FactionsPlugin.getInstance().getConfig().getDouble("fupgrades.MainMenu.Armor.Armor-HP-Drop.level-" + lvl);
|
double drop = FactionsPlugin.getInstance().getConfig().getDouble("fupgrades.MainMenu.Armor.Armor-HP-Drop.level-" + lvl);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.massivecraft.factions.zcore.frame.fwarps;
|
package com.massivecraft.factions.zcore.frame.fwarps;
|
||||||
|
|
||||||
|
import com.cryptomorin.xseries.XMaterial;
|
||||||
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;
|
||||||
@@ -11,7 +12,6 @@ import com.massivecraft.factions.integration.Econ;
|
|||||||
import com.massivecraft.factions.util.LazyLocation;
|
import com.massivecraft.factions.util.LazyLocation;
|
||||||
import com.massivecraft.factions.util.Placeholder;
|
import com.massivecraft.factions.util.Placeholder;
|
||||||
import com.massivecraft.factions.util.WarmUpUtil;
|
import com.massivecraft.factions.util.WarmUpUtil;
|
||||||
import com.massivecraft.factions.util.XMaterial;
|
|
||||||
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.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
@@ -40,7 +40,8 @@ public class FactionWarpsFrame {
|
|||||||
int count = 0;
|
int count = 0;
|
||||||
for (int x = 0; x <= gui.getRows() * 9 - 1; ++x)
|
for (int x = 0; x <= gui.getRows() * 9 - 1; ++x)
|
||||||
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())));
|
//We comment this out for now so it does not interfere with item placement when no warps are set
|
||||||
|
//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 (slots.size() < fplayer.getFaction().getWarps().entrySet().size()) {
|
if (slots.size() < fplayer.getFaction().getWarps().entrySet().size()) {
|
||||||
slots.add(slots.get(slots.size() - 1) + 1);
|
slots.add(slots.get(slots.size() - 1) + 1);
|
||||||
|
|||||||
@@ -663,25 +663,34 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
public void updatePower() {
|
public void updatePower() {
|
||||||
if (this.isOffline()) {
|
if (this.isOffline()) {
|
||||||
losePowerFromBeingOffline();
|
losePowerFromBeingOffline();
|
||||||
if (!Conf.powerRegenOffline) return;
|
if (!Conf.powerRegenOffline) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
} else if (hasFaction() && getFaction().isPowerFrozen()) {
|
} else if (hasFaction() && getFaction().isPowerFrozen()) {
|
||||||
return; // Don't let power regen if faction power is frozen.
|
return; // Don't let power regen if faction power is frozen.
|
||||||
}
|
}
|
||||||
|
|
||||||
long now = System.currentTimeMillis();
|
long now = System.currentTimeMillis();
|
||||||
this.millisPassed = now - this.lastPowerUpdateTime;
|
long millisPassed = now - this.lastPowerUpdateTime;
|
||||||
this.lastPowerUpdateTime = now;
|
this.lastPowerUpdateTime = now;
|
||||||
|
|
||||||
Player thisPlayer = this.getPlayer();
|
Player thisPlayer = this.getPlayer();
|
||||||
if (thisPlayer != null && thisPlayer.isDead())
|
if (thisPlayer != null && thisPlayer.isDead()) {
|
||||||
return; // don't let dead players regain power until they respawn
|
return; // don't let dead players regain power until they respawn
|
||||||
PowerRegenEvent powerRegenEvent = new PowerRegenEvent(getFaction(), this);
|
}
|
||||||
Bukkit.getScheduler().runTask(FactionsPlugin.getInstance(), () -> Bukkit.getServer().getPluginManager().callEvent(powerRegenEvent));
|
|
||||||
|
|
||||||
if (!powerRegenEvent.isCancelled())
|
double delta = millisPassed * Conf.powerPerMinute / 60000; // millisPerMinute : 60 * 1000
|
||||||
if (!powerRegenEvent.usingCustomPower())
|
if (Bukkit.getPluginManager().getPlugin("FactionsPlugin") != null) {
|
||||||
this.alterPower(millisPassed * Conf.powerPerMinute / 60000); // millisPerMinute : 60 * 1000
|
Bukkit.getScheduler().runTask(FactionsPlugin.getInstance(), () -> {
|
||||||
else this.alterPower(+powerRegenEvent.getCustomPower());
|
PowerRegenEvent powerRegenEvent = new PowerRegenEvent(getFaction(), this, delta);
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(powerRegenEvent);
|
||||||
|
if (!powerRegenEvent.isCancelled()) {
|
||||||
|
this.alterPower(powerRegenEvent.getDelta());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.alterPower(delta);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void losePowerFromBeingOffline() {
|
public void losePowerFromBeingOffline() {
|
||||||
@@ -728,12 +737,13 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
|
|
||||||
public void sendFactionHereMessage(Faction from) {
|
public void sendFactionHereMessage(Faction from) {
|
||||||
Faction toShow = Board.getInstance().getFactionAt(getLastStoodAt());
|
Faction toShow = Board.getInstance().getFactionAt(getLastStoodAt());
|
||||||
boolean showChat = true;
|
|
||||||
|
if (Conf.worldsNoClaiming.contains(getLastStoodAt().getWorldName())) return;
|
||||||
|
|
||||||
if (showInfoBoard(toShow)) {
|
if (showInfoBoard(toShow)) {
|
||||||
FScoreboard.get(this).setTemporarySidebar(new FInfoSidebar(toShow));
|
FScoreboard.get(this).setTemporarySidebar(new FInfoSidebar(toShow));
|
||||||
showChat = FactionsPlugin.getInstance().getConfig().getBoolean("scoreboard.also-send-chat", true);
|
|
||||||
}
|
}
|
||||||
if (showChat)
|
if (FactionsPlugin.getInstance().getConfig().getBoolean("scoreboard.also-send-chat", true))
|
||||||
this.sendMessage(FactionsPlugin.getInstance().txt.parse(TL.FACTION_LEAVE.format(from.getTag(this), toShow.getTag(this))));
|
this.sendMessage(FactionsPlugin.getInstance().txt.parse(TL.FACTION_LEAVE.format(from.getTag(this), toShow.getTag(this))));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -842,71 +852,72 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean canClaimForFactionAtLocation(Faction forFaction, FLocation flocation, boolean notifyFailure) {
|
public boolean canClaimForFactionAtLocation(Faction forFaction, FLocation flocation, boolean notifyFailure) {
|
||||||
|
FactionsPlugin plugin = FactionsPlugin.getInstance();
|
||||||
String error = null;
|
String error = null;
|
||||||
Faction myFaction = getFaction();
|
Faction myFaction = getFaction();
|
||||||
Faction currentFaction = Board.getInstance().getFactionAt(flocation);
|
Faction currentFaction = Board.getInstance().getFactionAt(flocation);
|
||||||
int ownedLand = forFaction.getLandRounded();
|
int ownedLand = forFaction.getLandRounded();
|
||||||
int factionBuffer = FactionsPlugin.getInstance().getConfig().getInt("hcf.buffer-zone", 0);
|
int factionBuffer = plugin.getConfig().getInt("hcf.buffer-zone", 0);
|
||||||
int worldBuffer = FactionsPlugin.getInstance().getConfig().getInt("world-border.buffer", 0) - 1;
|
int worldBuffer = plugin.getConfig().getInt("world-border.buffer", 0) - 1;
|
||||||
|
|
||||||
if (Conf.worldGuardChecking && Worldguard.getInstance().checkForRegionsInChunk(flocation) && !this.isAdminBypassing()) {
|
if (Conf.worldGuardChecking && Worldguard.getInstance().checkForRegionsInChunk(flocation)) {
|
||||||
// Checks for WorldGuard regions in the chunk attempting to be claimed
|
// Checks for WorldGuard regions in the chunk attempting to be claimed
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_PROTECTED.toString());
|
error = plugin.txt.parse(TL.CLAIM_PROTECTED.toString());
|
||||||
} else if (flocation.isOutsideWorldBorder(FactionsPlugin.getInstance().getConfig().getInt("world-border.buffer", 0) - 1)) {
|
} else if (flocation.isOutsideWorldBorder(plugin.getConfig().getInt("world-border.buffer", 0) - 1)) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_OUTSIDEWORLDBORDER.toString());
|
error = plugin.txt.parse(TL.CLAIM_OUTSIDEWORLDBORDER.toString());
|
||||||
} else if (Conf.worldsNoClaiming.contains(flocation.getWorldName())) {
|
} else if (Conf.worldsNoClaiming.contains(flocation.getWorldName())) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_DISABLED.toString());
|
error = plugin.txt.parse(TL.CLAIM_DISABLED.toString());
|
||||||
} else if (this.isAdminBypassing()) {
|
} else if (this.isAdminBypassing()) {
|
||||||
return true;
|
return true;
|
||||||
} else if (forFaction.isSafeZone() && Permission.MANAGE_SAFE_ZONE.has(getPlayer())) {
|
} else if (forFaction.isSafeZone() && Permission.MANAGE_SAFE_ZONE.has(getPlayer())) {
|
||||||
return true;
|
return true;
|
||||||
} else if (forFaction.isWarZone() && Permission.MANAGE_WAR_ZONE.has(getPlayer())) {
|
} else if (forFaction.isWarZone() && Permission.MANAGE_WAR_ZONE.has(getPlayer())) {
|
||||||
return true;
|
return true;
|
||||||
} else if (currentFaction.getAccess(this, PermissableAction.TERRITORY) == Access.ALLOW) {
|
} else if (currentFaction.getAccess(this, PermissableAction.TERRITORY) == Access.ALLOW && forFaction != currentFaction) {
|
||||||
return true;
|
return true;
|
||||||
} else if (myFaction != forFaction) {
|
} else if (myFaction != forFaction) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_CANTCLAIM.toString(), forFaction.describeTo(this));
|
error = plugin.txt.parse(TL.CLAIM_CANTCLAIM.toString(), forFaction.describeTo(this));
|
||||||
} else if (forFaction == currentFaction) {
|
} else if (forFaction == currentFaction) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_ALREADYOWN.toString(), forFaction.describeTo(this, true));
|
error = plugin.txt.parse(TL.CLAIM_ALREADYOWN.toString(), forFaction.describeTo(this, true));
|
||||||
} else if (forFaction.getFPlayers().size() < Conf.claimsRequireMinFactionMembers) {
|
} else if (forFaction.getFPlayers().size() < Conf.claimsRequireMinFactionMembers) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_MEMBERS.toString(), Conf.claimsRequireMinFactionMembers);
|
error = plugin.txt.parse(TL.CLAIM_MEMBERS.toString(), Conf.claimsRequireMinFactionMembers);
|
||||||
} else if (currentFaction.isSafeZone()) {
|
} else if (currentFaction.isSafeZone()) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_SAFEZONE.toString());
|
error = plugin.txt.parse(TL.CLAIM_SAFEZONE.toString());
|
||||||
} else if (currentFaction.isWarZone()) {
|
} else if (currentFaction.isWarZone()) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_WARZONE.toString());
|
error = plugin.txt.parse(TL.CLAIM_WARZONE.toString());
|
||||||
} else if (FactionsPlugin.getInstance().getConfig().getBoolean("hcf.allow-overclaim", true) && ownedLand >= forFaction.getPowerRounded()) {
|
} else if (plugin.getConfig().getBoolean("hcf.allow-overclaim", true) && ownedLand >= forFaction.getPowerRounded()) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_POWER.toString());
|
error = plugin.txt.parse(TL.CLAIM_POWER.toString());
|
||||||
} else if (Conf.claimedLandsMax != 0 && ownedLand >= Conf.claimedLandsMax && forFaction.isNormal()) {
|
} else if (Conf.claimedLandsMax != 0 && ownedLand >= Conf.claimedLandsMax && forFaction.isNormal()) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_LIMIT.toString());
|
error = plugin.txt.parse(TL.CLAIM_LIMIT.toString());
|
||||||
} else if (currentFaction.getRelationTo(forFaction) == Relation.ALLY) {
|
} else if (currentFaction.getRelationTo(forFaction) == Relation.ALLY) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_ALLY.toString());
|
error = plugin.txt.parse(TL.CLAIM_ALLY.toString());
|
||||||
} else if (Conf.claimsMustBeConnected && !this.isAdminBypassing() && myFaction.getLandRoundedInWorld(flocation.getWorldName()) > 0 && !Board.getInstance().isConnectedLocation(flocation, myFaction) && (!Conf.claimsCanBeUnconnectedIfOwnedByOtherFaction || !currentFaction.isNormal())) {
|
} else if (Conf.claimsMustBeConnected && !this.isAdminBypassing() && myFaction.getLandRoundedInWorld(flocation.getWorldName()) > 0 && !Board.getInstance().isConnectedLocation(flocation, myFaction) && (!Conf.claimsCanBeUnconnectedIfOwnedByOtherFaction || !currentFaction.isNormal())) {
|
||||||
if (Conf.claimsCanBeUnconnectedIfOwnedByOtherFaction) {
|
if (Conf.claimsCanBeUnconnectedIfOwnedByOtherFaction) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_CONTIGIOUS.toString());
|
error = plugin.txt.parse(TL.CLAIM_CONTIGIOUS.toString());
|
||||||
} else {
|
} else {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_FACTIONCONTIGUOUS.toString());
|
error = plugin.txt.parse(TL.CLAIM_FACTIONCONTIGUOUS.toString());
|
||||||
}
|
}
|
||||||
} else if (factionBuffer > 0 && Board.getInstance().hasFactionWithin(flocation, myFaction, factionBuffer)) {
|
} else if (factionBuffer > 0 && Board.getInstance().hasFactionWithin(flocation, myFaction, factionBuffer)) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_TOOCLOSETOOTHERFACTION.format(factionBuffer));
|
error = plugin.txt.parse(TL.CLAIM_TOOCLOSETOOTHERFACTION.format(factionBuffer));
|
||||||
} else if (flocation.isOutsideWorldBorder(worldBuffer)) {
|
} else if (flocation.isOutsideWorldBorder(worldBuffer)) {
|
||||||
if (worldBuffer > 0) {
|
if (worldBuffer > 0) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_OUTSIDEBORDERBUFFER.format(worldBuffer));
|
error = plugin.txt.parse(TL.CLAIM_OUTSIDEBORDERBUFFER.format(worldBuffer));
|
||||||
} else {
|
} else {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_OUTSIDEWORLDBORDER.toString());
|
error = plugin.txt.parse(TL.CLAIM_OUTSIDEWORLDBORDER.toString());
|
||||||
}
|
}
|
||||||
} else if (currentFaction.isNormal()) {
|
} else if (currentFaction.isNormal()) {
|
||||||
if (myFaction.isPeaceful()) {
|
if (myFaction.isPeaceful()) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_PEACEFUL.toString(), currentFaction.getTag(this));
|
error = plugin.txt.parse(TL.CLAIM_PEACEFUL.toString(), currentFaction.getTag(this));
|
||||||
} else if (currentFaction.isPeaceful()) {
|
} else if (currentFaction.isPeaceful()) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_PEACEFULTARGET.toString(), currentFaction.getTag(this));
|
error = plugin.txt.parse(TL.CLAIM_PEACEFULTARGET.toString(), currentFaction.getTag(this));
|
||||||
} else if (!currentFaction.hasLandInflation()) {
|
} else if (!currentFaction.hasLandInflation()) {
|
||||||
// TODO more messages WARN current faction most importantly
|
// TODO more messages WARN current faction most importantly
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_THISISSPARTA.toString(), currentFaction.getTag(this));
|
error = plugin.txt.parse(TL.CLAIM_THISISSPARTA.toString(), currentFaction.getTag(this));
|
||||||
} else if (currentFaction.hasLandInflation() && !FactionsPlugin.getInstance().getConfig().getBoolean("hcf.allow-overclaim", true)) {
|
} else if (currentFaction.hasLandInflation() && !plugin.getConfig().getBoolean("hcf.allow-overclaim", true)) {
|
||||||
// deny over claim when it normally would be allowed.
|
// deny over claim when it normally would be allowed.
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_OVERCLAIM_DISABLED.toString());
|
error = plugin.txt.parse(TL.CLAIM_OVERCLAIM_DISABLED.toString());
|
||||||
} else if (!Board.getInstance().isBorderLocation(flocation)) {
|
} else if (!Board.getInstance().isBorderLocation(flocation)) {
|
||||||
error = FactionsPlugin.getInstance().txt.parse(TL.CLAIM_BORDER.toString());
|
error = plugin.txt.parse(TL.CLAIM_BORDER.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO: Add more else if statements.
|
// TODO: Add more else if statements.
|
||||||
@@ -961,9 +972,6 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setFFlying(boolean fly, boolean damage) {
|
public void setFFlying(boolean fly, boolean damage) {
|
||||||
if (!FactionsPlugin.getInstance().getConfig().getBoolean("enable-faction-flight"))
|
|
||||||
return;
|
|
||||||
|
|
||||||
Player player = getPlayer();
|
Player player = getPlayer();
|
||||||
if (player == null) return;
|
if (player == null) return;
|
||||||
|
|
||||||
@@ -972,8 +980,9 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
|
|
||||||
if (!damage) {
|
if (!damage) {
|
||||||
msg(TL.COMMAND_FLY_CHANGE, fly ? "enabled" : "disabled");
|
msg(TL.COMMAND_FLY_CHANGE, fly ? "enabled" : "disabled");
|
||||||
if (!fly)
|
if (!fly) {
|
||||||
sendMessage(TL.COMMAND_FLY_COOLDOWN.toString().replace("{amount}", FactionsPlugin.getInstance().getConfig().getInt("fly-falldamage-cooldown", 3) + ""));
|
sendMessage(TL.COMMAND_FLY_COOLDOWN.toString().replace("{amount}", FactionsPlugin.getInstance().getConfig().getInt("fly-falldamage-cooldown", 3) + ""));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
msg(TL.COMMAND_FLY_DAMAGE);
|
msg(TL.COMMAND_FLY_DAMAGE);
|
||||||
}
|
}
|
||||||
@@ -991,6 +1000,7 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
Bukkit.getScheduler().runTaskLater(FactionsPlugin.getInstance(), () -> setTakeFallDamage(true), 20L * cooldown);
|
Bukkit.getScheduler().runTaskLater(FactionsPlugin.getInstance(), () -> setTakeFallDamage(true), 20L * cooldown);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
isFlying = fly;
|
isFlying = fly;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1016,8 +1026,14 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
|
|
||||||
public boolean canFlyAtLocation(FLocation location) {
|
public boolean canFlyAtLocation(FLocation location) {
|
||||||
Faction faction = Board.getInstance().getFactionAt(location);
|
Faction faction = Board.getInstance().getFactionAt(location);
|
||||||
if ((faction == getFaction() && getRole() == Role.LEADER) || isAdminBypassing) return true;
|
if ((faction == getFaction() && getRole() == Role.LEADER) || isAdminBypassing) {
|
||||||
if (faction.isSystemFaction()) return CmdFly.checkFly(this, getPlayer(), faction);
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (faction.isSystemFaction()) {
|
||||||
|
return CmdFly.checkBypassPerms(this, getPlayer(), faction, false);
|
||||||
|
}
|
||||||
|
|
||||||
Access access = faction.getAccess(this, PermissableAction.FLY);
|
Access access = faction.getAccess(this, PermissableAction.FLY);
|
||||||
return access == null || access == Access.UNDEFINED || access == Access.ALLOW;
|
return access == null || access == Access.UNDEFINED || access == Access.ALLOW;
|
||||||
}
|
}
|
||||||
@@ -1204,11 +1220,11 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean hasFriendlyFire(){
|
public boolean hasFriendlyFire() {
|
||||||
return friendlyFire;
|
return friendlyFire;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFriendlyFire(boolean status){
|
public void setFriendlyFire(boolean status) {
|
||||||
friendlyFire = status;
|
friendlyFire = status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1286,11 +1302,13 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
|
|
||||||
|
|
||||||
// announce success
|
// announce success
|
||||||
Set<FPlayer> informTheseFPlayers = new HashSet<>();
|
if (!FactionsPlugin.cachedRadiusClaim) {
|
||||||
informTheseFPlayers.add(this);
|
Set<FPlayer> informTheseFPlayers = new HashSet<>();
|
||||||
informTheseFPlayers.addAll(forFaction.getFPlayersWhereOnline(true));
|
informTheseFPlayers.add(this);
|
||||||
for (FPlayer fp : informTheseFPlayers) {
|
informTheseFPlayers.addAll(forFaction.getFPlayersWhereOnline(true));
|
||||||
fp.msg(TL.CLAIM_CLAIMED, this.describeTo(fp, true), forFaction.describeTo(fp), currentFaction.describeTo(fp));
|
for (FPlayer fp : informTheseFPlayers) {
|
||||||
|
fp.msg(TL.CLAIM_CLAIMED, this.describeTo(fp, true), forFaction.describeTo(fp), currentFaction.describeTo(fp));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Board.getInstance().setFactionAt(forFaction, flocation);
|
Board.getInstance().setFactionAt(forFaction, flocation);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.massivecraft.factions.zcore.persist;
|
package com.massivecraft.factions.zcore.persist;
|
||||||
|
|
||||||
import com.massivecraft.factions.*;
|
import com.massivecraft.factions.*;
|
||||||
|
import com.massivecraft.factions.cmd.shields.struct.frame.ShieldFramePersistence;
|
||||||
import com.massivecraft.factions.discord.Discord;
|
import com.massivecraft.factions.discord.Discord;
|
||||||
import com.massivecraft.factions.event.FPlayerLeaveEvent;
|
import com.massivecraft.factions.event.FPlayerLeaveEvent;
|
||||||
import com.massivecraft.factions.event.FactionDisbandEvent;
|
import com.massivecraft.factions.event.FactionDisbandEvent;
|
||||||
@@ -95,7 +96,10 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
private String weeWooFormat;
|
private String weeWooFormat;
|
||||||
private String guildId;
|
private String guildId;
|
||||||
private String memberRoleId;
|
private String memberRoleId;
|
||||||
|
private ShieldFramePersistence shieldFrame;
|
||||||
|
private boolean isProtected;
|
||||||
|
private long applyShieldUpdate;
|
||||||
|
private ShieldFramePersistence newFrame;
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// Construct
|
// Construct
|
||||||
@@ -185,6 +189,48 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
return this.announcements;
|
return this.announcements;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isProtected() {
|
||||||
|
return this.isProtected;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getShieldChangeTime() {
|
||||||
|
return this.applyShieldUpdate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ShieldFramePersistence getNewFrame() {
|
||||||
|
return this.newFrame;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProtected() {
|
||||||
|
this.isProtected = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUnprotected() {
|
||||||
|
this.isProtected = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ShieldFramePersistence getShieldFrame() {
|
||||||
|
return this.shieldFrame;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void applyShield() {
|
||||||
|
this.shieldFrame = this.newFrame;
|
||||||
|
this.applyShieldUpdate = 0L;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setupShieldChange(ShieldFramePersistence frame) {
|
||||||
|
if (this.shieldFrame == null) {
|
||||||
|
this.shieldFrame = frame;
|
||||||
|
} else {
|
||||||
|
this.newFrame = frame;
|
||||||
|
this.applyShieldUpdate = System.currentTimeMillis() + (3600000 * Conf.shieldFrameChangeCooldownHours);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean pendingShieldChange() {
|
||||||
|
return (this.applyShieldUpdate != 0L);
|
||||||
|
}
|
||||||
|
|
||||||
public void addAnnouncement(FPlayer fPlayer, String msg) {
|
public void addAnnouncement(FPlayer fPlayer, String msg) {
|
||||||
List<String> list = announcements.containsKey(fPlayer.getId()) ? announcements.get(fPlayer.getId()) : new ArrayList<>();
|
List<String> list = announcements.containsKey(fPlayer.getId()) ? announcements.get(fPlayer.getId()) : new ArrayList<>();
|
||||||
list.add(msg);
|
list.add(msg);
|
||||||
@@ -1277,9 +1323,10 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
if (Conf.logFactionDisband)
|
if (Conf.logFactionDisband)
|
||||||
FactionsPlugin.getInstance().log("The faction " + this.getTag() + " (" + this.getId() + ") has been disbanded since it has no members left" + (autoLeave ? " and by inactivity" : "") + ".");
|
FactionsPlugin.getInstance().log("The faction " + this.getTag() + " (" + this.getId() + ") has been disbanded since it has no members left" + (autoLeave ? " and by inactivity" : "") + ".");
|
||||||
|
|
||||||
|
if (FactionsPlugin.getInstance().getConfig().getBoolean("faction-disband-broadcast")) {
|
||||||
for (FPlayer fplayer : FPlayers.getInstance().getOnlinePlayers())
|
for (FPlayer fplayer : FPlayers.getInstance().getOnlinePlayers())
|
||||||
fplayer.msg(TL.COMMAND_DISBAND_BROADCAST_GENERIC, 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);
|
||||||
|
|||||||
@@ -141,14 +141,14 @@ public enum TL {
|
|||||||
COMMAND_ADMIN_TARGETSELF("'&c&l[!] &cThe target player musn''t be yourself."),
|
COMMAND_ADMIN_TARGETSELF("'&c&l[!] &cThe target player musn''t be yourself."),
|
||||||
COMMAND_ADMIN_DEMOTES("&c&l[!] &cYou have demoted &7%1$s &cfrom the position of faction admin."),
|
COMMAND_ADMIN_DEMOTES("&c&l[!] &cYou have demoted &7%1$s &cfrom the position of faction admin."),
|
||||||
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("&c&l[!] &7You have promoted &c%1$s &7to 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("&c&l[!] &c%1$s &7gave &c%2$s &7the leadership of &c%3$s&7."),
|
||||||
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."),
|
||||||
|
|
||||||
COMMAND_AHOME_DESCRIPTION("Send a player to their f home no matter what."),
|
COMMAND_AHOME_DESCRIPTION("Send a player to their f home no matter what."),
|
||||||
COMMAND_AHOME_NOHOME("%1$s doesn't have an f home."),
|
COMMAND_AHOME_NOHOME("%1$s doesn't have an f home."),
|
||||||
COMMAND_AHOME_SUCCESS("$1%s was sent to their f home."),
|
COMMAND_AHOME_SUCCESS("%1%s was sent to their f home."),
|
||||||
COMMAND_AHOME_OFFLINE("%1$s is offline."),
|
COMMAND_AHOME_OFFLINE("%1$s is offline."),
|
||||||
COMMAND_AHOME_TARGET("You were sent to your f home."),
|
COMMAND_AHOME_TARGET("You were sent to your f home."),
|
||||||
|
|
||||||
@@ -302,7 +302,7 @@ public enum TL {
|
|||||||
COMMAND_CREATE_TOCREATE("to create a new faction"),
|
COMMAND_CREATE_TOCREATE("to create a new faction"),
|
||||||
COMMAND_CREATE_FORCREATE("for creating a new faction"),
|
COMMAND_CREATE_FORCREATE("for creating a new faction"),
|
||||||
COMMAND_CREATE_ERROR("&c&l[!]&7 There was an &cinternal error&7 while trying to create your faction. &cPlease try again&7."),
|
COMMAND_CREATE_ERROR("&c&l[!]&7 There was an &cinternal error&7 while trying to create your faction. &cPlease try again&7."),
|
||||||
COMMAND_CREATE_CREATED("&c&l[!]&7 &c%1$s &7created a new faction &c&l%2$s"),
|
COMMAND_CREATE_CREATED("&c&l[!]&7 &c%1$s &7created a new faction named &c&l%2$s&7."),
|
||||||
COMMAND_CREATE_YOUSHOULD("&c&l[!]&7 You should now: &c%1$s"),
|
COMMAND_CREATE_YOUSHOULD("&c&l[!]&7 You should now: &c%1$s"),
|
||||||
COMMAND_CREATE_CREATEDLOG(" created a new faction: "),
|
COMMAND_CREATE_CREATEDLOG(" created a new faction: "),
|
||||||
COMMAND_CREATE_DESCRIPTION("Create a new faction"),
|
COMMAND_CREATE_DESCRIPTION("Create a new faction"),
|
||||||
@@ -395,20 +395,20 @@ public enum TL {
|
|||||||
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_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&7."),
|
||||||
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"),
|
||||||
COMMAND_DISBAND_CONFIRM("&c&l[!]&7 Your Faction has&c {tnt} &7tnt left in the bank, it will be &clost&7 if the faction is &cdisbanded&7. Type&c /f disband &7again within &c10&7 seconds to&c disband&7."),
|
COMMAND_DISBAND_CONFIRM("&c&l[!]&7 Your Faction has&c {tnt} &7tnt left in the bank, it will be &clost&7 if the faction is &cdisbanded&7. Type&c /f disband &7again within &c10&7 seconds to&c disband&7."),
|
||||||
COMMAND_DISBAND_DESCRIPTION("Disband a faction"),
|
COMMAND_DISBAND_DESCRIPTION("Disband a faction"),
|
||||||
|
|
||||||
COMMAND_FLY_DISABLED("&c&l[!]&7 Sorry, Faction flight is &cdisabled &7on this server"),
|
COMMAND_FLY_DISABLED("&c&l[!]&7 Sorry, Faction flight is &cdisabled &7on this server."),
|
||||||
COMMAND_FLY_DESCRIPTION("Enter or leave Faction flight mode"),
|
COMMAND_FLY_DESCRIPTION("Enter or leave Faction flight mode"),
|
||||||
COMMAND_FLY_CHANGE("&c&l[!]&7 Faction flight &c%1$s"),
|
COMMAND_FLY_CHANGE("&c&l[!]&7 Faction flight has been &c%1$s&7."),
|
||||||
COMMAND_FLY_COOLDOWN("&c&l[!]&7 You will &cnot&7 take fall damage for &c{amount}&7 seconds"),
|
COMMAND_FLY_COOLDOWN("&c&l[!]&7 You will &cnot&7 take fall damage for &c{amount}&7 seconds."),
|
||||||
COMMAND_FLY_DAMAGE("&c&l[!]&7 Faction flight &cdisabled&7 due to entering combat"),
|
COMMAND_FLY_DAMAGE("&c&l[!]&7 Faction flight &cdisabled&7 due to entering combat."),
|
||||||
COMMAND_FLY_NO_ACCESS("&c&l[!]&7 &cCannot fly &7in territory of %1$s"),
|
COMMAND_FLY_NO_ACCESS("&c&l[!]&7 &cCannot fly &7in territory of %1$s"),
|
||||||
COMMAND_FLY_ENEMY_NEAR("&c&l[!]&7 Flight has been&c disabled&7 an enemy is nearby"),
|
COMMAND_FLY_ENEMY_NEAR("&c&l[!]&7 Flight has been&c disabled&7 an enemy is nearby."),
|
||||||
COMMAND_FLY_CHECK_ENEMY("&c&l[!]&7 Cannot fly here, an enemy is &cnearby"),
|
COMMAND_FLY_CHECK_ENEMY("&c&l[!]&7 Cannot fly here, an enemy is &cnearby&7."),
|
||||||
COMMAND_FLY_NO_EPEARL("&c&l[!] &7You &ccannot&7 throw enderpearls while flying!"),
|
COMMAND_FLY_NO_EPEARL("&c&l[!] &7You &ccannot&7 throw enderpearls while flying!"),
|
||||||
|
|
||||||
COMMAND_FOCUS_SAMEFACTION("&c[!] You may not focus players in your faction!"),
|
COMMAND_FOCUS_SAMEFACTION("&c[!] You may not focus players in your faction!"),
|
||||||
@@ -470,7 +470,7 @@ public enum TL {
|
|||||||
COMMAND_INVITE_TOINVITE("to invite someone"),
|
COMMAND_INVITE_TOINVITE("to invite someone"),
|
||||||
COMMAND_INVITE_FORINVITE("for inviting someone"),
|
COMMAND_INVITE_FORINVITE("for inviting someone"),
|
||||||
COMMAND_INVITE_CLICKTOJOIN("Click to join!"),
|
COMMAND_INVITE_CLICKTOJOIN("Click to join!"),
|
||||||
COMMAND_INVITE_INVITEDYOU(" &chas invited you to join "),
|
COMMAND_INVITE_INVITEDYOU("&l[!]&7 &c%1$s&7 has invited you to join &c%2$s&7"),
|
||||||
COMMAND_INVITE_INVITED("&c&l[!]&7 &c%1$s&7 invited &c%2$s&7 to your faction."),
|
COMMAND_INVITE_INVITED("&c&l[!]&7 &c%1$s&7 invited &c%2$s&7 to your faction."),
|
||||||
COMMAND_ALTINVITE_INVITED_ALT("&c&l[!]&7 &c%1$s&7 invited &c%2$s&7 to your faction as an alt."),
|
COMMAND_ALTINVITE_INVITED_ALT("&c&l[!]&7 &c%1$s&7 invited &c%2$s&7 to your faction as an alt."),
|
||||||
|
|
||||||
@@ -621,7 +621,7 @@ public enum TL {
|
|||||||
COMMAND_OPEN_OPEN("open"),
|
COMMAND_OPEN_OPEN("open"),
|
||||||
COMMAND_OPEN_CLOSED("closed"),
|
COMMAND_OPEN_CLOSED("closed"),
|
||||||
COMMAND_OPEN_CHANGES("&c&l[!]&7 &c%1$s&7 changed the faction to &c%2$s&7."),
|
COMMAND_OPEN_CHANGES("&c&l[!]&7 &c%1$s&7 changed the faction to &c%2$s&7."),
|
||||||
COMMAND_OPEN_CHANGED("&c&l[!]&7 The faction &c%1$s&7 is now &c%2$s"),
|
COMMAND_OPEN_CHANGED("&c&l[!]&7 The faction &c%1$s&7 is now &c%2$s&7."),
|
||||||
COMMAND_OPEN_DESCRIPTION("Switch if invitation is required to join"),
|
COMMAND_OPEN_DESCRIPTION("Switch if invitation is required to join"),
|
||||||
|
|
||||||
COMMAND_OWNER_DISABLED("&c&l[!]&7 Sorry, but &cowned areas &7are &cdisabled &7on this server."),
|
COMMAND_OWNER_DISABLED("&c&l[!]&7 Sorry, but &cowned areas &7are &cdisabled &7on this server."),
|
||||||
@@ -707,11 +707,14 @@ public enum TL {
|
|||||||
COMMAND_PERMANENT_GRANT("&c&l[!]&7 added permanent status to"),
|
COMMAND_PERMANENT_GRANT("&c&l[!]&7 added permanent status to"),
|
||||||
COMMAND_PERMANENT_REVOKE("&c&l[!]&7 removed permanent status from"),
|
COMMAND_PERMANENT_REVOKE("&c&l[!]&7 removed permanent status from"),
|
||||||
COMMAND_PERMANENT_YOURS("&c&l[!]&7 &c%1$s&7 has &c%2$s&7 your faction"),
|
COMMAND_PERMANENT_YOURS("&c&l[!]&7 &c%1$s&7 has &c%2$s&7 your faction"),
|
||||||
COMMAND_PERMANENT_OTHER("&c&l[!]&7 &c%s &7has &c%s &7the faction &c'%s'."),
|
COMMAND_PERMANENT_OTHER("&c&l[!]&7 &c%s &7has &c%s &7the faction '&c%s&7'."),
|
||||||
COMMAND_PROMOTE_TARGET("&c&l[!]&7 You've been &c%1$s&7 to &c%2$s"),
|
COMMAND_PROMOTE_TARGET("&c&l[!]&7 You've been &c%1$s&7 to &c%2$s&7."),
|
||||||
COMMAND_PROMOTE_SUCCESS("&c&l[!]&7 You successfully&c %1$s %2$s &cto&7 %3$s"),
|
COMMAND_PROMOTE_SUCCESS("&c&l[!]&7 You successfully &c%1$s %2$s &cto&7 %3$s&7."),
|
||||||
COMMAND_PROMOTE_PROMOTED("promoted"),
|
COMMAND_PROMOTE_PROMOTED("promoted"),
|
||||||
COMMAND_PROMOTE_DEMOTED("demoted"),
|
COMMAND_PROMOTE_DEMOTED("demoted"),
|
||||||
|
COMMAND_PROMOTE_LOWEST_RANK("&c&l[!]&7 &c%1$s&7 already has the lowest rank in the faction."),
|
||||||
|
COMMAND_PROMOTE_HIGHEST_RANK("&c&l[!]&7 &c%1$s&7 already has the highest rank in the faction."),
|
||||||
|
COMMAND_PROMOTE_HIGHER_RANK("&c&l[!]&7 &c%1$s&7 has a higher rank than yours. You &4can not modify&7 his rank."),
|
||||||
COMMAND_PROMOTE_COLEADER_ADMIN("&c&l[!]&7 &cColeaders cant promote players to Admin!"),
|
COMMAND_PROMOTE_COLEADER_ADMIN("&c&l[!]&7 &cColeaders cant promote players to Admin!"),
|
||||||
|
|
||||||
COMMAND_PERMANENTPOWER_DESCRIPTION("Toggle permanent faction power option"),
|
COMMAND_PERMANENTPOWER_DESCRIPTION("Toggle permanent faction power option"),
|
||||||
@@ -723,7 +726,6 @@ public enum TL {
|
|||||||
COMMAND_PROMOTE_DESCRIPTION("/f promote <name>"),
|
COMMAND_PROMOTE_DESCRIPTION("/f promote <name>"),
|
||||||
COMMAND_PROMOTE_WRONGFACTION("&c&l[!]&7 &c%1$s&7 is &cnot&7 part of your faction."),
|
COMMAND_PROMOTE_WRONGFACTION("&c&l[!]&7 &c%1$s&7 is &cnot&7 part of your faction."),
|
||||||
COMMAND_NOACCESS("&c&l[!]&7 You don't have access to that."),
|
COMMAND_NOACCESS("&c&l[!]&7 You don't have access to that."),
|
||||||
COMMAND_PROMOTE_NOTTHATPLAYER("&c&l[!]&7 That player &ccannot&7 be promoted."),
|
|
||||||
COMMAND_PROMOTE_NOT_ALLOWED("&c&l[!]&7 You cannot promote to the same rank as yourself!"),
|
COMMAND_PROMOTE_NOT_ALLOWED("&c&l[!]&7 You cannot promote to the same rank as yourself!"),
|
||||||
COMMAND_PROMOTE_NOTSELF("&c&l[!]&7 You cannot manage your own rank."),
|
COMMAND_PROMOTE_NOTSELF("&c&l[!]&7 You cannot manage your own rank."),
|
||||||
COMMAND_PROMOTE_NOT_SAME("&c&l[!]&7 You cannot promote to the same rank as yourself!"),
|
COMMAND_PROMOTE_NOT_SAME("&c&l[!]&7 You cannot promote to the same rank as yourself!"),
|
||||||
@@ -731,7 +733,7 @@ public enum TL {
|
|||||||
|
|
||||||
COMMAND_POWER_TOSHOW("to show player power info"),
|
COMMAND_POWER_TOSHOW("to show player power info"),
|
||||||
COMMAND_POWER_FORSHOW("for showing player power info"),
|
COMMAND_POWER_FORSHOW("for showing player power info"),
|
||||||
COMMAND_POWER_POWER("&c&l[!]&7 &c%1$s » &cPower &7/ &cMaxpower&a » &c%2$d &7/&c%3$d %4$s"),
|
COMMAND_POWER_POWER("&c&l[!]&7 &c%1$s » &cPower &7/ &cMaxpower&a » &c%2$d &7/ &c%3$d %4$s"),
|
||||||
COMMAND_POWER_BONUS(" (bonus: "),
|
COMMAND_POWER_BONUS(" (bonus: "),
|
||||||
COMMAND_POWER_PENALTY(" (penalty: "),
|
COMMAND_POWER_PENALTY(" (penalty: "),
|
||||||
COMMAND_POWER_DESCRIPTION("&a&l» &7Show player &apower &7info"),
|
COMMAND_POWER_DESCRIPTION("&a&l» &7Show player &apower &7info"),
|
||||||
@@ -750,16 +752,16 @@ public enum TL {
|
|||||||
COMMAND_RELATIONS_ALREADYINRELATIONSHIP("&c&l[!]&7 You &calready&7 have that relation wish set with&c %1$s."),
|
COMMAND_RELATIONS_ALREADYINRELATIONSHIP("&c&l[!]&7 You &calready&7 have that relation wish set with&c %1$s."),
|
||||||
COMMAND_RELATIONS_TOMARRY("to change a relation wish"),
|
COMMAND_RELATIONS_TOMARRY("to change a relation wish"),
|
||||||
COMMAND_RELATIONS_FORMARRY("for changing a relation wish"),
|
COMMAND_RELATIONS_FORMARRY("for changing a relation wish"),
|
||||||
COMMAND_RELATIONS_MUTUAL("&c&l[!]&7 Your faction is now %1$s to %2$s"),
|
COMMAND_RELATIONS_MUTUAL("&c&l[!]&7 Your faction is now %1$s&7 to &c%2$s&7."),
|
||||||
COMMAND_RELATIONS_PEACEFUL("&c&l[!]&7 This will have no effect while your faction is peaceful."),
|
COMMAND_RELATIONS_PEACEFUL("&c&l[!]&7 This will have no effect while your faction is peaceful."),
|
||||||
COMMAND_RELATIONS_PEACEFULOTHER("&c&l[!]&7 This will have &cno effect&7 while their faction is peaceful."),
|
COMMAND_RELATIONS_PEACEFULOTHER("&c&l[!]&7 This will have &cno effect&7 while their faction is peaceful."),
|
||||||
COMMAND_RELATIONS_DESCRIPTION("Set relation wish to another faction"),
|
COMMAND_RELATIONS_DESCRIPTION("Set relation wish to another faction"),
|
||||||
COMMAND_RELATIONS_EXCEEDS_ME("&c&l[!]&7 Failed to set relation wish. You can only have %1$s %2$s."),
|
COMMAND_RELATIONS_EXCEEDS_ME("&c&l[!]&7 Failed to set relation wish. You can only have %1$s %2$s."),
|
||||||
COMMAND_RELATIONS_EXCEEDS_THEY("&c&l[!]&7 Failed to set relation wish. They can only have %1$s %2$s."),
|
COMMAND_RELATIONS_EXCEEDS_THEY("&c&l[!]&7 Failed to set relation wish. They can only have %1$s %2$s."),
|
||||||
|
|
||||||
COMMAND_RELATIONS_PROPOSAL_1("&c&l[!]&7&c %1$s &7wishes to be your&c %2$s"),
|
COMMAND_RELATIONS_PROPOSAL_1("&c&l[!]&7 &c%1$s &7wishes to be your &c%2$s&7."),
|
||||||
COMMAND_RELATIONS_PROPOSAL_2("&c&l[!]&7 Type &c/%1$s %2$s %3$s&7 to accept."),
|
COMMAND_RELATIONS_PROPOSAL_2("&c&l[!]&7 Type &c/%1$s %2$s %3$s&7 to accept."),
|
||||||
COMMAND_RELATIONS_PROPOSAL_SENT("&c&l[!]&7 &c%1$s&7 were informed that you wish to be &c%2$s"),
|
COMMAND_RELATIONS_PROPOSAL_SENT("&c&l[!]&7 &c%1$s&7 were informed that you wish to be &c%2$s&7."),
|
||||||
|
|
||||||
COMMAND_RELOAD_TIME("&c&l[!]&7 Reloaded &call &7configuration files from disk, took &c%1$d ms."),
|
COMMAND_RELOAD_TIME("&c&l[!]&7 Reloaded &call &7configuration files from disk, took &c%1$d ms."),
|
||||||
COMMAND_RELOAD_DESCRIPTION("Reload data file(s) from disk"),
|
COMMAND_RELOAD_DESCRIPTION("Reload data file(s) from disk"),
|
||||||
@@ -822,6 +824,7 @@ public enum TL {
|
|||||||
COMMAND_STRIKESINFO_DESCRIPTION("Get a faction's strikes"),
|
COMMAND_STRIKESINFO_DESCRIPTION("Get a faction's strikes"),
|
||||||
|
|
||||||
SHOP_NOT_ENOUGH_POINTS("&c&l[!] &7Your faction does not have enough points to purchase this!"),
|
SHOP_NOT_ENOUGH_POINTS("&c&l[!] &7Your faction does not have enough points to purchase this!"),
|
||||||
|
SHOP_ERROR_DURING_PURCHASE("&c&l[!] &7There was an error while trying to give items please check your inventory! Purchase was not completed!"),
|
||||||
SHOP_BOUGHT_BROADCAST_FACTION("\n&c&l[!] &e&lFactionShop » &b{player} &7bought &b{item}&7 for &b{cost} &7points!\n"),
|
SHOP_BOUGHT_BROADCAST_FACTION("\n&c&l[!] &e&lFactionShop » &b{player} &7bought &b{item}&7 for &b{cost} &7points!\n"),
|
||||||
|
|
||||||
|
|
||||||
@@ -923,6 +926,9 @@ public enum TL {
|
|||||||
COMMAND_TAG_CHANGED("The faction %1$s changed their name to %2$s."),
|
COMMAND_TAG_CHANGED("The faction %1$s changed their name to %2$s."),
|
||||||
COMMAND_TAG_DESCRIPTION("Change the faction tag"),
|
COMMAND_TAG_DESCRIPTION("Change the faction tag"),
|
||||||
|
|
||||||
|
COMMAND_SHIELD_DESCRIPTION("Modify/Enable Faction Shield Timings"),
|
||||||
|
|
||||||
|
|
||||||
COMMAND_TITLE_TOCHANGE("to change a players title"),
|
COMMAND_TITLE_TOCHANGE("to change a players title"),
|
||||||
COMMAND_TITLE_FORCHANGE("for changing a players title"),
|
COMMAND_TITLE_FORCHANGE("for changing a players title"),
|
||||||
COMMAND_TITLE_CHANGED("%1$s changed a title: %2$s"),
|
COMMAND_TITLE_CHANGED("%1$s changed a title: %2$s"),
|
||||||
@@ -972,7 +978,7 @@ public enum TL {
|
|||||||
COMMAND_UNBAN_NOTBANNED("&7%s &cisn't banned. Not doing anything."),
|
COMMAND_UNBAN_NOTBANNED("&7%s &cisn't banned. Not doing anything."),
|
||||||
COMMAND_UNBAN_TARGET_IN_OTHER_FACTION("&c%1$s is not in your faction!"),
|
COMMAND_UNBAN_TARGET_IN_OTHER_FACTION("&c%1$s is not in your faction!"),
|
||||||
COMMAND_UNBAN_UNBANNED("&e%1$s &cunbanned &7%2$s"),
|
COMMAND_UNBAN_UNBANNED("&e%1$s &cunbanned &7%2$s"),
|
||||||
COMMAND_UNBAN_TARGET("&aYou were unbanned from &r%s"),
|
COMMAND_UNBAN_TARGETUNBANNED("&aYou were unbanned from &r%s"),
|
||||||
|
|
||||||
COMMAND_UNCLAIM_SAFEZONE_SUCCESS("Safe zone was unclaimed."),
|
COMMAND_UNCLAIM_SAFEZONE_SUCCESS("Safe zone was unclaimed."),
|
||||||
COMMAND_UNCLAIM_SAFEZONE_NOPERM("This is a safe zone. You lack permissions to unclaim."),
|
COMMAND_UNCLAIM_SAFEZONE_NOPERM("This is a safe zone. You lack permissions to unclaim."),
|
||||||
@@ -1033,12 +1039,12 @@ public enum TL {
|
|||||||
/**
|
/**
|
||||||
* Leaving - This is accessed through a command, and so it MAY need a COMMAND_* slug :s
|
* Leaving - This is accessed through a command, and so it MAY need a COMMAND_* slug :s
|
||||||
*/
|
*/
|
||||||
LEAVE_PASSADMIN("You must give the admin role to someone else first."),
|
LEAVE_PASSADMIN("&c&l[!] &7You must give the admin role to someone else first."),
|
||||||
LEAVE_NEGATIVEPOWER("You cannot leave until your power is positive."),
|
LEAVE_NEGATIVEPOWER("&c&l[!] &7You cannot leave until your power is positive."),
|
||||||
LEAVE_TOLEAVE("to leave your faction."),
|
LEAVE_TOLEAVE("to leave your faction."),
|
||||||
LEAVE_FORLEAVE("for leaving your faction."),
|
LEAVE_FORLEAVE("for leaving your faction."),
|
||||||
LEAVE_LEFT("%s left faction %s."),
|
LEAVE_LEFT("&c&l[!] &c%s&7 left faction &c%s&7."),
|
||||||
LEAVE_DISBANDED("%s was disbanded."),
|
LEAVE_DISBANDED("&c&l[!] &c%s&7 was disbanded."),
|
||||||
LEAVE_DISBANDEDLOG("The faction %s (%s) was disbanded due to the last player (%s) leaving."),
|
LEAVE_DISBANDEDLOG("The faction %s (%s) was disbanded due to the last player (%s) leaving."),
|
||||||
LEAVE_DESCRIPTION("\\n &a&l» &7Leave your faction"),
|
LEAVE_DESCRIPTION("\\n &a&l» &7Leave your faction"),
|
||||||
AUTOLEAVE_ADMIN_PROMOTED("&e&l[!] &7Faction admin &c%s&7 has been removed. &c%s&7 has been promoted as the new faction admin."),
|
AUTOLEAVE_ADMIN_PROMOTED("&e&l[!] &7Faction admin &c%s&7 has been removed. &c%s&7 has been promoted as the new faction admin."),
|
||||||
@@ -1067,6 +1073,7 @@ public enum TL {
|
|||||||
CLAIM_FORCLAIM("for claiming this land"),
|
CLAIM_FORCLAIM("for claiming this land"),
|
||||||
CLAIM_TOOVERCLAIM("to overclaim this land"),
|
CLAIM_TOOVERCLAIM("to overclaim this land"),
|
||||||
CLAIM_FOROVERCLAIM("for over claiming this land"),
|
CLAIM_FOROVERCLAIM("for over claiming this land"),
|
||||||
|
CLAIM_RADIUS_CLAIM("%1$s &eclaimed %2$s chunks &astarting from &e(X: %3$s, Z: %4$s)"),
|
||||||
CLAIM_CLAIMED("%s claimed land for %s from %s."),
|
CLAIM_CLAIMED("%s claimed land for %s from %s."),
|
||||||
CLAIM_CLAIMEDLOG("%s claimed land at (%s) for the faction: %s"),
|
CLAIM_CLAIMEDLOG("%s claimed land at (%s) for the faction: %s"),
|
||||||
CLAIM_OVERCLAIM_DISABLED("Over claiming is disabled on this server."),
|
CLAIM_OVERCLAIM_DISABLED("Over claiming is disabled on this server."),
|
||||||
@@ -1121,6 +1128,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!"),
|
||||||
GENERIC_WORLDGUARD("&cThis area is worldguard protected."),
|
GENERIC_WORLDGUARD("&cThis area is worldguard protected."),
|
||||||
|
GRACE_DISABLED_PLACEHOLDER("Disabled"),
|
||||||
|
|
||||||
// MISSION_CREATED_COOLDOWN("&c&l[!] &7Due to your immediate faction creation, you may not start missions for &b%1$s minutes&7!"),
|
// 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"),
|
||||||
@@ -1170,7 +1178,7 @@ public enum TL {
|
|||||||
ECON_PERSONTOOKMONEYFROM("%1$s took %2$s from %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_MONEYLOST("&c&l[!] %s &7lost &c%s &7%s."),
|
||||||
ECON_CANTAFFORD("&c%s &7can't afford &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_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_PLAYERBALANCE("&c%s&7's balance is &c%s&7."),
|
||||||
@@ -1283,7 +1291,12 @@ public enum TL {
|
|||||||
WARMUPS_NOTIFY_FLIGHT("&eFlight will enable in &d%2$d &eseconds."),
|
WARMUPS_NOTIFY_FLIGHT("&eFlight will enable in &d%2$d &eseconds."),
|
||||||
WARMUPS_NOTIFY_TELEPORT("&eYou will teleport to &d%1$s &ein &d%2$d &eseconds."),
|
WARMUPS_NOTIFY_TELEPORT("&eYou will teleport to &d%1$s &ein &d%2$d &eseconds."),
|
||||||
WARMUPS_ALREADY("&cYou are already warming up."),
|
WARMUPS_ALREADY("&cYou are already warming up."),
|
||||||
WARMUPS_CANCELLED("&cYou have cancelled your warmup.");
|
WARMUPS_CANCELLED("&cYou have cancelled your warmup."),
|
||||||
|
|
||||||
|
SYSTEM_PERMISSIONS_RESET("&cYour faction's permissions have been reset to default due to a transfer"),
|
||||||
|
|
||||||
|
|
||||||
|
PLACEHOLDERAPI_NULL("");
|
||||||
|
|
||||||
public static SimpleDateFormat sdf;
|
public static SimpleDateFormat sdf;
|
||||||
private static YamlConfiguration LANG;
|
private static YamlConfiguration LANG;
|
||||||
|
|||||||
@@ -105,7 +105,6 @@ public class TagUtil {
|
|||||||
if (FactionsPlugin.getInstance().isMVdWPlaceholderAPIHooked() && player.isOnline()) {
|
if (FactionsPlugin.getInstance().isMVdWPlaceholderAPIHooked() && player.isOnline()) {
|
||||||
line = be.maximvdw.placeholderapi.PlaceholderAPI.replacePlaceholders(player, line);
|
line = be.maximvdw.placeholderapi.PlaceholderAPI.replacePlaceholders(player, line);
|
||||||
}
|
}
|
||||||
|
|
||||||
return line;
|
return line;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user